#include <REGX52.H>
#include <intrins.h>
unsigned char unLed=0xfe;
unsigned char Led_Flag=1,Led_Mode=1;
unsigned char Led_34={0x7e,0xbd,0xdb,0xe7};
unsigned char cnt=0;
unsigned char Key_Val,Key_Down,Key_Old;
void Delay(unsigned char xms) //@12.000MHz,延时函数
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
unsigned char Key_Read()
{
unsigned char temp=0;
if(P3_4==0) temp=1;
if(P3_5==0) temp=2;
if(P3_6==0) temp=3;
if(P3_7==0) temp=4;
return temp;
}
void main()
{
while(1)
{
Key_Val=Key_Read();
Key_Down=Key_Val&(Key_Val^Key_Old);
Key_Old=Key_Val;
switch(Key_Down)
{
case 1:
Led_Flag=1;
break;
case 2:
Led_Flag=0;
break;
case 3:
Led_Mode++;
if(Led_Mode==5) Led_Mode=1;
break;
case 4:
Led_Mode–;
if(Led_Mode==0) Led_Mode=4;
break;
}
if(Led_Flag)
{
switch(Led_Mode)
{
case 1:
unLed=crol(unLed,1);
P1=unLed;
Delay(500);
break;
case 2:
P1=unLed;
unLed=cror(unLed,1);
Delay(500);
break;
case 3:
P1=Led_34[cnt];
if(cnt++==4) cnt=0;
Delay(500);
break;
case 4:
P1=Led_34[3-cnt];
if(cnt++==4) cnt=0;
Delay(500);
break;
}
}
}
}