Keil c51常用库函数汇总参考

合集下载

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。

C51函数库

C51函数库

字符库函数添加ctype.h头文件返回值:真假1.英文字符检查函数isalpha : bit isalpha(char c) 。

1 02.字母数字检查函数isalnum : bit isalnum(char c) 。

1 03.控制字符检查函数iscntrl : bit iscntrl(char c) 。

1 0 0x00-0x1F4.十进制数字检查函数isdigit : bit isdigit(char c) 。

1 05.可打印字符检查函数isgraph : bit isgraph(char c) 。

1 06.含空格的可打印字符检查函数isprint:bit isprint(char c) 。

1 0 0x21-0x7C7.格式字符检查函数ispunct : bit ispunct(char c) 。

1 08.小写字母检查函数islower : bit islower(char c)。

1 09.大写字母检查函数isupper : bit isupper(char c)。

1 010.控制字符检查函数isspace : bit isspace(char c)。

1 0 0x09-0x0d11.十六进制数检查函数isxdigit: bit isxdigit(char c)。

1 012.十六进制数字转换函数toint:char toint(char c)。

'0-9'='0H-9H';'a-f'='0AH-0FH'13.大写字符转换函数tolower : char tolower(char c) 。

无原字符14.小写字符转换函数toupper : char toupper(char c) 。

无原字符15.ASC||字符转换函数toascii: char toascii(char c) 。

16.大写字符宏转换函数_tolower: char _tolower(char c)。

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这样很方便‎地对缓冲区‎进行处理。

(完整版)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的正切。

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新建一个文件,输入如上内容或直接用目录下源文件。

KEIL C51库函数

KEIL C51库函数

就可以用在自己的专用系统中。 1. 动态内存分配 init_mem.C:此文件是初始化动态内存区的程序源代码。它可以指定动态内存的位置及大小, 只有使用了 init_mem( )才可以调回其它函数,诸如 malloc calloc,realloc 等。 calloc.c:此文件是给数组分配内存的源代码,它可以指定单位数据类型及该单元数目。 malloc.c:此文件是 malloc 的源代码,分配一段固定大小的内存。 realloc.c:此文件是 realloc.c 源代码,其功能是调整当前分配动态内存的大小。 2. C51 启动文件 STARTUP.A51 启动文件 STARTUP.A51 中包含目标板启动代码,可在每个 project 中加入这个文件,只要复 位,则该文件立即执行,其功能包括: * 定义内部 RAM 大小、外部 RAM 大小、可重入堆栈位置 * 清除内部、外部或者以此页为单元的外部存储器 * 按存储模式初使化重入堆栈及堆栈指针 * 初始化 8051 硬件堆栈指针 * 向 main( )函数交权 开发人员可修改以下数据从而对系统初始化 常数名 意义 IDATALEN 待清内部 RAM 长度 XDATA START 指定待清外部 RAM 起始地址 XDATALEN 待清外部 RAM 长度 IBPSTACK 是否小模式重入堆栈指针需初始化标志,1 为需要。缺省为 0 IBPSTACKTOP 指定小模式重入堆栈顶部地址 XBPSTACK 是否大模式重入堆栈指针需初始化标志,缺省为 0 XBPSTACKTOP 指定大模式重入堆栈顶部地址 PBPSTACK 是否 Compact 重入堆栈指针,需初始化标志,缺省为 0 PBPSTACKTOP 指定 Compact 模式重入堆栈顶部地址 PPAGEENABLE P2 初始化允许开关 PPAGE 指定 P2 值 PDATASTART 待清外部 RAM 页首址 PDATALEN 待清外部 RAM 页长度 提示:如果要初始化 P2 作为紧凑模式高端地址,必须:PPAGEENAGLE=1,PPAGE 为 P2 值, 例如指定某页 1000H-10FFH,则 PPAGE=10H,而且连接时必须如下: L51<input modules> PDATA(1080H),其中 1080H 是 1000H-10FFH 中的任一个值。 以下是 STARTUP.A51 代码片断,红色是经常可能需要修改的地方: ;-----------------------------------------------------------------; This file is part of the C51 Compiler package ; Copyright KEIL ELEKTRONIK GmbH 1990 ;-----------------------------------------------------------------; STARTUP.A51: This code is executed after processor reset. ; ; To translate this file use A51 with the following invocation: ; ; A51 STARTUP.A51 ; ; To link the modified STARTUP.OBJ file to your application use the following ; L51 invocation: ;

常用Keil C51库函数

常用Keil C51库函数
将长整型数据val循环右移n位,相当于RR命令
bit _testbit_(bit x)
相当于JBC bit指令
unsigned char _chkfloat_(float ual)
测试并返回浮点数状态
void _nop_(void)
产生一个NOP指令
2.字符判断转换库函数:
字符判断转换库函数的原型声明在头文件CTYPE.H中定义。
函数名及定义
功能说明
void *memchr(void *s1, char val, int len)
顺序搜索字符串s1的前len个字符,以找出字符val,成功时返回s1中指向val的指针,失败时返回NULL
char memcmp(void *s1, void *s2, int len)
逐个字符比较串s1和s2的前len个字符,成功时返回0,如果串s1大于或小于s2,则相应地返回一个正数或一个负数
用val来填充指针s中的len个单元
void *strcat(char *s1, char *s2)
将串s2复制到s1的尾部。strcat假定s1所定义的地址区域足以接受两个串。返回指向s1中的第一个字符的指针
char *strncat( char *s1, char *s2, int n)
复制串s2中n个字符到s1的尾部,如果s2比n短,则只复制s2(包括串结束符)
int strcspn(char *s1, char *set)
与strspn相似,但它搜索的是s1串中的第一个包含在set里的字符。
int printf(const char *fmstr[,argument]...)
以第一个参数指向字符串制定的格式通过8051串行口输出数值和字符串,返回值为实际输出的字符数

第12章C51的常用库函数

第12章C51的常用库函数

12.2.9 字符串比较函数
• 字符串比较函数用于比较两个字符串的大小,其 函数原型如下:
• char strcmp(char *s1,char *s2); • 其中,s1和s2为待比较的字符串。该函数的功能
是比较字符串s1和s2,如果两者相等则返回0;如 果s1<s2,则返回一个负数;如果s1>s2,则返回 一个正数。
12.2.7 字符串追加函数
• 字符串追加函数用于复制字符串到另一个字符串 的尾部,其函数原型如下:
• void *strcat(char *s1,char *s2); • 其中,s1为目标字符串,s2为待复制的字符串。
该函数实现的操作是将字符串s2复制到字符串s1 的尾部。其中字符串s1要有足够的大小来保存两 个字符串。该函数的返回值指向字符串s1中的第 一个字符的指针。
• char toupper (char c); • 其中,c为待转换的小写字符。如果字符参数不在
a~z之间,则该函数将不起作用,而直接返回原 字符。
12.1.15 ASCII字符转换函数
• ASCII字符转换函数用于将任何字符型参数缩小到 有效的ASCII范围之内,其函数原型如下:
• char toascii (char c); • 其中,c为待转换的字符。该函数执行的操作是将
0x7F,如果是,则返回1,否则返回0。
12.1.4 十进制数字检查函数
• 十进制数字检查函数用于检查形参字符是否为十进制数字, 其函数原型如下:
• bit isdigit (char c); • 其中,c为待判断的字符,如果是十进制数字则返回1,否
则返回0。
12.1.5 可打印字符检查函数
• 可打印字符检查函数用于检查形参字符是否为可打印字符,其函 数原型如下:

C51函数参考

C51函数参考

(12)asin
原型:float asin(float x); 功能:求反正弦 参数:浮点数 x,取值必须在-1~1 之间。 返回:X 的反正弦,值在-π /2~π /2 之间。
(13)acos
原型:float acos(float x); 功能:求反余弦 参数:浮点数 x,取值必须在-1~1 之间。 返回:x 的反余弦,值在 0~π 之间。
(5)_lror_
原型:unsigned long _lror_(unsigned long l,unsigned char b); 功能:_lror_程序将长整数 l 循环右移 b 位。固有函数代码,要求内嵌而不是被调用。 参数:l 要右移的数,b 要右移的位数。 返回:返回右移后的值。摘要:#include<intrins_h>。
《单片机控制装置安装与调试》
电子工业出版社
(8)_lrol_
原型:unsigned long _lrol_(unsigned long l,unsigned char b); 功能:_lrol_程序将长整数 l 循环左移 b 位。固有函数,代码要求内嵌而不是被调用。 参数:l 要左移的数,b 要左移的位数。 返回:返回左移后的值。
(11)_pop_
原型:void _pop_(unsigned char _sfr); 功能:将堆栈中的数据弹出到特殊功能寄存器_sfr。
三、字串转数字,随机数,存储池管理<stdlib.h> (1)atof
原型:float atof(void *string); 功能:将浮点数格式的字符串转换为浮点数。如果 string 的第一个字符不能转换成数字,就 停止处理。 参数:格式为,[{+|-}]数字[.数字][{e|E}[{+|-}]数字]。如,-12.345e+67 返回:atof 函数返回 string 的浮点值。

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位。

keil c51 bit函数

keil c51 bit函数

keil c51 bit函数Keil C51是一款用于8051单片机开发的集成开发环境(IDE)。

在编写C语言程序时,我们经常会用到位(bit)操作,来对单个位进行读写操作。

在Keil C51中,提供了一些常用的位操作函数,方便我们对位进行操作。

位操作函数主要包括设置位、清除位、读取位和位翻转等操作。

下面我将分别介绍这些函数的用法及示例。

1. 设置位(Set Bit)函数:setBit函数可以将指定的位设置为1。

函数原型如下:void setBit(unsigned char *byte, unsigned char bitNum);其中,byte是要操作的字节变量,bitNum是要设置为1的位号(从0开始计数)。

示例代码:unsigned char data = 0x00;setBit(&data, 2); // 将data的第2位设置为1结果:data = 0x042. 清除位(Clear Bit)函数:clearBit函数可以将指定的位清除为0。

函数原型如下:void clearBit(unsigned char *byte, unsigned char bitNum);示例代码:unsigned char data = 0xFF;clearBit(&data, 4); // 将data的第4位清除为0结果:data = 0xEF3. 读取位(Read Bit)函数:readBit函数可以读取指定的位的值。

函数原型如下:unsigned char readBit(unsigned char byte, unsigned char bitNum);其中,byte是要读取的字节变量,bitNum是要读取的位号(从0开始计数)。

示例代码:unsigned char data = 0x0A;unsigned char bitValue = readBit(data, 3); // 读取data的第3位的值结果:bitValue = 14. 位翻转(Toggle Bit)函数:toggleBit函数可以将指定的位进行翻转,即原来为1的变为0,原来为0的变为1。

keil C51中的本征函数库及使用说明

keil C51中的本征函数库及使用说明

51单片机]keil C51中的本征函数库及使用说明本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL来实现(无需堆栈操作),可大大提高函数的访问效率.函数原型extern void _nop_ (void);extern bit _testbit_ (bit);extern unsigned char _cror_ (unsigned char, unsigned char);extern unsigned int _iror_ (unsigned int, unsigned char);extern unsigned long _lror_ (unsigned long, unsigned char);extern unsigned char _crol_ (unsigned char, unsigned char);extern unsigned int _irol_ (unsigned int, unsigned char);extern unsigned long _lrol_ (unsigned long, unsigned char);extern unsigned char _chkfloat_(float);头文件#include说明extern void _nop_ (void);产生一个nop指令extern bit_testbit_ (bit);产生一个JBC指令,若该位置位,返回1,否则为0;只能作用于直接寻址的位变量,不能用于表达式之中extern unsigned char _cror_ (unsigned char val, unsigned char n); (unsigned char)val右移n位extern unsigned int _iror_ (unsigned int val, unsigned char n)); (unsigned int)val右移n位extern unsigned long _lror_ (unsigned long val, unsigned char n)); (unsigned long)val右移n位extern unsigned char _crol_ (unsigned char val, unsigned char n)); (unsigned char)val左移n位extern unsigned int _irol_ (unsigned int val, unsigned char n)); (unsigned int)val左移n位extern unsigned long _lrol_ (unsigned long val, unsigned char n)); (unsigned long)val左移n位extern unsigned char _chkfloat_(float);测试并返回float的状态一下摘自keil C51的帮助文档0 Standard floating-point numbers 标准浮点数1 Floating-point value 0 浮点数02 +INF (positive overflow) 正溢出3 -INF (negative overflow) 负溢出4 NaN (Not a Number) error status出错。

keil软件中常用函数

keil软件中常用函数

keil软件中常用函数[ 2009-12-2 3:13:00 | By: zydlyq ] 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便.内部函数描述_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_,_cror_:将char型变量循环向左(右)移动指定位数后返回_testbit_:相当于JBC bitvar测试该位变量并跳转同时清除。

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

就是汇编中的子函数。

_crol_,_cror_:如国二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。

结果10101010。

功能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。

例:#i nclude{unsigned int y;C-5 1 程序设计 37y=0x00ff;y=_irol_(y,4);}函数名: _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函数库函数功能表

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);。

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

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原型:float sin(float x);功能:sin函数计算浮点数x的正弦值。

参数: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的正切。

(12)asin原型:float asin(float x);功能:求反正弦参数:浮点数x,取值必须在-1~1之间。

返回:X的反正弦,值在-π/2~π/2之间。

(13)acos原型:float acos(float x);功能:求反余弦参数:浮点数x,取值必须在-1~1之间。

返回:x的反余弦,值在0~π之间。

(14)atan原型:float atan(float x);功能:求反正切参数:浮点数x,取值必须在-1~1之间。

返回:X的反正切,值在-π/2~π/2之间。

(15)sinh原型:float sinh(float x);功能:sinh函数计算浮点数X的双曲正弦。

参数:x必须在-65535~65535之间,或产生一个NaN错误。

返回:sinh函数返回x的双曲正弦。

(16)cosh原型:float cosh(float x);功能:cosh函数计算浮点数X的双曲余弦。

参数:返回:cosh函数返回X的双曲余弦。

(17)tanh原型:float tanh(float x);功能:tanh函数计算浮点数x的双曲正切。

返回:tanh函数返回x的双曲正切。

(18)atan2原型:float atan2(float y,float x);功能:计算浮点数y/x的反正切。

参数:浮点数y,浮点数x。

返回:反正切值,值在-π~π之间。

x和y的符号确定返回值的象限。

(19)ceil原型:float ceil(float val)功能:ceil函数计算大于或等于val的最小整数值(收尾取整)。

参数:要化为整数的数。

返回:ceil函数返回不小于val的最小float整数值。

(20)floor原型:float floor(float val);功能:取整。

返回:floor函数返回不大于val的最大整数值。

(21)fmod原型:float fmod(float x,float y);功能:取模。

返回:x/y的浮点余数。

(22)modf原型:float modf(float val,float *ip);功能:modf函数把浮点数val分成整数和小数部分。

返回:modf函数返回带符号小数部分val。

整数部分保存在浮点数ip中。

(23)pow原型:float pow(float x,float y);功能:pow函数计算x的y次幂。

返回:pow函数返回值x y。

如果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_(bit b);功能:_testbit_程序在生成的代码中用JBC指令来测试位b,并清零。

参数:本程序只能用在直接寻址位变量,对任何类型的表达式无效。

固有函数,代码要求内嵌,而非调用。

返回:_testbit_程序返回值b(3)_cror_原型:unsigned char _cror_(unsigned char c, unsigned char b);功能:_cror_程序字符c循环右移b位。

固有函数,代码要求内嵌,而不是调用。

参数:返回:右移的结果(4)_iror_原型:unsigned int _iror_(unsigned int i, unsigned char b);功能:_iror_程序将整数i循环右移b位。

固有函数,代码要求内嵌而不是被调用。

参数:i右移的整数,b右移的次数。

返回:_iror_程序返回右移后的值。

(5)_lror_原型:unsigned long _lror_(unsigned long l,unsigned char b);功能:_lror_程序将长整数l循环右移b位。

固有函数代码,要求内嵌而不是被调用。

参数:l要右移的数,b要右移的位数。

返回:返回右移后的值。

摘要:#include<intrins_h>。

(6)_crol_原型:unsigned char _crol_(unsigned char c, unsigned char b);功能:_crol_程序字符c循环左移b位。

固有函数,代码要求内嵌,而不是调用。

参数:返回:左移的结果(7)_irol_原型:unsigned int _irol_(unsigned int i, unsigned char b);功能:_irol_程序将整数i循环左移b位。

固有函数,代码要求内嵌而不是被调用。

参数:i左移的整数,b左移的次数。

返回:_irol_程序返回左移后的值。

(8)_lrol_原型:unsigned long _lrol_(unsigned long l,unsigned char b);功能:_lrol_程序将长整数l循环左移b位。

固有函数,代码要求内嵌而不是被调用。

参数:l要左移的数,b要左移的位数。

返回:返回左移后的值。

(9)_chkfloat_原型:unsigned char _chkfloat_(float val);功能:检查浮点数的状态。

参数:浮点型变量。

返回:0,标准浮点数;1,浮点数0;2,正溢出;3,负溢出;4,NaN(不是一个数)错误状态。

(10)_push_原型:void _push_(unsigned char _sfr);功能:将特殊功能寄存器_sfr压入堆栈。

(11)_pop_原型:void _pop_(unsigned char _sfr);功能:将堆栈中的数据弹出到特殊功能寄存器_sfr。

三、字串转数字,随机数,存储池管理<stdlib.h>(1)atof原型:float atof(void *string);功能:将浮点数格式的字符串转换为浮点数。

如果string的第一个字符不能转换成数字,就停止处理。

参数:格式为,[{+|-}]数字[.数字][{e|E}[{+|-}]数字]。

如,-12.345e+67返回:atof函数返回string的浮点值。

(2)atoi原型:int atoi(void *string);功能:atoi函数转换string为一个整数值。

string是一个字符序列,可以解释为一个整数。

如果string的第一个字符不能转换成数字,就停止处理。

参数:atoi函数要求string有这样的格式:[空格][{+|-}]数字,如”123456”。

返回:atoi函数返回string的整数值。

(3)atol原型:long atol(void *string);功能:atol函数转换string为一个长整数值。

string是一个字符序列,可以解释为一个长整数。

如果string的第一个字符不能转换成数字,就停止处理。

参数:atol函数要求string有这样的格式:[空格][{+|-}]数字,如”1234567890”。

返回:atol函数返回string的长整数值。

(4)rand原型:int rand(void);功能:rand函数产生一个0~32767之间的虚拟随机数。

返回:rand函数返回一个虚拟随机数。

(5)srand原型:void srand(int seed);功能:srand函数设置rand函数所用的虚拟随机数发生器的起始值seed,随机数发生器对任何确定值seed产生相同的虚拟随机数序列。

返回:无。

(6)strtod原型:unsigned long strtod(const char *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原型:long strtol(const char *string, char **ptr, unsigned char base);功能:strtol函数将一个数字字串string转换为一个long值。

相关文档
最新文档