#include "reg52.h"
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
#define led P2
void delay(x)
{
u8 a,b;
for(b=x;b>0;b--)
for(a=113;a>0;a--);
}
void keypros()
{
u8 i=0;
if(k1==0) //检测按键K1是否按下
{
delay(100); //消除抖动
if(k1==0) //再次判断按键是否按下
{
led=0x00;
delay(100);
led=0xfe;
for(i=0;i<8;i++)
{
led=~(led>>1);
delay(100);
}
led=0xff;
delay(100);
for(i=0;i<8;i++)
{
led=led>>1;
delay(100);
}
}
while(!k1); //检测按键是否松开
}
if(k2==0) //检测按键K2是否按下
{
delay(100); //消除抖动
if(k2==0) //再次判断按键是否按下
{
led=0x7f;
delay(100);
for(i=0;i<7;i++)
{
led=_cror_(led,1);
delay(100);
}
led=0xff;
delay(100);
led=0xaa;
delay(100);
for(i=0;i<4;i++)
{
led=_crol_(led,1);
delay(100);
}
}
while(!k2); //检测按键是否松开
}
if(k3==0) //检测按键K3是否按下
{
delay(100); //消除抖动
if(k3==0) //再次判断按键是否按下
{
led=0xcc;
delay(50000);
for(i=0;i<4;i++)
{
led=_crol_(led,2);
delay(50000);
}
}
while(!k3); //检测按键是否松开
}
if(k4==0) //检测按键K4是否按下
{
delay(100); //消除抖动
if(k4==0) //再次判断按键是否按下
{
led=0xf0;
delay(50000);
for(i=0;i<4;i++)
{
led=_crol_(led,4);
delay(50000);
}
led=0x00;
delay(50000);
}
while(!k4); //检测按键是否松开
}
}
void main()
{
while(1)
{
keypros(); //按键处理函数
}
}
|