📄 timer.c
字号:
#include "Include.h"
//Timer0中判断按键,所有的超时判断
//如果Timer0的中断时间变化,超时参数也要做对应变化
unsigned char Timer = 0;
//unsigned char BellTimer = 0;
extern unsigned char NowKey; //当前按键
extern bit ReceiveOK; //数据包接收完成标志位
unsigned int Tc=0; //超时计时器
unsigned char KeyStep[3]={0,0,0}; //步骤
sbit K_CANCEL=P3^2;
sbit K_UP=P3^3;
sbit K_DOWN=P3^6;
//使能Timer0中断
void EnableT0(void)
{
ET0=1;
}
//Timer0启动
void Timer0Start(void)
{
TR0=1;
}
//Timer0初始化
void Timer0Init(void)
{
TMOD|=1;//设置为16位定时器
TH0=0;
TL0=0;
EnableT0();
Timer0Start();
}
//按键步骤
//0 没有按键
//1 第一次检测到按键
//2 第二次检测到按键(认为有按键)
//中断一次约71ms
void ISRTimer0(void) interrupt 1
{
TH0=0;
TL0=0;
//按键判断
//-------------------------------------------------
if(0==K_CANCEL){if(1==KeyStep[0])
{ KeyStep[0]=2;//有按键
NowKey=ADD_KEY;//增加
}else{KeyStep[0]=1;}
}else{if(NowKey!=EMPTY_KEY){KeyStep[0]=0;}}
//-------------------------------------------------
if(0==K_UP){if(1==KeyStep[1])
{ KeyStep[1]=2;//有按键
NowKey=EMPTY_KEY;//删除键
}else{KeyStep[1]=1;}
}else{if(NowKey!=ADD_KEY){KeyStep[1]=0;}}
//-------------------------------------------------
if(0==K_DOWN){if(1==KeyStep[2])
{ KeyStep[2]=2;//有按键
NowKey=SEARCH_KEY;//搜索键
}else{KeyStep[2]=1;}
}else{if(NowKey!=DEL_KEY){KeyStep[2]=0;}}
//-------------------------------------------------
if(Tc>0) {Tc--;}
if(Timer>0) {Timer--;}
if(0==Timer){ReceiveOK = 0;}
//if(BellTimer>0) { BellTimer--; if(0 == BellTimer){BellOff();} }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -