C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函
数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51
的库函数系统。
第 一 节本 征 库 函 数 (i n t r i n si c ro u t in es ) 和 非 本 征 证 库 函 数
C51 提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL
和 LCALL语句来实现, 这样就大大提供了函数访问的效率, 而非本征函数则必须由 ACALL及 LCALL调用。
C51 的本征库函数只有9 个,数目虽少,但都非常有用,列如下:
_crol_,_cror_:将 char 型变量循环向左 (右)移动指定位数后返回
_iror_,_irol_ :将 int 型变量循环向左 (右 )移动指定位数后返回
_lrol_,_lror_ :将 long 型变量循环向左 (右 )移动指定位数后返回
_nop_:相当于插入 NOP
_testbit_ :相当于 JBC bitvar测试该位变量并跳转同时清除。
_chkfloat_:测试并返回源点数状态。
使用时,必须包含 #inclucle<>一行。
如不说明,下面谈到的库函数均指非本征库函数。
第二节几类重要库函数
专用寄存器 include 文件
例如 8031、8051 均为其中包括了所有 8051 的 SFR及其位定义,一般系统都必须包括本文件。
绝对地址 include 文件
该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。
动态内存分配函数,位于中
缓冲区处理函数位于 “”中
其中包括拷贝比较移动等函数如:
memccpy memchr memcmp memcpy memmove memset 这样很方便地对缓冲区进行处理。
输入输出流函数,位于 “”中
流函数通 8051 的串口或用户定义的 I/O 口读写数据, 缺省为 8051 串口,如要修改,比如改为 LCD显示,可修改 lib 目录中的及源文件,然后在库中替换它们即可。
第 三 节Kei l C5 1 库 函 数 原 型 列 表
1.
bit
bit
bit
bit
bit
bit
bit
bit
bit
bit
bit
bit
bit
char
char
char
char
isalnum(char c);
isalpha(char c);
iscntrl(char c);
isdigit(char c);
isgraph(char c);
islower(char c);
isprint(char c);
ispunct(char c);
isspace(char c);
isupper(char c);
isxdigit(char c);
toascii(char c);
toint(char c) ;
tolower(char c);
__tolower(char c);
toupper(char c);
__toupper(char c);
2.
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.
char getchar(void);
char _getkey(void);
char *gets(char * string,int len) ;
int printf(const char * fmtstr[,argument] ?);
char putchar(char c);
int puts (const char * string);
int scanf(const char * fmtstr.[,argument] ?);
int sprintf(char * buffer,const char *fmtstr[;argument]) ; int sscanf(char *buffer,const cha