Keil C51库函数参考

Keil C51 库函数参考

C51 强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍 C51 的库函数系统。

第一节 本征库函数(intrinsic routines) 和非本征证库函数

C51 提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALLLCALL 语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALLLCALL 调用。

C51 的本征库函数只有9 个,数目虽少,但都非常有用,列如下:

_crol_,_cror_ :将char 型变量循环向左() 移动指定位数后返回

_iror_,_irol_ :将int 型变量循环向左() 移动指定位数后返回

_lrol_,_lror_ :将long 型变量循环向左() 移动指定位数后返回

_nop_ 相当于插入NOP

_testbit_ 相当于JBC bitvar 测试该位变量并跳转同时清除。

_chkfloat_   测试并返回源点数状态。

使用时,必须包含#inclucle  <intrins.h> 一行。

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

第二节 几类重要库函数

1. 专用寄存器include 文件

例如80318051 均为REG51.h 其中包括了所有8051SFR 及其位定义,一般系统都必须包括本文件。

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.cputchar.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)

   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 char * fmtstr[,argument]);

       char ungetchar(char c);

       void vprintf (const char *fmtstr,char * argptr);

       void vsprintf(char *buffer,const char * fmtstr,char * argptr)

4. STDLIB.H

       float atof(void * string);

       int atoi(void * string);

       long atol(void * string);

       void * calloc(unsigned int num,unsigned int len);

       void free(void xdata *p)

       void init_mempool(void *data *p,unsigned int size);

       void *malloc (unsigned int size);

       int rand(void);

       void *realloc (void xdata *p,unsigned int size);

       void srand (int seed)

5. STRING.H

       void *memccpy (void *dest,void *src,char c,int len);

       void *memchr (void *buf,char c,int len);

       char memcmp(void *buf1,void *buf2,int len);

       void *memcopy (void *dest,void *SRC,int len);

       void *memmove (void *dest,void *src,int len);

       void *memset (void *buf,char c,int len);

       char *strcat (char *dest,char *src);

       char *strchr (const char *string,char c);

       char strcmp (char *string1,char *string2);

       char *strcpy (char *dest,char *src);

       int strcspn(char *src,char * set);

       int strlen (char *src);

       char *strncat (char 8dest,char *src,int len);

       char strncmp(char *string1,char *string2,int len);

       char strncpy (char *dest,char *src,int len);

       char *strpbrk (char *string,char *set);

       int strpos (const char *string,char c);

       char *strrchr (const char *string,char c);

       char *strrpbrk (char *string,char *set);

       int strrpos (const char *string,char c);

       int strspn(char *string,char *set)

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值