按键按下,即按键按下后一个端口由高电平变为低电平。
如图所示,两个按键(相当于家里的两个按键控制一个灯)
按下一个按键后,由高电平变为低电平。(红色为低电平,绿色为高电平)
按下后观察,发现 21,变为了低电平,就是由本来的0xef(高四位为8+4+2+0=e,低四位为8+4+2+1=f),变为0xee
同理,按下第二个按键,由0xef变为了0xed。如图
所以两个按键控制一个LED灯, 按下有效的程序和仿真如下:
#include<reg51.h>
sbit led = P0^0;
void delay(unsigned int x)
{
while(x--);
}
void main(void)
{
while(1)
{
P2 = 0xef;
if(P2 == 0xee)
{
delay(500);
if(P2 == 0xee)led = !led;
while(P2 == 0xee);
}
P2 = 0xef;
if(P2 == 0xed)
{
delay(500);
if(P2 == 0xed)led = !led;
while(P2 == 0xed);
}
}
}
同理抬起有效的程序如下(仿真与按下有效一致,程序只需做一些改动):
#include<reg51.h>
sbit led = P0^0;
void delay(unsigned int x)
{
while(x--);
}
void main(void)
{
while(1)
{
P2 = 0xef;
if(P2 == 0xee)
{
delay(500);
while(P2 == 0xee);
led = !led;
}
P2 = 0xef;
if(P2 == 0xed)
{
delay(500);
while(P2 == 0xed);
led = !led;
}
}
}
感谢观看!