标题: 请问单片机源程序里sbit LED1是赋值还是什么? [打印本页]

作者: zkpig123    时间: 2017-7-7 17:45
标题: 请问单片机源程序里sbit LED1是赋值还是什么?
#include <reg52.h>

sbit LED1 = P1 ^ 0;
void main ()
{
    LED1 = 0;
} 

这段代码
sbit LED1=P1^0 这里是对LED1进行复制,这里^是异或吗, 为什么能获得P1.0的地址呢?
另外,后面LED1=0这里不是又改变了LED1的值了吗?为什么能改变P1.0引脚的电平?
sbit LED1=P1^0到底是什么 宏?
VC里对IO寄存器操作不是要用汇编outp(端口地址)吗?这里为什么能直接用"LED1=0"来赋值啊?
请教了!



作者: wulin    时间: 2017-7-7 22:19
sbit LED1 = P1 ^ 0; 这不是赋值语句, 由于有修饰关键字sbit,^在这里不是运算符异或。意思是声明P1特殊寄存器地址的第一位的自定义名称,在程序中操作LED1就是操作P1.0。
作者: HC6800-ES-V2.0    时间: 2017-7-8 08:59
sbit:可寻址位。用于定义51单片机内部RAM中的可寻址位或特殊功能寄存器中的可寻址位,它有三种使用方法
第一:sbit 位变量名=位地址
第二:sbit 位变量名=特殊功能寄存器名^位的位置
第三:sbit 位变量名=字节地址^位的位置
作者: 望断云山    时间: 2017-7-8 20:42
意思就是以后操作 led1就等效于操作 p1.0

作者: 望断云山    时间: 2017-7-8 20:42
意思就是以后在程序中操作LED1就是操作P1.0
作者: fmboy    时间: 2017-7-8 23:42
定义LED1对应的端口是P1.0
作者: zkpig123    时间: 2017-7-9 12:04
好吧 找找头文件看有定义不




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1