新闻  |   论坛  |   博客  |   在线研讨会
C51常用头文件
chen492582629 | 2011-08-25 09:37:35    阅读:10891   发布文章


在KEIL 中,对于单片机所使用的头文件,除了reg51 reg52以外,还有一些从各芯片制商的官网下载与reg51,reg52功能类似的头文件,需了解透外,还要对各类型单片机均可通用且相当有用的的头文件,做相应的了解。因为,内部所包含的函数与宏定义,可以及大的方便我们编写应用程序1字符函数  ctype.h
  
   1  extern bit isalpha(char);
        功能:检查参数字符是否为英文字母,是则返回1
2 extern bit isalnum(char)
     功能:检查字符是否为英文字母或数字字符,是则返回1
3 extern bit iscntrl(char)
            功能:检查参数值是否在0x00~0x1f 之间或等于0x7f,是则返回1
4   extern bit isdigit(char)
     功能: 检查参数是否为数字字符,是则返回1
5  extern bit isgraph(char)
            功能: 检查参数值是否为可打印字符,是则返回1,可打印字符为0x21~0x7e
6 extern bit isprint(char)
     功能:除了与isgraph相同之外,还接受空格符0x20
7 extern bit ispunct(char)
  功能:不做介绍。
8 extern bit islower(char)
     功能:检查参数字符的值是否为小写英文字母,是则返回1
9 extern bit isupper(char)
            功能:检查参数字符的值是否为大写英文字母,是则返回1
10 extern bit isspace(char)
     功能:检查字符是否为下列之一,空格,制表符,回车,换行,垂直制表符和送纸。如果为真则返回1
11 extern bit isxdigit(char)
            功能:检查参数字符是否为16进制数字字符,是则返回1
12 extern char toint(char)
     功能:将ASCII字符0~9  a~f(大小写无关)转换成对应的16进制数字,
返回值00H~0FH
13 extern char tolower(char)
            功能:将大写字符转换成小写形式,如字符变量不在A~Z之间,则不作转换而直接返回该字符
14 extern char toupper(char)
     功能:将小写字符转换成大写形式,如字符变量不在a~z之间,则不作转换而直接返回该字符
15 define toascii(c)  ((c)&0x7f)
功能:该宏将任何整形数值缩小到有效的ASCII范围之内,它将变量和0x7f相与从而去掉第7位以上的所有数位
16 #define tolower(c)  (c-‘A’+’a’)
功能:该宏将字符与常数0x20 逐位相或
17 #define toupper(c)  ((c)-‘a’+’A’)
功能:该宏将字符与常数0xdf 逐位相与
2数学函数 math.h
extern int    abs  (int   val);
extern char  cabs  (char  val);
extern long  labs  (long  val);
extern float  fabs  (float  val);
功能:返回绝对值。上面四个函数,除了形参和返回值不一样之外,
其它功能完全相同。

extern float exp    (float val);
extern float log    (float val);
extern float log10  (float val);
  功能: exp   返回eval
         log   返回 val 的自然对数
         log10 返回 以10为底,val的对数
        
extern float sqrt  (float val);
   功能:      返回val的正平方根

      extern int rand();
      extern void srand(int n);
         功能:  rand返回一个0到32767之间的伪随机数,srand用来将随机数发生器初始化成一个已知的(期望)值。
        Keil uVision3中的math.h库中,不包含此函数。

       extern float sin   (float val);
extern float cos   (float val);
extern float tan   (float val);
   功能:   返回val的正弦,余弦,正切值。val为弧度  fabs(var) <=65535
extern float asin  (float val);
extern float acos  (float val);
extern float atan  (float val);
extern float atan2 (float y, float x);
  功能: asin 返回val的反正弦值。acos 返回val的反余弦值。
         atan 返回val的反正切值。
         asin atan acos的值域均为  -π/2~+π/2
        atan2返回x/y,的反正切值,其值域为-π~+π

extern float sinh  (float val);
extern float cosh  (float val);
extern float tanh  (float val);
  功能:cosh返回var的双曲余弦值,sinh返回var的双曲正弦值,
        tanh返回var的双曲正切值。

extern float ceil  (float val);
  功能:  向上取整,返回一个大于val的最小整数。
extern float floor (float val);
  功能:  向下取整,返回一个小于val的最大整数。
extern float pow   (float x, float y);
  功能: 计算计算xy的值。当(x=0,y<=0)或(x<0.y不是整数)时会发生错误。
extern void fpsave(struct FPBUF *p)
extern void fprestore(struct FPBUF *p)
  功能:fpsave 保存浮点了程序的状态,fprestore恢复浮点子程序的原始状态,当中断程序中需要执行浮点运算时,这两个函数是很有用的。
      注:   Keil uVision3中的math.h库中,不包含此函数。

3绝对地址访问 absacc.h
#define CBYTE ((unsigned char volatile code  *) 0)
#define DBYTE ((unsigned char volatile data  *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)
  功能:CBYTE  寻址    CODE区
        DBYTE  寻址    DATA区
        PBYTE  寻址    XDATA(低256)区
        XBYTE  寻址    XDATA区
   例: 如下指令在对外部存储器区域访问地址0x1000
       xvar=XBYTE[0x1000];
       XBYTE[0x1000]=20;

#define CWORD ((unsigned int volatile code  *) 0)
#define DWORD ((unsigned int volatile data  *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)
   功能:与前面的一个宏相似,只是它们指定的数据类型为unsigned int .。
         通过灵活运用不同的数据类型,所有的8051地址空间都是可以进行访问。
 如
DWORD[0x0004]=0x12F8;
即内部数据存储器中(0x08)=0x12; (0x09)=0xF8

4 内部函数 intrins.h

extern unsigned char _cror_    (unsigned char  var, unsigned char  n);
extern unsigned int  _iror_    (unsigned int    var, unsigned char  n);
extern unsigned long _lror_    (unsigned long  var, unsigned char  n);
  功能:将变量var 循环右移 n 位。
上三个函数的区别在于,参数及返回值的类型不同
extern unsigned char _crol_    (unsigned char  var, unsigned char  n);
extern unsigned int  _irol_    (unsigned int    var, unsigned char  n);
extern unsigned long _lrol_    (unsigned long  var, unsigned char  n);
  功能:将变量var 循环左移 n 位。
上三个函数的区别在于,参数及返回值的类型不同

   例如:
     #include<intrins.h>
      void main()
        {
          unsigned int y;
          y=0x0ff0;
          y=_irol_(y,4);    //y=0xff00
          y=_iror_(y,4);    //y=0x0ff0
}

void  _nop_(void);
   功能:_nop_产生一个8051单片机的NOP指令,C51编译器在程序调用_nop_ 函数的地方,直接产生一条NOP指令。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客