#include <reg52.h>
#define key_S 5000
sbit KEY1=P2^0;
sbit KEY2=P2^1;
sbit OUT1=P3^5;
sbit OUT2=P3^6;
sbit OUT3=P3^7;
sbit OUT4=P3^4;
#define num 2000 //預設延時計數值,根據響應需求進行調節
#define OUT_RL_bit OUT1
#define OUT_LED_bit OUT2
unsigned int FLAG1_bit=0,FLAG2_bit=0,a1=0,a2=0,a3=0,a4=0;
//延時函數
void delay_ms(unsigned int n)
{
unsigned int j;
unsigned char k;
for(j=0;j<n;j++)
for(k= 110;k>0;k--);
//NOP();
}
void Key_Scan()
{
if(KEY1==0 && KEY2==1 && FLAG1_bit==0 && FLAG2_bit==0)
{
if(++a1 >= num)
{
a1=num;
OUT1=0;
OUT2=1;
OUT3=1;
OUT4=1;
FLAG1_bit=1;
FLAG2_bit=0;
a1=0;
a2=0;
a3=0;
a4=0;
}
}
else if(KEY1==1 && KEY2==0 && FLAG1_bit==1 && FLAG2_bit==0)
{
if(++a2 >= num)
{
a2=num;
OUT1=1;
OUT2=0;
OUT3=1;
OUT4=1;
FLAG1_bit=0;
FLAG2_bit=1;
a1=0;
a2=0;
a3=0;
a4=0;
}
}
else if(KEY1==0 && KEY2==1 && FLAG1_bit==0 && FLAG2_bit==1)
{
if(++a3 >= num)
{
a3=num;
OUT1=1;
OUT2=1;
OUT3=0;
OUT4=1;
FLAG1_bit=1;
FLAG2_bit=0;
a1=0;
a2=0;
a3=0;
a4=0;
}
}
else if(KEY1==1 && KEY2==1 && FLAG1_bit==1 && FLAG2_bit==0)
{
if(++a4 >= num)
{
a4=num;
OUT1=1;
OUT2=1;
OUT3=1;
OUT4=0;
FLAG1_bit=0;
FLAG1_bit=0;
a1=0;
a2=0;
a3=0;
a4=0;
}
}
else
{
a1=0;
a2=0;
a3=0;
a4=0;
}
}
void main()
{
while(1)
{
Key_Scan(); //按鍵掃描
}
} |