单片机定时器的应用与误差纠正

发布者:Enchanted2023最新更新时间:2006-12-11 来源: 电源技术应用关键字:MCS-51  寄存器  计数 手机看文章 扫描二维码
随时随地手机看文章
1 前言
  
定时器是MCS-51单片机非常重要的组成部分,由于其应用与单片机的其他硬件相关,存在着一定的复杂性[1]。而定时器是单片机应用中解决某类复杂问题的最有为效的方法,应用非常广泛。随着定时要求的提高,在定时处理过程中所带来的误差需要校正[2],本文就MCS-51单片机的使用方法与误差校正方法进行了讨论,并给出通用算法与程序。

2 定时器工作方式与方式设置

  
MCS-51单片机有两路独立的定时器,每路定时器有4种工作方式(0~3),方式0是13位计数结构,计数器由TH全部8位与TL的低5位构成;方式1是16位计数结构,计数器由TH与TL全部8位共16位组成;方式2是8位计数结构方式,计数器由TL8位组成,与其他方式不同的是,当定时溢出时,硬件自动将TH的值装入TL中,有自动加载功能。前三种工作方式,两路定时器的设置与使用完全相同,但在工作方式3下,两路定时器有很大差别,只有0路定时器可以工作在方式3下,1路定时器只能工作在方式0~2下,在工作方式3下,0路定时器被拆分成两个独立的8位计数器TL0与TH1,其中0路定时器的各控制位和引脚信号全归TL0使用,因此TH0只能做简单的定时器使用,其控制位占用了1路定时器的控制位,如果0路定时器工作在方式3下,1路定时器由于让出了所属控制位,通常作为串行口波特率发生器[3]。
  
定时器的工作方式选择主要依靠设置TMOD寄存器的值,其各位定义如下:

位序
B7
B6
B5
B4
B3
B2
B1
B0
位符号
GATE
C/T
M1
M0
GATE
C/T
M1
M0

其中,B0~B3用来控制0路定时器,B4~B7用来控制1路定时器。
  
GATE位为门控位,主要确定定时器启动的方式,如果GATE=0,则用TR0(TR1)位启动/关闭定时器,如果GATE=1,则以外中断请求信号(INT0或INT1)启动定时器。
  
C/T位为定时与计数选择位,C/T=0为定时方式,C/T=1为计数方式。
  M0、M1为工作方式选择位
  M1M0=00方式0M1M0=10方式2
  M1M0=01方式1M1M0=11方式3
  
选择定时器工作方式,应根据上述规定向寄存器TMOD中写入相应数,如设置0路定时器工作在定时方式0下,1路定时器工作在方式1下,则应用下列指令设置:
  
MOVTMOD,#10H

3 定时器的处理方式与计数初值的计算

  
MCS-51单片机的定时器采用增值计数法,在定时工作方式下,启动定时器后,每机器周期CPU硬件会自动给相应计数器加1,直至超出对应计数器所能表示的最大值,发生定时溢出,硬件自动将TF0(TF1)置位,用户可以通过查询TF0(TF1)位判断定时是否溢出,如果此时定时中断处于开放状态,将引发相应定时中断,MCS-51响应中断,根据相应中断地址(0路定时中断的中断入口地址为000B,1路为001B)执行中断处理程序。
  
定时编程有两种基本方式,一种方式为查询方式,在启动定时时关闭相应定时中断,然后循环检测TF0(TF1)进行相应处理;另一种方式为中断方式,启动定时时开放相应定时中断,并将定时溢出处理程序编写为中断处理程序形式通过在相应中断入口地址(000B,001B)放置跳转指令转入定时溢出处理程序。
  
定时器工作方式选定后,定时溢出时间唯一取决于计数器的初值,如何根据应用需要确定计数器初值,也是定时器应用的一个重要问题。假定单片机机器周期为K0,所选定的定时方式计数器为n位,所实现的定时时间长度为T,则有:
  
    (2n-x)K0=T(1)
  
  其中x为计数器的初值,根据式1可以求出初值x为:

    x=2n-(T/K0)(2)

4 定时器的编程步聚和各步聚的通用程序
  
  定时器应用编程主要分为以下几个步聚。

4.1步骤1根据定时要求求计数初值x
  
  首先根据单片机时钟频率f确定单片机机器周期k0,即:

  k0=12/f(3)
  
在实际应用中,单片机时钟频率f一般为6mHz或12mHz,所以单片机机器周期k0=2μs或1μs,然后根据选定的工作方式确定计数器位数n,将所得k0与n代入式2,求出计数初值x,并根据所选择的计数方式将x的值分入TH0(TH1)与TL0(TL1)。

4.2步骤2编写初始化程序
  
初始化程序与定时编程方式有关,中断方式初始化程序如下(以0路定时器为例):

  movTMOD,#n(规定定时工作方式)
  movTH0,#n1(设置计数器低位)
  movTL1,#n2(设置计数器高位)
  setBEA(开放中断)
  setBET0(开放定时中断0)
  setBTR0(启动定时)
  
  查询方式初始化程序如下:
  movTMOD,#n(规定定时工作方式)
  movTH0,#n1(设置计数器低位)
  movTL1,#n2(设置计数器高位)
  clrET0(开放定时中断0)
  setBTR0(启动定时)

  其中#n1和#n2与计数初值x有关,如果采用方式2,有#n1=#n2,所有初始化程序都以0路定时器为例,如果用1路定时器,则将程序中的寄存器和控制位的下标1改为0。

4.3步骤3编制定时处理程序
  
  中断方式处理程序如下:
  org000B
  1jmpb1
  b1:clrEA
  movTH0,#n1
  movTH1,#n2
  定时处理语句段
  reti
  其中,0路定时器为000B,如果为1路定时器为001B,如果定时器工作在方式2,则不需要给TH0、TH1重新赋值。
  查询方式处理程序如下:
  L1:jbcTF0,LO1
  sjmpL1
  LO1:movTH0,#n1
  movTH1,#n2
  定时处理语句段
  sjmpL1

5 定时的误差校准
  
由于单片机的机器周期为1μs~2μs,定时误差一般应在0μs~20μs之内,对于一般应用,此误差可以忽略,但是对于精确度要求比较高的应用场合,此误差必须进行校正。定时误差是定时溢出后转入执行定时处理语句段之间所耗费的时间,此时间主要由定时溢出转入定时处理语句段所必须执行的指令或硬件过程产生。
  
定时误差校准的简单原理是:在定时溢出响应后,停止定时器计数,读出当时计数值(它反映了定时响应的延迟时间),然后将完成这一任务的程序段执行时间考虑进去,作为修正因子校正定时初值,以下程序段以中断处理方式为例:
  clrEA
  clrTR1
  clrc
  movA,#n0
  clrTR0
  subbA,TL0
  subbA,#08
  movTL0,A
  movA,#n1
  subbA,TH0
  movTH0,A
  setbTR0
  定时处理语句段
  reti
  
由于执行从指令clrTR0(停止计数)到指令setbTR0(重新开启计数)之间的指令需8个机器周期,应将此消耗考虑进去。上述程序将定时误差缩小在1个机器周期内。
关键字:MCS-51  寄存器  计数 引用地址:单片机定时器的应用与误差纠正

上一篇:提高单片机系统可靠性的设计方法
下一篇:单片机多机并行通讯的一种方法

推荐阅读最新更新时间:2024-03-16 12:18

基于接口芯片的PCI总线接口卡的设计
1、引言   作为对PCI总线在仪器领域的扩展,PXI总线由于具有高性能、低价位等特点,使其在数据采集、工业自动化系统、计算机机械观测系统和图像处理等方面获得了广泛应用。   但是PXI总线协议十分复杂,其接口的实现比ISA困难得多,直接为它设计相匹配的数字逻辑控制电路难度很大。特别是对于那些没有PCI板卡设计经验的人来说,要想直接设计出能满足要求的PXI模块几乎是不可能的事。而PXI总线的电气规范大部份跟PCI相同,只是增加了一些仪器特性。基于以上考虑,我们决定通过设计一个PCI接口卡来系统地了解利用接口芯片PCI 9030开发PXI模块的过程和方法。 2、硬件设计   目前实现 PCI 接口的方法主要是采用可编
[嵌入式]
用时间戳计数器测量频率的方法
计频器曾被视为是电压计级别的基本测量工具,能够依靠调制以较高的分辨率测量一个CW信号,并广泛用于校准振荡器。随着计频器的发展,测量仪器具有了测量脉冲的能力,并具备了能够处理调制波形上的测量的更宽的测量带宽。现代的计频器已经在性能上达到了新的水平,能够辨别会不断改变频率的动态信号。 在过去的十年间,计频器无论在设计还是在功能上都有了巨大的改变。当今的计频器,例如来自Pendulum Instruments (www.pendulum-instruments.com)的CNT-90,就运用了先进的测量原理,达到了很高的采样速度,分辨率也比以前的测试仪器要高。这个特别的计频器带有一个图形显示器,能够显示信号抖动和调制,以及其它量信号的
[测试测量]
用时间戳<font color='red'>计数</font>器测量频率的方法
STM32D单片机退出睡眠模式在外设控制寄存器中使能一个中断
STM32D单片机退出睡眠模式在外设控制寄存器中使能一个中断,而不是在NVIC(嵌套向量中断控制器)中使能区别引发的中断过程步骤整理 这两个使能的区别?前者是中断线EXTI_Init(),后者是NVIC_Init(),两者通道中断通道号联系起来,例如中断线11配置中断引脚源GPIO_EXTILineConfig()寄存器是AFIO- EXTICR;EXTI_Line11属于EXTI15_10_IRQn外部中断通道号
[单片机]
STM32D单片机退出睡眠模式在外设控制<font color='red'>寄存器</font>中使能一个中断
MSP430简介及G2231IO寄存器说明
MSP430上电复位后, IO 默认为输入状态,看门狗开启。一般来说诸如 默认为输入状态,看门狗开启。一般来说诸如 那些,复位后默认看门狗是禁止的而 MSP430则默认是开启看门狗的 ,与 C8051F类似 。对 于我们开发调试 过程 来说, 前期都 是禁止看门狗 居多 ,所以一般新建 ,所以一般新建 ,所以一般新建 430工程,都会 工程,都会 有下面 语句: WDTCTL = WDTPW + WDTHOLD; WDTCTL是看门狗 的控制寄存器,长度为 16 位,其高 位,其高 8位是看门狗口令,固定为 位是看门狗口令,固定为 0x5A, 对 WDTCTL进行写操作时,必须使用该口令 进行写操作时,必须使用该口令 WDTPWWD
[单片机]
MSP430 PIN 操作寄存器
1、P口端口寄存器: (1)、PxDIR 输入/输出方向寄存器 (0:输入模式 1:输出模式) (2)、PxIN 输入寄存器 输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。 (3)、PxOUT 输出寄存器 寄存器内的内容不会受引脚方向改变的影响。 (4)、PxIFG 中断标志寄存器 (0:没有中断请求 1:有中断请求) 该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求; 这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位; 外部中断事件的时间必须 =1
[单片机]
MSP430F149学习之IO端口
一 ,IO端口 MSP430F149,TI公司超低功耗16位单片机,具有6组独立IO口,每组8位,共48个IO口,64个引脚。 二 ,IO口寄存器 1.端口特点 其中P0,P1口具有三种功能:I/O、中断功能、其他外设功能。 其余端口就只有I/O、其他外设端口。 2.IO口常用寄存器 2.1端口控制寄存器PxDIR 2.2 端口输入寄存器 2.3 端口输出寄存器 2.4 功能引脚选择位 2.5 中断标志位寄存器 2.6 中断允许寄存器 2.7 中断触发方式寄存器 time to update,,,,,,,,,,,,,
[单片机]
MSP430F149学习之IO端口
STC89C52-秒表(精确10ms)同时LED二进制计数
#include reg52.h typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; /*数码管0到F定义 */ code uint8 number = {0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xa7,0xa1,0x86,0x8e}; uint8 a ; uint16 counter1 = 0; uint8 counter = 0; sbit ENLED = P1^4; sbit A
[单片机]
DSP与单片机通信的多种方案设计
  将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。下面就此问题分别设计串行SCI、SPI和并行HPI三种连接方式。 1 串行通信设计与实现 1 1 SCI串行通信设计 1.1.1 多通道缓冲串行口McBSP原理   TMS320VC5402(简称VC5402)提供了2个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口McBSP。MCESP分为数据通路和控制通路。①数据通路负责完成数据的收发。CPU或DMAC能够向数据发送寄存器DXR写入数据,DXR中的数据通过发送移位寄
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


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

502 Bad Gateway


openresty