打印

bit 和sbit的区别是什么?

[复制链接]
1072|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanglli|  楼主 | 2021-10-10 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bit 和sbit的区别是什么?

使用特权

评论回复
沙发
heweibig| | 2021-10-10 10:36 | 只看该作者
bit和sbit都是C51扩展的变量类型。
bit和int char差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非指定,否则这个地址是随机分配的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,和Windows下VC中的BOOL类似。
sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6的定义,这个sbit量就确定地址了。
bit和sbit的最大区别在于,bit是定义一个变量;sbit经常用在寄存器中的,方便对寄存器的某位进行操作。

使用特权

评论回复
板凳
yszong| | 2021-10-10 10:38 | 只看该作者

bit —— (位)类型
sbit —— 命名具体位(通常是特殊寄存器中的位),当然其类型是位。

使用特权

评论回复
地板
huangchui| | 2021-10-10 10:39 | 只看该作者
sbit 的s 原来是special的意思

使用特权

评论回复
5
langgq| | 2021-10-10 10:41 | 只看该作者

sbit定义的是亲兄弟
bit定义是堂兄弟

使用特权

评论回复
6
zwll| | 2021-10-10 10:45 | 只看该作者
BIT定义的是可位寻址的位,SBIT定义的是特殊功能寄存器的位

使用特权

评论回复
7
supernan| | 2021-10-10 10:47 | 只看该作者
楼上说错了吧

使用特权

评论回复
8
heweibig| | 2021-10-10 10:52 | 只看该作者

sbit LED=P1^0;
bit flag;

使用特权

评论回复
9
zhanghqi| | 2021-10-10 10:54 | 只看该作者

定义位变量用sbit比如
a.c里的sbit LED=P1^0;

使用特权

评论回复
10
chuxh| | 2021-10-10 10:56 | 只看该作者

声明为变量用bit比如
a.h里的bit LED;

使用特权

评论回复
11
zhanglli|  楼主 | 2021-10-10 10:58 | 只看该作者
众说纷纭,我好好看看吧再

使用特权

评论回复
12
zhanghqi| | 2021-10-10 11:00 | 只看该作者
sfr bit = sbit

使用特权

评论回复
13
zhanglli|  楼主 | 2021-10-10 11:01 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1016

主题

9386

帖子

1

粉丝