本帖最后由 我爱肖文娟 于 2017-9-14 10:32 编辑
/*
****************************************************************************
* 名称:key.c
*
* 功能:独立按键测试,非挂起延时防抖
****************************************************************************
*/
#include "stc89xx.h"
#define key1 P10
vola
tile unsigned char key1_timer;
volatile unsigned char key1_valid;
void key_timer0_init(void)
{
TMOD&=0xF0;
TMOD|=0x01;
TH0=(65536-Fclk/1000/12*5+15)/256; //定时间隔为5ms,加15是为了修正重装所花费时间
TL0=(65536-Fclk/1000/12*5+15)%256;
ET0=1;
TR0=1;
EA=1;
}
/********************************************************************
函数功能:在定时器0中断里获取按键
入口参数:无。
返 回:无。
备 注:22.1184M晶体约5ms中断一次。
********************************************************************/
void Timer0Isr(void) interrupt 1
{
TH0=(65536-Fclk/1000/12*5+15)/256; //定时间隔为5ms,加15是为了修正重装所花费时间
TL0=(65536-Fclk/1000/12*5+15)%256;
if(key1==0) //按键此刻按下
{
key1_timer++; //计时
if(key1_timer>=2)
{
key1_timer=2;
key1_valid=1; //按键生效
}
}
else
{
key1_timer=0;
key1_valid=0; //按键无效
}
}
1