📄 timer.c
字号:
#include "c51base.h"
static uint time_20ms;
static bit is_key;
static uchar key_value;
void TimerInit()
{
TH0 = 0X88;
TL0 = 0X00;
TMOD = 0X21;
TR0 = 1;
ET0 = 1;
}
sbit KEY_1 = P2^3;
sbit KEY_2 = P2^2;
sbit KEY_3 = P2^1;
sbit KEY_4 = P2^0;
void TimeInter() interrupt 1
{
static uchar last_value;
static uint back_time;
uchar temp;
TH0 =0x88;
TL0 =0x00;
time_20ms++;
if(time_20ms - back_time>=1000)
BACK_LIGHT = 1;
temp=0;
KEY_1 = KEY_2 = KEY_3 = KEY_4 = 1;
KEY_1 = 0;
if(!KEY_3)
temp = temp+1;
temp<<=1;
if(!KEY_4)
temp = temp+1;
KEY_2 = 0;
temp<<=1;
if(!KEY_3)
temp = temp+1;
temp<<=1;
if(!KEY_4)
temp = temp+1;
temp<<=1;
if(temp!=0 && last_value != temp)
{
key_value = temp;
is_key = 1;
BACK_LIGHT = 0;
back_time = time_20ms;
}
last_value = temp;
}
bit IsKeyCheck(void)
{
return is_key;
}
uchar ReadKey(void)
{
uchar temp;
is_key = 0;
switch(key_value)
{
case 2:temp = 'd';
break;
case 4:temp = 'x';
break;
case 20:temp = 'e';
break;
case 10:temp = 'u';
break;
default:
break;
}
return temp;
}
uchar WaitKey(uint time_out)
{
uchar i;
time_out = time_out*6;
while(time_out--)
{
WDTReset_SM89516();
for(i=0;i<=112;i++)
;
if(IsKeyCheck())
return ReadKey();
}
return 0xff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -