📄 text1.c
字号:
#include "reg51.h"
#define KEY P1
unsigned char key_code,count=0,key_value=0,i=0;
unsigned char LED_discode[]={ 0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char disbuf[]={0,0};
unsigned char LED_bitcode[]={0x01,0x02};
//*****************************************************************************************************************
void manage_key1(void)
{ key_value=1; }
void manage_key2(void)
{ key_value=2; }
void manage_key3(void)
{ key_value=3; }
void manage_key4(void)
{ key_value=4; }
void manage_key5(void)
{ key_value=5; }
void manage_key6(void)
{ key_value=6; }
void manage_key7(void)
{ key_value=7; }
void manage_key8(void)
{ key_value=8; }
void manage_key9(void)
{ key_value=9; }
void manage_key10(void)
{ key_value=10; }
void manage_key11(void)
{ key_value=11; }
void manage_key12(void)
{ key_value=12; }
void manage_key13(void)
{ key_value=13; }
void manage_key14(void)
{ key_value=14; }
void manage_key15(void)
{ key_value=15; }
void manage_key16(void)
{ key_value=16; }
//**********************************************************************************************
bit judge_hitkey()
{ unsigned char scancode;
scancode=0x0f;
KEY=scancode;
if(KEY==0x0f) return 0;
else return 1;
}
//******************************************
unsigned char key_scan()
{ unsigned char keycode,scancode;
scancode=0xfe;
while(scancode!=0xef)
{ KEY=scancode;
keycode=KEY;
if((KEY&0xf0)!=0xf0) break;
scancode=~((~scancode)<<1);
}
keycode=~keycode;
return(keycode);
}
//******************************************
void key_manage(unsigned char keycode_1)
{ switch(keycode_1)
{ case 0x11:manage_key1();break;
case 0x12:manage_key2();break;
case 0x14:manage_key3();break;
case 0x18:manage_key4();break;
case 0x21:manage_key5();break;
case 0x22:manage_key6();break;
case 0x24:manage_key7();break;
case 0x28:manage_key8();break;
case 0x41:manage_key9();break;
case 0x42:manage_key10();break;
case 0x44:manage_key11();break;
case 0x48:manage_key12();break;
case 0x81:manage_key13();break;
case 0x82:manage_key14();break;
case 0x84:manage_key15();break;
case 0x88:manage_key16();break;
default:break;
}
}
//******************************************
void display(void)
{
if(i==0)
{ P3=0x00;
P2=LED_discode[disbuf[0]];
P3=0x01;
i=1;
}
else { P3=0x00;
P2=LED_discode[disbuf[1]];
P3=0x02;
i=0;
}
}
//*******************************************
void timer1_ger()
{ TMOD=0x20;
TR1=1;
TH1=0x06;
TL1=0x06;
ET1=1;
EA=1;
}
//*********************************************
void main(void)
{ timer1_ger();
while(1);
}
//****************************************************
void timer1_scankey(void) interrupt 3
{ ++count;
disbuf[0]=key_value%10;
disbuf[1]=key_value/10;
display();
if(count%10==0)
{ switch(count/10)
{ case 1:if(judge_hitkey()==0)
{ count=0;
break;
}
case 2:break;
case 3:if(judge_hitkey()==0) count=0;
else key_code= key_scan();
break;
default:if(judge_hitkey()==0)
{ key_manage(key_code);
count=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -