问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一本51单片机 库函数手册的pdf~

发布网友 发布时间:2022-05-30 01:05

我来回答

2个回答

热心网友 时间:2023-09-12 01:06

Cx51库函数
单片机 2010-04-04 15:14:39 阅读102 评论0 字号:大中小

简单列出几个库函数
数学函数MATH.H
函数原型: int abs(int val);
Char cabs(char val);
Float fabs(float val);
Long labs(long val);
再入属性: reentrant
功能: abs计算并返回val的绝对值,如果val为正,则不改变就返回,如果为负,则返回相反数。其余三
个函数除了变量和返回值类型不同之外,其他的功能完全相同。
函数原型: float exp(float x);
float log(float x);
float log10(float x);
再入属性: non-reentrant
功能: exp计算并返回浮点数x的指数函数,log计算并返回浮点数x的自然对数(自然对数以e为底,
e=2.718282),log10计算并返回浮点数x以10为底的x的对数。
函数原型: float sqrt(float x);
再入属性: non-reentrant
功能: sqrt计算并返回x的正平方根。
函数原型: float cos(float x);
float sin(float x);
float tan(float x);
再入属性: non-reentrant
功能: cos计算并返回x的余弦值,sin计算并返回x的正弦值,tan计算并返回x的正切值,所有函数的变量
范围都是-pi/2~+pi/2 ,变量的值必须在正负65535之间,否则产生一个NaN错误。
函数原型: float acos(float x);
float asin(float x);
float atan(float x);
float atan2(float y,float x);
再入属性: non-reentrant
功能: acos计算并返回x的反余弦值,asin计算并返回x的反正弦值,atan计算并返回x的反正切值,它们
的值域-pi/2~pi/2。atan2计算并返回y/x的反正切值,其值域为-pi~pi。
函数原型: float ceil(float x);
再入属性: non-reentrant
功能: ceil计算并返回一个不小于x的最小整数(作为浮点数)。
函数原型: float floor(float x);
再入属性: non-reentrant
功能: floor计算并返回一个不大于x的最大整数(作为符点数)。
函数原型: float modf(float x,float *ip);
再入属性: non-reentrant
功能: modf将浮点数x分成整数和小数两部分,两者都含有x相同的符号,整数部分放入*ip,小数部分作
为返回值。
函数原型: float pow(float x,float y);
再入属性: non-reentrant
功能: pow计算并返回x^y的值,如果x不等 于0而y=0,则返回1.当x=0且y<=0或当x<0且y不是整数时则返
回NaN.
绝对地址访问ABSACC.H
进行绝对地址访问的宏定义包含在头文件ABSACC.H
函数原型: #define CBYTE((unsigned char volatile code *)0)
#define DBYTE((unsigned char volatile idata *)0)
#define PBYTE((unsigned char volatile pdata *)0)
#define XBYTE((unsigned char volatile xdata *)0)
再入属性: reentrant
功能: 上述宏定义用来对8051系列单片机的存储器空间进行绝对地址访问,可以作字节寻址。CBYTE寻址
CODE区 ,DBYTE寻址DATA区,PBYTE寻址分页XDATA区(采用MOVX @R0指令),XBYTE寻址XDATA区(采用MOVX @DPTR
)指令。例如,下列语句在外部存储器区域方向地址0x0002:
xval=XBYTE[0x0002];
XBYTE[0x0002]=0x20;
通过使用#define预处理命令,可采用其他符号定义绝对地址,例如#define XIO XBYTE[0x1000]
即将符号XIO定义成外部数据存储器地址0x1000。
函数原型: #define CWORD((unsigned int volatile code *)0)
#define DWORD((unsigned int volatile idata *)0)
#define PWORD((unsigned int volatile pdata *)0)
#define XWORD((unsigned int volatile xdata *)0)
再入属性: reentrant
功能: 这个宏与前面一个宏相似,只是它们指定的数据类型为unsigned int。通过灵活运用不同的数据类
型,8051的所有存储器空间都可以进行访问。例如,下列语句在外部存储器区域访问地址0x0004:
xval=XWORD[0x0002];
XWORD[0x0002]=0x0002;
注意,使用宏CWORD、DWORD、PWORD、XWORD时,实际存储器地址应为2*sizeof(unsigned int)。
函数原型: #define FVAR(object,addr)(*((object volatile far *)((addr)+0x10000L)))
#define FCFVAR(object,addr)(*((object const far *)((addr)+0x810000L)))
再入属性: reentrant
功能: 宏FVAR和FCVAR用于访问far 和const far 存储器区域。FVAR用于访问far空间(存储类为HDATA)
,FCVAR用于访问const far 空间(存储类为HCONST)。
例子: #define IOVL FVAR(long,0x14FFE) //long at HDATA addr 0x14FFE
var = IOVAL; //read
IOVAL = 0x10; //write
var = FCVAR(int,0x24002) //read int from HCONST address 0x24002
注意:绝对地址目标不能穿过64KB的段边界,例如不能在地址0xFFFE访问一个long变量。
函数原型: #define FARRAY(object,base)((object volatile far *) ((base)+0x10000L))
#define FCARRAY(object,base)((object const far *) ((base)+0x810000L))
功能: 宏FARRAY和FCARRAY用于访问位于far 和 const far 存储区的数组类型目标,FARRAY用于访问far
空间(存储类为HDATA),FCARRAY用于访问const far空间(存储类为HCONST)。

内部函数INTRINS.H
内部函数的原型声明包含在头文件INTRINS.H
函数原型: unsigned char _crol_(unsigned char val,unsigned char n);
unsigned int _irol_(unsigned int val,unsigned char n);
unsigned long _irol_(unsigned long val,unsigned char n);
再入属性: reentrant/intrinsc
功能: _crol_,_irol_,和_lrol_将变量val循环左移n位,它们与8051单片机的“RL A”指令相关。这三个
函数的不同之处在于参数和返回值的类型不同。
函数原型: unsigned char _cror_(unsigned char val,unsigned char n);
unsigned int _iror_(unsigned int val,unsigned char n);
unsigned long _lror_(unsigned long val,unsigned char n);
再入属性: reentrant/intrinsc
功能: _cror_,_iror_和_lror_将变量val循环右移n位,它们与8051单片机的“RR A”指令相关。这三个
函数的不同之处在于参数和返回值类型不同。
函数原型:  void _nop_(void);
再入属性: reentrant/intrinsc
功能: _nop_产生一个8051单片机的nop指令,该函数可用于Cx51程序中的时间延时。Cx51编译器对程序中
调用_nop_函数的地方,直接产生一条NOP指令。
函数原型: bit _testbit_(bit x);
再入属性: reentrant/intrinsc
功能: _testbit_产生一条8051单片机的JBC指令,该函数对字节中的一位进行测试。如果该位置位则函数
返回1,则函数返回1,同时将该位复位为0,否则返回0.
_testbit_函数只能用于可直接寻址的位,不允许在表达式中使用。
变量参数表 STDARG.H
Cx51编译器允许函数的参数个数和类型是可变的,可使用简略形式(记号为“...”),这时参数表的长度和参数的
数据类型在定义时是未知的。头文件stdarg.h中定义了处理函数参数表,利用这些宏,使程序可识别和处理变化的参
数。在定义具有可变参数的函数时,必须声明一个va_list型的指数,用va_start将该指针初始化为指数该参数表,
用va_arg访问表中不同类型的参数,对参数的访问结束后,用va_end 关闭参数表。
函数原型: typedef char * va_list
功能: va_list被定义成指向参数表的指针
函数原型: type va_arg(ap,type)
再入属性: reentrant
功能: 宏va_arg从ap指向的可变长度参数表中检索type类型的值。对于每一个参数可以只调用一次宏,并
且调用宏时必须按照表中参数的次序进行。对va_arg的第一次调用将返回在va_start宏中指定的v参数后的第一个参
数。继续调用va_arg将返回剩下的后续参数。
函数原型: void va_start(ap,v)
再入属性: reentrant
功能: 当用在一个具有可变长度表的函数中时,宏va_start初始化ap参数,为以后的va_arg和va_end宏所
使用参数v必须是直接位于省略号所指定的初选参数函数参数名。在使用宏va_arg进行存取前,必须调用函数来初始
化可变参数表。
函数原型: void va_end(ap)
再入属性: reentrant
功能: 该宏用于终止在va_start宏中已被初始化的可变长度参数的指针ap。关闭参数表,结束对可变参数
表的访问。

全程跳转SETJMP.H
头文件的SETJMP.H中的函数可用于正常的系列函数调用和函数结果,它允许从深层函数调用中直接返回。
函数原型: #define _JBLEN 7
typedef char jmp_buf[_jblen]
功能: 规定由setjmp和longjmp所使用的用于保存和恢复程序环境的缓冲区
函数原型: int setjmp(jmp_buf env);
再入属性: reentrant
功能: setjmp将程序执行的当前环境状态信息存入变量env之中,以便嵌套调用的低层函数使用longjmp将
执行控制权直接返回到调用setjmp语句的下一条语句。当直接调用setjmp时返回值为0,当从longjmp调用时返回非0
值。

函数原型: void long jmp(jmp_buf env,int retval);
再入属性: reentrant
功能: longjmp恢复先前调用setjmp时存在env中的状态。程序从调用setjmp语句的下一条语句执行。参数
val为调用setjmp的返回值。longjmp和setjmp函数提供了一种执行非局部goto的方法,它们一般用于将执行控制传递
给先前被调用的程序中的错误处理或恢复代码。只有用volatile属性声明的局部变量和函数才能恢复。

计算结构体成员的偏移量 STDDEF.H
头文件STDDEF.H包含了一个计算结构体成员偏移量的宏。
函数原型: int offsetof(structure,member);
功能: offsetof宏计算结构体成员member从结构体structure 开始位置的偏移量,并返回字节形式的偏移
量值。

热心网友 时间:2023-09-12 01:06

你打开keil软件,在帮助里有很多的库函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么电脑上的word界面变小为什么WORD里面的页面变的很小怎么设置回来... AHA拯救心脏救命术(Basic Life Support,BLS) 基础生命的基本顺序 机械制图第一视角与第三视角的区别 明日之后野外感染者据点都在什么地方 感染就聚集点位置分享 明日之后 明日之后哪些地图有强力感染者? 《明日之后》野外感染者据点一览 明日之后野外感染者据点去哪找 妙洁提醒你注意:保鲜膜有些不能加热 有些不能包肉 C盘里文件的修改日期是不是就代表那天我用过电脑,我是上午用的,可文件... 51单片机中能不能建立数据库,并根据一定的公式对这些数据进行处理再将数据取出? 51单片机库函数中的_crol_的英文全称是什么??就是 c r o l 个代表什么单词? 51单片机库reg51.h中P1是地址还是值啊 谁知道51单片机在Protel中的哪个元件库中 Altium Designer 51单片机库 在51单片机中怎样建立库文件? 画个51单片机的最小系统需要用到哪些库 51单片机在ad中怎么找 51单片机库函数哪来的 求助!win7 java环境变量设置。 目前鄂尔多斯的房地产发张状况 西安顶天木业有限公司怎么样? 陕西顶天工贸有限公司西安分公司怎么样? 两年前借款给堂叔,说到时给利息比银行存款要高,因为相信他所以没有写任何字据。 北京顶天广告艺术有限责任公司怎么样? 顶天(广州)办公文具有限公司怎么样? 百度知道,看视频拿红包要马上提现吗? 股市的顶天立地是什么 0-150mm数显卡尺,0-100mm都正常,到120就显示负数,怎么解决。 雅辛得金球奖的那年,他有些什么突出的表现? 只是脸黄眼睛黄属于哪种肝炎 10岁孩子脸黄眼睛也黄是怎么回事 新生儿脸黄眼睛也黄怎么治 小孩脸和眼睛发黄这是咋了? 请问什么是肝斑???它与其他的斑有什么不同???是什么原因导致的呀??? 为什么C程序可以在51单片机上运行?51单片机上有C的运行环境和函数库? 压力锅里装水过多会爆炸吗 高压锅放太满会爆炸吗 计量员的介绍 计量人员。自我介绍怎么样加入图片,还有说说自己的想法还有自己的要求 mx4 pro和iPhone6 plus哪个好 三星s6手机好用吗? 滋润补血食物有哪些 我现在用excel处理十几万行的数据,涉及到匹配十几万行数据时,太慢了 法王子的简介 浪速王子的故事简介 王子全的介绍 医保卡什么时候开始实行实名制 问题答是什么,不会别说话? 回来问题答?