完整版Keilc51常用库函数汇总参考.docx
- 文档编号:10266396
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:26
- 大小:25.79KB
完整版Keilc51常用库函数汇总参考.docx
《完整版Keilc51常用库函数汇总参考.docx》由会员分享,可在线阅读,更多相关《完整版Keilc51常用库函数汇总参考.docx(26页珍藏版)》请在冰豆网上搜索。
完整版Keilc51常用库函数汇总参考
Keilc51函数参考
一、数学函数
(1)cabs
原型:
charcabs(charval);
功能:
cabs函数取val的绝对值。
参数:
一字节数val。
返回:
cabs返回val的绝对值。
(2)abs
原型:
Intabs(intval);
功能:
求绝对值
参数:
val整型数
返回:
val的绝对值
(3)labs
原型:
longlabs(longval);
功能:
labs函数确定长整数val的绝对值。
返回:
val的绝对值。
(4)fabs
原型:
floatfabs(floatval);
功能:
fabs函数确定浮点数val的绝对值。
参数:
返回:
fabs返回val的绝对值。
(5)sqrt
原型:
floatsprt(floatx);
功能:
sqrt函数计算x的平方根。
返回:
sqrt函数返回x的正平方根。
(6)exp
原型:
floatexp(floatx);
功能:
exp函数计算自然对数中e的x次幂。
e≈2.71828182845953581496,是无限循环小数。
返回:
ex的值。
(7)log
原型:
floatlog(floatval);
功能:
log函数计算浮点数val的自然对数。
自然对数基数为e。
返回:
val的浮点自然对数。
(8)log10
原型:
floatlog10(floatval);
功能:
logl0函数计算浮点数val的常用对数。
常用对数为基数10。
返回:
val的浮点常用对数。
(9)sin
原型:
floatsin(floatx);
功能:
sin函数计算浮点数x的正弦值。
参数:
x必须在-65535~65535之间,或产生一个NaN错误。
返回:
sin函数返回x的正弦。
(10)cos
原型:
floatcos(floatx);
功能:
COS函数计算浮点数X的余弦。
参数:
X的值必须在-65535~65535之间,或产生一个NaN错误。
返回:
COS函数返回X的余弦。
(11)tan
原型:
floattan(floatx);
功能:
tan函数计算浮点数x的正切值。
参数:
x必须在-65535~65535之间,或错误值NaN。
返回:
tan函数返回x的正切。
(12)asin
原型:
floatasin(floatx);
功能:
求反正弦
参数:
浮点数x,取值必须在-1~1之间。
返回:
X的反正弦,值在-π/2~π/2之间。
(13)acos
原型:
floatacos(floatx);
功能:
求反余弦
参数:
浮点数x,取值必须在-1~1之间。
返回:
x的反余弦,值在0~π之间。
(14)atan
原型:
floatatan(floatx);
功能:
求反正切
参数:
浮点数x,取值必须在-1~1之间。
返回:
X的反正切,值在-π/2~π/2之间。
(15)sinh
原型:
floatsinh(floatx);
功能:
sinh函数计算浮点数X的双曲正弦。
参数:
x必须在-65535~65535之间,或产生一个NaN错误。
返回:
sinh函数返回x的双曲正弦。
(16)cosh
原型:
floatcosh(floatx);
功能:
cosh函数计算浮点数X的双曲余弦。
参数:
返回:
cosh函数返回X的双曲余弦。
(17)tanh
原型:
floattanh(floatx);
功能:
tanh函数计算浮点数x的双曲正切。
返回:
tanh函数返回x的双曲正切。
(18)atan2
原型:
floatatan2(floaty,floatx);
功能:
计算浮点数y/x的反正切。
参数:
浮点数y,浮点数x。
返回:
反正切值,值在-π~π之间。
x和y的符号确定返回值的象限。
(19)ceil
原型:
floatceil(floatval)
功能:
ceil函数计算大于或等于val的最小整数值(收尾取整)。
参数:
要化为整数的数。
返回:
ceil函数返回不小于val的最小float整数值。
(20)floor
原型:
floatfloor(floatval);
功能:
取整。
返回:
floor函数返回不大于val的最大整数值。
(21)fmod
原型:
floatfmod(floatx,floaty);
功能:
取模。
返回:
x/y的浮点余数。
(22)modf
原型:
floatmodf(floatval,float*ip);
功能:
modf函数把浮点数val分成整数和小数部分。
返回:
modf函数返回带符号小数部分val。
整数部分保存在浮点数ip中。
(23)pow
原型:
floatpow(floatx,floaty);
功能:
pow函数计算x的y次幂。
返回:
pow函数返回值xy。
如果x≠0和y=O,pow返回值1;如果x=0和y≤0,pow返回NaN。
如果x 二、空操作,左右位移等内嵌代码 (1)_nop_ 原型: void_nop_(void); 功能: _nop_插入一个8051NOP空操作指令到程序,用来停顿1个CPU周期。 本程序是固有函数,代码要求内嵌而不是调用。 返回: 无。 (2)_testbit_ 原型: bit_testbit_(bitb); 功能: _testbit_程序在生成的代码中用JBC指令来测试位b,并清零。 参数: 本程序只能用在直接寻址位变量,对任何类型的表达式无效。 固有函数,代码要求内嵌,而非调用。 返回: _testbit_程序返回值b (3)_cror_ 原型: unsignedchar_cror_(unsignedcharc,unsignedcharb); 功能: _cror_程序字符c循环右移b位。 固有函数,代码要求内嵌,而不是调用。 参数: 返回: 右移的结果 (4)_iror_ 原型: unsignedint_iror_(unsignedinti,unsignedcharb); 功能: _iror_程序将整数i循环右移b位。 固有函数,代码要求内嵌而不是被调用。 参数: i右移的整数,b右移的次数。 返回: _iror_程序返回右移后的值。 (5)_lror_ 原型: unsignedlong_lror_(unsignedlongl,unsignedcharb); 功能: _lror_程序将长整数l循环右移b位。 固有函数代码,要求内嵌而不是被调用。 参数: l要右移的数,b要右移的位数。 返回: 返回右移后的值。 摘要: #include (6)_crol_ 原型: unsignedchar_crol_(unsignedcharc,unsignedcharb); 功能: _crol_程序字符c循环左移b位。 固有函数,代码要求内嵌,而不是调用。 参数: 返回: 左移的结果 (7)_irol_ 原型: unsignedint_irol_(unsignedinti,unsignedcharb); 功能: _irol_程序将整数i循环左移b位。 固有函数,代码要求内嵌而不是被调用。 参数: i左移的整数,b左移的次数。 返回: _irol_程序返回左移后的值。 (8)_lrol_ 原型: unsignedlong_lrol_(unsignedlongl,unsignedcharb); 功能: _lrol_程序将长整数l循环左移b位。 固有函数,代码要求内嵌而不是被调用。 参数: l要左移的数,b要左移的位数。 返回: 返回左移后的值。 (9)_chkfloat_ 原型: unsignedchar_chkfloat_(floatval); 功能: 检查浮点数的状态。 参数: 浮点型变量。 返回: 0,标准浮点数;1,浮点数0;2,正溢出;3,负溢出;4,NaN(不是一个数)错误状态。 (10)_push_ 原型: void_push_(unsignedchar_sfr); 功能: 将特殊功能寄存器_sfr压入堆栈。 (11)_pop_ 原型: void_pop_(unsignedchar_sfr); 功能: 将堆栈中的数据弹出到特殊功能寄存器_sfr。 三、字串转数字,随机数,存储池管理 (1)atof 原型: floatatof(void*string); 功能: 将浮点数格式的字符串转换为浮点数。 如果string的第一个字符不能转换成数字,就停止处理。 参数: 格式为,[{+|-}]数字[.数字][{e|E}[{+|-}]数字]。 如,-12.345e+67 返回: atof函数返回string的浮点值。 (2)atoi 原型: intatoi(void*string); 功能: atoi函数转换string为一个整数值。 string是一个字符序列,可以解释为一个整数。 如果string的第一个字符不能转换成数字,就停止处理。 参数: atoi函数要求string有这样的格式: [空格][{+|-}]数字,如”123456”。 返回: atoi函数返回string的整数值。 (3)atol 原型: longatol(void*string); 功能: atol函数转换string为一个长整数值。 string是一个字符序列,可以解释为一个长整数。 如果string的第一个字符不能转换成数字,就停止处理。 参数: atol函数要求string有这样的格式: [空格][{+|-}]数字,如”1234567890”。 返回: atol函数返回string的长整数值。 (4)rand 原型: intrand(void); 功能: rand函数产生一个0~32767之间的虚拟随机数。 返回: rand函数返回一个虚拟随机数。 (5)srand 原型: voidsrand(intseed); 功能: srand函数设置rand函数所用的虚拟随机数发生器的起始值seed,随机数发生器对任何确定值seed产生相同的虚拟随机数序列。 返回: 无。 (6)strtod 原型: unsignedlongstrtod(constchar*string,char**ptr); 功能: strtod函数将一个浮点数格式的字符串string转换为一个浮点数。 字符串开头的空白字符被忽略。 参数: 要求string有下面的格式: [{+|-}]digits[.digits][{e|E}[{+|-}]digits]digits可能是一个或多个十进制数。 ptr的值设置指针到string中转换部分的第一个字符。 如果ptr是NULL,没有值和ptr关联。 如果不能转换,则prt就设为string的值,strtod返回0。 返回: strtod函数返回由string生成的浮点数。 (7)strtol 原型: longstrtol(constchar*string,char**ptr,unsignedcharbase); 功能: strtol函数将一个数字字串string转换为一个long值。 参数: 输入string是一个字符序列,可以解释为一个整数。 字符串开头的空白字符被忽略,符号可选。 要求string有下面的格式: [whitespace][{+|-}]digitsdigits可能是一个或多个十进制数。 如果base是零,数值应该有一个十进制常数、八进制常数或十六进制常数的格式。 数值的基数从格式推出。 如果base在2~36之间,数值必须是一个字母或数字的非零序列,表示指定基数的一个整数。 字母a~z(或A~Z)分别表示值10~36。 只有小于base的字母表示的值是允许的。 如果base是16,数值可能以0x或0X开头,0x或0x被忽略。 prt的值设置指针指向string中转换部分的第一个字符。 如果prt是NULL,没有值和ptr关联。 如果不能转换,prt设置为string的值,strtol返回0。 返回: strtol函数返回string生成的整数值。 如溢出则返回LONG_MIN或LONG_MAX。 (8)strtoul 原型: unsignedlongstrtoul(constchar*string,char**ptr,unsignedcharbase); 功能: strtoul函数转换string为一个unsignedlong值。 参数: 与strtol函数类似。 返回: strtoul函数返回string生成的整数值。 如溢出则返回ULONG_MAX。 (9)init_mempool 原型: voidinti_mempool(voidxdata*p,unsignedintsize); 功能: init_mempool函数初始化存储管理程序,提供存储池的开始地址和大小。 本函数必须在任何其他的存储管理函数(calloc,free,malloc,realloc)被调用前设置存储池,只在程序的开头调用一次。 可以修改源程序以适合硬件环境。 参数: p参数指向一个xdata的存储区,用calloc,free,malloc和realloc库函数管理。 size参数指定存储池所用的字节数。 返回: 无。 (10)malloc 原型: voidxdata*malloc(unsignedintsize); 功能: malloc函数从存储池分配size字节的存储块。 返回: malloc返回一个指向所分配的存储块的指针,如果没有足够的空间,则返回一个NULL指针。 (11)free 原型: voidfree(voidxdata*p); 功能: free函数返回一个存储块到存储池。 p参数指向用calloc、malloc或realloc函数分配的存储块。 一旦块返回到存储就可被再分配。 如果p是一个NULL指针,被忽略。 本程序的源代码在\KEIL\C51\LIB目录中,可以修改源程序,根据硬件来定制本程序。 参数: 返回: 无。 (12)realloc 原型: voidxdata*realloc(voidxdata*p,unsignedintsize); 功能: realloc函数改变已分配的存储块的大小。 本程序的源代码在目录KEIL\C5I\LIB中,可以根据硬件环境定制本函数。 参数: P参数指向己分配块,size参数指定新块的大小。 原块的内容复制到新块,新块中的任何其他区,如果是一个更大的块不初始化。 返回: realloc返回一个指向新块的指针。 如果存储池没有足够的存储区,返回一个NULL指针,存储块不受影响。 (13)calloc 原型: voidxdata*calloc(unsignedintnum,unsignedintlen); 功能: calloc函数从一个数组分配num个元素的存储区。 每个元素占用len字节,并清0。 字节总数为num*len。 在LIB目录提供程序的源代码。 可以修改源程序,为硬件定制本函数。 参数: num为元素数目,len为每个元素的长度。 返回: calloc函数返回一个指针,指向分配的存储区,如果不能分配,则返回一个NULL指针。 四、流输入输出 (1)_getkey 原型: char_getkey(void); 功能: _getkey函数等待从串口接收字符。 _getkey和putchar函数的源代码可以修改,提供针对硬件的字符级的I/O。 返回: 接收到的字符 (2)getchar 原型: chargetchar(void); 功能: getchar函数用_getkey函数从输入流读一个字符。 所读的字符用putchar函数显示。 本函数基于_getkey或putchar函数的操作。 这些函数,在标准库中提供,用8051的串口读和写字符。 定制函数可以用别的I/O设备。 返回: 所读的字符。 (3)ungetchar 原型: charungetchar(charc); 功能: ungetchar函数把字符c放回到输入流。 子程序被getchar和别的返回c的流输入函数调用。 getchar在调用时只能传递一个字符给ungetehar。 参数: 返回: 如果成功,ungetchar函数返回字符c。 如果调用者在读输入流时调用ungetchar多次,返回EOF表示一个错误条件。 (4)putchar 原型: charputchr(charc); 功能: putchar函数用8051的串口输出字符c。 本程序指定执行,功能可能有变。 因提供了_getkey和putchar函数的源程序,可以根据任何硬件环境修改以提供字符级的I/O。 参数: 返回: putchar函数返回输出的字符c。 (5)printf 原型: intprintf(constchar*fmtstr[,arguments]…); 功能: printf函数格式化一系列的字符串和数值,生成一个字符串用putchar写到输出流。 参数: fmtstr参数是一个格式化字符串,可能是字符、转义系列和格式标识符。 普通的字符和转义系列按说明的顺序复制到流。 格式标识符通常以百分号(%)开头,要求在函数调用中包含附加的参数Arguments。 格式字符串从左向右读。 第一个格式标识符使用fmtstr后的第一个参数,用格式标识符转换和输出。 第二个格式标识符访问fmtstr后的第二个参数。 如果参数比格式标识符多,多出的参数被忽略。 如果参数不够,结果是不可预料的。 格式标识符用下面的格式: %[flags][width][.precision][{b|B|l|L}]type格式标识符中的每个域可以是一个字符或数字type域是一个字符,指定参数是否解释为一个字符、字符串、数字或指针。 如下表所示: 可选的字符b或B和l和L可直接放在类型字符前,分别指定整数类型d、i、u、o、x和X的char或long版本。 flags域是单个字符,用来对齐、输出和打印+/-号、空白、小数点、八进制和十六进制的前缀。 如下表所示: width域是一个非负数字,指定显示的最小字符数。 如果输出值的字符数小于width,空白会加到左边或右边(当指定了一个标记)以达到最小的宽度。 如果width用一个’0’作前缀,则填充的是零而不是空白。 width域不会截短一个域。 如果输出值的长度超过指定宽度,则输出所有的字符。 width域可能是星号(*),在这种情况下,参数列表的一个int参数提供宽度值。 如果参数使用的是unsignedchar,在星号标识符前指定一个’b’。 precision域是非负数字,指定显示的字符数、小数位数或有效位。 precison域可能使输出值切断或舍入。 precision域可能是星号(*),在这种情况,参数列表的一个int参数提供宽度值。 如果参数使用的是unsignedchar,在星号标识符前指定一个’b’。 本函数指定执行基于putchar函数的操作。 本函数作为标准库提供,用805l的串口写字符,用别的I/O设备可以定制函数。 必须确保参数类型和指定的格式匹配。 可用类型映射确保正确的类型传递到printf。 可传递给printf的总的字节数受到8051的存储区的限制。 SMALL模式和COMPACT模式最多15字节,LARGE模式最多40字节。 返回: printf函数返回实际写到输出流的字符数。 (6)sprintf 原型: intsprintf(char*buffer,constchar*fmtstr[,arguments]…); 功能: sprintf函数格式化一系列的字符串和数值,并保存结果字符串在bufferfintstr。 参数: 参数是一个格式字符串,和printf函数指定的要求相同。 返回: sprintf函数返回实际写到buffer的字符数。 (7)vprintf 原型: voidvprintf(constchar*fmtstr,char*argptr); 功能: vprintf函数格式化一系列字符串和数字值,并建立一个用puschar函数写到输出流的字符串,函数类似于printf的副本,但使用参数列表的指针,而不是一个参数列表。 本函数是指定执行的,基于putchar函数的操作。 本函数作为标准库提供,用8051的串口写字符。 别的I/O设备可以定制函数。 参数: fmtstr参数是一个指向一个格式字符串的指针,和printf函数的fmtstr参数有相同的形式和功能。 argptr参数指向一系列参数,根据格式中指定的对应格式转换和输出。 返回: vprintf函数返回实际写到输出流的字符数。 (8)vsprimf 原型: voidvsprintf(char*buffer,constchar*fmtstr,char*argptr); 功能: vsprintf函数格式化一系列字符串和数字值,并保存字符串在Buffer中。 函数类似于sprintf的副本,但使用参数列表的指针,而不是一个参数列表。 参数: fmtstr参数是一个指向一个格式字符串的指针,和printf函数的fmtstr参数有相同的形式和功能。 argptr参数指向一系列参数,根据格式中指定的对应格式转换和输出。 返回: vsprintf函数返回实际写到输出流的字符数。 (9)gets 原型: char*gets(char*string,intlen); 功能: gets函数调用getchar函数读一行字符到string。 这行包括所有的字符和换行符('\n')。 在string中换行符被一个NULL字符('\n')替代。 len参数指定可读的最多字符数。 如果长度超过len,gets函数用NULL字符终止string并返回。 本函数指定执行基于_getkey或putchar函数的操作。 这些函数,在标准库中提供,用8051的串口读写。 对别的I/O设备可以定制。 参数: string要读的字符串,len最多字符数。 返回: gets函数返回string (10)scanf 原型: intscanf(sonstchar*fmtstr[,argument]…); 功能: scanf函数用getchar程序读数据。 输入的数据保存在由argument根据格式字符串fmtstr指定的位置。 参数: 每个argument必须是一个指针,指向一个变量,对应fmtstr定义的类型,fmtstr控制解释输入的数据,fmtstr参数由一个或单个空白字符、非空白字符和下面定义的格式标识符组成。 ·空白字符,空白(''),制表('\t')或换行('\n'),使scanf跳过输入流中的空白字符。 格式字符串中的单个的空白字符匹配输入流的0或多个空白字符。 ·非空白字符,除了百分号('%'),使scanf从输入流读但不保存一个匹配字符。 如果输入流的下一个字符和指定的非空白字符不匹配,scanf函数终止。 ·格式标识符以百分号('%')开头,使scanf从输入流读字符,并转换字符到指定的类型值。 转换后的值保存在参数列表的argument中。 百分号后面的字符不被认为是一个格式标识符,只作为一个普通字符。 例如%%匹配输入流的一个百分号。 格式字符串从左向右读,不是格式标识符的字符必须和输入流的字符匹配。 这些字符从输入流读入,但不保存,如果输入流的一个字符和格式字符串冲突,scanf终止。 任何冲突的字符仍保留在输入流中。 在格式字符串中的第一个格式标识符引用fmtstr后面的第一个参数,并转化输入字符,用格式标识符保存值。 第二个格式标识符访问fmtstr后面的第二个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 Keilc51 常用 库函数 汇总 参考