Cx51库函数

 

简单列出几个库函数

 

 

数学函数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 开始位置的偏移量,并返回字节形式的偏移量值。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值