说明:按下K1时,P0口LED上移一位;
按下K2时,P0口LED下移一位;
按下K3时,P2口LED上移一位;
按下K4时,P2口LED下移一位;
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//根据P1口的按键移动LED
void Move_LED()
{
if ((P1&0x10)==0) P0=_cror_(P0,1); //K1
else if((P1&0x20)==0) P0=_crol_(P0,1); //K2
else if((P1&0x40)==0) P2=_cror_(P2,1); //K3
else if((P1&0x80)==0) P2=_crol_(P2,1); //K4
}
//主程序
void main()
{
uchar Recent_Key; //最近按键
P0=0xfe;
P2=0xfe;
P1=0xff;
Recent_Key=0xff;
while(1)
{
if(Recent_Key!=P1)
{
Recent_Key=P1; //保存最近按键
Move_LED();
DelayMS(10);
}
}
}