掌握且熟练掌握的,它的功能不单单和它的名字一样简单,用定时器的功能可以有很多很多,之后会给大家一一列举,在这里就结合数码管和按键来操作吧!
【思路】
首先按键,在之前的经验分享中有提到过按键的使用,包括松手检测和软件消抖,但是都没有基于定时器中断,在松手检测的过程中我们都知道单片机是不干任何事情的,如果把数码管显示的部分写在while(1)循环里面甚至会导致按键按下的时候数码管无法正常显示,而今天的例程结合定时器中断数码管显示一定可以完美解决这个问题。
先放一下之前的代码:
//改进方法
sbit key1=P3^0;
if(key1==0){
delay_ms(5);
if(key1==0){
num++;
}
}while(!key1){display();}
这是之前的按键松手检测保持数码管显示的解决方法,但是这不是一个最好的方法,不妨想一想,将数码管显示函数放到定时器中断服务函数里面就可以解决这个问题,在此之前先配置一下定时计数器。
void timer0(){
TMOD=0x01;
TH0=0xdc;
TL0=0x00; //定时10ms请求一次中断
EA=1;
ET0=1;
TR0=1; //开定时器
}
