80C51常用头文件

80C51常用头文件:reg51.h、math.h、ctype.h、stdio.h、stdlib.h、absacc.h、intrins.h。

(1)reg51.h
定义51系列单片机特殊功能寄存器和特殊位。

(2)absacc.h
访问绝对地址头文件。当用绝对地址访问内部RAM(data)、外部RAM的一页(pdata)、整个外部RAM(xdata)和ROM(code)时,需要包含此文件。

主要有:
CBYTE、CWORD(以字节型、字型访问ROM)
DBYTE、DWORD(以字节型、字型访问内部RAM)
PBYTE、PWORD(以字节型、字型访问外部RAM的一页空间(256字节))
XBYTE、XWORD(以字节型、字型访问外部RAM)
如:XWORD[0x1000] = 0x1234; //给片外RAM的2000H单元赋值12H,2001H单元赋值34H(高字节存储在低地址)

对#define XBYTE ((unsigned char volatile xdata ) 0)的分析:
xdata是large存储类型,volatile是通过硬件来改变指针指向的内容。
定义XBYTE为:指向xdata地址空间unsigned char数据类型的指针,指针值为0。
这样,可以直接用XBYTE[0xnnnn]或
(XBYTE+0xnnnn)访问外部RAM了。
至于volatile的作用就是让编译器不至于优化掉它的操作:
volatile修饰的变量,对于读操作来说,其值是不可预知的;对于写操作来说,即使是写入两个同样的值,影响也是不一样的。所以编译器不会对访问该变量的操作优化。如果不加volatile关键词,有些编译器会将一些它认为无意义的或者无效的操作给优化掉,但实际上这并不是你要的结果。例如一些特殊的寄存器,一些IO等。
I=0;
I=0; //如果I未声明成volatile的,则可能被优化掉
if(I==1) //如果I未声明成volatile的,则可能被优化掉
{
}

//8051特有的内存型态:
code 以 MOVC @A+DPTR 读取的程序内存
data 可以直接存取的内部数据存储器
idata 以 Mov @Rn 存取的内部数据存储器
bdata 可以位寻址(Bit Addressable)的内部存储器
xdata 以 MOVX @DPTR 存取的外部数据存储器
pdata 以 MOVX @Rn 存取的外部数据存储器

(3)math.h
数学运算函数,如求绝对值、平方根、指数、正弦等。

(4)ctype.h
包含两类函数:字符测试函数和字符大小转换函数。如判断一个整形变量是数字、字母、换行符、控制符等。

(5)stdio.h
标准输入输出函数头文件,用于从标准设备读取字符、数字,或者向标准输出设备输出字符、字符串等。

(6)stdlib.h
标准库头文件。说明了用于数值转换、内存分配以及具有其他相似任务的函数,如求绝对值、字符转换为整形、长整形等。

(7)intrins.h
字符型、整形和长整形数字的左、右循环移位。
如_cror_、croliror、_irol_分别表示字符型整数右循环、字符型整数左循环和整形数字的右循环、左循环。
例:cror(a,2);//对变量a循环右移2位。
此处的循环移位和按位操作的左移(<<)和右移(>>)实现的功能是不同的。

作者:zy1049677338
来源:CSDN
原文:https://blog.csdn.net/zy1049677338/article/details/58134690
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值