/*任务5:
按下K1,P1.0和P1.4灯亮;
按下K2,P1.1和P1.5灯亮;
按下K3,P1.2和P1.6灯亮;
按下K4,P1.3和P1.7灯亮;
*/
/*对于P0口,K1,K2,K3,K4分别占据了P0的低四位
按下K1:xxxx1110->P1=0x11;
按下K2:xxxx1101->P1=0x22;
按下K3:xxxx1011->P1=0x44;
按下K4:xxxx0111->P1=0x88;
读取P0口的数字keyvalue可以相应的取出对应的P1口状态
因此读取P0口的状态信息即可
*/
#include"reg52.h"
sbit K1=P0^0;
sbit K2=P0^1;
sbit K3=P0^2;
sbit K4=P0^3;
void delay(unsigned int c)
{
while(c--);
}
void main()
{
unsigned char keyvalue;
while(1)
{
P0|=0X0F;
//说明P0|0X0XF;进行或运算可以将低四位置1;表明没有键按下
keyvalue=P0;
//keyvlaue现在读取P0的状态信息,若有按键按下相应为会清零
switch(keyvalue)
{
case 0xfe:P1=0X11;break;
case 0xfd:P1=0X22;break;
case 0Xfb:P1=0x44;break;
case 0xf7:P1=0x88;break;
}
}
}