单片机编程中sfr,sbit的用法以及位地址和字节单元地址的区别

目录

1. sfr用法

特殊功能寄存器定义:以P0为例。
c51的官方头文件中,P0口是这样定义的
在这里插入图片描述
可见sfr的定义方式为:sfr 变量名=字节单元地址;
这里的P0也可以换成其他变量名。
在后续的使用中,如:P0=0x00;就是把0x80为地址的字节单元的8位的数据赋值为0000 0000B

2. sbit用法

特殊功能位定义:以P0_0为例。
在c51的官方头文件中,P0_0口是这样定义的
在这里插入图片描述
可见sbit的定义方式为:sbit 变量名=位地址;
这里的P0_0也可以换成其他变量名。
sbit 还有其他定义方式,如:
sbit P0_0 = P0^0
sbit P0_0 = 0x80^0
可见P0 ^0,0x80 ^0都可以表示位地址;

3. ^的用法

通过上面的例子,我们可以得到 ^的作用: ^用于得到一个可位寻址字节单元的某一位;
^ 的具体用法为:位变量名=(可位寻址字节单元地址/变量名)^(第几位)。(如:sbit VAR1 = P0 ^0)
在后续的使用中,如:VAR1=0;就是把0x80为地址的字节单元的第0位(即P0口的第0位)的数据置0。

4. 可位寻址的字节单元地址

  • 前128B中有可位寻址区:51单片机内RAM中有可进行位寻址的空间,单元地址是20H~ 2FH,共16个单元,每个单元8个位可以位寻址,共128个位,位地址是:00H~7FH。
    在这里插入图片描述
  • 特殊功能寄存器区可寻址单元:而在特殊功能寄存器区也有可位寻址的寄存器。这些寄存器的单元地址以0和8结尾,如:P0=0x80;TCON= 0x88;P1= 0x90;P2= 0xA0…。这些寄存器都可对单独位进行操作,而其他寄存器只能一次性对一个字节操作。位地址的编址规律为:如果一个单元地址为0x80,那么它的8位的为地址为:0x80~0x87(从当前单元地址往后数8个)。因此单元地址每隔8个才有1个可位寻址的寄存器,为的是位地址不重复。

5. 区分位地址和字节单元地址

如:字节单元地址P0=0x80,位地址P0_0=0x80,两者虽然地址是重叠的,但是使用时不用担心混用,如:指令对位数据进行操作时,0x80代表位地址;指令对字节数据进行操作时,0x80代表单元地址。

参考:https://blog.csdn.net/breadcheesebread/article/details/129415963
  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值