标题: 我为网友解答 ”51单片机T0计数溢出中断对计时精度影响“问题. [打印本页]

作者: Kxuan163    时间: 2020-12-22 16:51
标题: 我为网友解答 ”51单片机T0计数溢出中断对计时精度影响“问题.
本帖最后由 Kxuan163 于 2020-12-22 17:00 编辑

【问题】:
51单片机T0计数溢出中断子程序如下:
T0_INT:
     ...
     MOV   TL0,  #1FH   
     MOV   TH0,  #FCH   
     ...
     RETI
问:一次计数溢出中断后, 计数溢出中断子程序重装计数初值会影响计时精度吗?
.
【解答】:
会影响计数精度。影响计数精度有如下两个因数:
1.执行重装TH0、TL0初值两条指令需耗用2个机器周期;
2.等待中断响应须3~6个机器周期,
若还有其它中断源同时申请中断或T0中断未设置为最高优先级,须等待更多个机器周期;
.
解决办法:
为了提高计时精度,中断处理子程序可采取修正重装时间常数的措施,
以下是T0工作于方式1的修正重装时间常数中断处理子示例程序:
T0_INT:
        CLR  EA
        CLR  TR0
        MOV  A,#1FH  ;; 原定初装值低8位
        ADD  A,TL0   ;; A←(原定初装值低8位+TL0实时值)
        MOV  TL0,A   ;; 重装修正后的初装值低8位
        MOV  A,#FCH  ;; 原定初装值高8位
        ADDC A,TH0   ;; A←(进位标志+原定初装值高8位+TH0实时值)
        MOV  TH0,A   ;; 重装修正后的初装值高8位
        SETB TR0
       RETI
;; 若等待中断响应是时间长,重新赋值时TH0已自动计数至溢出、进位标志为1, 所以用带进位加法ADDC指令来修正重装值高8位。  










欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1