单片机定时器的应用与误差纠正
发布时间:2008/5/27 0:00:00 访问次数:618
    
     摘 要:对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,求出计数
    
     摘 要:对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为:
   &nbs=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,求出计数
上一篇:高性能单片机ADu