如何对51单片机进行精确定时中断编程
51单片机的中断响应延迟时间取决于其他中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期。在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。
在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时需多长时间,由此来重装载和启动定时器。如定时周期为1ms,则通常定时器重装载值为0FC18H。下面的程序在计算每个定时周期的精确重装载值时考虑了由停止计数(CLR TR1)到重新启动计数(SETB TR1)之间的7个机器周期时间。
CLR EA;禁止所有中断。
CLR TR1;停止定时器T1。
MOV A,#1F;期望数的低位字节。
ADD A,TL1;进行修正。
MOV TL1,A;重装载低位字节。
MOV A,#FC;对高位字节处理。
ADDC A,TH1
MOV TH1,A
SETB TR1;重启动定时器。
SETB EA;重开中断。