C51单片机的数据类型

发布时间:2024-02-23
c51支持c语言的所有标准数据类型,除此之外,还加入了用于专门访问80c51硬件的数据类型,如:bit、sbit、sfr和sfrl6。这些数据类型在ansic中是没有的。
bit:声明位变量,其值为0或1。
sbit:声明可位寻址变量中的某个位变量,其值为0或1
sfr:声明特殊功能寄存器,地址范围为:0~255。
sfr16:同上,地址范围为0~65535。
c51编译器支持表5-1列出的数据类型。除了这些变量类型外,变量能被组合到结构、联合和数组中。兼容ansic标准的数据类型可通过指针访问,但扩展的bit、sbit、sfr和sfrl6数据类型专用于访问80c51的特殊功能寄存器,故不能通过指针进行访问。
表5-1 c51数据类型
数据类型

字节
值的范围
char
8
1
-128~127
unsigned char
8
1
0~255
enum
16
2
-32768~32767
short
16
2
-32768~32767
unsigned short
16
2
0~65535
int
16
2
-32768~32767
unsigned int
16
2
0~65535
long
32
4
-2147483648~2147483647
unsigned long
32
4
0~4294967295
float
32
4
±1.175494e-38~±3.402823e+38
bit
1

0,1
sbit
1

0,1
sfr
8
1
0~255
sfr16
16
2
0~65535
80c51有21个特殊功能寄存器,它们在片内ram安排了绝对地址,80c51的芯片说明中已经为它们用预定义标识符起了名字。c51要做的就是承认这些标识符并将其与绝对地址联系起来。可以用sfr与sfr16两种标识符。
例5.1 用sfr数据类型定义特殊功能寄存器示例。
sfr scon = 0x98; /*声明scon为串口控制器,地址为0x98*/
sfr p0 = 0x80; /*声明p0为特殊功能寄存器,地址为0x80*/
sfr tmod = 0x89; /*声明tmod为定时器/计数器的模式寄存器,地址为0x89*/
sfr psw = 0xd0; /*声明psw为特殊功能寄存器,地址为0xd0*/
说明:sfr之后的寄存器名称必须大写,定义之后可以直接对这些寄存器赋值。
在许多80c51派生系列中可用两个连续地址的特殊功能寄存器指定一个16位值,如:
sfr16 t2 = 0xcdcc /*声明t2为16位特殊功能寄存器,地址为0cch(低字节)和0cdh(高字节)*/
例5.2 用 sbit的数据类型定义位变量示例。
sbit cy = psw^7; /*从已声明的psw中,指定psw.7为cy*/
sbit cy = 0xd0^7;/*整数0xd0为基地址,指定0xd0的第七位为cy*/
在sbit声明中,“^”号右边的表达式定义特殊位在寄存器中的位置,值必须是0~7。
上一个:终止劳动合同需要什么手续
下一个:8g内存吃鸡(吃鸡8g内存条够用吗)

惠普笔记本电脑多少钱一个,惠普笔记本电脑多少钱一台
我国刑法对窃取信用卡信息罪的立案规定?
再结婚需要拿离婚证吗,离婚了再婚办理结婚证没有户口簿能办理吗
徐州电信高防云服务器租用
timescape怎么用,Timescape 索尼
北美海棠是常见的一种观赏性植物
起诉离婚去哪儿办理
心肺复苏早期应用氨茶碱与传统方法的比较研究.pdf
石榴成熟前后的科学管理要点
名誉权纠纷能否要求精神损害赔偿