c51单片机错误,为什么不可以直接定义P0^0=1 ?

#include <REGX51.H>

void delay_10ms(unsigned char q);

void main()
{
while(1)
{
P0^0=0; //有错误
delay_10ms(50);
}
}

void delay_10ms(unsigned char q)
{
unsigned char w,e;
for(;q>0;q--)
for(w=38;w>0;w--)
for(e=130;e>0;e--);
}

我知道你的意思,你的P0^0=0; 你的目的想让P0口的最低位置0;
但是在C51中,P0^0则表示将P0和0异或运算,比如:a=P0^0;其异或运算值还是P0原来的值。
在你的程序中,P0^0=0; 表示什么呢?无法读解,你看左边是个P0和0异或运算,右边是个赋值运算,就不对了。
在C51中,需要使用某个io口,需要首先定义这个位变量,才可以用,在前面加上位定义sbit P0_0=P0^0;
然后对P0_0这个变量赋值才可以,如:P0_0=0; P0_0=1;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-05-06
用P0_0=0;看看REGX51.H