打印

sbit和bit

[复制链接]
3834|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
风溪香士|  楼主 | 2013-2-28 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我定义了两句话
unsigned char bdata status_value;
sbit rx_dr=status_value^6;
如果把sbit换做bit就会出错,错误为PROJECT35_1.C(48): error C247: non-address/-constant initializer
这是为什么呢?

相关帖子

沙发
yewuyi| | 2013-2-28 14:04 | 只看该作者
你所使用的C编译器没有扩展bit指令,该编译器扩展的位操作指令是sbit,所以使用bit则报错。

使用特权

评论回复
板凳
风溪香士|  楼主 | 2013-2-28 14:07 | 只看该作者
yewuyi 发表于 2013-2-28 14:04
你所使用的C编译器没有扩展bit指令,该编译器扩展的位操作指令是sbit,所以使用bit则报错。 ...

我用的是keil,keil有bit吧。

使用特权

评论回复
地板
yewuyi| | 2013-2-28 14:12 | 只看该作者
KEIL扩展的位指令应当就是sbit

使用特权

评论回复
5
dirtwillfly| | 2013-2-28 14:27 | 只看该作者
楼上正解。
楼主如果非要用bit,也可以自己扩展一下

使用特权

评论回复
6
yewuyi| | 2013-2-28 15:27 | 只看该作者
如果非要用,可以自己做个转义宏。

#define  bit  sbit

使用特权

评论回复
7
uet_cache| | 2013-2-28 18:00 | 只看该作者
sbit是指定位操作寄存器的某位定义,BIT是定义的BIT变量。

使用特权

评论回复
8
uet_cache| | 2013-2-28 18:01 | 只看该作者
BIT是位变量类型,两者不同,BIT定义的变量,直接赋0或1.SBIT定义的变量要对寄存器的。
如sbit A=P0^0;
bit B=0;
bit C=1;

使用特权

评论回复
9
ayb_ice| | 2013-3-1 07:59 | 只看该作者
sbit用于定义字节中的某一位
而bit直接定义位,与字节没有直接关系
是有明显区别的

使用特权

评论回复
10
daocaoya| | 2013-3-1 08:20 | 只看该作者
uet_cache 发表于 2013-2-28 18:01
BIT是位变量类型,两者不同,BIT定义的变量,直接赋0或1.SBIT定义的变量要对寄存器的。
如sbit A=P0^0;
bit ...

正解

使用特权

评论回复
11
wsnsyy| | 2013-3-1 10:07 | 只看该作者
新手學習了

使用特权

评论回复
12
coody| | 2013-3-1 14:38 | 只看该作者
sbit是定义一个指定的位(位地址固定),bit是定义一个位变量,KEIL编译时分配位地址

使用特权

评论回复
13
yy251745080| | 2013-3-1 14:45 | 只看该作者
想必楼主已经明白了

使用特权

评论回复
14
cz_kangjie| | 2013-3-1 17:04 | 只看该作者
coody 发表于 2013-3-1 14:38
sbit是定义一个指定的位(位地址固定),bit是定义一个位变量,KEIL编译时分配位地址 ...

答得好

使用特权

评论回复
15
风溪香士|  楼主 | 2013-4-29 15:59 | 只看该作者
yewuyi 发表于 2013-2-28 14:12
KEIL扩展的位指令应当就是sbit

在keil中不是也可以用bit定义一个位变量来使用吗?

使用特权

评论回复
16
风溪香士|  楼主 | 2013-4-29 16:07 | 只看该作者
uet_cache 发表于 2013-2-28 18:01
BIT是位变量类型,两者不同,BIT定义的变量,直接赋0或1.SBIT定义的变量要对寄存器的。
如sbit A=P0^0;
bit ...

也就是说sbit定义的数据依赖于一个寄存器或者一个bdata的变量,而bit就是和char、int一样的单独的变量?

使用特权

评论回复
17
风溪香士|  楼主 | 2013-4-29 16:08 | 只看该作者
coody 发表于 2013-3-1 14:38
sbit是定义一个指定的位(位地址固定),bit是定义一个位变量,KEIL编译时分配位地址 ...

也就是说sbit定义的数据依赖于一个寄存器或者一个bdata的变量,而bit就是和char、int一样的单独的变量?

使用特权

评论回复
18
coody| | 2013-5-2 13:34 | 只看该作者
sbit定义的数据依赖于一个寄存器或者一个bdata的变量,而bit就是编译器自动定位在bdata里的某个位.

使用特权

评论回复
19
MCU_Jason| | 2013-5-2 16:57 | 只看该作者
学习了

使用特权

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

本版积分规则

个人签名:我命由我不由天!

13

主题

82

帖子

1

粉丝