keil编程时sbit的意义及用法

作者&投稿:柳俗 (若有异议请与网页底部的电邮联系)
sbit在单片机中的表示和作用?~

位定义,如 sbit a=P0^0; 就表示a代表P0^0口。
a=1; P0^0口就输出高电平,sbit就是s位,代表二进制数的多少位,在单片机里面一般有8位和16位立即数和地址。
位定义:
sbit led=P1^1;
//LED灯接在P1.1口

扩展资料:注意事项
在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字。
sbit的用法有三种:
1、sbit 位变量名=地址值
2、sbit 位变量名=SFR名称^变量位地址值
3、sbit 位变量名=SFR地址值^变量位地址值
如定义PSW中的OV可以用以下三种方法: sbit OV=0xd2
1、说明:0xd2是OV的位地址值 sbit OV=PSW^2
2、说明:其中PSW必须先用sfr定义好 sbit OV=0xD0^2
3、说明:0xD0就是PSW的地址值
因此这里用sfr P1_0=P1^0;就是定义用符号P1_0来表示P1.0引脚,也可以起P10一类的名字,只要下面程序中也随之更改就行了。

引自博客:AndymioKeilC编程时用到如下的定义:unsigned char bdata.....sbit.....前面的unsigned char是数据类型不用解释了,bdata不是数据类型,而是指存放的内存空间 。bdata指可位寻址的内存空间data指一般内存空间xdata外部内存空间例:unsigned char bdata display_timer; //显示计时器,5或10毫秒显示刷新一次
sbit display_timer_over=display_timer^7; //0:计时时间未到,1:计时时间到

  • keil编程时sbit的意义及用法:

  1. 定义 P0.6为LED ,程序中的P0.6都用LED表明 。

  2. 是编译器不识别P0.6(P0.6用P^6表明)。

  3. 用LED程序比较易读,知道这个口是接1个LED。

  4. sbit是C51扩展的变量类型。

  5. 典型应用是sbit P0_0=P0^0://即定义P0_0为P0口的第1位,以便进行位操作。

  6. sbit一定要写在MAIN函数前面,不然主函数里不识别未定义的这些。



sbit是定义一个变量类型,而P0^6则是单片机上的6号IO口管脚
如果程序中只是使用P0^6、P0^1、P0^3这种写法,很可能就记不住每个管脚都是什么功能的了,所以把P0^6定义成LED,就是为了方便记忆和明确——P0^6链接的是一个LED设备,而不是其他的什么

sbit LED=P0^6
所以就用这种格式将P0^6这个管脚定义成LED变量,这样在程序中使用LED这个变量和直接使用P0^6是一样的效果

至于为什么写在main前面,这么说吧,程序是从main开始运行的,在它运行之前,你要告诉它要做哪些前期准备工作(比如你和朋友一起到饭店吃饭前要先点菜吧,你是想好吃什么再点快呢,还是拿了菜单再边想边点快?),所以一般写在main前面就是先告诉程序,运行时要用到LED这个东西,你先准备好~~

如果你不写在main前面也是可以的,这就是全局变量和局部变量的问题了,说白了就是LED这道菜你是打算点了自己吃,还是和大家一起吃……

sbit是定义一个变量类型,而P0^6则是单片机上的6号IO口管脚
如果程序中只是使用P0^6、P0^1、P0^3这种写法,很可能就记不住每个管脚都是什么功能的了,所以把P0^6定义成LED,就是为了方便记忆和明确——P0^6链接的是一个LED设备,而不是其他的什么

sbit LED=P0^6
所以就用这种格式将P0^6这个管脚定义成LED变量,这样在程序中使用LED这个变量和直接使用P0^6是一样的效果

至于为什么写在main前面,这么说吧,程序是从main开始运行的,在它运行之前,你要告诉它要做哪些前期准备工作(比如你和朋友一起到饭店吃饭前要先点菜吧,你是想好吃什么再点快呢,还是拿了菜单再边想边点快?),所以一般写在main前面就是先告诉程序,运行时要用到LED这个东西,你先准备好~~

如果你不写在main前面也是可以的,这就是全局变量和局部变量的问题了,说白了就是LED这道菜你是打算点了自己吃,还是和大家一起吃……


康保县18544884990: keil编程时sbit的意义及用法 -
妫珍中诺: sbit是定义一个变量类型,而P0^6则是单片机上的6号IO口管脚 如果程序中只是使用P0^6、P0^1、P0^3这种写法,很可能就记不住每个管脚都是什么功能的了,所以把P0^6定义成LED,就是为了方便记忆和明确——P0^6链接的是一个LED设备...

康保县18544884990: KeilC中的bdata和sbit起什么作用 -
妫珍中诺: 引自博客:AndymioKeilC编程时用到如下的定义:unsigned char bdata.....sbit.....前面的unsigned char是数据类型不用解释了,bdata不是数据类型,而是指存放的内存空间 .bdata指可位寻址的内存空间data指一般内存空间xdata外部内存空间例:unsigned char bdata display_timer; //显示计时器,5或10毫秒显示刷新一次 sbit display_timer_over=display_timer^7; //0:计时时间未到,1:计时时间到

康保县18544884990: 单片机中代码sbit K1 = P1^4表示什么意思? -
妫珍中诺: sbit是位操作 K1 = P1^4 意思是将 P1^4 这个端口作为K1 目测是开关

康保县18544884990: keil中sbit p36=3^6;是什么意思? -
妫珍中诺: "sbit p36=3^6",这个写错了吧?3^6前是不是还有个大写的P? 如果是的话,属于位定义的用法,把P3这个IO口组中的第7位名字定义为p36; 下面函数用到的话都指这个位

康保县18544884990: keil 中有 sbit POWER = P3^7; 这样的用法,在IAR中该怎样用? -
妫珍中诺: IAR用位域.IO口位域可以自己定义,或者直接用IAR头文件的. 比如 sbit RED=P1^3; 对应IAR: #include #define RED P1_bit.P1_3 bit head; //接收头标志 IAR可以这样定义 __bdata bitfiled bit_flags; #define head bit_flags.bit0 #define c_error bit_flags.bit1 #define finish bit_flags.bit2 #define repeatflag bit_flags.bit3 没用过IAR,网上找的,换一下bit_flags

康保县18544884990: keil中data和bdata的作用和区别 -
妫珍中诺: data: 固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小.bit :是指0x20-0x2f的可位寻址区 idata:固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同. ...

康保县18544884990: 单片机让一个灯亮 sbit led=P1^0; led=0;可以亮.为什么直接给P1^0=0赋值就编译不通过? -
妫珍中诺: bit和sbit都是C51扩展的变量类型.典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作.在C语言里,如果直接写P1.0,C编译器并 不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这...

康保县18544884990: 在单片机编写程序中,以下语句的作用有什么作用 sbit led=P0^0; led=~led;主要是第二句,谢谢 各位大侠
妫珍中诺: sbit led=P0^0;让led代表P0.0口 led=~led;每执行一次这句相应的值就反过来,1变0或者0变1

康保县18544884990: 51单片机用C语言,sbit怎么使用???什么作用呢??什么含义 -
妫珍中诺: 1. sbit是一种数据类型,表示一个位,值为0或12. 举个例子:sbit CLK=P3^0; 其中CLK占一个位,表示端口P3^0,表示输出给这个端口的数据不是0就是1.(lz学过51,所以P3^0的含义就不用我多解释了吧)3. lz如有其他问题可追问分享本回答由电脑网络分类达人 董辉认证

康保县18544884990: 51单片机c语言sbit的作用是什么
妫珍中诺: 这个叫位定义就是给P0^0又定义了个名字叫P00.这样在程序中用到P0^0的时候写P00就可以了,这样为的书写方便.如果没有SBIT就成了赋值语句.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网