⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 this progam is used with e_lock,and so on.
💻 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 + -