|
#include <reg52.h>
//定義一下,方便使用
#define uchar unsigned char
#define uint unsigned int
sbit key1=P2^4; //按鍵1定義
sbit key2=P2^5; //按鍵2定義
sbit key3=P2^6; //按鍵3定義
sbit key4=P2^7; //按鍵4定義
sbit led1=P3^0; //led1端口
sbit led2=P3^1; //led2端口
sbit led3=P3^2; //led3端口
sbit led4=P3^3; //led4端口
/**************************臨時(shí)變量定義****************************/
uchar keyflag_1=0; //按鍵標(biāo)志位
uchar keyflag_2=0; //按鍵標(biāo)志位
uchar keyflag_3=0; //按鍵標(biāo)志位
uchar keyflag_4=0; //按鍵標(biāo)志位
/*************************毫秒延時(shí)函數(shù)****************************/
void delayms(uint z)
{
uint x,y;
for(x=0;x<=76;x++)
for(y=0;y<=z;y++);
}
/**************************按鍵掃描子程序****************************/
void keyscan()
{
if(key1==0) //第一個(gè)按鍵按下
{
delayms(5); //進(jìn)行短暫延時(shí)消除按鍵的抖動(dòng)
if(key1==0) //第一個(gè)按鍵確實(shí)按下
{
keyflag_1++; //鍵一按下,標(biāo)志位加一
while(!key1); //松手檢測(cè)
}
}
if(keyflag_1==1){led1=0;} //點(diǎn)亮LED1
if(keyflag_1==2){led1=1;keyflag_1=0; } //關(guān)閉LED1
if(key2==0) //第二個(gè)按鍵按下
{
delayms(5); //進(jìn)行短暫延時(shí)消除按鍵的抖動(dòng)
if(key2==0) //第二個(gè)按鍵確實(shí)按下
{
keyflag_2++; //鍵一按下,標(biāo)志位加一
while(!key2); //松手檢測(cè)
}
}
if(keyflag_2==1){led2=0;} //點(diǎn)亮LED2
if(keyflag_2==2){led2=1;keyflag_2=0; } //關(guān)閉LED2
if(key3==0) //第三個(gè)按鍵按下
{
delayms(5); //進(jìn)行短暫延時(shí)消除按鍵的抖動(dòng)
if(key3==0) //第三個(gè)按鍵確實(shí)按下
{
keyflag_3++; //鍵一按下,標(biāo)志位加一
while(!key3); //松手檢測(cè)
}
}
if(keyflag_3==1){led3=0;} //點(diǎn)亮LED3
if(keyflag_3==2){led3=1;keyflag_3=0; } //關(guān)閉LED3
if(key4==0) //第四個(gè)按鍵按下
{
delayms(5); //進(jìn)行短暫延時(shí)消除按鍵的抖動(dòng)
if(key4==0) //第四個(gè)按鍵確實(shí)按下
{
keyflag_4++; //鍵一按下,標(biāo)志位加一
while(!key4); //松手檢測(cè)
}
}
if(keyflag_4==1){led4=0;} //點(diǎn)亮LED4
if(keyflag_4==2){led4=1;keyflag_4=0; } //關(guān)閉LED4
}
void main()
{
while(1) //程序循環(huán)執(zhí)行
{
keyscan(); //按鍵掃描,子函數(shù)
}
}
|
|