单片机定时中断的几种精确定时编程方法

发布者:uioo9158最新更新时间: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],但比较烦琐,并不理想,这里不一一介绍。

关键字:单片机  定时中断  精确定时  编程方法 引用地址:单片机定时中断的几种精确定时编程方法

上一篇:C51优化设计之使用DJNZ循环指令提高执行效率
下一篇:KeilC51 Monitor-51仿真板的制作与使用心得

推荐阅读最新更新时间:2024-11-05 11:14

基于Atmega48单片机的太阳能路灯控制器的设计
太阳能控制器是太阳能路灯系统中的核心部分,设计了一种基于Atmega48 单片机 的太阳能路灯控制器。该控制器采用PWM脉冲调制控制技术通过对蓄电池电压、充电电流等参数进行检测,控制开关管的关断,来实现充放电控制和保护功能。测试表明,该控制器运行稳定、可靠性高、性价比高,具有良好的市场前景。 作为一种新兴的绿色能源,太阳能具有取之不尽、用之不竭、清洁安全的特点,是理想的可再生能源。而太阳能光伏发电技术作为太阳能利用的一个重要组成部分,被认为是目前最具发展潜力的一种发电技术。太阳能光伏发电系统的研究对于缓解能源危机,减少环境污染和温室效应具有重要的意义。 太阳能路灯就是典型的太阳能光伏发电应用产品之一,它是以太阳能作为电
[单片机]
基于Atmega48<font color='red'>单片机</font>的太阳能路灯控制器的设计
液晶驱动MAX7232BF与单片机的硬件连接相关介绍
   MAX7232BF为串行输入4位数据、2位小数点和4位地址;输出为10位数据加20个独立小数点,数据输出代码为BCD码,每一位的2个小数点都在COM3上。可以直接与微处理器连接。   1 管脚结构及说明   MAX7232BF具有双列直插式40管脚封装和四边形式44脚封装。现以40脚封装的通用形式介绍其管脚结构及功能;44脚封装的形式类似,只是有部分管脚为空(NC),以及其他管脚号与其功能相对40脚有些差异。如表1所示。         2 动态显示驱动时序   由于LCD显示驱动信号与LED显示驱动信号不大相同,因而不能简单地在动态显示驱动方式的LCD电极上加高电平或低电平
[单片机]
液晶驱动MAX7232BF与<font color='red'>单片机</font>的硬件连接相关介绍
[单片机][KEIL5] 利用虚拟机或服务器远程编译keil工程,实现网络隔离
利用一个小工具实现远程编译, 命令格式(界面版):虚拟机IP|功能码|项目工程名 命令格式(无界面版):keil_build.exe 虚拟机IP 功能码 项目工程名 编译完成会自动打开编译信息log 客户端可以配对keil使用如下: xxKeil5_Buildkeil_build.exe 192.168.56.101 b @p $p @P是指工程名称,由keil自动填充 虚拟机或服务器直接打开软件运行即可,程序会自动去寻找指定工程并编译。 方法一:工程在本地 服务器将客户端目录映射成网络硬盘。软件会自动去扫描客户端网络硬盘。 方法二:工程在远端 客户端将服务器目录映射到本地成为网络硬盘,软件直接扫描服务器。客户端可
[单片机]
[<font color='red'>单片机</font>][KEIL5] 利用虚拟机或服务器远程编译keil工程,实现网络隔离
基于AT89C52单片机的SD卡的读写设计
  前言   长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择。在电能监测以及无功补偿系统中,要连续记录大量的电压、电流、有功功率、无功功率以及时间等参数,当单片机采集到这些数据时可以利用SD作为存储媒质。本文主要介绍了SD卡在电能监测及无功补偿数据采集系统中的应用方案。   设计方案   应用AT89C52读写SD卡有两点需要注意。首先,需要寻找一个实现AT89C52单片机与SD
[单片机]
基于AT89C52<font color='red'>单片机</font>的SD卡的读写设计
MSP430单片机的5种低功耗模式
5种低功耗模式分别为LPM0~LPM4(LOW POWER MODE),CPU的活动状态称为AM(ACTVE MODE)模式。其中AM耗电最大,LPM4耗电最省,仅为0.1uA。另外工作电压对功耗的影响:电压越低功耗也越低。 系统PUC复位后,MSP430进入AM状态。在AM状态,程序可以选择进入任何一种低功耗模式,然后在适当的条件下,由外围模块的中断使CPU退出低功耗模式,返回AM模式,再由AM模式选择进入相应的低功耗模式,如此类推。 工作模式的选择由状态寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF位控制。由于在CPU的头文件中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,所以编程时尽可能的利
[单片机]
利用单芯片MCU提高照明系统能源效率
在住宅用电中,照明用电占有相当大的比重。以家庭 用电为例,空调、冰箱、热水器等用电大户一直是大家关注的焦点,而天天都在使用的照明反倒被认为是“小儿科” 了。其实,每一张电费账单中都要为照明用电支付1/6的费用。如何在中国推广节能的照明产品,提高照明系统的 能源效率,降低照明用电量,已经成为摆在中国工程界面前的最大挑战,这使工程师们必须考虑采用节能器件来设 计自己的产品。 1 数控电子镇流器应运而生 在鳞次栉比的建筑物中,照明系统最普遍的形式是使用各种荧光灯管,以及采用简单的感应器和启辉器的镇流器。据估算,这种传统的方式可消耗建筑物用电量的 40%,既低效又浪费,而且成本昂贵。新的欧洲和国际立法要求从2005年开始增加效率和停用
[嵌入式]
51单片机P1口介绍
P1.0 P1.7为P1口的8位双向口线,用于完成8位数据的并行输入/输出。 P1口内部结构及其功能描述 如图是P1口内部1位的电路结构 与P0口内部结构电路比较可发现:P1端口只是一个标准的准双向端口,无第二功能; P1内部取消了上拉的FET,而以一个上拉电阻代替;但此内部上拉电阻阻值较大,故上拉驱动能力较弱,除了有低功耗要求的应用系统,最好外接10K左右的上拉电阻; P1内部下拉FET仍存在,因此P1在作为输入时,仍需先向端口数据锁存器输出1,使输出驱动FET截止,保证数据读入的正确性; 在MCS-52系列单片机中,P1.0和P1.1具有第二功能,分别是作为定时器/计数器2的外部输入端
[单片机]
基于C8051F330单片机相关知识解析方案
0 引言 在一些应用场合要求使用的电机体积小、效率高、转速高,微型永磁无刷直流电机能够较好地满足要求。因为电机体积较小,安装位置传感器困难,所以微型无刷直流电机的无位置传感器控制就显得尤为必要。 无刷直流电机的无位置传感器控制的难点在于转子位置信号的检测,目前国内外研究人员提出了诸多方法,其中反电动势法最为简单、可靠,应用范围最广泛。普遍采用的控制方案为基于DSP的控制和基于专用集成电路的控制等,但是其价格高、体积大,不利于用在微型电机控制器中。本文介绍基于C8051F330单片机、检测反电动势法的无位置传感器无刷直流电机的控制器,系统结构简单,体积超小型,价格低廉,运行性能良好。 1 无传感器无刷直流电机的控制方式 实现
[单片机]
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved