MCS-51单片机定时中断的精确定时编程方法选择

发布者:温馨如家最新更新时间:2017-12-25 来源: eefocus关键字:MCS-51  单片机  定时中断  精确定时  编程方法 手机看文章 扫描二维码
随时随地手机看文章

    MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个机器周期[1]。无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不同的精确定时编程方法。

    文中以定时器T1工作在定时方式1为例,晶振频率为12MHz 。


    1 方法1

    在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的精确重装载值时,考虑了由停止计数(CLR TR1)到重新启动计数(SETB TR1)之间的7个机器周期时间。程序中#LOW(-1000+7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。

    ……

    CLR EA ;禁止所有中断

    CLR TR1 ;停止定时器T1

    MOV A,#LOW(-1000+7) ;期望数的低位字节

    ADD A,TL1 ;进行修正

    MOV TL1,A ;重装载低位字节

    MOV A,#HIGH(-1000+7) ;对高位字节处理

    ADDC A,TH1

    MOV TH1,A

    SETB TR1 ;重启动定时器

    SETB EA ;重开中断

    ……

    此方法适用于各种原因造成的定时误差的情况,为通用方法。

    2 方法2

    假如定时周期为10ms,通常定时器重装载值为0D8F0H,中断子程序如下[2]:

    ORL TL1,#0F0H

    MOV TH1,#0D8H

    ……

    这里用ORL TL1,#0F0H代替MOV TL1,#0F0H 可提高定时精度。此方法只适用于重装载值低位字节的低4位为零,且中断响应的延迟时间小于16个机器周期的情况。类似的定时器重装载值有0FFF0H,0FFE0H等。

    3 方法3

    假如定时周期为1ms,通常定时器重装载值为0FC18H,中断子程序如下:

    MOV A,#LOW(-1000+4) ;期望数的低位字节

    ADD A,TL1

    MOV TL1,A

    MOV A,#HIGH(-1000+4) ;对高位字节处理

    ADDC A,TH1

    MOV TH1,A

    DEC TL1 ;恢复提前了的2个机器周期

    ……

    这种方法中不停止定时器计数过程,若在执行指令ADDC A,TH1 或MOV TH1,A时,恰好产生TL1溢出向TH1进位的情况,则TH1的值就不对了,会产生更大的误差。为此,程序段开头为重装载值加4,若有溢出进位,则可提前发生,其中2个机器周期是考虑到为TL1重装载占用的时间。

    此方法适用于系统中无其它更高优先级中断源的情况。若类似方法1,在程序段开头和结尾分别加上禁止所有中断(CLR EA)和开中断(SETB EA)指令,则将适用于所有情况。

    4 方法4

    假如定时周期不确定,只知道定时器重装载值存放在寄存器R3、R2中,中断子程序如下:

    MOV A,#05H ;3个机器周期装载TL1,2个周期提前

    ADD A,TL1

    ADD A,R2

    MOV TL1,A

    MOV A,R3 ;处理高位字节

    ADDC A,TH1

    MOV TH1,A

    DEC TL1 ;恢复提前了的2个机器周期

    ……

    此法适用于定时周期不确定的情况,其它同方法3。

    5 方法5

    当定时中断发生的位置可预知时,通常出现在主程序的AJMP $ (或SJMP $)等待指令处,中断延迟时间为3个或4个机器周期。取固定值4可简化补偿程序。以定时周期1ms为例,中断子程序如下:

    ORG 001BH

    MOV TL1,#LOW(-1000+4)

    MOV TH1,#HIGH(-1000+4)

    ……

    此方法适用于定时中断总发生在同一条指令位置,且无其它中断源的情况。

    结 语

    上述5种方法误差均不超过1个机器周期,其中方法1、3、4较为通用,适用于任何情况,但程序较长;方法2、5简单,但必须注意满足对应条件,才能使用。当然,也还有其它方法[3],但比较烦琐,并不理想,这里不一一介绍。

    参考文献

    1 孙涵芳,徐爱卿. MCS-51/96系列单片机原理及应用[M]. 北京:北京航空航天大学出版社,1988

    2 周航慈. 单片机应用程序设计技术. [M]. 修订版. 北京:北京:北京航空航天大学出版社,2002

    3 聂毅. 单片机定时器中断时间误差的分析及补偿[J]. 微计算机信息,2002,18(4):37~38


关键字:MCS-51  单片机  定时中断  精确定时  编程方法 引用地址:MCS-51单片机定时中断的精确定时编程方法选择

上一篇:51单片机浮点数运算原理
下一篇:AT89C51单片机扩展高速串行同步移位输出口的方法

推荐阅读最新更新时间:2024-03-16 15:50

德州仪器宣布收购 Luminary Micro
日前,德州仪器 (TI) 宣布收购市场领先的基于 ARM® Cortex™-M3 的 32 位 MCU 供应商Luminary Micro,从而进一步壮大了其微处理器 (MCU) 产品阵营。成功收购 Luminary Micro的Stellaris® 系列Cortex-M3处理器将极大增强 TI 提供业界最完整 MCU产品系列的实力。此次收购意味着客户从现在开始即可体验 Stellaris MCU丰富的创新功能,以及TI作为全球领先半导体供应商所拥有的卓越用户体验与雄厚技术实力。 Stellaris 器件将有助于 TI 充分满足主流 32 位 MCU 的市场需求,从而使客户能够获得业界标准 ARM Cortex-M3
[单片机]
MCX314As型四轴运动控制器的原理及应用
1 引言 MCX系列运动控制器是日本NOVA公司设计的专用电路,其中的MCX314As是NOVA公司最新推出的4轴运动控制器,是对MCX314功能的改进和增强。 MCX314As以单个电路同时控制4个伺服系统或步进电机系统,可进行各轴独立的定位控制、速度控制,亦可在任意2轴或3轴中进行圆弧、直线、位模式插补。MCX314As能与8/16位数据总线接口,通过命令、数据和状态等寄存器实现4轴3联动的位置、速度、加速度等的运动控制和实时监控,实现圆弧、直线、位模式3种模式的轨迹插补,输出脉冲频率达到4 MHz。每轴都有伺服反馈输入端、4个输入点和8个输出点,能独立地设置为恒速、线性、非对称S曲线加/减控制、非对称梯形加/减速控制
[单片机]
MCX314As型四轴运动控制器的原理及应用
基于单片机的节电照明控制系统
引言 目前我国电力工业发展速度很快,但是电力供应不足和用电效率低下的状况依然比较严重,在今后相当一段时间内将继续存在。推行照明节电技术,节约电能是改善电力负荷紧张状况的主要途径之一。我国照明用电约占总发电量的12%左右,且以低效照明为主,因此成为终端节电的主要对象之一。照明用电大都属于峰时用电,由此可见,照明节电具有节约电量和缓和高峰用电的双重作用。 工作原理 提倡照明节能,不等于降低对视觉作业的要求和降低照明质量。照明节能的基本原则应是保证不降低工作场所的视觉要求,在保证照度标准和照明质量的前提下,力求减少照明系统中的能量损失,最有效地利用电能。 灯泡的使用寿命与电压的关系如下: 按上例100W灯泡额定使用寿命300
[单片机]
单片机入门设计:简单好玩的心率测量仪
这个小东西简单而好玩,可以做为单片机入门的一个课业设计。 将你的食指轻轻地放在传感器上,就能看到LED指示灯随着你的心跳而闪动,15秒钟以后,还能在数码管上显示你当前的心率。 核心部分在传感器上,这里用的是一套红外对管。 人体指尖的动脉比较发达,当动脉血管随心脏周期性收缩与舒张时,血管中的血液容积也会发生变化。 这时红外接收探头便能采集到的相应的光脉冲信号,经过去噪和放大后送到单片机,进行运算处理,便得到了心率数据。 采集部分的原理图 运算与显示部分的原理图
[单片机]
<font color='red'>单片机</font>入门设计:简单好玩的心率测量仪
51单片机时钟计时器学习板基本原理
  1.功能      时钟计时器学习板使用8位LED数码管显示时、分、秒,以24小时制计时方式,其核心芯片为DSl302时钟芯片,DSl302可以记录下时间、日期、星期等数据。在板子上装有后备电池,所以即使学习板断开外接电源后,其时间与日期数据也不会丢失。板载的按键可供用户开发使用,我们通过程序设计可以实现通过按键来调整日期、时间等各项参数值,我们也可以做出一个万年历和电子钟。      2.基本原理      DS1302是DAL.LAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息。每个月的天数和闰年的天数可自
[单片机]
学习单片机的日记
经历了大一上学期我觉得大学其实好坏不在于学校而是在于个人,学校之间的差距只是在于可利用的教学资源以及环境,最重要的还是自己。个人觉得我大一要学的课程真正有用的不多,现在我是电子信息工程的一名大学生,大一所学课程有高数,大学物理,英语,体育,近代史,思修,大学物理实验,电路分析,C语言。呵呵,只有C语言,电路,高数,英语有用。其他科目我只是应付下考试,不会真心去学,因为没有兴趣。兴趣是最好的老师,没有它我觉得做什么事情都毫无意义,这就是我这个人的怪癖。利用所有闲下来的时间我准备学习单片机,单片机虽然是大二下学期的内容但我觉得它至关重要。 为什么我们要学习单片机呢?他是个什么东西呢?单片机就是一块集成芯片,但这块集成芯片具有一些
[单片机]
学习<font color='red'>单片机</font>的日记
什么是单片机,单片机有什么用
什么是单片机,单片机有什么用?这是一个有意思的问题,因为谁也不能给出一个谁都认可的概念,那到底什么是单片机呢?单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机,其实这个概念也是不能使人认可的,反例就是DSP,ARM等处理器为什么不叫单片机呢?哈哈,其实没必要去找到明确的概念来解析什么是单片机,要想了解它,随便弄种单片机(最好是8051单片机)来搞个小项目,你就知道了什么是单片机。 现在高校的课程,只要专业跟电相关,就离不开单片机课程,而且大部分是8051系列的。学生在做相关课程设计时,写跟单片机相关论文是时,总喜欢把 单片机 作为关键词,这又设计到 单片
[单片机]
用32位MCU设计应用系统时的软硬件考虑
在过去的二十年当中,随着交通工具复杂性的日益增加,工程师已将ECU从8位MCU升级为16位以上的器件。目前,这样一个高度集成的32位RISC MCU就是瑞萨公司的SH7058,它是一种具有1MB片上闪存和48KB RAM组成的80MHz的MCU。由于存在多种系统需求,如控制扩展级输入/输出(I/O)、借助于安全性高的通讯链接(如CAN和Flexray)与其它的车载系统进行通讯以及具有浮点精度的处理算法,当今的ECU采用高速32位MCU就是必不可少的配置。 除了带来新的性能优势之外,最新的32位MCU减少了电路板设计的复杂性,节省了整体PCB空间,降低了系统的功耗要求,并且减少了电噪音和抵抗电磁干扰(EMI)的能力。通常,每一个
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved