微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 单片机定时器的应用与误差纠正

单片机定时器的应用与误差纠正

时间:11-07 来源:互联网 点击:

中断方式处理程序如下:

org000B

1jmpb1

b1:clrEA

movTH0,#n1

movTH1,#n2

定时处理语句段

reti

其中,0路定时器为000B,如果为1路定时器为001B,如果定时器工作在方式2,则不需要给TH0、TH1重新赋值。

查询方式处理程序如下:

L1:jbcTF0,LO1

sjmpL1

LO1:movTH0,#n1

movTH1,#n2

定时处理语句段

sjmpL1

5 定时的误差校准

由于单片机的机器周期为1μs~2μs,定时误差一般应在0μs~20μs之内,对于一般应用,此误差可以忽略,但是对于精确度要求比较高的应用场合,此误差必须进行校正。定时误差是定时溢出后转入执行定时处理语句段之间所耗费的时间,此时间主要由定时溢出转入定时处理语句段所必须执行的指令或硬件过程产生。

定时误差校准的简单原理是:在定时溢出响应后,停止定时器计数,读出当时计数值(它反映了定时响应的延迟时间),然后将完成这一任务的程序段执行时间考虑进去,作为修正因子校正定时初值,以下程序段以中断处理方式为例:

clrEA

clrTR1

clrc

movA,#n0

clrTR0

subbA,TL0

subbA,#08

movTL0,A

movA,#n1

subbA,TH0

movTH0,A

setbTR0

定时处理语句段

reti

由于执行从指令clrTR0(停止计数)到指令setbTR0(重新开启计数)之间的指令需8个机器周期,应将此消耗考虑进去。上述程序将定时误差缩小在1个机器周期内。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top