历史上的今天
返回首页

历史上的今天

今天是:2025年06月17日(星期二)

正在发生

2021年06月17日 | 单片机定时中断的几种精确定时编程方法

2021-06-17 来源:eefocus

简介: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],但比较烦琐,并不理想,这里不一一介绍。

推荐阅读

史海拾趣

Future Designs, Inc. (FDI)公司的发展小趣事

随着市场需求的不断变化,FDI不断投入研发,致力于技术创新。他们不仅优化了现有的GUI产品,还将其应用范围扩大到了更多领域,如医疗设备、工业自动化、汽车电子等。同时,FDI还拓展了产品线,推出了光电元件、射频/IF和RFID、编程器、开发系统以及集成电路(IC)等一系列产品。这些创新举措使得FDI在电子行业中的影响力不断扩大,市场份额逐步提升。

骅讯(Cmedia)公司的发展小趣事

骅讯(Cmedia)公司成立于1991年,起初是一家专注于音频芯片设计的公司。在成立初期,骅讯就凭借其PCI多通道芯片在市场上取得了初步的成功。这种芯片为电脑提供了更为丰富的音频体验,从而帮助骅讯在音频芯片设计领域崭露头角。

Amptek Inc公司的发展小趣事

近年来,随着科技的不断进步和市场的不断变化,骅讯公司也积极寻求创新转型和拓展市场。在保持其在音频芯片设计领域领先地位的同时,骅讯还积极开发新的业务领域,如软件研发、数字内容供应等。这些创新举措不仅为骅讯带来了新的增长点,也为其在电子行业中保持领先地位提供了有力支持。

以上是关于骅讯(Cmedia)公司在电子行业中发展起来的相关故事简要概述。这些故事展示了骅讯如何凭借其技术实力和市场洞察力在竞争激烈的电子行业中不断发展壮大。

胜利(VICTOR)公司的发展小趣事

为了进一步拓展市场,胜利公司开始与其他品牌进行跨界合作。例如,公司与知名运动品牌合作推出联名款羽毛球鞋和服装,吸引了更多消费者的关注。此外,公司还与电商平台合作,开展线上销售业务,为消费者提供更加便捷的购物体验。

G-Link Technology公司的发展小趣事

面对日益多样化的市场需求,蜂鸟无线敏锐地意识到定制化服务的重要性。公司开始提供根据客户需求量身定制的无线通信解决方案,这一举措迅速赢得了众多企业和个人的青睐。例如,某大型互联网公司需要为其全球分支机构部署稳定可靠的无线通信网络,蜂鸟无线凭借其在全球范围内的研发和销售网络,迅速响应并提供了个性化的解决方案,不仅满足了客户对通信质量的高要求,还大大缩短了项目周期,赢得了客户的高度赞誉。

Hi-Tech Resistors Pvt Ltd公司的发展小趣事

蜂鸟无线自2005年成立以来,始终将技术创新视为企业发展的核心驱动力。公司早期便组建了一支由行业顶尖专家组成的研发团队,专注于无线通信技术的突破。在2010年前后,蜂鸟无线成功研发出高效能无线路由器,该产品凭借其卓越的信号稳定性和传输速率,迅速在市场中脱颖而出,为公司赢得了首批忠实用户。此后,蜂鸟无线持续加大研发投入,不断推出新产品,如集成了先进加密技术的无线网卡和蓝牙设备,进一步巩固了其在无线通信市场的领先地位。

问答坊 | AI 解惑

DSP与单片机的区别

DSP目前比较流行的是TI公司的。其实DSP也就是一个大的单片机,只是模块齐全,外设只是多,速度飞快(频率一般在50MHz至上GHz)。其他的嘛,一般化了。感觉有些DSP还不如AVR单片机,你比方说ATMega128拥有128KByte的Flash,还具有片内EEPROM,这个DSP ...…

查看全部问答>

本机 wmware + windbg; 请问:如何查看如下三个函数的系统服务号

本机 wmware + windbg; 请问: 如何查看如下三个函数的系统服务号? NtUserGetMessage(), NtUserDispatchMessage()、 NtUserPeekMessage()。 非常感谢。 如下测试: kd> dd KeServiceDescriptorTableShadow 8089f440  80830f58 ...…

查看全部问答>

想问下 郑州有做wince开发公司?

想问下 郑州有做wince开发公司?…

查看全部问答>

请教各位,USB接口能否分离输出输入信号

我不是搞硬件的,现在有个朋友问我这个问题,他想将USB数据线的中间线体部份用光纤代替,由于光纤是单向传输,这就需要分离出USB的输出输入信号,我想知道USB能否分离出输出输入信号,是不是每一类USB设备都有统一的输出输入针脚,请高人详细给讲讲…

查看全部问答>

求教:AD采样时间疑问

                                 AD的采样时间SampleTime,从1到239Cycles,请问这对精度有影响吗?比如说1Cycles和7Cycles?…

查看全部问答>

STM8AD值读不准?不知道是什么原因

单片机 STM8S903K3 本人采用单次扫描模式,可以读的到AD值的变化,但是AD值不准 具体来说,测量到AD口的电压为0.65V 理论计算AD值应该为133,但是程序运行中AD转化器读的AD值是46。差别太大了。 程序如下,请大侠们指点问题出在哪? AD转 ...…

查看全部问答>

Grace图形化界面配置MSP430

用CCS开发的朋友们注意了,Ti推出了图形化的MSP430配置界面,来感受下图形化配置的快捷,下面是Grace的介绍http://processors.wiki.ti.com/index.php/Grace_Quick_Start_Guide?DCMP=Grace&HQS=Other+OT+grace#Welcome 使用介绍,见2楼,Lee大神的 ...…

查看全部问答>

入门小弟求助:error C141: syntax error near ')' 以及不能输入中文

已经解决 [ 本帖最后由 谜一样的双眼 于 2011-9-28 20:59 编辑 ]…

查看全部问答>

【调查】大家想不想做自己的boosterpack

其实一直觉得boosterpack是launchpad上一个非常有意思的东西, TI在发布launchpad之初就指定好了统一的扩展规范叫做BYOB(Build Your Own Boosterpack)。 细心的童鞋们可能已经发现了,MSP430的launchpad、M4的launchpad还有C2000的launchpad都 ...…

查看全部问答>

MAGIC嵌入式操作系统

一 MAGIC嵌入式操作系统背景    02年大学计算机应用专业毕业,参加实习工作进行UNIX下的应用软件开发,当时就发现自己在大学学习的知识只能达到软件这个行业的基本入门,而且所学的知识支离破碎根本不知道可以用到什么地方,所以大学期间 ...…

查看全部问答>