bit在单片机中怎么用,单片机中bit和sbit有什么区别?

2021-01-13 16:46:15 字数 4303 阅读 3799

1楼:匿名用户

bit在ram中的可位寻址空间中,一般用作程序判断的标志位。

2楼:神

用c写程序时定义位变量,如定义位变量led,则可写成: bit led;

单片机中bit和sbit有什么区别?

3楼:

sbit映射到io口(p1^1这种io口的“位”)

bit在ram中的可位寻址空间中,一般用作程序判断的标志位。

你可以认为它们一个对外(sbit),一个对内(bit)。

4楼:

bit和sbit都是c51扩展的变量类型。

sbit 要在最外面定义,就是说必须定义成外部变量.sbit定义的是sfr(特殊功能寄存器)的bit

sbit更像是类型定义,不像是变量定义。

sbit: 只是说明性说明

bit 可以在外部或内部定义。

bit和int char之类的差不多,只不过char=8位, bit="1位而已"。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。

这个地址是整个可寻址空间,ram+flash+扩展空间。bit只有0和1两种值,意义有点像windows下vc中的bool。

bit是编译器在的可寻址区分配的一个位变量,是不定的,不是绝对地址目标。

所有可位寻址的位都可由sbit指定,这包括可位寻址区和sfr中的位。

sbit是对应可位寻址空间的一个位,可位寻址区:20h~2fh。一旦用了sbit *** = rege^6这样的定义,这个sbit量就确定地址了。

sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。

sbit位寄存器是可位寻址的绝对地址目标,定义后编译器是不会改变位置的。

5楼:匿名用户

sbit跟int一样是一种数据类型

即位用sbit可以定义一个位变量

而bit则是用来强制转换比如(bit)a

6楼:匿名用户

sbit 就是置1的意思。。。跟clr相反。。。

单片机bit是什么意思

7楼:匿名用户

这是用c语言写程序时,用于定义一个标志位的关键字。

如:bit flag;

这样,bit在程序是就是一个位。

8楼:匿名用户

bit再c语言里是位定义符号,由它定义的变量数据仅为1位,只有0或1两种状态

9楼:曹广连

比特是二进制一位有0、1两种状态

请问单片机中bit5是什么意思啊啊

10楼:

第5位的意思,你可以看一下你的程序里对bit5的定义,应该是程序源作者写的宏定义吧.

一般来说,为了便于程序的开发,程序的作者会事先进行宏定义:

#define bit0 0x01

#define bit1 0x02

#define bit2 0x04

#define bit3 0x08

#define bit4 0x10

#define bit5 0x20

#define bit6 0x40

#define bit7 0x80

这样以后用的方便,也有这么定义的:

#define bit0 (1<<0)#define bit1 (1<<1)#define bit2 (1<<2)#define bit3 (1<<3)#define bit4 (1<<4)#define bit5 (1<<5)#define bit6 (1<<6)#define bit7 (1<<7)意思都一样,即bitn就是第n位为1,其他位为0

11楼:小毛豆

广义上指的是二进制中的"位",有两种状态“1”与“0”。bit5可能是单片机中某一数据或者寄存器的第五位,具有特殊意义。而具体的像这种“特殊位”(也有可能是普通位)在单片机中出现的频率太高了,比如通信中某一字节数据中的第五位,或者某一寄存器的控制位,具体是哪个得看这个“bit5”出现在哪了

12楼:生活如歌

应该是指第五个位单元。

单片机c语言程序设计中,用关键字bit定义单片机的端口.对吗

13楼:匿名用户

bit 是声明一个位变量的,定义单片机端口的是sbit.

如:sbit led=p2^1; //定义引脚p2.1为led

bit flag; //声明一个位变量

14楼:匿名用户

不对,用sbit

bit申明位变量。

15楼:心声代

sbit,不是bit

而且只有51类型的单片机合适

sbit led1 = p1^1;

51单片机c语言里面,定义bit的方法,有哪些,请举例,谢谢!

16楼:匿名用户

二楼正解,只要将变量定义在51单片机的可位寻址区域20h-2fh即可 ,bdata类型

uchar bdata b8 ;

b8^0 = 0 ;

b8^1 = 1 ;等等

联合体+结构体+位段 对这种做法 编绎器也会自动将其优化在可位寻址区域,纯粹故弄悬虚,冗长,增加程序维护度,c51讲求的是在有限资源内着重精简、执行效率

17楼:

^一共可以定义16个字节的位寻址变量

static uchar bdata canbusflag=0; //can标志

sbit canrcv_good=canbusflag^0; //成功接收标志

sbit cansend_good=canbusflag^1; //成功发送标志

sbit canerrflag=canbusflag^2; //can总线错误标志

sbit candtoverflag=canbusflag^3; //can总线超载标志

sbit canwuiflag=canbusflag^4; //can总线唤醒中断

//你改变canbusflag,下面的一堆变量也变了,反之既然

定义:union unitemp // 温度采样值

idata utemp; //idata是定义变量存储空间,这里用的8952单片机,有idata空间

。。。。

程序里面使用:

utemp.temp=***;//其实temp_ad[2]数组里面的内容也变了,union 结构嘛

如果你只定义8个位,就用第一种方式。

union 结构是为了方便大数据的操作才使用的。如果你要用union 定义一个8位变量的每一位,想应该可以吧。不过不知道符不符合c语法,编一个试试吧~哈哈

18楼:匿名用户

^你可以定义一个bdata类型的,然后分别定义这8位如:unsigned char bdata temp;

sbit temp0 = temp ^ 0;

sbit temp1 = temp ^ 1;

sbit temp2 = temp ^ 2;

sbit te*** = temp ^ 3;

sbit temp4 = temp ^ 4;

sbit temp5 = temp ^ 5;

sbit temp6 = temp ^ 6;

sbit temp7 = temp ^ 7;

这样就能使用temp这个字节里面的8位了。

例如:te*** = 1;

temp5 = 1;

则temp字节的第3位和第5位被置为1了,其他位的值不变。

19楼:匿名用户

比如led灯的控制

sbit d1=p1^0;

sbit d2=p1^1;

sbit d3=p1^2;

sbit d4=p1^3;

sbit d5=p1^4;

sbit d6=p1^5;

sbit d7=p1^6;

sbit d8=p1^7;

这样在操作的时候就不用对整个p1口操作,直接操作位即可得到指定地址上的一个字节或字的方法如下:

#define mem_b(x) (*((byte *)(x)))#define mem_w(x) (*((word *)(x)))不过这个有点复杂,一般用于arm

单片机中的DEC是什么意思,单片机DEC怎么意思

1楼 匿名用户 dec是减一指令,和inc相反 2楼 匿名用户 减一操作 a 00h dec a之后,a ffh 单片机dec怎么意思 3楼 德昂当 减一指令 与之相对的有个 inc 加一指令 就像c语言的 i 单片机中的ip是什么意思? 4楼 珠山龙少 在 51 单片机中,ip是指interrup...

单片机中的TR是什么意思,单片机中TR什么意思?

1楼 糖糖寳寳 意思如下 tf1 其值位1时,表示定时器t1计满溢出。 tf0 其值位1时,表示定时器t0计满溢出。 tr1 为1是定时器t1开始计数 0时不计数。 tr0 为1是定时器t0开始计数 0时不计数。 ie1 当发生外部中断1时其值为1。 ie0 当发生外部中断0时其值为1。 单片机中t...

单片机片选有什么用,51单片机片选的意义是什么?

1楼 无畏无知者 比如,有几块一样的芯片同时接到单片机总线上,靠什么去区分这些芯片并访问他们呢? 对,就是那个片选信号了,哪一个芯片的片选信号使能,总线就与哪一个芯片进行数据交换了。 这个就是片选的作用。 其实归根结底就是寻址而已。 2楼 匿名用户 片选信号相对于地址一样,当芯片的片选和地址信号同时...