📄 keypad.c
字号:
#include <REGX51.h>
#include <intrins.h>
#include <keypad.c>
void yanshi (unsigned int ms)
{
unsigned char i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
/*code char key_code[]={0x7E,0XBE,0XBD,0XBB,0XDE,0XDD,0XDB,0XEE,0XED,0XEB,0X7D,0X7B,0XE7,0XD7,0XB7,0X77};
code ksp[4]={0x7F,0xBF,0xDF,0xEF};
void delay (void) {
unsigned char i,j;
for (i=0;i<3;i++)
for(j=0;j<255;j++)
;
}
char keypad_scan()
{
char key,i;
P3=0xF0;
while (P3!=0xF0);
do{
for(i=0;i<=3;i++)
{
P3=ksp[i];
if(P3!=ksp[i])
{
delay();
key=P3;
if(key!=ksp[i])
{
return(key);
}
}
}
} while(1);
}
// 检查是否有按键按下
char gotkey()
{
char temp,i;
temp=keypad_scan();
for (i=0;i<=15;i++) {
if(temp==key_code[i]) return(i);
}
return(16);
}
*/
#define TIMER0_COUNT 0xEE11 /* 10000h-((12,000,000/(12*200))*/
code seven_seg[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//{0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E};
code scan[4]={0X07,0X0B,0X0D,0X0E};
unsigned char counter[4]={0,0,0,0};
unsigned char timer0_tick,k=3;
static void timer0_isr(void) interrupt TF0_VECTOR using 1
{
TR0=0;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
TR0=1;
P1=seven_seg[counter[k]];
P0=scan[k];
yanshi(1);
P0=0xff;
k--;
if(k==-1) k=3;
timer0_tick++;
if (timer0_tick==200) timer0_tick=0;
}
static void timer0_initialize(void)
{
EA=0;
timer0_tick=0;
TR0=0;
TMOD &= 0XF0;
TMOD |=0x01;
TL0=(TIMER0_COUNT & 0x00FF);
TH0=(TIMER0_COUNT >> 8);
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main (void)
{
unsigned char ch,c;
timer0_initialize();
do{
ch=gotkey();
for(c=3;c>0;c--)
counter[c]=counter[c-1];
counter[0]=ch;
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -