本征库函数和非本征库函数
C51提供的本征函数在编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句实现的,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL调用。C51的本征库函数只有9个,数目虽少,但都非常有用,现罗列如下:
? _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回。
? _iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回。
? _lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回。
? _nop_:相当于插入汇编指令NOP。
? _testbit_:相当于JBC bitvar测试该位变量并跳转同时清除。 ? _chkfloat_: 测试并返回源点数状态。
使用上述函数时,源程序开头必须包含 #inclucle
几类重要的库函数
(1)专用寄存器include文件:reg51.h中包括了所有80C51的SFR
及其位定义,reg52.h中包括了所有80C52的SFR及其位定义,一般系统都必须包括reg51.h或reg52.h。
(2)绝对地址include文件absacc.h:在该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。
(3)动态内存分配函数,位于stdlib.h中。
(4)缓冲区处理函数位于“string.h”中:其中包括复制、比较、移动等函数如:memccpy、memchr、memcmp、memcpy、memmove、memset。
(5)输入输出流函数,位于stdio.h中:流函数通过80C51的串口或用户定义的I/O口读写数据,默认为80C51串口,如果要修改,比如改为LCD显示,可修改lib目录中的getkey.c及putchar.c源文件,然后在库中替换它们即可。

