完整版Keilc51常用库函数汇总参考文档格式.docx
- 文档编号:6214539
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:26
- 大小:25.79KB
完整版Keilc51常用库函数汇总参考文档格式.docx
《完整版Keilc51常用库函数汇总参考文档格式.docx》由会员分享,可在线阅读,更多相关《完整版Keilc51常用库函数汇总参考文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
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的反余弦,值在0~π之间。
(14)atan
floatatan(floatx);
求反正切
X的反正切,值在-π/2~π/2之间。
(15)sinh
floatsinh(floatx);
sinh函数计算浮点数X的双曲正弦。
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<
O和y不是一个整数,pow返回NaN。
二、空操作,左右位移等内嵌代码<
intrins.h>
(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<
intrins_h>
。
(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。
三、字串转数字,随机数,存储池管理<
stdlib.h>
(1)atof
floatatof(void*string);
将浮点数格式的字符串转换为浮点数。
如果string的第一个字符不能转换成数字,就停止处理。
格式为,[{+|-}]数字[.数字][{e|E}[{+|-}]数字]。
如,-12.345e+67
atof函数返回string的浮点值。
(2)atoi
intatoi(void*string);
atoi函数转换string为一个整数值。
string是一个字符序列,可以解释为一个整数。
atoi函数要求string有这样的格式:
[空格][{+|-}]数字,如”123456”。
atoi函数返回string的整数值。
(3)atol
longatol(void*string);
atol函数转换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是一个字符序列,可以解释为一个整数。
字符串开头的空白字符被忽略,符号可选。
[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指针。
四、流输入输出<
stdio.h>
(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参数提供宽度值。
本函数指定执行基于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的副本,但使用参数列表的指针,而不是一个参数列表。
vsprintf函数返回实际写到输出流的字符数。
(9)gets
char*gets(char*string,intlen);
gets函数调用getchar函数读一行字符到string。
这行包括所有的字符和换行符('
\n'
)。
在string中换行符被一个NULL字符('
)替代。
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'
)或换行('
),使scanf跳过输入流中的空白字符。
格式字符串中的单个的空白字符匹配输入流的0或多个空白字符。
非空白字符,除了百分号('
%'
),使scanf从输入流读但不保存一个匹配字符。
如果输入流的下一个字符和指定的非空白字符不匹配,scanf函数终止。
格式标识符以百分号('
)开头,使scanf从输入流读字符,并转换字符到指定的类型值。
转换后的值保存在参数列表的argument中。
百分号后面的字符不被认为是一个格式标识符,只作为一个普通字符。
例如%%匹配输入流的一个百分号。
格式字符串从左向右读,不是格式标识符的字符必须和输入流的字符匹配。
这些字符从输入流读入,但不保存,如果输入流的一个字符和格式字符串冲突,scanf终止。
任何冲突的字符仍保留在输入流中。
在格式字符串中的第一个格式标识符引用fmtstr后面的第一个参数,并转化输入字符,用格式标识符保存值。
第二个格式标识符访问fmtstr后面的第二个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 Keilc51 常用 库函数 汇总 参考
![提示](https://static.bingdoc.com/images/bang_tan.gif)