位变量:表示存储空间中的一个位的值(0或1)
定义形式:
bit name = 0; bit name = 1;
80C51内部有21个特殊功能寄存器(SFR),除了DPTR为16位寄存器外,其余都是8位寄存器,每个SFR都有特定的字节地址。
如果想要访问这些SFR,其变量地址就不能由编译器来指定,因此C51中便采用了两个专属的变量类型说明符,即:
sfr
sfr16
定义形式:
sfr name = 8位地址变量 sfr16 name = 16位地址变量
例如:
sfr P1 = 0x90; sfr PSW = 0xd0; sfr16 DPTR = 0x82; ? ? ? ? ? //由于C51中只有一个16位寄存器,因此这里的字节地址只能位0x82
sbit是用于定义SFR中具有位地址变量的类型说明符,变量定义有以下三种不同的用法:
sbit name = 位地址; sbit name = 可位寻址的SFR字节地址^相对位置; sbit name = 可位寻址变量^相对位置;
例子:
假定CY是程序状态字寄存器PSW的位7,其位地址为0xd7
因为地址明确,因此可以用下面的方法进行CY定义:
sbit CY = 0xd7;
由于PSW的字节地址为0xd0,因此也可以用第2中用法定义:
sbit CY = 0xd0^7;
如果变量PSW已用sfr PSW = 0xd0
进行过定义了,那么可以用第三种方式进行定义:
sbit CY = PSW^7;