?? timer.c
字號:
#include "Include.h"
//Timer0中判斷按鍵,所有的超時判斷
//如果Timer0的中斷時間變化,超時參數(shù)也要做對應(yīng)變化
unsigned char Timer = 0;
//unsigned char BellTimer = 0;
extern unsigned char NowKey; //當(dāng)前按鍵
extern bit ReceiveOK; //數(shù)據(jù)包接收完成標(biāo)志位
unsigned int Tc=0; //超時計(jì)時器
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;//設(shè)置為16位定時器
TH0=0;
TL0=0;
EnableT0();
Timer0Start();
}
//按鍵步驟
//0 沒有按鍵
//1 第一次檢測到按鍵
//2 第二次檢測到按鍵(認(rèn)為有按鍵)
//中斷一次約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();} }
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -