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_、_crol_、_iror_、_irol_分别表示字符型整数右循环、字符型整数左循环和整形数字的右循环、左循环。
例:_cror_(a,2);//对变量a循环右移2位。
此处的循环移位和按位操作的左移(<<)和右移(>>)实现的功能是不同的。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值