51单片机bit、sfr、sbit介绍和用法

1.bit型变量

位变量:表示存储空间中的一个位的值(0或1)

定义形式:

复制代码
bit name = 0;
bit name = 1;

2.sfr型变量

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

3.bit型变量

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;
相关推荐
电气_空空5 小时前
基于 LabVIEW 串口通信的研究
单片机·嵌入式硬件·毕业设计·labview
电气_空空5 小时前
基于 LabVIEW 的 PID 控制系统设计与实现
嵌入式硬件·毕业设计·labview
weixin_456808385 小时前
【沁恒蓝牙开发】关闭独立看门狗
c语言·单片机·嵌入式硬件
weixin_456808385 小时前
【沁恒蓝牙开发】拓展广播 Code PHY-从机
c语言·嵌入式硬件
LCG元5 小时前
STM32实战:基于DHT11的智能温湿度监测与OLED显示
stm32·单片机·嵌入式硬件
qq_411262425 小时前
ESP32-C3 内置 USB Serial/JTAG 在 Windows下,不同板子不同端口
stm32·单片机·嵌入式硬件
最好有梦想~6 小时前
嵌入式Linux Lua使用ZeroBrane远程调试
linux·嵌入式硬件·lua
aini_lovee6 小时前
基于STM32的光电感烟火灾报警器设计
stm32·单片机·嵌入式硬件
拒朽6 小时前
51单片机学习(六)模块化编程和LCD调试工具
嵌入式硬件·学习·51单片机
somi76 小时前
ARM-09-I.MX6U-I2C
单片机·嵌入式硬件·i2c·自用