第12章 C51的常用库函数

合集下载

常用Keil C51库函数

常用Keil C51库函数
void *memcpy(void *dest, void *src , int len)
从src所指向的内存中复制len个字符到dest中,返回指向dest中最后一个字符的指针。如果src与dest发生交迭,则结果是不可测的
void *memccpy(void *dest, void *src, char val, int len)
bit isdigit(char c)
检查参数字符是否为十进制数字0~9,是则返回1,否则返回0
bit isgraph(char c)
检查参数字符是否为可打印字符(不包括空格),值域0x21~0x7e,是则返回1,否则返回0
bit isprint(char c)
检查参数字符是否为可打印字符(包括空格),值域0x21~0x7e,是则返回1,否则返回0
int printf(const char *fmstr[,argument]...)
以第一个参数指向字符串制定的格式通过8051串行口输出数值和字符串,返回值为实际输出的字符数
int sprintf(char *s,const char *fmstr[,argument]...)
与printf功能相似,但数据是通过一个指针s送入内存缓冲区,并以ASCII码的形式存储
将串s2(包括结束符)复制到s1中,返回指向s1中第一个字符的指针
char *strncpy(char *s1, char *s2, int n)
与strcpy相似,但它只复制n个字符。如果s2的长度小于n,则s1串以0补齐到长度n
int strlen(char *s1)
返回串s1中的字符个数,不包括结尾的空字符
char strcmp(char *s1, char *s2)

C51库函数详解

C51库函数详解

_chkfloat_:函数定义:unsigned char _chkfloat_ ( float val); /* number to check */函数功能:_chkfloat_函数检查浮点数val 的类型。

返回值:_chkfloat_函数返回浮点数val 的类型。

返回值意义0 标准浮点数1 浮点02 +INF 正溢出3 -INF 负溢出4 NaN 非数函数测试:#include <reg51.h>#include <intrins.h>/*本实验测试本征库中的_chkfloat_函数函数定义:unsigned char _chkfloat_(float val);返回值:Return Value Meaning0 Standard floating-point number.1 Floating-point value 0.2 +INF (positive overflow).3 -INF (negative overflow).4 NaN (Not a Number) error status.用P1指示返回值*/unsigned char f[4]={0xff,0xff,0xff,0xff};void delay(unsigned int time){while(time--);}void main(){P2=~_chkfloat_(1.2455); //Standard floating-point number.delay(50000);P2=~_chkfloat_(0.00); //Floating-point value 0.delay(50000);P2=~_chkfloat_(1000000000000000000000000000000000000000000000000000000000000000.0000 000000); //+INF (positive overflow).delay(50000);P2=~_chkfloat_(-1000000000000000000000000000000000000000000000000000000000000000.000 0000000); //-INF (negative overflow).delay(50000);P2=~_chkfloat_(*((float *)f)); //NaN (Not a Number) error status.while(1);_crol_:函数定义:unsigned char _crol_ ( unsigned char c, /* character to rotate left */unsigned char b); /* bit positions to rotate */ 函数功能:_crol_函数将一个字节c循环左移b位。

单片机C语言C的常用库函数

单片机C语言C的常用库函数

C51的常用库函数详解C51语言的编译器中包含有丰富的库函数,使用库函数可以大大简化用户程序设计的工作量,提高编程效率;每个库函数都在相应的头文件中给出了函数原型声明,在使用时,必须在源程序的开始处使用预处理命令include将有关的头文件包含进来;C51库函数中类型的选择考虑到了8051单片机的结构特性,用户在自己的应用程序中应尽可能地使用最小的数据类型,以最大限度地发挥8051单片机的性能,同时可减少应用程序的代码长度;下面将C51的库函数分类列出并详细介绍其用法;1字符函数字符函数的原型声明包含在头文件CTYPE.H中;常用的一些字符函数介绍如下;1.1检查英文字母函数检查英文字母函数用于检查形参字符是否为英文字母,其函数原型如下:bitisalphacharc;其中,c为待判断的字符,如果是英文字母则返回1,否则返回0;程序示例如下:1.2检查字母数字函数检查字母数字函数用于检查形参字符是否为英文字母或数字字符,其函数原型如下:bitisalnumcharc;1.3检查控制字符函数检查控制字符函数用于检查形参字符是否为控制字符,其函数原型:bitiscntrlcharc;其中,c为待判断的字符;控制字符其取值范围为0x00~0xlF之间或等于0x7F,如果是,则返回1,否则返回0;十进制数字检查函数用于检查形参字符是否为十进制数字,其函数原型如下:bitisdigitcharc;其中,c为待判断的字符,如果是十进制数字则返回1,否则返回0;1.5可打印字符检查函数可打印字符检查函数用于检查形参字符是否为可打印字符,其函数原型如下:bitisgraphcharc;其中,c为待判断的字符;可打印字符的取值范围为0x21~0x7C,不包含空格,如果是可打印字符则返回1,否则返回0;1.6包含空格的可打印字符检查函数包含空格的可打印字符检查函数用于检查形参字符是否为可打印字符以及空格,其函数原型如下:bitisprintcharc;其中,c为待判断字符;如果是则返回1,否则返回0;该函数与isgraph的区别在于包含了空格符,空格符为0x20;1.7格式字符检查函数格式字符检查函数用于检查形参字符是否为标点、空格或格式字符,其函数原型如下:bitispunctcharc;其中,c为待判断字符,如果是则返回1,否则返回0;1.8小写英文字母检查函数小写英文字母检查函数用于检查形参字符是否为小写英文字母,其函数原型如下:bitislowercharc;1.9大写英文字母检查函数大写英文字母检查函数用于检查形参字符是否为大写英文字母,其函数原型如下:bitisuppercharc;其中,c为待判断字符;如果是大写英文字母则返回1,否则返回0;1.10控制字符检查函数控制字符检查函数用于检查形参字符是否为控制字符,其函数原型如下:bitisspacecharc;其中,c为待判断字符;如果是控制字符则返回1,否则返回0;控制字符包括:空格、制表符、回车、换行、垂直制表符和送纸,其取值范围为0x09~0x0d,或为0x20;1.11十六进制数字检查函数十六进制数字检查函数用于检查形参字符是否为十六进制数字,其函数原型如下:bitisxdigitcharc;其中,c为待判断字符;如果是16进制数字字符则返回1,否则返回0;1.12十六进制数字转换函数十六进制数字检查函数用于转换形参字符为十六进制数字,其函数原型如下:chartointcharc;其中,c为待转换字符;该函数将形参字符0~9、a~f大小写无关转换为16进制数字;其中,对于字符0~9,返回值为0H~9H,对于ASCII字符a~f大小写无关,返回值为0AH~0FH;1.13大写字符转换函数chartolowercharc;其中,c为待转换的大写字符;如果字符参数不在A~Z之间,则该函数将不起作用,而直接返回原字符;1.14小写字符转换函数小写字符转换函数用于将小写字符转换为大写字符,其函数原型如下:chartouppercharc;其中,c为待转换的小写字符;如果字符参数不在a~z之间,则该函数将不起作用,而直接返回原字符;1.15ASCII字符转换函数ASCII字符转换函数用于将任何字符型参数缩小到有效的ASCII范围之内,其函数原型如下:chartoasciicharc;其中,c为待转换的字符;该函数执行的操作是将形参数值和0x7f做与运算,从而去掉第7位以上的所有位数;如果形参已是有效的ASCII字符,则不作处理,直接返回原字符;1.16大写字符宏转换函数大写字符宏转换函数用于大写字符转换为小写字符,其函数原型如下:char_tolowercharc;其中,c为待转换的大写字符;这其实是一个由宏定义完成的操作,其功能是将字符参数c与常数0x20逐位进行或运算,从而将大写字符转换为小写字符;1.17小写字符宏转换函数小写字符宏转换函数用于小写字符转换为大写字符,其函数原型如下:char_touppercharc;其中,c为待转换的小写字符;这其实是一个由宏定义完成的操作,其功能是将字符参数c与常数0xdf逐位进行与运算,从而将小写字符转换为大写字符;2字符串函数字符串函数的原型声明包含在头文件STRING.H中;在C51语言中,字符串应包括2个或多个字符,字符串的结尾以空字符来表示;字符串函数通过接受指针串来对字符串进行处理;常用的字符串函数介绍如下;2.1字符查找函数字符查找函数用于在字符串中顺序查找字符,其函数原型如下:voidmemchrvoidsl,charval,intlen;其中,s1为输入字符串,val为待查找的字符,len为查找的长度范围;该函数的功能是在字符串s1中顺序搜索前len个字符以找出字符val,如果找到则返回sl中指向val的指针,如果没有找到则返回NULL;2.2指定长度的字符串比较函数指定长度的字符串比较函数用于按照指定的长度比较两个字符串的大小,其函数原型如下:charmemcmpvoids1,voids2,intlen;其中,s1和s2为输入字符串,len为比较的长度;该函数的功能是逐个比较字符串sl和s2的前len个字符,如果相等则返回0,如果字符串s1大于s2,则返回一个正数,如果字符串s1小于s2,则返回一个负数;如果两个字符串的长度小于len,该函数仍将一直比较len个字符,这种情况下,有可能结果是错误的;因此应该保证len不能超过最短字符串的长度;2.3字符串复制函数字符串复制函数用于复制指定长度的字符串,其函数原型如下:其中,dest为目标字符串,src为源字符串,len为复制的长度;该函数的功能是从src所指向的字符串中复制len个字符到dest字符串中,其返回值指向dest中的最后一个字符的指针;2.4带终止字符的字符串复制函数带终止字符的字符串复制函数用于复制字符串,如果遇到终止字符则停止复制,其函数原型如下:voidmemccpyvoiddest,voidsrc,charval,intlen;其中,dest为目标字符串,src为源字符串,val为终止字符,len为复制的长度;该函数的功能是复制字符串src中的len个字符到dest中,复制len个字符后则返回NULL;如果遇到字符val则停止复制,此时返回一个指向dest中的下一个元素的指针;2.5字符串移动函数字符串移动函数同样用于复制字符串,其函数原型如下:voidmemmovevoiddest,voidsrc,intlen;其中,dest为目标字符串,src为源字符串,len为复制长度;该函数的功能是从src所指向的字符串中复制len个字符到dest字符串中,其返回值指向dest中的最后一个字符的指针;其功能与memcpy相同,但是复制区间src与dest可以发生交迭;2.6字符串填充函数字符串填充函数用于按规定的字符填充字符串,其函数原型如下:voidmemsetvoids,charval,intlen;其中,s为待填充的字符串,val为填充字符,len为填充的长度;该函数实现的操作是用字符val来填充字符串s,共填充len个单元2.7字符串追加函数voidstrcatchars1,chars2;其中,s1为目标字符串,s2为待复制的字符串;该函数实现的操作是将字符串s2复制到字符串s1的尾部;其中字符串s1要有足够的大小来保存两个字符串;该函数的返回值指向字符串s1中的第一个字符的指针;2.8指定长度的字符串追加函数指定长度的字符串追加函数用于复制指定长度的字符串到另一个字符串的尾部,其函数原型如下:voidstrncat,chars1,chars2,intn;其中,s1为目标字符串,s2为待复制的字符串,n为复制的长度;该函数实现的操作是从字符串s2中复制n个字符添加到字符串s1的尾部;其中,如果字符串s2的长度比n小,则将全部复制字符串s2包括串结束符;2.9字符串比较函数字符串比较函数用于比较两个字符串的大小,其函数原型如下:charstrcmpchars1,chars2;其中,s1和s2为待比较的字符串;该函数的功能是比较字符串s1和s2,如果两者相等则返回0;如果s1<s2,则返回一个负数;如果s1>s2,则返回一个正数;2.10包含结束符的字符串比较函数包含结束符的字符串比较函数用于比较两个字符串的大小,其函数原型如下:charstrncmpchars1,chars2,intn;其中,s1和s2为待比较的字符串,n为比较的长度;该函数的功能是比较字符串s1和s2的前n个字符,如果两者相等则返回0;如果s1<s2,则返回一个负数;如果s1>s2,则返回一个正数;这里需要和memcmp函数相区别,如果字符串的长度小于n,则strncmp函数比较到字符串结束符后便停止,这和memcmp函数是不一样的;字符串覆盖函数用于将一个字符串覆盖另一个字符串,其函数原型如下:charstrcpychars1,chars2;其中,s1为目标字符串,s2为源字符串;该函数的功能是将字符串s2包括结束符复制到字符串s1中的第1个字符指针处;这里需要注意和strcat函数相区别,strcat 函数将字符串s2复制到字符串s1的末尾;2.12指定长度的字符串覆盖函数指定长度的字符串覆盖函数用于将一个指定长度的字符串覆盖另一个字符串,其函数原型如下:charstrncpychars1,chars2,intn;其中,s1为目标字符串,s2为源字符串,n为长度;该函数实现的操作是从字符串s2包括结束符中复制n个字符到字符串s1中的第1个字符指针处;如果字符串s2的长度小于n,则s1串以0补齐到长度n;2.13获取字符串个数函数获取字符串个数函数用于返回字符串中字符总数,其函数原型如下:charstrlenchars1;其中,s1为输入字符串;该函数的功能是获取字符串s1中的字符个数,返回值的大小不包括结尾的字符串结束符;2.14搜索字符串函数搜索字符串函数用于搜索字符串出现的位置,其函数原型如下:charstrstrconstchars1,chars2;其中,s1为目标字符串,s2为搜索的字符串;该函数实现的操作是在字符串s1中搜索第一次出现字符串s2的位置,并返回该处的指针;如果字符串s1中不包括字符串s2,则该函数返回一个空指针;搜索字符函数用于搜索字符出现的位置,其函数原型如下:charstrchrchars1,charc;其中,s1为目标字符串,c为待搜索的字符;该函数的功能是搜索字符串s1中是否包含字符c,如果包含则返回第一次指向该字符的指针,否则返回NULL;被搜索的字符可以是串结束符,此时返回值是指向串结束符的指针;2.16返回位置值的字符搜索函数返回位置值的字符搜索函数用于搜索并返回字符出现的位置,其函数原型如下:intstrposchars1,charc;其中,s1为目标字符串,c为搜索的字符;该函数的功能是查找并返回字符c在字符串s1中第一次出现的位置值,没有找到该字符则返回-1,s1串首字符的位置值是0;strpos函数的功能与strchr类似,只不过返回值不同;2.17字符包含函数字符包含函数用于检查字符串中是否包含某字符,其函数原型如下:charstrrchrchars1,charc;其中,s1为目标字符串,c为查找的字符;该函数的功能是搜索字符串s1中是否包含字符c,如果包含则返回最后一次指向该字符的指针,否则返回NULL;被搜索的字符可以是串结束符,此时返回值是指向串结束符的指针;2.18返回位置值的字符包含函数返回位置值的字符包含函数同样用于检查字符串中是否包含某字符,其函数原型如下:intstrrposchars1,charc;其中,s1为目标字符串,c为查找的字符;该函数的功能是查找并返回字符c在字符串s1中最后一次出现的位置值,没有找到该字符则返回-1,s1串首字符的位置值是2.19在指定字符集中查找不包含字符函数在指定字符集中查找不包含字符函数用于查找不包含在指定字符集中的字符,其函数原型如下:intstrspnchars1,charset;其中,s1为目标字符串,set为字符集;该函数的功能是搜索字符串s1中第一个不包含在set串中的字符,返回值是字符串s1中包括在set中的字符的个数;如果s1中所有的字符都包含在set中,则返回s1的长度不包括结束符;如果set是空字符串则返回0;2.20在指定字符集中查找包含字符函数在指定字符集中查找包含字符函数用于查找包含在指定字符集中的字符,其函数原型如下:intstrcspnchars1,charset;其中,s1为目标字符串,set为字符集;该函数的功能是搜索的是第一个包含在set串中字符,返回值是字符串s1中包括在set中的字符的个数;如果s1中所有的字符都包含在set中,则返回s1的长度不包括结束符;如果set是空字符串则返回0;2.21查找第一个包含字符函数查找第一个包含字符函数用于查找第一个包含在指定字符集中的字符,其函数原型如下:charstrpbrkchars1,charset;其中,s1为目标字符串,set为字符集;该函数的功能是搜索字符串s1中第一个包含在set串中的字符,返回值指向搜索到的字符的指针,如果未找到,则返回NULL;2.22查找最后一个包含字符函数查找最后一个包含字符函数用于查找最后一个包含在指定字符集中的字符,其函charstrrpbrkchars1,charset;其中,s1为目标字符串,set为字符集;该函数的功能是搜索字符串s1中最后一个包含在set串中的字符,返回值指向搜索到的字符的指针,如果未找到,则返回NULL; 3I/O函数I/O函数主要用于数据的输入输出等操作,C51的I/O库函数的原型声明包含在头文件STDIO.H中;这些I/O函数使用8051单片机的串行接口进行通信,因此,在使用之前需要先进行串口的初始化;例如:SCON=0x50; //串口模式1,允许接收TMOD|=0x20; //初始化T1为定时功能,模式2PCON|=0x80; //设置SMOD=1TL1=0xF4; //波特率4800bit/s,初值TH1=0xF4;IE|=0x90; //中断TR1=1; //启动定时器3.1字符读入函数字符读入函数用于从串口读入一个字符,其函数原型如下:char_getkeyvoid;该函数执行的操作是等待从8051的串口读入一个字符,并返回读入的原字符;程序示例如下:3.2字符读入输出函数字符读入输出函数用于从串口读入一个字符并输出该字符,其函数原型如下:chargetcharvoid;该函数与_getkey函数有细微的不同,其执行的操作是使用_getkey从串口读入的一个字符,然后使用putchar函数将读入的字符输出;3.3字符串读入函数字符串读入函数用于从串口读入一个字符串,其函数原型如下:chargetschars,intn;其中,s保存读入的字符串,n为字符串的长度;该函数执行的操作是使用getchar 函数从串口读入一个长度为n的字符串,并存入字符数组s中;如果遇到换行符,则结束字符的输入;输入成功时将返回传入的参数指针,失败时返回空指针NULL;3.4字符回送函数字符回送函数用于将输入的字符回送到输入缓冲区,其函数原型如下:charungetcharcharc;其中,c为输入字符;该函数执行的操作是将输入的字符回送到输入缓冲区,如果函数调用成功则返回char型值c,失败时则返回EOF;3.5字符输出函数字符输出函数用于通过8051串行口输出字符,其函数原型如下:charputcharcharc;其中,c为通过8051串行口输出的字符;3.6格式化输出函数格式化输出函数用于按照一定的格式输出数据或字符串,其函数原型如下:intprintfconstcharfmstr,argument…;该函数的功能是以一定的格式通过8051单片机的串行口输出数值和字符串;其中第一个参数fmstr是格式控制字符串,参数argument可以是字符串指针、字符或数值,该函数的返回值为实际输出的字符个数;3.7格式化内存缓冲区输出函数格式化内存缓冲区输出函数用于按照一定的格式将数据或字符串输出到内存缓冲区中,其函数原型如下:intsprintfchars,constcharfmstr,argument…;该函数执行的操作是通过指针s,将字符串送入内存数据缓冲区,并以ASCII码的形式储存;3.8字符串输出函数字符串输出函数用于将字符串和换行符写入串行口,其函数原型如下:intputsconstchars;其中,s为输出的字符串或换行符;如果执行成功则返回0,错误时返回EOF;程序示例如下:3.9格式化输入函数格式化输入函数用于将字符串和数据按照一定的格式从串口读入,其函数原型如下:intscanfconstcharfmstr,argument…;该函数的功能是在格式字符的控制下从串行口读入数据;其中每个参数都必须是指针;scanf返回值是所发现并转换的输入项数,如遇到错误则返回EOF;该函数的格式控制字符串形式如下,方括号内是可选项;%width{Bhl}type3.10格式化内存缓冲区输入函数格式化内存缓冲区输入函数用于将格式化的字符串和数据送入数据缓冲区,其函数原型如下:intsscanfchars,constcharfmstr,argument…;该函数的功能是将输入的字符串通过指针s指向的数据缓冲区;输入数据根据格式控制字符串fmstr被存放到由argument指定的地址;其它方面,sscanf函数与scanf函数类似;3.11字符串内存输出函数字符串内存输出函数用于将格式化字符串输出到内存数据缓冲区,其函数原型如下:intvprintfconstcharfmstr,charargptr;其中,fmstr为格式化字符串,argptr指向变量表的指针而不是变量表,函数返回值为实际写入到输出字符串中的字符数;其它方面,vprintf函数与printf函数类似;3.12指向缓冲区的输出函数指向缓冲区的输出函数用于将格式化字符串和数字输出到由指针所指向的内存数据缓冲区,其函数原型如下:intvsprintfchars,constcharfmstr,charargptr;该函数执行的操作是将格式化字符串和数字输出到由指针所指向的内存数据缓冲区;其中,该函数接受的是一个指向变量表的指针而不是变量表,其返回值为实际写入到输出字符串中的字符数;其他方面vsprintf函数与sprintf函数类似;4数学函数数学函数主要用于进行数学运算,其原型声明包含在头文件MATH.H中;下面介绍一些常用的数学函数;4.1绝对值函数绝对值函数用于计算并返回输出数据的绝对值;按照其操作数的数据类型的不同,有如下几种形式:intabsintval;charcabscharval;floatfabsfloatval;longlabslongval这些函数分别用于计算整型、字符型、浮点型以及长整型数据的绝对值;4.2指数以及对数函数指数函数用于计算并返回输出数据的指数;对数函数用于计算并返回输出数据的对数;其函数原型示例如下:floatexpfloatx;floatlogfloatx;floatlog10floatx;floatsqrtfloatx;其中exp函数用于计算并返回浮点数x的指数,log函数用于计算并返回浮点数x 的自然对数自然对数以e为底,e=2.718282,log10函数用于计算并返回浮点数x的以10为底的对数值,sqrt函数用于计算并返回浮点数x的平方根;4.3三角函数三角函数用于计算数学中三角函数的值;在C51语言中包含如下几种三角函数:floatcosfloatx;floatsinfloatx;floattanfloatx;floatacosfloatx;floatasinfloatx;floatatanfloatx;floatatan2floaty,floatx;floatcoshfloatx;floatsinhfloatx;floattanhfloatx;4.4取整函数取整函数用于取输入数据的整数;在C51语言中,包含两类取整函数,示例如下:floatceilfloatx;floatfloorfloatx;其中ceil函数用于计算并返回一个不小于x的最小正整数作为浮点数,floor函数用于计算并返回一个不大于x的最小正整数作为浮点数;4.5浮点型分离函数浮点型分离函数用于将浮点型数据的整数和小数部分分开,其函数原型如下:floatmodffloatx,floatip;函数modf将浮点数x分成整数和小数两部分,整数部分放入ip,返回值为小数部分;两者都含有与x相同的符号;4.6幂函数幂函数用于进行幂指数运算;其函数原型如下:floatpowfloatx,floaty;该函数用于计算并返回xy的值;如果x不等于0而y=0,则返回1;当x=0且y<=0或x<0且y不是整数时,返回NaN;5标准函数标准函数主要用于完成数据类型转换以及存储器分配等操作;标准函数的原型声明包含在头文件STDLIB.H中;下面介绍常用的一些函数;5.1字符串转换函数字符串转换函数用于将字符串转换成数值类型并输出;根据输出数值类型的不同,可以有如下几种形式:floatatoicharsl;floatatolcharsl;floatatofcharsl;其中,atoi函数用于将字符串sl转换成整型数值并返回该值;输入字符串的格式为:whitespace{+/-}数字;其中,whitespace可由空格、/、制表符组成;这里的数字可以是一个或多个十进制数;5.2带返回指针的字符串转换函带返回指针的字符串转换函数将字符串转换成数值类型并输出,同时返回未转换部分的指针;根据输出数值类型的不同,可以有如下几种形式:floatstrtodconstchars,charptr;longstrtolconstchars,charptr,unsignedcharbase;unsignerlongstrtoulconstchars,charptr,unsignedcharbase;5.3随机函数随机函数用于产生伪随机数;在C51语言中,包含两种随机函数,其函数声明如下:intrand;voidsrandintn;其中,函数rand用于返回一个0到32767之间的伪随机数,而函数srand用来初始化随机数发生器的随机种子;如果不使用srand函数,则对rand函数的相继调用将产生相同的随机序列;5.4数组内存分配函数数组内存分配函数用于为n个元素的数组分配内存空间,其函数原型如下:voidcallocunsighedintn,unsighedintsize;其中n数组元素的个数,size为数组中每个元素的大小;该函数所分配的内存区域用0进行初始化;返回值为已分配的内存单元起始地址,如果不成功则返回0; 5.5释放内存函数释放内存函数用于释放前面已分配的内存空间,其函数原型如下:voidfreevoidxdatap;其中,指针p指向待释放的存储区域;p必须是以前用calloc、malloc或realloc 函数分配的存储区域,如果p为NULL,则该函数无效;经free函数所被释放的存储区域可以参与以后的分配;5.6初始化内存函数初始化内存函数用于对前面申请的内存进行初始化,其函数原型如下:voidinit_mempoolvoidxdatap,unsighedintsize;其中,指针p表示存储区首地址,size表示存储区大小;该函数可对被函数calloc、malloc、free或realloc管理的存储区域进行初始化;5.7内存分配函数内存分配函数用于在内存中分配指定大小的存储空间,其函数原型如下:voidmallocunsighedintsize;其中,size为分配的空间大小,返回值为指向所分配内存的指针;如果返回NULL,则表示没有足够的内存空间可用;5.8调整内存大小函数调整内存大小函数用于调整先前分配的存储器区域大小,其函数原型如下:voidreallocvoidxdatap,unsighedintsize;其中,参数p表示该存储区域的起始地址,参数size表示新分配的存储区域大小;该函数的返回值为新区域所指向的指针;如果返回NULL,则表示没有足够的内存空间可用;原存储器区域的内容被复制到新存储器区域中,如果新存储器区域较大,多出的区域不作初始化;6内部函数内部函数的原型声明包含在头文件INTRINS.H中;下面介绍常用的一些函数; 6.1循环左移函数循环左移函数主要用于将数据按照二进制循环左移n位;按照操作数据类型的不同,其函数原型如下几种形式:unsighedchar _crol_unsighedcharval,unsighedcharn;unsighedint _irol_unsighedintval,unsighedcharn;unsighedlong _lrol_unsighedlongval,unsighedcharn;其中,val为待移位的变量,n为循环移位的次数;函数_crol_、_irol_和_lrol_分别用于字符型、整型和长整形变量的循环左移,其返回值分别为移位后的字符型、整型和长整形;该函数与8051单片机的RLA指令相关;6.2循环右移函数循环右移函数主要用于将数据按照二进制循环右移n位;按照操作数据类型的不同,其函数原型如下几种形式:unsighedchar _cror_unsighedcharval,unsighedcharn;unsighedint _iror_unsighedintval,unsighedcharn;unsighedlong _lror_unsighedlongval,unsighedcharn;其中,val为待移位的变量,n为循环移位的次数;函数_cror_、_iror_和_lror_分别用于字符型、整型和长整形变量的循环右移,其返回值分别为移位后的字符型、整型和长整形;该函数与8051单片机的RRA指令相关;6.3延时函数延时函数用于使单片机程序产生延时,其函数原型如下:void_nop_void;该函数类似于8051单片机的NOP指令;程序示例如下:include<intrins.h> //头文件include<reg51.h>void mainvoid //主函数。

C51的库函数

C51的库函数

单片机原理与应用及C51程序设计(第2版) 谢维成 杨加国主编附录B C51的库函数C51编译器提供了丰富的库函数,使用库函数可以大大简化用户的程序设计工作从而提高编程效率,基于MCS-51系列单片机本身的特点,某些库函数的参数和调用格式与ANSIC标准有所不同。

每个库函数都在相应的头文件中给出了函数原型声明,用户如果需要使用库函数,必须在源程序的开始处采用预处理命令#include,将有关的头文件包含进来。

下面是C51中常见的库函数。

B.1 寄存器库函数REG×××.H在REG×××.H的头文件中定义了MCS-51的所有特殊功能寄存器和相应的位,定义时都用大写字母。

当在程序的头部把寄存器库函数REG×××.H包含后,在程序中就可以直接使用MCS-51中的特殊功能寄存器和相应的位。

B.2 字符函数CTYPE.H函数原型:extern bit isalpha (char c);再入属性:reentrant功能:检查参数字符是否为英文字母,是则返回1,否则返回0。

函数原型:extern bit isalnum(char c);再入属性:reentrant功能:检查参数字符是否为英文字母或数字字符,是则返回1,否则返回0。

函数原型:extern bit iscntrl (char c);再入属性:reentrant功能:检查参数字符是否在0x00~0x1f之间或等于0x7f,是则返回1,否则返回0。

函数原型:extern bit isdigit(char c);再入属性:reentrant功能:检查参数字符是否为数字字符,是则返回1,否则返回0。

函数原型:extern bit isgraph (char c);再入属性:reentrant功能:检查参数字符是否为可打印字符,可打印字符的ASCII值为0x21~0x7e,是则返回1,否则返回0。

C语言中KeilC51库函数大全

C语言中KeilC51库函数大全

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

第一节本征库函数‎(intri‎nsic routi‎n e s)和非本征证‎库函数C51提供‎的本征函数‎是指编译时‎直接将固定‎的代码插入‎当前行,而不是用A‎C ALL和‎L CALL‎语句来实现‎,这样就大大‎提供了函数‎访问的效率‎,而非本征函‎数则必须由‎A CALL‎及LCAL‎L调用。

C51的本‎征库函数只‎有9个,数目虽少,但都非常有‎用,列如下:_crol‎_,_cror‎_:将char‎型变量循环‎向左(右)移动指定位‎数后返回_iror‎_,_irol‎_:将int型‎变量循环向‎左(右)移动指定位‎数后返回_lrol‎_,_lror‎_:将long‎型变量循环‎向左(右)移动指定位‎数后返回_nop_‎:相当于插入‎N OP_test‎b it_:相当于JB‎C bitva‎r测试该位‎变量并跳转‎同时清除。

_chkf‎l oat_‎:测试并返回‎源点数状态‎。

使用时,必须包含#inclu‎c le <intri‎n s.h>一行。

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

第二节几类重要库‎函数1. 专用寄存器‎i nclu‎d e文件例如803‎1、8051均‎为REG5‎1.h其中包括‎了所有80‎51的SF‎R及其位定‎义,一般系统都‎必须包括本‎文件。

2. 绝对地址i‎n clud‎e文件ab‎s acc.h该文件中实‎际只定义了‎几个宏,以确定各存‎储空间的绝‎对地址。

3. 动态内存分‎配函数,位于std‎l ib.h中4. 缓冲区处理‎函数位于“strin‎g.h”中其中包括拷‎贝比较移动‎等函数如:memcc‎p y memch‎r memcm‎p memcp‎y memmo‎v e memse‎t这样很方便‎地对缓冲区‎进行处理。

c51 nop函数

c51 nop函数

c51 nop函数摘要:1.函数c51 nop 的概述2.c51 nop 函数的作用3.c51 nop 函数的参数4.c51 nop 函数的返回值5.c51 nop 函数在编程中的应用6.c51 nop 函数的优缺点7.总结正文:【1.函数c51 nop 的概述】c51 nop 函数是C51 单片机开发中常用的一种函数,它的主要作用是在程序执行过程中插入一个空操作,即不执行任何操作,相当于程序中的一个空行。

这种函数在编程中有着广泛的应用,可以用于控制程序的执行流程,使程序更加灵活。

【2.c51 nop 函数的作用】c51 nop 函数的主要作用是在程序执行过程中插入一个空操作,即不执行任何操作,相当于程序中的一个空行。

这种函数在编程中有着广泛的应用,可以用于控制程序的执行流程,使程序更加灵活。

【3.c51 nop 函数的参数】c51 nop 函数不需要任何参数,是一个无参函数。

【4.c51 nop 函数的返回值】c51 nop 函数没有返回值,是一个无返回值函数。

【5.c51 nop 函数在编程中的应用】在C51 单片机编程中,c51 nop 函数经常被用来作为程序执行流程的控制,例如在复杂的循环结构中,可以使用nop 函数来控制循环次数,或者在程序执行过程中插入一个空操作,使程序更加灵活。

【6.c51 nop 函数的优缺点】c51 nop 函数的优点是使用简单,只需要调用函数名即可,无需传递参数,且对程序执行流程的控制非常灵活。

缺点是执行效率较低,因为实际上它只是执行了一条空指令,对程序的运行速度有一定的影响。

【7.总结】总的来说,c51 nop 函数是一个非常有用的函数,在C51 单片机编程中有着广泛的应用。

C语言中KeilC51库函数大全

C语言中KeilC51库函数大全

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

第一节本征库函数(i n t r i n s i c r o u t i n es)和非本征证库函数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均为其中包括了所有8051的SFR及其位定义,一般系统都必须包括本文件。

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

3. 动态内存分配函数,位于中4. 缓冲区处理函数位于“”中其中包括拷贝比较移动等函数如:memccpy memchr memcmp memcpy memmove memset这样很方便地对缓冲区进行处理。

5. 输入输出流函数,位于“”中流函数通8051的串口或用户定义的I/O口读写数据,缺省为8051串口,如要修改,比如改为LCD显示,可修改lib目录中的及源文件,然后在库中替换它们即可。

第三节K ei l C51库函数原型列表1.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.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 char * fmtstr[,argument]);char ungetchar(char c);void vprintf (const char *fmtstr,char * argptr);void vsprintf(char *buffer,const char * fmtstr,char * argptr);4.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.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);系统分类:用户分类:标签:无标签来源:整理阅读全文(121) | 回复(0)发表于2009/6/23 13:41:24Hello位于\C51\excmples\Hello\目录,其功能是向串口输出“Hello,world”整个程序如下:#pragma DB OE CD#indule <>#include<>void main(void){SCOn=0x50;TMOD=0x20TH1=0xf3;Tri=1;TI=1;printf(“Hello,world \n”);while(1) { }}第一节u V i s i o n f o r W i n d o w s的使用步骤(1) file_new新建一个文件,输入如上内容或直接用目录下源文件。

c51中的intrins库函数

c51中的intrins库函数

c51中的intrins库函数流水灯循环左移右移,用C语言,要高效的话,只有用伪本征函数文件“intrins.h”中的_crol_(),_cror_()...等等函数,具体解释如蓝色文字,例如,要用P1口驱动8个共阳连接的二极管左循环一个一个地亮,语句是 P1=_crol_(a,1);//a储存被移位的字符。

_crol_ 字符循环左移_cror_ 字符循环右移_irol_ 整数循环左移_iror_ 整数循环右移_lrol_ 长整数循环左移_lror_ 长整数循环右移_nop_ 空操作8051 NOP 指令_testbit_ 测试并清零位8051 JBC 指令详解:函数名: _crol_,_irol_,_lrol_原型: unsigned char _crol_(unsigned char val,unsigned char n);unsigned int _irol_(unsigned int val,unsigned char n);unsigned int _lrol_(unsigned int val,unsigned char n);功能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。

例:#includemain(){unsigned int y;C-5 1 程序设计 37y=0x00ff;y=_irol_(y,4); /*y=0x0ff0*/}函数名: _cror_,_iror_,_lror_原型: unsigned char _cror_(unsigned char val,unsigned char n);unsigned int _iror_(unsigned int val,unsigned char n);unsigned int _lror_(unsigned int val,unsigned char n);功能:_cror_,_iror_,_lror_以位形式将val 右移n 位,该函数与8051“RRA”指令相关,上面几个函数不同于参数类型。

C51的部分常用库函数_51单片机应用开发从入门到精通_[共3页]

C51的部分常用库函数_51单片机应用开发从入门到精通_[共3页]

第3章 MCS-51单片机软件开发环境
37 3.3.2 C51的部分常用库函数
本小节将简要介绍C51的部分常用库函数。

1.abs 函数
abs 函数的详细介绍如表3.14所示。

表3.14 abs 函数介绍 函 数 原 型
#include <math.h> int abs(int x); 函数参数
x :整型 函数功能 计算x 的绝对值 函数返回值
x 的绝对值,整型
说明:在math.h 头文件中,除了abs 函数之外,还有类似的acos 、asin 、atan 等函数。

2.ceil 函数
ceil 函数的详细介绍如表3.15所示。

表3.15 ceil 函数介绍 函 数 原 型
#include <math.h> float ceil(float x); 函数参数
x :浮点数 函数功能
求大于或等于x 的最小整数 函数返回值
大于或等于x 的最小整数,浮点数
说明:在math.h 头文件中,有类似ceil 的求小于或等于x 的最大整数的floor 函数。

3.getchar 函数
getchar 函数的详细介绍如表3.16所示。

表3.16 getchar 函数介绍 函 数 原 型
#include <stdio.h> char getchar(void); 函数参数
无 函数功能
从MCS-51单片机硬件的输入接口用_getkey 函数读入一个字符并且将此字符传递给putchar 函数用于回应 函数返回值
来自输入接口的下一个字符,整型,有ASCII 对应码值
4.gets 函数
gets 函数的详细介绍如表3.17所示。

c51库函数

c51库函数
void * calloc(unsigned int n,unsigned int size); //返回n个具有SIZE大小对象所分配的内存的指针,如NULL表示
//空间不足。
3. 动态内存分配函数,位于stdlib.h中 ,标准函数
3. STDLIB.H
float atof(void * string); //将STRING串转换成浮点数值将返回它。
int atoi(void * string); //int
long atol(void * string); //long
char ungetkey(char); //将输入的字符送回缓冲区并将其值返回给调用者,下次使用_getkey时可获得该字符。
6. CTYPE.H 字符函数 检查参数值或参数字符, 不注明表示是返1,否则返0
bit isalnum(char c);//英文字母或数字
bit isalpha(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);
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);

单片机C语言C的常用库函数

单片机C语言C的常用库函数

C51的常用库函数详解C51语言的编译器中包含有丰富的库函数;使用库函数可以大大简化用户程序设计的工作量;提高编程效率..每个库函数都在相应的头文件中给出了函数原型声明;在使用时;必须在源程序的开始处使用预处理命令include将有关的头文件包含进来..C51库函数中类型的选择考虑到了8051单片机的结构特性;用户在自己的应用程序中应尽可能地使用最小的数据类型;以最大限度地发挥8051单片机的性能;同时可减少应用程序的代码长度..下面将C51的库函数分类列出并详细介绍其用法..1字符函数字符函数的原型声明包含在头文件CTYPE.H中..常用的一些字符函数介绍如下..1.1检查英文字母函数检查英文字母函数用于检查形参字符是否为英文字母;其函数原型如下:bitisalphacharc;其中;c为待判断的字符;如果是英文字母则返回1;否则返回0..程序示例如下:1.2检查字母数字函数检查字母数字函数用于检查形参字符是否为英文字母或数字字符;其函数原型如下:bitisalnumcharc;1.3检查控制字符函数检查控制字符函数用于检查形参字符是否为控制字符;其函数原型:bitiscntrlcharc;其中;c为待判断的字符..控制字符其取值范围为0x00~0xlF之间或等于0x7F;如果是;则返回1;否则返回0..1.4十进制数字检查函数十进制数字检查函数用于检查形参字符是否为十进制数字;其函数原型如下:bitisdigitcharc;其中;c为待判断的字符;如果是十进制数字则返回1;否则返回0..1.5可打印字符检查函数可打印字符检查函数用于检查形参字符是否为可打印字符;其函数原型如下:bitisgraphcharc;其中;c为待判断的字符..可打印字符的取值范围为0x21~0x7C;不包含空格;如果是可打印字符则返回1;否则返回0..1.6包含空格的可打印字符检查函数包含空格的可打印字符检查函数用于检查形参字符是否为可打印字符以及空格;其函数原型如下:bitisprintcharc;其中;c为待判断字符..如果是则返回1;否则返回0..该函数与isgraph的区别在于包含了空格符;空格符为0x20..1.7格式字符检查函数格式字符检查函数用于检查形参字符是否为标点、空格或格式字符;其函数原型如下:bitispunctcharc;其中;c为待判断字符;如果是则返回1;否则返回0..1.8小写英文字母检查函数小写英文字母检查函数用于检查形参字符是否为小写英文字母;其函数原型如下:bitislowercharc;其中;c为待判断字符..如果是小写英文字母则返回1;否则返回0..1.9大写英文字母检查函数大写英文字母检查函数用于检查形参字符是否为大写英文字母;其函数原型如下:bitisuppercharc;其中;c为待判断字符..如果是大写英文字母则返回1;否则返回0..1.10控制字符检查函数控制字符检查函数用于检查形参字符是否为控制字符;其函数原型如下:bitisspacecharc;其中;c为待判断字符..如果是控制字符则返回1;否则返回0..控制字符包括:空格、制表符、回车、换行、垂直制表符和送纸;其取值范围为0x09~0x0d;或为0x20..1.11十六进制数字检查函数十六进制数字检查函数用于检查形参字符是否为十六进制数字;其函数原型如下:bitisxdigitcharc;其中;c为待判断字符..如果是16进制数字字符则返回1;否则返回0..1.12十六进制数字转换函数十六进制数字检查函数用于转换形参字符为十六进制数字;其函数原型如下:chartointcharc;其中;c为待转换字符..该函数将形参字符0~9、a~f大小写无关转换为16进制数字..其中;对于字符0~9;返回值为0H~9H;对于ASCII字符a~f大小写无关;返回值为0AH~0FH..1.13大写字符转换函数大写字符转换函数用于将大写字符转换为小写字符;其函数原型如下:chartolowercharc;其中;c为待转换的大写字符..如果字符参数不在A~Z之间;则该函数将不起作用;而直接返回原字符..1.14小写字符转换函数小写字符转换函数用于将小写字符转换为大写字符;其函数原型如下:chartouppercharc;其中;c为待转换的小写字符..如果字符参数不在a~z之间;则该函数将不起作用;而直接返回原字符..1.15ASCII字符转换函数ASCII字符转换函数用于将任何字符型参数缩小到有效的ASCII范围之内;其函数原型如下:chartoasciicharc;其中;c为待转换的字符..该函数执行的操作是将形参数值和0x7f做与运算;从而去掉第7位以上的所有位数..如果形参已是有效的ASCII字符;则不作处理;直接返回原字符..1.16大写字符宏转换函数大写字符宏转换函数用于大写字符转换为小写字符;其函数原型如下:char_tolowercharc;其中;c为待转换的大写字符..这其实是一个由宏定义完成的操作;其功能是将字符参数c与常数0x20逐位进行或运算;从而将大写字符转换为小写字符..1.17小写字符宏转换函数小写字符宏转换函数用于小写字符转换为大写字符;其函数原型如下:char_touppercharc;其中;c为待转换的小写字符..这其实是一个由宏定义完成的操作;其功能是将字符参数c与常数0xdf逐位进行与运算;从而将小写字符转换为大写字符..2字符串函数字符串函数的原型声明包含在头文件STRING.H中..在C51语言中;字符串应包括2个或多个字符;字符串的结尾以空字符来表示..字符串函数通过接受指针串来对字符串进行处理..常用的字符串函数介绍如下..2.1字符查找函数字符查找函数用于在字符串中顺序查找字符;其函数原型如下:voidmemchrvoidsl;charval;intlen;其中;s1为输入字符串;val为待查找的字符;len为查找的长度范围..该函数的功能是在字符串s1中顺序搜索前len个字符以找出字符val;如果找到则返回sl中指向val的指针;如果没有找到则返回NULL..2.2指定长度的字符串比较函数指定长度的字符串比较函数用于按照指定的长度比较两个字符串的大小;其函数原型如下:charmemcmpvoids1;voids2;intlen;其中;s1和s2为输入字符串;len为比较的长度..该函数的功能是逐个比较字符串sl 和s2的前len个字符;如果相等则返回0;如果字符串s1大于s2;则返回一个正数;如果字符串s1小于s2;则返回一个负数..如果两个字符串的长度小于len;该函数仍将一直比较len个字符;这种情况下;有可能结果是错误的..因此应该保证len不能超过最短字符串的长度..2.3字符串复制函数字符串复制函数用于复制指定长度的字符串;其函数原型如下:voidmemcpyvoiddest;voidsrc;intlen;其中;dest为目标字符串;src为源字符串;len为复制的长度..该函数的功能是从src 所指向的字符串中复制len个字符到dest字符串中;其返回值指向dest中的最后一个字符的指针..2.4带终止字符的字符串复制函数带终止字符的字符串复制函数用于复制字符串;如果遇到终止字符则停止复制;其函数原型如下:voidmemccpyvoiddest;voidsrc;charval;intlen;其中;dest为目标字符串;src为源字符串;val为终止字符;len为复制的长度..该函数的功能是复制字符串src中的len个字符到dest中;复制len个字符后则返回NULL..如果遇到字符val则停止复制;此时返回一个指向dest中的下一个元素的指针..2.5字符串移动函数字符串移动函数同样用于复制字符串;其函数原型如下:voidmemmovevoiddest;voidsrc;intlen;其中;dest为目标字符串;src为源字符串;len为复制长度..该函数的功能是从src所指向的字符串中复制len个字符到dest字符串中;其返回值指向dest中的最后一个字符的指针..其功能与memcpy相同;但是复制区间src与dest可以发生交迭..2.6字符串填充函数字符串填充函数用于按规定的字符填充字符串;其函数原型如下:voidmemsetvoids;charval;intlen;其中;s为待填充的字符串;val为填充字符;len为填充的长度..该函数实现的操作是用字符val来填充字符串s;共填充len个单元2.7字符串追加函数字符串追加函数用于复制字符串到另一个字符串的尾部;其函数原型如下:voidstrcatchars1;chars2;其中;s1为目标字符串;s2为待复制的字符串..该函数实现的操作是将字符串s2复制到字符串s1的尾部..其中字符串s1要有足够的大小来保存两个字符串..该函数的返回值指向字符串s1中的第一个字符的指针..2.8指定长度的字符串追加函数指定长度的字符串追加函数用于复制指定长度的字符串到另一个字符串的尾部;其函数原型如下:voidstrncat;chars1;chars2;intn;其中;s1为目标字符串;s2为待复制的字符串;n为复制的长度..该函数实现的操作是从字符串s2中复制n个字符添加到字符串s1的尾部..其中;如果字符串s2的长度比n小;则将全部复制字符串s2包括串结束符..2.9字符串比较函数字符串比较函数用于比较两个字符串的大小;其函数原型如下:charstrcmpchars1;chars2;其中;s1和s2为待比较的字符串..该函数的功能是比较字符串s1和s2;如果两者相等则返回0;如果s1<s2;则返回一个负数;如果s1>s2;则返回一个正数..2.10包含结束符的字符串比较函数包含结束符的字符串比较函数用于比较两个字符串的大小;其函数原型如下:charstrncmpchars1;chars2;intn;其中;s1和s2为待比较的字符串;n为比较的长度..该函数的功能是比较字符串s1和s2的前n个字符;如果两者相等则返回0;如果s1<s2;则返回一个负数;如果s1>s2;则返回一个正数..这里需要和memcmp函数相区别;如果字符串的长度小于n;则strncmp函数比较到字符串结束符后便停止;这和memcmp函数是不一样的..2.11字符串覆盖函数字符串覆盖函数用于将一个字符串覆盖另一个字符串;其函数原型如下:charstrcpychars1;chars2;其中;s1为目标字符串;s2为源字符串..该函数的功能是将字符串s2包括结束符复制到字符串s1中的第1个字符指针处..这里需要注意和strcat函数相区别;strcat函数将字符串s2复制到字符串s1的末尾..2.12指定长度的字符串覆盖函数指定长度的字符串覆盖函数用于将一个指定长度的字符串覆盖另一个字符串;其函数原型如下:charstrncpychars1;chars2;intn;其中;s1为目标字符串;s2为源字符串;n为长度..该函数实现的操作是从字符串s2包括结束符中复制n个字符到字符串s1中的第1个字符指针处..如果字符串s2的长度小于n;则s1串以0补齐到长度n..2.13获取字符串个数函数获取字符串个数函数用于返回字符串中字符总数;其函数原型如下:charstrlenchars1;其中;s1为输入字符串..该函数的功能是获取字符串s1中的字符个数;返回值的大小不包括结尾的字符串结束符..2.14搜索字符串函数搜索字符串函数用于搜索字符串出现的位置;其函数原型如下:charstrstrconstchars1;chars2;其中;s1为目标字符串;s2为搜索的字符串..该函数实现的操作是在字符串s1中搜索第一次出现字符串s2的位置;并返回该处的指针..如果字符串s1中不包括字符串s2;则该函数返回一个空指针..2.15搜索字符函数搜索字符函数用于搜索字符出现的位置;其函数原型如下:charstrchrchars1;charc;其中;s1为目标字符串;c为待搜索的字符..该函数的功能是搜索字符串s1中是否包含字符c;如果包含则返回第一次指向该字符的指针;否则返回NULL..被搜索的字符可以是串结束符;此时返回值是指向串结束符的指针..2.16返回位置值的字符搜索函数返回位置值的字符搜索函数用于搜索并返回字符出现的位置;其函数原型如下:intstrposchars1;charc;其中;s1为目标字符串;c为搜索的字符..该函数的功能是查找并返回字符c在字符串s1中第一次出现的位置值;没有找到该字符则返回-1;s1串首字符的位置值是0..strpos函数的功能与strchr类似;只不过返回值不同..2.17字符包含函数字符包含函数用于检查字符串中是否包含某字符;其函数原型如下:charstrrchrchars1;charc;其中;s1为目标字符串;c为查找的字符..该函数的功能是搜索字符串s1中是否包含字符c;如果包含则返回最后一次指向该字符的指针;否则返回NULL..被搜索的字符可以是串结束符;此时返回值是指向串结束符的指针..2.18返回位置值的字符包含函数返回位置值的字符包含函数同样用于检查字符串中是否包含某字符;其函数原型如下:intstrrposchars1;charc;其中;s1为目标字符串;c为查找的字符..该函数的功能是查找并返回字符c在字符串s1中最后一次出现的位置值;没有找到该字符则返回-1;s1串首字符的位置值是0..strrpos函数的功能与strrchr类似;只不过返回值不同..2.19在指定字符集中查找不包含字符函数在指定字符集中查找不包含字符函数用于查找不包含在指定字符集中的字符;其函数原型如下:intstrspnchars1;charset;其中;s1为目标字符串;set为字符集..该函数的功能是搜索字符串s1中第一个不包含在set串中的字符;返回值是字符串s1中包括在set中的字符的个数..如果s1中所有的字符都包含在set中;则返回s1的长度不包括结束符..如果set是空字符串则返回0..2.20在指定字符集中查找包含字符函数在指定字符集中查找包含字符函数用于查找包含在指定字符集中的字符;其函数原型如下:intstrcspnchars1;charset;其中;s1为目标字符串;set为字符集..该函数的功能是搜索的是第一个包含在set串中字符;返回值是字符串s1中包括在set中的字符的个数..如果s1中所有的字符都包含在set中;则返回s1的长度不包括结束符..如果set是空字符串则返回0..2.21查找第一个包含字符函数查找第一个包含字符函数用于查找第一个包含在指定字符集中的字符;其函数原型如下:charstrpbrkchars1;charset;其中;s1为目标字符串;set为字符集..该函数的功能是搜索字符串s1中第一个包含在set串中的字符;返回值指向搜索到的字符的指针;如果未找到;则返回NULL..2.22查找最后一个包含字符函数查找最后一个包含字符函数用于查找最后一个包含在指定字符集中的字符;其函数原型如下:charstrrpbrkchars1;charset;其中;s1为目标字符串;set为字符集..该函数的功能是搜索字符串s1中最后一个包含在set串中的字符;返回值指向搜索到的字符的指针;如果未找到;则返回NULL..3I/O函数I/O函数主要用于数据的输入输出等操作;C51的I/O库函数的原型声明包含在头文件STDIO.H中..这些I/O函数使用8051单片机的串行接口进行通信;因此;在使用之前需要先进行串口的初始化..例如:SCON=0x50; //串口模式1;允许接收TMOD|=0x20; //初始化T1为定时功能;模式2PCON|=0x80; //设置SMOD=1TL1=0xF4; //波特率4800bit/s;初值TH1=0xF4;IE|=0x90; //中断TR1=1; //启动定时器3.1字符读入函数字符读入函数用于从串口读入一个字符;其函数原型如下:char_getkeyvoid;该函数执行的操作是等待从8051的串口读入一个字符;并返回读入的原字符..程序示例如下:3.2字符读入输出函数字符读入输出函数用于从串口读入一个字符并输出该字符;其函数原型如下:chargetcharvoid;该函数与_getkey函数有细微的不同;其执行的操作是使用_getkey从串口读入的一个字符;然后使用putchar函数将读入的字符输出..3.3字符串读入函数字符串读入函数用于从串口读入一个字符串;其函数原型如下:chargetschars;intn;其中;s保存读入的字符串;n为字符串的长度..该函数执行的操作是使用getchar函数从串口读入一个长度为n的字符串;并存入字符数组s中..如果遇到换行符;则结束字符的输入..输入成功时将返回传入的参数指针;失败时返回空指针NULL..3.4字符回送函数字符回送函数用于将输入的字符回送到输入缓冲区;其函数原型如下:charungetcharcharc;其中;c为输入字符..该函数执行的操作是将输入的字符回送到输入缓冲区;如果函数调用成功则返回char型值c;失败时则返回EOF..3.5字符输出函数字符输出函数用于通过8051串行口输出字符;其函数原型如下:charputcharcharc;其中;c为通过8051串行口输出的字符..3.6格式化输出函数格式化输出函数用于按照一定的格式输出数据或字符串;其函数原型如下:intprintfconstcharfmstr;argument…;该函数的功能是以一定的格式通过8051单片机的串行口输出数值和字符串..其中第一个参数fmstr是格式控制字符串;参数argument可以是字符串指针、字符或数值;该函数的返回值为实际输出的字符个数..3.7格式化内存缓冲区输出函数格式化内存缓冲区输出函数用于按照一定的格式将数据或字符串输出到内存缓冲区中;其函数原型如下:intsprintfchars;constcharfmstr;argument…;该函数执行的操作是通过指针s;将字符串送入内存数据缓冲区;并以ASCII码的形式储存..3.8字符串输出函数字符串输出函数用于将字符串和换行符写入串行口;其函数原型如下:intputsconstchars;其中;s为输出的字符串或换行符..如果执行成功则返回0;错误时返回EOF..程序示例如下:3.9格式化输入函数格式化输入函数用于将字符串和数据按照一定的格式从串口读入;其函数原型如下:intscanfconstcharfmstr;argument…;该函数的功能是在格式字符的控制下从串行口读入数据..其中每个参数都必须是指针..scanf返回值是所发现并转换的输入项数;如遇到错误则返回EOF..该函数的格式控制字符串形式如下;方括号内是可选项..%width{Bhl}type3.10格式化内存缓冲区输入函数格式化内存缓冲区输入函数用于将格式化的字符串和数据送入数据缓冲区;其函数原型如下:intsscanfchars;constcharfmstr;argument…;该函数的功能是将输入的字符串通过指针s指向的数据缓冲区..输入数据根据格式控制字符串fmstr被存放到由argument指定的地址..其它方面;sscanf函数与scanf函数类似..3.11字符串内存输出函数字符串内存输出函数用于将格式化字符串输出到内存数据缓冲区;其函数原型如下:intvprintfconstcharfmstr;charargptr;其中;fmstr为格式化字符串;argptr指向变量表的指针而不是变量表;函数返回值为实际写入到输出字符串中的字符数..其它方面;vprintf函数与printf函数类似..3.12指向缓冲区的输出函数指向缓冲区的输出函数用于将格式化字符串和数字输出到由指针所指向的内存数据缓冲区;其函数原型如下:intvsprintfchars;constcharfmstr;charargptr;该函数执行的操作是将格式化字符串和数字输出到由指针所指向的内存数据缓冲区..其中;该函数接受的是一个指向变量表的指针而不是变量表;其返回值为实际写入到输出字符串中的字符数..其他方面vsprintf函数与sprintf函数类似..4数学函数数学函数主要用于进行数学运算;其原型声明包含在头文件MATH.H中..下面介绍一些常用的数学函数..4.1绝对值函数绝对值函数用于计算并返回输出数据的绝对值..按照其操作数的数据类型的不同;有如下几种形式:intabsintval;charcabscharval;floatfabsfloatval;longlabslongval这些函数分别用于计算整型、字符型、浮点型以及长整型数据的绝对值..4.2指数以及对数函数指数函数用于计算并返回输出数据的指数..对数函数用于计算并返回输出数据的对数..其函数原型示例如下:floatexpfloatx;floatlogfloatx;floatlog10floatx;floatsqrtfloatx;其中exp函数用于计算并返回浮点数x的指数;log函数用于计算并返回浮点数x的自然对数自然对数以e为底;e=2.718282;log10函数用于计算并返回浮点数x的以10为底的对数值;sqrt函数用于计算并返回浮点数x的平方根..4.3三角函数三角函数用于计算数学中三角函数的值..在C51语言中包含如下几种三角函数:floatcosfloatx;floatsinfloatx;floattanfloatx;floatacosfloatx;floatasinfloatx;floatatanfloatx;floatatan2floaty;floatx;floatcoshfloatx;floatsinhfloatx;floattanhfloatx;4.4取整函数取整函数用于取输入数据的整数..在C51语言中;包含两类取整函数;示例如下:floatceilfloatx;floatfloorfloatx;其中ceil函数用于计算并返回一个不小于x的最小正整数作为浮点数;floor函数用于计算并返回一个不大于x的最小正整数作为浮点数..4.5浮点型分离函数浮点型分离函数用于将浮点型数据的整数和小数部分分开;其函数原型如下:floatmodffloatx;floatip;函数modf将浮点数x分成整数和小数两部分;整数部分放入ip;返回值为小数部分..两者都含有与x相同的符号..4.6幂函数幂函数用于进行幂指数运算..其函数原型如下:floatpowfloatx;floaty;该函数用于计算并返回xy的值..如果x不等于0而y=0;则返回1..当x=0且y<=0或x<0且y不是整数时;返回NaN..5标准函数标准函数主要用于完成数据类型转换以及存储器分配等操作..标准函数的原型声明包含在头文件STDLIB.H中..下面介绍常用的一些函数..5.1字符串转换函数字符串转换函数用于将字符串转换成数值类型并输出..根据输出数值类型的不同;可以有如下几种形式:floatatoicharsl;floatatolcharsl;floatatofcharsl;其中;atoi函数用于将字符串sl转换成整型数值并返回该值..输入字符串的格式为:whitespace{+/-}数字..其中;whitespace可由空格、/、制表符组成..这里的数字可以是一个或多个十进制数..5.2带返回指针的字符串转换函带返回指针的字符串转换函数将字符串转换成数值类型并输出;同时返回未转换部分的指针..根据输出数值类型的不同;可以有如下几种形式:floatstrtodconstchars;charptr;longstrtolconstchars;charptr;unsignedcharbase;unsignerlongstrtoulconstchars;charptr;unsignedcharbase;5.3随机函数随机函数用于产生伪随机数..在C51语言中;包含两种随机函数;其函数声明如下:intrand;voidsrandintn;其中;函数rand用于返回一个0到32767之间的伪随机数;而函数srand用来初始化随机数发生器的随机种子..如果不使用srand函数;则对rand函数的相继调用将产生相同的随机序列..5.4数组内存分配函数数组内存分配函数用于为n个元素的数组分配内存空间;其函数原型如下:voidcallocunsighedintn;unsighedintsize;其中n数组元素的个数;size为数组中每个元素的大小..该函数所分配的内存区域用0进行初始化..返回值为已分配的内存单元起始地址;如果不成功则返回0..5.5释放内存函数释放内存函数用于释放前面已分配的内存空间;其函数原型如下:voidfreevoidxdatap;其中;指针p指向待释放的存储区域..p必须是以前用calloc、malloc或realloc函数分配的存储区域;如果p为NULL;则该函数无效..经free函数所被释放的存储区域可以参与以后的分配..5.6初始化内存函数初始化内存函数用于对前面申请的内存进行初始化;其函数原型如下:voidinit_mempoolvoidxdatap;unsighedintsize;其中;指针p表示存储区首地址;size表示存储区大小..该函数可对被函数calloc、malloc、free或realloc管理的存储区域进行初始化..5.7内存分配函数内存分配函数用于在内存中分配指定大小的存储空间;其函数原型如下:voidmallocunsighedintsize;其中;size为分配的空间大小;返回值为指向所分配内存的指针..如果返回NULL;则表示没有足够的内存空间可用..5.8调整内存大小函数调整内存大小函数用于调整先前分配的存储器区域大小;其函数原型如下:voidreallocvoidxdatap;unsighedintsize;其中;参数p表示该存储区域的起始地址;参数size表示新分配的存储区域大小..该函数的返回值为新区域所指向的指针..如果返回NULL;则表示没有足够的内存空间可用..原存储器区域的内容被复制到新存储器区域中;如果新存储器区域较大;多出的区域不作初始化..6内部函数内部函数的原型声明包含在头文件INTRINS.H中..下面介绍常用的一些函数..6.1循环左移函数循环左移函数主要用于将数据按照二进制循环左移n位..按照操作数据类型的不同;其函数原型如下几种形式:unsighedchar _crol_unsighedcharval;unsighedcharn;unsighedint _irol_unsighedintval;unsighedcharn;unsighedlong _lrol_unsighedlongval;unsighedcharn;其中;val为待移位的变量;n为循环移位的次数..函数_crol_、_irol_和_lrol_分别用于字符型、整型和长整形变量的循环左移;其返回值分别为移位后的字符型、整型和长整形..该函数与8051单片机的RLA指令相关..6.2循环右移函数循环右移函数主要用于将数据按照二进制循环右移n位..按照操作数据类型的不同;其函数原型如下几种形式:unsighedchar _cror_unsighedcharval;unsighedcharn;。

C51库函数

C51库函数

C51库函数C-51软件包的库包含标准的应用程序,每个函数都在相应的头文件(.h)中有原型声明。

如果使用库函数,必须在源程序中用预编译指令定义与该函数相关的头文件(包含了该函数的原型声明)。

例如:#include如果省掉头文件,编译器则期望标准的C参数类型,从而不能保证函数的正确执行。

3.1 CTYPE.H:字符函数在CTYPE.H头文件中包含下列一些库函数:函数名:isalpha原型:extern bit isalpha(char)功能:isalpha检查传入的字符是否在…A‟-…Z‟和…a‟-…z‟之间,如果为真返回值为1,否则为0。

函数名:isalnum原型:extern bit isalnum(char)功能:isalnum检查字符是否位于…A‟-…Z‟,…a‟-…z‟或…0‟-…9‟之间,为真返回值是1,否则为0。

函数名:iscntrl原型:extern bit iscntrl(char)功能:iscntrl检查字符是否位于0x00~0x1F之间或0x7F,为真返回值是1,否则为0。

函数名:isdigit原型:extern bit isdigit(char)功能:isdigit检查字符是否在…0‟-…9‟之间,为真返回值是1,否则为0。

函数名:isgraph原型:extern bit isgraph(char)功能:isgraph检查变量是否为可打印字符,可打印字符的值域为0x21~0x7E。

若为可打印,返回值为1,否则为0。

函数名:isprint原型:extern bit isprint(char)功能:除与isgraph相同外,还接受空格字符(0X20)。

函数名:ispunct原型:extern bit ispunct(char)功能:ispunct检查字符是否位为标点或空格。

如果该字符是个空格或32个标点和格式字符之一(假定使用ASCII字符集中128个标准字符),则返回1,否则返回0。

C51函数库函数功能表

C51函数库函数功能表

一、CTYPE.H1、extern bit isalpha (unsigned char);检查参数字符是否为英文字符,是则返回1,否则返回02、extern bit isalnum (unsigned char);检查参数字符是否为字母或者数字字符,是则返回1,否则返回03、extern bit iscntrl (unsigned char);检查参数值是否在0x00~0x7F之间或者等于0x7F,是则返回1,否则返回04、extern bit isdigit (unsigned char);检查参数值是否为数字字符,是则返回1,否则返回05、extern bit isgraph (unsigned char);检查参数是否为可打印字符(0x21~0x7E),是则返回1,否则返回06、extern bit isprint (unsigned char);检查参数是否为可打印字符,包括空格符,其余与isgraph相同7、extern bit ispunct (unsigned char);检查参数是否为标点、空格或者格式字符,是则返回1,否则返回08、extern bit islower (unsigned char);检查参数是否为小写字母,是则返回1,否则返回09、extern bit isupper (unsigned char);检查参数是否为大写字母,是则返回1,否则返回010、extern bit isspace (unsigned char);检查参数是否为下列之一:空格、制表符、回车、换行、垂直制表符和送纸符号,是则返回1,否则返回011、extern bit isxdigit (unsigned char);检查参数是否为16进制数字字符,是则返回1,否则返回0 12、extern unsigned char tolower (unsigned char);将大写字符转换成小写形式,如果字符不在(A~Z)之间,则直接返回该字符13、extern unsigned char toupper (unsigned char);将小写字符转换成大写形式,如果字符不在(a~z)之间,则直接返回该字符14、extern unsigned char toint (unsigned char);将ASCII字符0~9,A~F(不分大小写)转换成16进制的数字,返回转换后的16进制数字二、STDIO.H#ifndef EOF#define EOF -1#endif#ifndef NULL#define NULL ((void *) 0)#endif#ifndef _SIZE_T#define _SIZE_Ttypedef unsigned int size_t;#endif1、extern char _getkey (void);从单片机串口读入一个字符,然后等待字符输入2、extern char getchar (void);该函数使用_getkey()函数从串口读入字符,并将读入的字符马上给putchar()函数输出3、extern char ungetchar (char);将输入的字符回送输入缓冲区,成功返回char,否则返回EOF 4、extern char putchar (char);通过单片机的串口输出字符,与_getkey()函数一样5、extern int printf (const char *, ...);以一定的格式通过单片机串行口输出数值和字符串,返回值为实际输出的字符数6、extern int sprintf (char *, const char *, ...);通过一个指针S将数据送人可寻址的内存缓冲区,并以ASCII 码的形式存储7、extern int vprintf (const char *, char *);8、extern int vsprintf (char *, const char *, char *);9、extern char *gets (char *, int n);10、extern int scanf (const char *, ...);11、extern int sscanf (char *, const char *, ...);12、extern int puts (const char *);三、string.h1、extern char *strcat (char *s1, char *s2);2、extern char *strncat (char *s1, char *s2, int n);3、extern char strcmp (char *s1, char *s2);4、extern char strncmp (char *s1, char *s2, int n);5、extern char *strcpy (char *s1, char *s2);6、extern char *strncpy (char *s1, char *s2, int n);7、extern int strlen (char *);8、extern char *strchr (const char *s, char c);9、extern int strpos (const char *s, char c);10、extern char *strrchr (const char *s, char c);11、extern int strrpos (const char *s, char c);12、extern int strspn (char *s, char *set);13、extern int strcspn (char *s, char *set);14、extern char *strpbrk (char *s, char *set);15、extern char *strrpbrk (char *s, char *set);16、extern char *strstr (char *s, char *sub);17、extern char *strtok (char *str, const char *set);18、extern char memcmp (void *s1, void *s2, int n);19、extern void *memcpy (void *s1, void *s2, int n);20、extern void *memchr (void *s, char val, int n);21、extern void *memccpy (void *s1, void *s2, char val, int n);22、extern void *memmove (void *s1, void *s2, int n);23、extern void *memset (void *s, char val, int n);四、stdlib.h1、extern int abs (int val);2、extern long labs (long val);3、extern float atof (char *s1);将字符串转换成浮点数4、extern long atol (char *s1);将字符串转换成长整型5、extern int atoi (char *s1);将字符串转换成整型6、extern int rand ();取一个0~32767之间的随机数7、extern void srand (int);根据种子seed的值取随机数8、extern float strtod (char *, char **);9、extern long strtol (char *, char **, unsigned char);将字符串转换成长整数10、extern unsigned long strtoul (char *, char **, unsigned char);将字符串转换成无符号长整数#define _MALLOC_MEM_ xdata11、extern void init_mempool (void _MALLOC_MEM_ *p, unsigned int size);初始化内存池12、extern void _MALLOC_MEM_ *malloc (unsigned int size);申请一块大小为size的内存13、extern void free (void _MALLOC_MEM_ *p);释放一块被申请的内存14、extern void _MALLOC_MEM_ *realloc (void _MALLOC_MEM_ *p, unsigned int size);重新申请一块大小为size的内存15、extern void _MALLOC_MEM_ *calloc (unsigned int size, unsigned int len);申请有size个元素的,每个元素的大小为len的数组五、math.h1、extern char cabs (char val);计算并返回val的绝对值,为char型2、extern int abs (int val);计算并返回val的绝对值,为int型3、extern long labs (long val);计算并返回val的绝对值,为long型4、extern float fabs (float val);计算并返回val的绝对值,为float型5、extern float sqrt (float val);返回x的正平方根6、extern float exp (float val);计算e为底x的幂并返回计算结果7、extern float log (float val);返回自然对数8、extern float log10 (float val);返回以10为底的对数9、extern float sin (float val);10、extern float cos (float val);11、extern float tan (float val);以上3个函数返回相应的三角函数值,所有的变量范围在-π/2 ~ +π/2之间,否则会返回错误12、extern float asin (float val);13、extern float acos (float val);14、extern float atan (float val);返回相应的反三角函数值,值域为-π/2 ~ +π/215、extern float sinh (float val);16、extern float cosh (float val);17、extern float tanh (float val);返回x的相应的双曲函数值18、extern float atan2 (float y, float x);返回x/y的反正切值,值域为-π~ +π19、extern float ceil (float val);返回一个不小于val的最小整数(作为浮点数)20、extern float floor (float val);返回一个不大于val最大整数(作为浮点型)21、extern float modf (float val, float *n);将浮点数val分为整数和小数两部分,两者的符号与val相同,整数部分放入*n,小数部分作为返回值22、extern float fmod (float x, float y);返回x/y的余数23、extern float pow (float x, float y);返回x的y次方六、absacc.h以下4个宏定义,对单片机的进行绝对地址访问,可以作为字节寻址,CBYTE寻址code区,DBYTE寻址data区,PBYTE寻址分页xdata区,XBYTE寻址xdata区1、#define CBYTE ((unsigned char volatile code *) 0)2、#define DBYTE ((unsigned char volatile data *) 0)3、#define PBYTE ((unsigned char volatile pdata *) 0)4、#define XBYTE ((unsigned char volatile xdata *) 0)以上4个宏定义与上面4个功能类似,只是数据类型是unsigned int型5、#define CWORD ((unsigned int volatile code *) 0)6、#define DWORD ((unsigned int volatile data *) 0)7、#define PWORD ((unsigned int volatile pdata *) 0)8、#define XWORD ((unsigned int volatile xdata *) 0)七、intrins.h1、extern void _nop_ (void);空操作指令,需要一个指令周期2、extern bit _testbit_ (bit);该函数对字节中的一个比特进行测试,如果该比特为1则返回1,并置该位为0,否则返回03、extern unsigned char _cror_ (unsigned char, unsigned char);4、extern unsigned int _iror_ (unsigned int, unsigned char);5、extern unsigned long _lror_ (unsigned long, unsigned char);将第一个参数循环右移n位,3个函数的参数和返回值类型不同6、extern unsigned char _crol_ (unsigned char, unsigned char);7、extern unsigned int _irol_ (unsigned int, unsigned char);8、extern unsigned long _lrol_ (unsigned long, unsigned char);将第一个参数循环左移n位,3个函数的不同在于参数和返回值的类型9、extern unsigned char _chkfloat_(float);10、extern void _push_ (unsigned char _sfr);11、extern void _pop_ (unsigned char _sfr);八、setjmp.htypedef char jmp_buf[_JBLEN];1、extern volatile int setjmp (jmp_buf);2、extern volatile void longjmp (jmp_buf, int);。

(完整版)Keilc51常用库函数汇总参考

(完整版)Keilc51常用库函数汇总参考

Keil c51函数参考一、数学函数〈math.h >(1)cabs原型:char cabs(char val);功能:cabs函数取val的绝对值。

参数:一字节数val.返回:cabs返回val的绝对值。

(2)abs原型:Int abs(int val);功能:求绝对值参数:val整型数返回:val的绝对值(3)labs原型:long labs(long val);功能:labs函数确定长整数val的绝对值.返回:val的绝对值。

(4)fabs原型:float fabs(float val);功能:fabs函数确定浮点数val的绝对值.参数:返回:fabs返回val的绝对值。

(5)sqrt原型:float sprt(float x);功能:sqrt函数计算x的平方根。

返回:sqrt函数返回x的正平方根。

(6)exp原型:float exp(float x);功能:exp函数计算自然对数中e的x次幂。

e≈2。

71828182845953581496,是无限循环小数。

返回:e x的值.(7)log原型:float log(float val);功能:log函数计算浮点数val的自然对数。

自然对数基数为e。

返回:val的浮点自然对数。

(8)log10原型:float log10(float val);功能:logl0函数计算浮点数val的常用对数.常用对数为基数10。

返回:val的浮点常用对数。

(9)sin参数:x必须在—65535~65535之间,或产生一个NaN错误。

返回:sin函数返回x的正弦.(10)cos原型:float cos(float x);功能:COS函数计算浮点数X的余弦.参数:X的值必须在-65535~65535之间,或产生一个NaN错误。

返回:COS函数返回X的余弦。

(11)tan原型:float tan(float x);功能:tan函数计算浮点数x的正切值.参数:x必须在—65535~65535之间,或错误值NaN.返回:tan函数返回x的正切。

c51程序的基本结构

c51程序的基本结构

c51程序的基本结构一、引言C51是一种常用的单片机,它的程序结构对于初学者来说是非常重要的。

本文将介绍C51程序的基本结构,包括程序头、全局变量区、中断向量表、主函数和其他函数等。

二、程序头程序头是C51程序的第一部分,它包含了一些指令和定义,用于设置单片机的工作环境。

常见的程序头指令包括:1. #include:用于引入外部库文件;2. #define:用于定义常量;3. #pragma:用于设置编译器选项。

三、全局变量区全局变量区是C51程序中存放全局变量的区域。

全局变量在整个程序中都可以被访问,因此需要在此处进行定义。

定义全局变量时需要注意以下几点:1. 定义前需要声明数据类型;2. 变量名需要具有意义;3. 变量名不能与关键字重复。

四、中断向量表中断向量表是C51程序中存放中断服务函数地址的表格。

当单片机接收到一个中断信号时,会跳转到相应的中断服务函数执行。

在编写C51程序时,需要根据实际情况编写相应的中断服务函数,并将其地址存放在中断向量表中。

五、主函数主函数是C51程序的入口,也是程序的核心部分。

主函数包含了程序的执行逻辑和处理流程,常见的主函数结构包括:1. 初始化:设置单片机工作环境;2. 循环:执行程序循环体;3. 结束:清理资源并退出程序。

六、其他函数C51程序中还可以包含其他函数,这些函数可以被主函数或其他函数调用。

在编写其他函数时需要注意以下几点:1. 函数名需要具有意义;2. 函数名不能与关键字重复;3. 函数需要声明返回值类型和参数列表。

七、总结C51程序的基本结构包括程序头、全局变量区、中断向量表、主函数和其他函数等。

在编写C51程序时,需要按照规范进行编写,以确保程序的可读性和可维护性。

C51库函数

C51库函数

C51库函数积累:(1)_chkfloat_:函数定义:unsigned char _chkfloat_ ( float val); /* number to check */函数功能:_chkfloat_函数检查浮点数 val 的类型。

返回值:_chkfloat_函数返回浮点数 val 的类型。

/*本实验测试本征库中的_chkfloat_函数:函数定义:unsigned char _chkfloat_(float val); 返回值:Return Value Meaning0 Standard floating-point number.1 Floating-point value 0.2 +INF (positive overflow).3 -INF (negative overflow).4 NaN (Not a Number) error status. 用P1指示返回值*///函数测试:#include <reg51.h>#include <intrins.h>unsigned char f[4]={0xff,0xff,0xff,0xff};void delay(unsigned int time){while(time--);}void main(){P2=~_chkfloat_(1.2455); //Standard floating-point number.delay(50000);P2=~_chkfloat_(0.00); //Floating-point value 0.delay(50000);P2=~_chkfloat_(0000000000.0000000000); //+INF (positive overflow).delay(50000);P2=~_chkfloat_(-0000000000.0000000000); //-INF (negative overflow).delay(50000);P2=~_chkfloat_(*((float *)f)); //NaN (Not a Number) error status.while(1);}(2)_crol_:函数定义:unsigned char _crol_ ( unsigned char c, unsigned char b); /* character to rotate left *//* bit positions to rotate */函数功能:_crol_函数将一个字节c循环左移b位。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12.1.15 ASCII字符转换函数
• ASCII字符转换函数用于将任何字符型参数缩小到 有效的ASCII范围之内,其函数原型如下: • char toascii (char c); • 其中,c为待转换的字符。该函数执行的操作是将 形参数值和0x7f做与运算,从而去掉第7位以上的 所有位数。如果形参已是有效的ASCII字符,则不 作处理,直接返回原字符。
12.1.17 小写字符宏转换函数
• 小写字符宏转换函数用于小写字符转换为大写字 符,其函数原型如下: • char _toupper (char c); • 其中,c为待转换的小写字符。这其实是一个由宏 定义完成的操作,其功能是将字符参数c与常数 0xdf逐位进行与运算,从而将小写字符转换为大 写字符。
12.1.4 十进制数字检查函数
• 十进制数字检查函数用于检查形参字符是否为十进制数字, 其函数原型如下: • bit isdigit (char c); • 其中,c为待判断的字符,如果是十进制数字则返回1,否 则返回0。
12.1.5 可打印字符检查函数
• • • 可打印字符检查函数用于检查形参字符是否为可打印字符,其函 数原型如下: bit isgraph (char c); 其中,c为待判断的字符。可打印字符的取值范围为0x21~0x7C, 不包含空格,如果是可打印字符则返回1,否则返回0。
12.2.7 字符串追加函数
• 字符串追加函数用于复制字符串到另一个字符串 的尾部,其函数原型如下: • void *strcat(char *s1,char *s2); • 其中,s1为目标字符串,s2为待复制的字符串。 该函数实现的操作是将字符串s2复制到字符串s1 的尾部。其中字符串s1要有足够的大小来保存两 个字符串。该函数的返回值指向字符串s1中的第 一个字符的指针。
12.2.9 字符串比较函数
• 字符串比较函数用于比较两个字符串的大小,其 函数原型如下: • char strcmp(char *s1,char *s2); • 其中,s1和s2为待比较的字符串。该函数的功能 是比较字符串s1和s2,如果两者相等则返回0;如 果s1<s2,则返回一个负数;如果s1>s2,则返回 一个正数。
12.1.9 大写英文字母检查函数
• 大写英文字母检查函数用于检查形参字符是否为 大写英文字母,其函数原型如下: • bit isupper(char c); • 其中,c为待判断字符。如果是大写英文字母则返 回1,否则返回0。
12.1.10 控制字符检查函数
• 控制字符检查函数用于检查形参字符是否为控制 字符,其函数原型如下: • bit isspace (char c); • 其中,c为待判断字符。如果是控制字符则返回1, 否则返回0。控制字符包括:空格、制表符、回车、 换行、垂直制表符和送纸,其取值范围为0x09~ 0x0d,或为0x20。
12.2.11 字符串覆盖函数
• 字符串覆盖函数用于将一个字符串覆盖另一个字 符串,其函数原型如下: • char* strcpy(char *s1,char *s2); • 其中,s1为目标字符串,s2为源字符串。该函数 的功能是将字符串s2(包括结束符)复制到字符 串s1中的第1个字符指针处。这里需要注意和 strcat函数相区别,strcat函数将字符串s2复制 到字符串s1的末尾。
12.2.10 包含结束符的字符串比较函数
• 包含结束符的字符串比较函数用于比较两个字符 串的大小,其函数原型如下: • char*strncmp(char *s1,char *s2,int n); • 其中,s1和s2为待比较的字符串,n为比较的长度。 该函数的功能是比较字符串s1和s2的前n个字符, 如果两者相等则返回0;如果s1<s2,则返回一个 负数;如果s1>s2,则返回一个正数。这里需要和 memcmp函数相区别,如果字符串的长度小于n,则 strncmp函数比较到字符串结束符后便停止,这和 memcmp函数是不一样的。
12.2 字符串函数
• 字符串函数的原型声明包含在头文件STRING.H中。 在C51语言中,字符串应包括2个或多个字符,字 符串的结尾以空字符来表示。字符串函数通过接 受指针串来对字符串进行处理。常用的字符串函 数介绍如下。
12.2.1 字符查找函数
• 字符查找函数用于在字符串中顺序查找字符,其 函数原型如下: • void *memchr(void*sl,char val,int len); • 其中,s1为输入字符串,val为待查找的字符, len为查找的长度范围。该函数的功能是在字符串 s1中顺序搜索前len个字符以找出字符val,如果 找到则返回sl中指向val的指针,如果没有找到则 返回NULL。
12.1.16 大写字符宏转换函数
• 大写字符宏转换函数用于大写字符转换为小写字 符,其函数原型如下: • char _tolower(char c); • 其中,c为待转换的大写字符。这其实是一个由宏 定义完成的操作,其功能是将字符参数c与常数 0x20逐位进行或运算,从而将大写字符转换为小 写字符。
12.1.13 大写字符转换函数
• 大写字符转换函数用于将大写字符转换为小写字 符,其函数原型如下: • char tolower (char c); • 其中,c为待转换的大写字符。如果字符参数不在 A~Z之间,则该函数将不起作用,而直接返回原 字符。
12.1.14 小写字符转换函数
• 小写字符转换函数用于将小写字符转换为大写字 符,其函数原型如下: • char toupper (char c); • 其中,c为待转换的小写字符。如果字符参数不在 a~z之间,则该函数将不起作用,而直接返回原 字符。
12.2.8 指定长度的字符串追加函数
• 指定长度的字符串追加函数用于复制指定长度的 字符串到另一个字符串的尾部,其函数原型如下: • void*strncat(,char *s1,char *s2,int n); • 其中,s1为目标字符串,s2为待复制的字符串,n 为复制的长度。该函数实现的操作是从字符串s2 中复制n个字符添加到字符串s1的尾部。其中,如 果字符串s2的长度比n小,则将全部复制字符串s2 (包括串结束符)。
第12章 C51的常用库函数详解
• C51语言的编译器中包含有丰富的库函数,使用库 函数可以大大简化用户程序设计的工作量,提高 编程效率。每个库函数都在相应的头文件中给出 了函数原型声明,在使用时,必须在源程序的开 始处使用预处理命令#include将有关的头文件包 含进来。 • C51库函数中类型的选择考虑到了8051单片机的结 构特性,用户在自己的应用程序中应尽可能地使 用最小的数据类型,以最大限度地发挥8051单片 机的性能,同时可减少应用程序的代码长度。下 面将C51的库函数分类列出并详细介绍其用法。
12.2.4 带终止字符的字符串复制函数
• 带终止字符的字符串复制函数用于复制字符串, 如果遇到终止字符则停止复制,其函数原型如下: • void*memccpy(void*dest, void*src,char val,int len); • 其中,dest为目标字符串,src为源字符串,val 为终止字符,len为复制的长度。该函数的功能是 复制字符串src中的len个字符到dest中,复制len 个字符后则返回NULL。如果遇到字符val则停止复 制,此时返回一个指向dest中的下一个元素的指 针。
12.1 字符函数
• 字符函数的原型声明包含在头文件CTYPE.H中。常 用的一些字符函数介绍如下。
12.1.1 检查英文字母函数
• • • 检查英文字母函数用于检查形参字符是否为英文字母,其函数原型如下: bit isalpha(char c); 其中,c为待判断的字符,如果是英文字母则返回1,否则返回0。程序示 例如下:
12.2.2 指定长度的字符串比较函数
• 指定长度的字符串比较函数用于按照指定的长度 比较两个字符串的大小,其函数原型如下: • char memcmp(void*s1, void*s2,int len); • 其中,s1和s2为输入字符串,len为比较的长度。 该函数的功能是逐个比较字符串sl和s2的前len个 字符,如果相等则返回0,如果字符串s1大于s2, 则返回一个正数,如果字符串s1小于s2,则返回 一个负数。如果两个字符串的长度小于len,该函 数仍将一直比较len个字符,这种情况下,有可能 结果是错误的。因此应该保证len不能超过最短字 符串的长度。
12.1.7 格式字符检查函数
• • • 格式字符检查函数用于检查形参字符是否为标点、空格或格式字 符,其函数原型如下: bit ispunct (char c); 其中,c为待判断字符,如果是则返回1,否则返回0。
12.1.8 小写英文字母检查函数
• • • 小写英文字母检查函数用于检查形参字符是否为小写英文字母, 其函数原型如下: bit islower(char c); 其中,c为待判断字符。如果是小写英文字母则返回1,否则返回0。
12.2.3 字符串复制函数
• 字符串复制函数用于复制指定长度的字符串,其 函数原型如下: • void*memcpy(void*dest,void*src,int len); • 其中,dest为目标字符串,src为源字符串,len 为复制的长度。该函数的功能是从src所指向的字 符串中复制len个字符到dest字符串中,其返回值 指向dest中的最后一个字符的指针。
12.1.2 检查字母数字函数
• 检查字母数字函数用于检查形参字符是否为英文 字母或数字字符,其
12.1.3 检查控制字符函数
• • • 检查控制字符函数用于检查形参字符是否为控制字符,其函数原型如下: bit iscntrl (char c); 其中,c为待判断的字符。控制字符其取值范围为0x00~0xlF之间或等于 0x7F,如果是,则返回1,否则返回0。
相关文档
最新文档