这是一个有关单片机按钮的程序,具体是按下k1或k2时led1或led2亮松开时它们灭,按下k3或k4释放后led3或led4亮,再次按下灭,程序如下:
#include<reg51.h>
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
void delayms(unsigned int x)
{
unsigned char t;
while(x--)
{
for(t=0;t<120;t++);
}
}
void main()
{
P1=0xFF;
P0=0xFF;
while(1)
{
led1 = k1;
led2 = k2;
if(k3==0)
{
while(k3==0);
led3 = ~led3;
}
if(k4==0)
{
while(k4==0);
led4 = ~led4;
}
delayms(10);
}
}
这个程序编译是可以通过的,可是我一开始时并没有用sbit来定义P1^0这些引脚而是直接写P1^0的符号进入程序结果编译就过不去了,敢问高人这究竟是怎么回事啊?