keil中 sbit D1=P1和sbit D1=P1^1有什么区别 单片机程序中sbit p1_1=P1^0是什么意思?

作者&投稿:班浦 (若有异议请与网页底部的电邮联系)
sbit D1=P1 逻辑上是不对的,P1是8位端口(同时也是8位寄存器变量),你将它的值赋给位变量是错误的,但编译器检查不出来
这样,D1应该是P1口的最低位 即相当于 sbit D1=P1^0
操作D1只能对P1.0起作用

请问在C51单片机中,在位定义的时候,sbit wei=P1^1和sbit wei=P1_1有什么区别,~

因为P1^1在头文件里面有定义,而P1_1没有定义,所以写成sbit wei=P1_1时候,会有错误。

#includesbit p1_1=P1^0;unsigned int a ;void main(){while(1)
{
a=51000;
p1_1=0;
while(a--);a=51000;while(a--);p1_1=1;
a=51000; while(a--);a=51000; while(a--); }}sbit是位定义,sbit p1_1=P1^0;是为把P1.0这一位定义成p1_1(相当于一个标识符),在main函数中的p1_1=0; 相当于P1.0=0 ,即P1.0输出低电平。 在函数中不允许对P0~P3口进行为位操作的,故使用前要先进行位定义。 又如:#includesbit led=P1^0;unsigned int a ;void main(){while(1)
{
a=51000;
led=0;
while(a--);a=51000;while(a--); led=1;
a=51000; while(a--);a=51000; while(a--); }}与你上面的程序一样的效果!如有不清楚欢迎追问!