📄 keyprocess.c
字号:
#include"reg52.h"
#include"main.h"
bit fgkey=0;
bit fgkey_on=0;
bit fgauto;
bit fgkey10=0;
bit fgledflash=0;
unsigned char data auto_counter;
unsigned int ledflash_counter=0;
unsigned char data keydata1;
unsigned char data keydata2;
unsigned char data keybuffer;
unsigned char scankeycounter;
extern unsigned int TimeCounter;
extern unsigned char data ledbuffer_h;
extern unsigned char data ledbuffer_l;
extern keydata;
extern unsigned char keyscan(void);
extern void delay1ms(unsigned char count);
extern void x24c02_write(unsigned char address,unsigned char info);
void keyprocess(void)
{
keyscan();
keydata=keyscan();
if(keybuffer != keydata)
{
keybuffer = keydata;
scankeycounter = 20;
}
else if(scankeycounter!=0)
{
scankeycounter--;
delay1ms(1);
}
else if (keybuffer!=no_key)
{
if(!fgkey_on)
{
fgkey_on=1;
switch (keybuffer)
{
case key1:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key1;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key1;
ledbuffer_h=keydata1;
ledbuffer_l=keydata2;
}
break;
case key2:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key2;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key2;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key3:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata2=0;
keydata1=key3;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key3;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key4:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key4;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key4;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key5:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key5;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key5;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key6:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key6;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key6;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key7:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key7;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key7;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key8:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key8;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key8;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key9:
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=key9;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=key9;
ledbuffer_h=ledbuffer_l;
ledbuffer_l=keydata2;
}
break;
case key10: //"0" key
fgledflash=1;
if(!fgkey)
{
fgkey=1;
keydata1=0;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=keydata1;
}
else
{
fgkey=0;
keydata2=0;
ledbuffer_h =ledbuffer_l;
ledbuffer_l = keydata2;
}
break;
case key11: //cancel key
fgledflash=0;
ledflash_counter=0;
keydata1=0;
keydata2=0;
ledbuffer_h=0;
ledbuffer_l=0;
if(!fgauto)
{
P0=0 | 0xf8;
INH_1=0;
INH_2=0;
}
fgkey=0;
break;
case key12:
fgledflash=0; //enter key
ledflash_counter=0;
if(!fgauto)
{
if(ledbuffer_h==0)
{
if(ledbuffer_l<9)
{
if((ledbuffer_l-1)==0xff)
P0=0 | 0xf8;
else
P0=(ledbuffer_l-1) | 0xf8;
INH_1=0;
INH_2=1;
}
else
{
P0=0 | 0xf8;
INH_1=1;
INH_2=0;
}
}
else if(ledbuffer_h==1)
{
if(ledbuffer_l<7)
P0=(ledbuffer_l+1) | 0xf8;
else
P0=0x07 | 0xf8;
INH_1=1;
INH_2=0;
}
else
{
P0=0x07 | 0xf8;
INH_1=1;
INH_2=0;
}
fgkey=0;
keybuffer=no_key;
}
else
{
auto_counter = ledbuffer_h*10 + ledbuffer_l;
TimeCounter=auto_counter*20;
x24c02_write(0x00,auto_counter);
ledbuffer_h=0;
ledbuffer_l=1;
P0=0 | 0xf8;
INH_1=0;
INH_2=1;
fgkey=0;
keybuffer=no_key;
}
break;
default:
break;
}
}
else
;
}
else
{
keybuffer = no_key;
fgkey_on=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -