打印

bit 和sbit的区别是什么?

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

使用特权

评论回复
沙发
four_zhg| | 2019-5-8 21:21 | 只看该作者
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经常用在寄存器中的,方便对寄存器的某位进行操作。

使用特权

评论回复
板凳
llia| | 2019-5-8 21:28 | 只看该作者

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

使用特权

评论回复
地板
wangpe| | 2019-5-8 21:35 | 只看该作者
sbit 的s 原来是special的意思

使用特权

评论回复
5
langgq| | 2019-5-8 21:38 | 只看该作者

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

使用特权

评论回复
6
wangzsa| | 2019-5-8 21:41 | 只看该作者
BIT定义的是可位寻址的位,SBIT定义的是特殊功能寄存器的位

使用特权

评论回复
7
lium| | 2019-5-8 21:44 | 只看该作者
楼上说错了吧

使用特权

评论回复
8
guoyt| | 2019-5-8 21:47 | 只看该作者

sbit LED=P1^0;
bit flag;

使用特权

评论回复
9
zhuww| | 2019-5-8 23:03 | 只看该作者

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

使用特权

评论回复
10
zhanglli|  楼主 | 2019-5-8 23:06 | 只看该作者

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

使用特权

评论回复
11
zhanglli|  楼主 | 2019-5-8 23:09 | 只看该作者
众说纷纭,我好好看看吧再

使用特权

评论回复
12
wangpe| | 2019-5-8 23:12 | 只看该作者

sfr bit = sbit

使用特权

评论回复
13
zhanglli|  楼主 | 2019-5-8 23:17 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

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

本版积分规则

1016

主题

9386

帖子

1

粉丝