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

上传人:hw****26 文档编号:3845207 上传时间:2019-08-07 格式:DOC 页数:7 大小:33KB
下载 相关 举报
单片机定时器的应用与误差纠正.doc_第1页
第1页 / 共7页
单片机定时器的应用与误差纠正.doc_第2页
第2页 / 共7页
单片机定时器的应用与误差纠正.doc_第3页
第3页 / 共7页
单片机定时器的应用与误差纠正.doc_第4页
第4页 / 共7页
单片机定时器的应用与误差纠正.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、单片机定时器的应用与误差纠正单片机定时器的应用与误差纠正王暄(陕西师范大学物理学与信息技术学院,陕西西安 710062)摘 要:对 MCS-51 单片机定时器的原理与使用中的几个关键问题进行了讨论,给出定时器的使用方法与误差补偿方法,并给出了实现程序。 1 前言定时器是 MCS-51 单片机非常重要的组成部分,由于其应用与单片机的其他硬件相关,存在着一定的复杂性1。而定时器是单片机应用中解决某类复杂问题的最有为效的方法,应用非常广泛。随着定时要求的提高,在定时处理过程中所带来的误差需要校正2,本文就 MCS-51 单片机的使用方法与误差校正方法进行了讨论,并给出通用算法与程序。2 定时器工作方

2、式与方式设置MCS-51 单片机有两路独立的定时器,每路定时器有 4 种工作方式(03),方式 0 是 13 位计数结构,计数器由 TH 全部8 位与 TL 的低 5 位构成;方式 1 是 16 位计数结构,计数器由TH 与 TL 全部 8 位共 16 位组成;方式 2 是 8 位计数结构方式,计数器由 TL8 位组成,与其他方式不同的是,当定时溢出时,硬件自动将 TH 的值装入 TL 中,有自动加载功能。前三种工作方式,两路定时器的设置与使用完全相同,但在工作方式 3 下,两路定时器有很大差别,只有 0 路定时器可以工作在方式 3 下,1 路定时器只能工作在方式 02 下,在工作方式 3 下

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 其中,B0B3 用来控制 0 路定时器,B4B7 用来控制 1 路定时器。GATE 位为门控位,主要确

4、定定时器启动的方式,如果GATE=0,则用 TR0( TR1)位启动/关闭定时器,如果GATE=1,则以外中断请求信号( INT0 或 INT1)启动定时器。C/T 位为定时与计数选择位,C/T=0 为定时方式,C/T=1 为计数方式。M0、M1 为工作方式选择位M1M0=00 方式 0 ; M1M0=10 方式 2M1M0=01 方式 1 ;M1M0=11 方式 3选择定时器工作方式,应根据上述规定向寄存器 TMOD 中写入相应数,如设置 0 路定时器工作在定时方式 0 下,1 路定时器工作在方式 1 下,则应用下列指令设置:MOV TMOD,10H3 定时器的处理方式与计数初值的计算MCS

5、-51 单片机的定时器采用增值计数法,在定时工作方式下,启动定时器后,每机器周期 CPU 硬件会自动给相应计数器加1,直至超出对应计数器所能表示的最大值,发生定时溢出,硬件自动将 TF0(TF1)置位,用户可以通过查询 TF0(TF1 )位判断定时是否溢出,如果此时定时中断处于开放状态,将引发相应定时中断,MCS-51 响应中断,根据相应中断地址(0 路定时中断的中断入口地址为 000B,1 路为 001B)执行中断处理程序。 定时编程有两种基本方式,一种方式为查询方式,在启动定时时关闭相应定时中断,然后循环检测 TF0( TF1)进行相应处理;另一种方式为中断方式,启动定时时开放相应定时中断

6、,并将定时溢出处理程序编写为中断处理程序形式通过在相应中断入口地址(000B,001B)放置跳转指令转入定时溢出处理程序。定时器工作方式选定后,定时溢出时间唯一取决于计数器的初值,如何根据应用需要确定计数器初值,也是定时器应用的一个重要问题。假定单片机机器周期为 K0,所选定的定时方式计数器为 n 位,所实现的定时时间长度为 T,则有:(2nx)K0=T(1)其中 x 为计数器的初值,根据式 1 可以求出初值 x 为:x=2n(T/K0)(2)4 定时器的编程步聚和各步聚的通用程序定时器应用编程主要分为以下几个步聚。4.1 步骤 1 根据定时要求求计数初值 x首先根据单片机时钟频率 f 确定单

7、片机机器周期 k0,即:k0=12/f(3)在实际应用中,单片机时钟频率 f 一般为 6mHz 或 12mHz,所以单片机机器周期 k0=2s 或 1s,然后根据选定的工作方式确定计数器位数 n,将所得 k0 与 n 代入式 2,求出计数初值 x,并根据所选择的计数方式将 x 的值分入 TH0(TH1)与TL0(TL1)。4.2 步骤 2 编写初始化程序初始化程序与定时编程方式有关,中断方式初始化程序如下(以 0 路定时器为例):mov TMOD,n(规定定时工作方式)mov TH0,n1(设置计数器低位 )mov TL1,n2( 设置计数器高位)setB EA(开放中断)setB ET0(开

8、放定时中断 0)setB TR0(启动定时 )查询方式初始化程序如下:mov TMOD,n(规定定时工作方式)mov TH0,n1(设置计数器低位 )mov TL1,n2( 设置计数器高位)clr ET0(开放定时中断 0)setB TR0(启动定时 )其中n1 和 n2 与计数初值 x 有关,如果采用方式 2,有n1= n2,所有初始化程序都以 0 路定时器为例,如果用 1路定时器,则将程序中的寄存器和控制位的下标 1 改为 0。4.3 步骤 3 编制定时处理程序中断方式处理程序如下:org 000B1jmp b1b1:clr EAmov TH0,n1mov TH1,n2定时处理语句段ret

9、i其中,0 路定时器为 000B,如果为 1 路定时器为 001B,如果定时器工作在方式 2,则不需要给 TH0、TH1 重新赋值。查询方式处理程序如下:L1:jbc TF0,LO1sjmp L1LO1:mov TH0,n1mov TH1,n2定时处理语句段sjmp L15 定时的误差校准由于单片机的机器周期为 1s2s,定时误差一般应在0s20s 之内,对于一般应用,此误差可以忽略,但是对于精确度要求比较高的应用场合,此误差必须进行校正。定时误差是定时溢出后转入执行定时处理语句段之间所耗费的时间,此时间主要由定时溢出转入定时处理语句段所必须执行的指令或硬件过程产生。定时误差校准的简单原理是:在定时溢出响应后,停止定时器计数,读出当时计数值(它反映了定时响应的延迟时间),然后将完成这一任务的程序段执行时间考虑进去,作为修正因子校正定时初值,以下程序段以中断处理方式为例:clrEAclr TR1clr cmov A,n0clr TR0subb A,TL0subb A,08mov TL0,Amov A,n1subb A,TH0mov TH0,Asetb TR0定时处理语句段reti由于执行从指令 clrTR0(停止计数)到指令 setbTR0(重新开启计数)之间的指令需 8 个机器周期,应将此消耗考虑进去。上述程序将定时误差缩小在 1 个机器周期内。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。