#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit led1=P2^0;
sbit led2=P2^1;
sbit led3=P2^2;
sbit led4=P2^3;
sbit led5=P2^4;
sbit led6=P2^5;
sbit led7=P2^6;
sbit led8=P2^7;
sbit k1=P3^1;//定義P31口是k1
sbit k2=P3^0;
sbit k3=P3^2;//定義P32口是k3
sbit k4=P3^3;
void delay(u16 i)
{
unsigned int x,y;
for(x=i;i>0;i--)
for(y=142;y>0;y--);
}
void keypros()
{
if(k1==0) //檢測按鍵K1是否按下
{
delay(10);
if(k1==0) //再次判斷按鍵是否按下
{
led1=~led1;
}
while(!k1);
}
if(k2==0)
{
delay(10);
if(k2==0) //再次判斷按鍵是否按下
{
led2=~led2;
}
while(!k2);
}
if(k3==0)
{
delay(10); //消除抖動 一般大約10ms
if(k3==0) //再次判斷按鍵是否按下
{
led3=~led3;
}
while(!k3);
}
if(k4==0)
{
delay(10);
if(k4==0) //再次判斷按鍵是否按下
{
led4=~led4;
}
while(!k4); //檢測按鍵是否松開
}
}
void main()
{
while(1)
{
keypros(); //按鍵處理函數
}
}
|