51单片机sbit led=P1^0是什么意思?语句里面起什么作用,怎么看的?和sbit CY=PSW^7有什么区别

作者&投稿:荤毛 (若有异议请与网页底部的电邮联系)
sbit led1 = P1^0是什么意思~

sbit led1 = P1^0 含义:是将发光二极管 led1 接 P1口 0 位端,用以控制 led1 的亮灭。

sbit是定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。典型应用是:sbit P0_0=P0^0;//即定义P0_0为P0口的第1位,以便进行位操作。bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。
扩展资料
在C语言里,如果直接写P1.0,C编译器并不能识别,而且P1.0也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P1_0,sbit的用法有三种:
第一种方法:sbit 位变量名=地址值
第二种方法:sbit 位变量名=SFR名称^变量位地址值
第三种方法:sbit 位变量名=SFR地址值^变量位地址值
如定义PSW中的OV可以用以下三种方法:
sbit OV=0xd2 (1)说明:0xd2是OV的位地址值
sbit OV=PSW^2 (2)说明:其中PSW必须先用sfr定义好
sbit OV=0xD0^2 (3)说明:0xD0就是PSW的地址值
因此这里用sbit P1_0=P1^0;就是定义用符号P1_0来表示P1.0引脚,如果你愿意也可以起P10一类的名字,只要下面程序中也随之更改就行了。
参考资料:百度百科sbit

P1^0 是单片机上的一个引脚
sbit led1=P1^0就是给P1^0这个引脚起了个名字叫led1,所以控制led1实际上就是在控制P1^0这个引脚

sbit 这个是说明你定义的类型为位。
led=P1^0; 这里表示 定义单片机I/O口 P1.0的伪名称叫led 这样你要对P1.0控制时直接写 led=1; 或者=0 让灯亮或者灭。
和sbit CY=psw^7; 是一样的定义模式,都是定义一个字符内的其中一位!

都是位定义。。。
头文件里面有这个
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;

都是表示特殊功能寄存器。。。
^后面的就是表示寄存器的第几位。。

也可以自己定义
unsigned char bdata Key;
sbit K0=Key^0; //位定义
sbit K1=Key^1; //位定义
sbit K2=Key^2; //位定义
sbit K3=Key^3; //位定义
sbit K4=Key^4;
sbit K5=Key^5;
sbit K6=Key^6;
sbit K7=Key^7;

程序里每次指向sbit led时就是指向P1^0(P1口第0位),是一条定义语句


省直辖县级行政单位14745503177: 单片机让一个灯亮 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语言变量名,所以得给它另起一个名字,这...

省直辖县级行政单位14745503177: 51单片机中断定时 -
宗辰枣仁: 51单片机定时器T1,直接定时30秒是不行的,但是,可以定时50ms,以晶振为12M为例,时间常数是:TH1=(65536-50000)/256; TL1=(65536-50000)%256; 开中断,在中断程序中计数,每中断计一个数,计数600次,就是30秒了,对一个引脚取反,就可以高低变化了,每隔30秒一变.

省直辖县级行政单位14745503177: 51单片机sbit字母是红色的正确吗? -
宗辰枣仁: 51单片机程序中,sbit是关键字,这个写法正确.你是在keil中输入程序时显示成红色的吗,那是把关键字设置成显示红色的,但不能用红色判断对错.这是定义引脚的语句,例如: sbit LED0=P1^2;

省直辖县级行政单位14745503177: 怎么设计单片机控制LED闪烁,并且可以组成一个"LED"灯字! -
宗辰枣仁: 可以这样子,把所有LED并联起来,直接接单片机随便哪个IO口,然后再加个1K上拉电阻,用51单片机可以实现,具体程序为 #include"reg51.h" sbit LED=P1^0;//把LED灯接在P1.0口就行 void delay(int ms); void main() {while(1){LED=~...

省直辖县级行政单位14745503177: 单片机制作呼吸灯的C语言程序怎样编写 -
宗辰枣仁: #include<reg51.h> sbit LED0=P0^0; sbit wei=P1^1; sbit duan=P1^0; sbit lcden=P1^7; sbit dianzhen=P1^3; sbit leden=P1^2; void Delay(unsigned int t); void main (void) { unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值 lcden=0; P0=0x...

省直辖县级行政单位14745503177: 用51单片机写一个C程序,红外线反射管开关程序控制一个LED的亮灭 -
宗辰枣仁: 红外反射管 高低电平输出接P1.0 led接P1.1 程序如下:#include"regc51.h" sbit IR=P1^0; sbit led=P1^1; main() { while(1) { led=IR; } }

省直辖县级行政单位14745503177: 51单片机8位流水灯8种变化程序 -
宗辰枣仁: 第一种:1个LED发光,循环右移. 第二种:2个LED发光,循环右移. 第三种:3个LED发光,循环右移. 第四种:4个LED发光,循环右移.再改成左移,就又有四种. 这就有八种了.一边移动,一边闪烁; 再改变一下速度;这能有多少种了?

省直辖县级行政单位14745503177: c51单片机问题:我的MCU型号是STC 89C54RD+; 我发现要是一次点亮8位LED的话,若是先sbit LED=P1; -
宗辰枣仁: sbit是定义位的,所以sbit LED=P1只定义了P1.0,相当于sbit LED=P1^0.因此LED=0只能点亮P1.0.你可以用sfr来定义就可以了.sfr LED=P1;

省直辖县级行政单位14745503177: C51中sbit,pdata的作用(最好详细点的) -
宗辰枣仁: sbit 定义特殊功能寄存器的位,例如sbit LED =P1^1; 就是P1.1口上连接LED灯,LED=1;灯就亮了;pdata是对64K的ram进行页寻址,每页256字节.仅使用低8位的地址线,也就是pdata读写ram时P2地址线是不变化的.

省直辖县级行政单位14745503177: 求大仙,给出“8个LED的闪烁控制,要求亮0.5s,灭0.5s,不断闪烁20次.”的C语言编程程序 -
宗辰枣仁:[答案] 用51单片机? #include sbit LED0=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; void delay(int x) { int y,z; for(...

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