基本的函数都有
上传时间: 2013-10-25
上传用户:13736136189
第五章 Keil C51库函数参考 C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。 1. 第一节 本征库函数(intrinsic routines)和非本征证库函数 C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL调用。 C51的本征库函数只有9个,数目虽少,但都非常有用,列如下: _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回 _iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回 _lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回 _nop_: 相当于插入NOP _testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除。 _chkfloat_: 测试并返回源点数状态。 使用时,必须包含#inclucle 一行。 如不说明,下面谈到的库函数均指非本征库函数
上传时间: 2013-10-19
上传用户:1184599859
目录: 1. Character Type Functions - 字符类型函数 2. Standard C Input/Output Functions - 标准输入输出函数 3. Standard Library Functions - 标准库和内存分配函数 4. Mathematical Functions - 数学函数 5. String Functions - 字符串函数 6. BCD Conversion Functions - BCD 转换函数 7. Memory Access Functions - 存储器访问函数 8. Delay Functions - 延时函数 9. LCD Functions - LCD函数 10. LCD Functions for displays with 4x40 characters - 4×40 字符型LCD函数 11. LCD Functions for displays connected in 8 bit memory mapped mode -以8 位外部存储 器模式接口的LCD显示函数 12. I2C Bus Functions - I2C 总线函数 13. National Semiconductor LM75 Temperature Sensor Functions - LM75 温度传感器函数 14. Dallas Semiconductor DS1621 Thermometer/Thermostat Functions - DS1621 温度计函 数 15. Philips PCF8563 Real Time Clock Functions - PCF8563 实时时钟函数 16. Philips PCF8583 Real Time Clock Functions - PCF8583 实时时钟函数 17. Dallas Semiconductor DS1302 Real Time Clock Functions - DS1302 实时时钟函数 18. Dallas Semiconductor DS1307 Real Time Clock Functions - DS1307 实时时钟函数 19. 1 Wire Protocol Functions - 单线通讯协议函数 20. Dallas Semiconductor DS1820/DS1822 Temperature Sensors Functions - DS1820/1822 温度传感器函数 21. SPI Functions - SPI 函数 22. Power Management Functions - 电源管理函数 23. Gray Code Conversion Functions - 格雷码转换函数
上传时间: 2013-10-22
上传用户:归海惜雪
介绍了基于单片机航空交流电参数测试仪的系统设计。以Silicon Labs公司的C8051F005单片机为核心设计出数据采集板,通过RS-232串口与上位机通讯。运用Lab Windows/CVI编写的上位机软件实现信号的检测以及波形和数据的显示,给出了测试仪硬件电路的组成和软件流程图。本系统具有硬件结构简单、容易实现和成本低等特点,在实际应用中其稳定性、精确性均能满足客户要求。 Abstract: The design of aeronautics AC parameters tester based on the single-chip is introduced.The core component of data acquisition board is C8051F005 single chip of Silicon Labs Company,and communication with PC through RS-232. The signal processing software programmed with LabWindows/CVI can be used successfully to fulfill inspection of signal and display of the waveform and data. The hardware and software configuration of test instrument are provided.The hardware of the system is simple, and can be easily realized.The stability and precision of the measurement instrument are enough to meet the requirements.
上传时间: 2013-11-18
上传用户:wang5829
摘要:超低频信号发生器是科研、教学、制造业中一种最常用的通用仪器,输出波形一般固定为正弦波、三角波、锯齿波和方波,不能实现有时在实验和工程应用中需要的特殊信号或自定义信号。而要实现这一要求,不是做成硬件式的专用信号发生器,就是用计算机系统来完成,前者仍然不灵活,后者费用太高。然而应用单片机技术,通过软件与硬件的有机结合由硬件电路搭成一个环境平台,再由软件程序把要求的“任意函数信号”数据表嵌入在单片机程序存储器内,通过软件程序更改输出波形数据表,即可方便实现输出任意函数信号,而无需变动硬件电路。本原理样机使用单片机AT89C51,对其进行一次固化,可以安排四种任意波形,频率范围为0.001~800Hz,幅值范围为0~±10V。本文中对原理样机的软硬件系统的性能和误差进行了定量分析,并设计了一套使用Intel公司的新一代16位单片机80296SA对该样机进行了性能提升的新型样机方案,然后对新型样机方案进行了原理分析和性能分析,并给出了误差的定量计算,表明此方案不但可使样机的原理频率范围提高至1500Hz,输出幅值不变,输出分辨率提高至212,使波形质量大为改善。希望这种性价比较高的函数信号发生器对科研、教学、制造业有所帮助。关键词:单片机应用 MCS51 MCS296 超低频信号发生器
上传时间: 2013-11-20
上传用户:7891
手把手教你学单片机的C语言程序设计--中断服务函数
上传时间: 2013-10-17
上传用户:gundan
摘要:为了发挥C语言和汇编语言各自的优点二者需要相互调用函数本文首先介绍了"MSP430”单片机的!语言函数的参数传递规则然后对C语言和汇编语言的混合编程进行了详细描述最后给出应用实例。关键字:MSP430单片机;IAR C语言;汇编语言;混合编程
上传时间: 2014-01-22
上传用户:jhs541019
C语言程序与汇编语言程序的相互调用可视为函数的调用,只不过此函数是采用不同语言编写。在C和汇编程序的相互调用中,要求汇编程序必须服从Keil C51中对函数名的转换规则,同时也要弄清C函数的参数传递规则,通过实例详细介绍Keil C51中C51程序与汇编程序相互调用以厦汇鳊程序与C51程序相互调用时的接口建立方法,井蛤出在不同的应用中对接口进行简化的方法
上传时间: 2013-11-13
上传用户:lina2343
AVR 单片机和C语言的集成开发环境 ICCAVR编译器简介 ICCAVR是一个综合了编辑器和工程管理器的集成开发环境(IDE),是一个纯32位的程序,可在Windows 95/98/ME/NT/2000/XP下运行。Ø 源文件全部被组织在工程之中,文件的编辑和工程的构筑也在IDE的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。同时这个工程管理器还能直接产生INTEL HEX格式的烧录文件和用于AVR Studio调试的COFF格式的文件。Ø ICCAVR是一个32位的程序,支持长文件名。Ø ICCAVR提供了全部的库源代码及一些简单的应用实例供初学者参考,特别是提供库源代码,对于用户理解库函数的参数及返回值等是非常有益的,并且用户能够根据库源代码对ICCAVR提供的库函数进行剪裁和扩充
上传时间: 2013-10-30
上传用户:pkkkkp
at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤: 1、PLL SETUP,设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率; 2、相应模式下的堆栈设置; 3、检测主时钟源(Main oscillator); 4、中断控制器(AIC)的设置; 5、C 变量的初始化; 6、跳到主函数。 完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,AT91RM9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则AT91RM9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前AT91RM9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。总的说来,笔者以为AT91RM9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。 uboot结构与使用uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以 http://sourceforge.net/projects/u-boot下载 在9200上,为了启动uboot,还有两个boot软件包,分别是loader和boot。分别完成从sram和flash中的一级boot。其源码可以从atmel的官方网站下载。 我们知道,当9200系统上电后,如果bms为高电平,则系统从片内rom启动,这时rom中固化的boot程序初始化了debug口并向其发送'c',这时我们打开超级终端会看到ccccc...。这说明系统已经启动,同时xmodem协议已经启动,用户可以通过超级终端下载用户的bootloader。作为第一步,我们下载loader.bin.loader.bin将被下载到片内的sram中。这个loder完成的功能主要是初始化时钟,sdram和xmodem协议,为下载和启动uboot做准备。当下载了loader.bin后,超级终端会继续打印:ccccc....。这时我们就可以下在uboot了。uboot将被下载到sdram中的一个地址后并把pc指针调到此处开始执行uboot。接着我们就可以在终端上看到uboot的shell启动了,提示符uboot>,用户可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了对内存、flash、网络、系统启动等一些命令。 如果系统上电时bms为低电平,则系统从片外的flash启动。为了从片外的flash启动uboot,我们必须把boot.bin放到0x0地址出,使得从flash启动后首先执行boot.bin,而要少些boot.bin,就要先完成上面我们讲的那些步骤,首先开始从片内rom启动uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz烧写到flash中的目的,假如我们已经启动了uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动boot,然后解压缩uboot.gz,然后启动uboot。注意,这里uboot必须压缩成.gz文件,否则会出错。 怎么编译这三个源码包呢,首先要建立一个arm的交叉编译环境,关于如何建立,此处不予说明。建立好了以后,分别解压源码包,然后修改Makefile中的编译器项目,正确填写你的编译器的所在路径。 对loader和boot,直接make。对uboot,第一步:make_at91rm9200dk,第二步:make。这样就会在当前目录下分别生成*.bin文件,对于uboot.bin,我们还要压缩成.gz文件。 也许有的人对loader和boot搞不清楚为什么要两个,有什么区别吗?首先有区别,boot主要完成从flash中启动uboot的功能,他要对uboot的压缩文件进行解压,除此之外,他和loader并无大的区别,你可以把boot理解为在loader的基础上加入了解压缩.gz的功能而已。所以这两个并无多大的本质不同,只是他们的使命不同而已。 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减,打造属于自己系统的bootloder。
上传时间: 2013-10-27
上传用户:wsf950131