2024年3月19日发(作者:)

Keil C51库函数参考

C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函

数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51

的库函数系统。

第一节

本征库函数(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 一行。

如不说明,下面谈到的库函数均指非本征库函数。

第二节

几类重要库函数

1.

专用寄存器include文件

例如8031、8051均为REG51.h其中包括了所有8051的SFR及其位定义,一般系

统都必须包括本文件。

2.

绝对地址include文件absacc.h

该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。

3.

动态内存分配函数,位于stdlib.h中

4.

缓冲区处理函数位于“string.h”中

其中包括拷贝比较移动等函数如:

memccpy memchr memcmp memcpy memmove memset

这样很方便地对缓冲区进行处理。

5.

输入输出流函数,位于“stdio.h”中

流函数通8051的串口或用户定义的I/O口读写数据,缺省为8051串口,如要修

改,比如改为LCD显示,可修改lib目录中的getkey.c及putchar.c源文件,

然后在库中替换它们即可。

第三节

Keil C51

1.

CTYPE.H

库函数原型列表

bit isalnum(char c);

bit isalpha(char c);

bit iscntrl(char c);

bit isdigit(char c);

bit isgraph(char c);

bit islower(char c);

bit isprint(char c);

bit ispunct(char c);

bit isspace(char c);

bit isupper(char c);

bit isxdigit(char c);

bit toascii(char c);

bit toint(char c);

char tolower(char c);

char __tolower(char c);

char toupper(char c);

char __toupper(char c);

2.

INTRINS.H

unsigned char _crol_(unsigned char c,unsigned char b);

unsigned char _cror_(unsigned char c,unsigned char b);

unsigned char _chkfloat_(float ual);

unsigned int _irol_(unsigned int i,unsigned char b);

unsigned int _iror_(unsigned int i,unsigned char b);

unsigned long _irol_(unsigned long l,unsigned char b);

unsigned long _iror_(unsigned long L,unsigned char b);

void _nop_(void);

bit _testbit_(bit b);

3.

STDIO.H

char getchar(void);