?? key.c
字號:
#include<at89x51.h>
sbit START_COUNTER = P1^0;
sbit DIS_KEY_PAD = P1^1;
unsigned int KEY_ID = 0;
unsigned int OFCounter = 0;
void delay_ms(unsigned int count)
{
int i,j;
for(i= 0; i<=count; i++)
{
for(j=0;j<=120;j++)
{;}
}
}
void Key_Init(void)
{
EX0 = 1;
}
void Counter_Init(void)
{
TMOD = 0x10;
TH1 = 0xC3;
TL1 = 0x50;
}
void COUNTER_DOWN(void) interrupt 3 using 1
{
ET1 = 0;
OFCounter++;
if(OFCounter == 20)
{
KEY_ID --;
OFCounter = 0;
}
P0 = (KEY_ID / 10) * 16 + KEY_ID %10;
if(KEY_ID == 0)
{
P1_2 = 0;
return;
}
ET1 = 1;
}
void KEY_GET(void) interrupt 0 using 2
{
EX0 = 0;
P2 = 0xFF;
P2_1 = 0;
delay_ms(10);
if(P2_4 == 0) KEY_ID = 5;
if(P2_5 == 0) KEY_ID = 6;
if(P2_6 == 0) KEY_ID = 7;
if(P2_7 == 0) KEY_ID = 8;
P2_1 = 1;
P2_0 = 0;
delay_ms(10);
if(P2_4 == 0) KEY_ID = 1;
if(P2_5 == 0) KEY_ID = 2;
if(P2_6 == 0) KEY_ID = 3;
if(P2_7 == 0) KEY_ID = 4;
P2_0 = 1;
P2_2 = 0;
delay_ms(10);
if(P2_4 == 0) KEY_ID = 9;
if(P2_5 == 0) KEY_ID = 10;
if(P2_6 == 0) KEY_ID = 11;
if(P2_7 == 0) KEY_ID = 12;
P2_2 = 1;
P2_3 = 0;
delay_ms(10);
if(P2_4 == 0) KEY_ID = 13;
if(P2_5 == 0) KEY_ID = 14;
if(P2_6 == 0) KEY_ID = 15;
if(P2_7 == 0) KEY_ID = 16;
P2_3 = 1;
P0 = (KEY_ID / 10) * 16 + KEY_ID %10;
delay_ms(50);
P2 = 0xF0;
EX0 = 1;
}
main()
{
Key_Init();
P2 = 0xF0;
P0 = 0x00;
DIS_KEY_PAD = 0;
EA = 1;
while(START_COUNTER)
{}
if(!START_COUNTER)
{
Counter_Init();
TR1 = 1;
ET1 = 1;
}
DIS_KEY_PAD = 1;
while(1)
{}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -