51单片机中的定时器和计数器
从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1 构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器 TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式; TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0 (P3.4)和T1(P3.5)输入。
定时计数器的原理:
一、定时器/计数器为定时工作方式时,
计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:
T=1/(12×106)Hz×1/12=1μs
这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
二、定时器/计数器为计数工作方式时,
通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电 平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳 变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号 的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。
当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU 当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。
综上所述,我们已知定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计 数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。
控制寄存器 定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。
定时器和计数器-51单片机
1. 定时器的原理
2. 定时器的使用
CPU时序的有关知识
振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
机器周期:1个机器周期含6个状态周期,12个振荡周期。
指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。
例如:外接晶振为12MHz时,51单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;
在学习定时器之前需要明白的
51单片机有两组定时器/计数器,因为既可以定时,
又可以计数,故称之为定时器/计数器。
定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU的参与。
51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1。
有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加1的工作可以交给定时器/计数器处理。CPU转而处理一些复杂的事情。同时可以实现精确定时作用。
定时/计数器的工作原理
定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
51单片机定时器结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
定时/计数器的控制
51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
1、工作方式寄存器TMOD
工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下:
GATE是门控位, GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了INT0/1引脚为高电平这一条件。
C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计数模式。
M1M0:工作方式设置位。定时/计数器有四种工作方式。
2、控制寄存器TCON
TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控
制定时/计数器的启动和中断申请。其格式如下:
TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。
TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。
TR0(TCON.4):T0运行控制位,其功能与TR1类同。
定时/计数器的工作方式
1、方式0
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。
定时器模式时有:N=t/ Tcy
计数初值计算的公式为:X=213-N。
定时器的初值还可以采用计数个数直接取补法获得。
计数模式时,计数脉冲是T0引脚上的外部脉冲。
门控位GATE具有特殊的作用。当GATE=0时,经反相
后使或门输出为1,此时仅由TR0控制与门的开启,与门输出
1时,控制开关接通,计数开始;当GATE=1时,由外中断引
脚信号控制或门的输出,此时控制与门的开启由外中断引脚
信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的
高电平启动计数,外中断引脚信号引脚的低电平停止计数。
这种方式常用来测量外中断引脚上正脉冲的宽度。
定时/计数器的工作方式
2、方式1
方式1的计数位数是16位,由TL0作为低8位,TH0
作为高8位,组成了16位加1计数器 。
计数个数与计数初值的关系为:X=216-N
3、方式2
方式2为自动重装初值的8位计数方式。
计数个数与计数初值的关系为:X=28-N
工作方式2特别适合于用作较精确的脉冲信号发生器。
4、方式3
方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。
工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。
使用定时器,该做哪些工作
初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对EA赋值,开放定时器中断。
使TR0或TR1置位,启动定时/计数器定时或计数。
计数器初值的计算
机器周期也就是CPU完成一个基本操作所需要的时间。
机器周期=1/单片机的时钟频率。
51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如说你用的是12MHZ的晶振,那么单片机内部的时钟频率就是12/12MHZ,当你使用12MHZ的外部晶振的时候。机器周期=1/1M=1us。
而我们定时1ms的初值是多少呢,1ms/1us=1000。也就是要计数1000个数,初值=65535-1000+1(因为实际上计数器计数到66636才溢出)=64536=FC18H
相关问答
【 51单片机 定时 计数器 工作方式疑点单片机定时器/ 计数器 的工...[最佳回答]因为51单片机处理数据是按八位进行的,所以给定时器赋初值的时候,不能将一个数直接赋到T0中,而是将这个数先转化为一个十六进制数,将它的高两位数(也...
MCS- 51单片机 定时器/ 计数器 作定时和计数作用时,其计算脉冲分别由谁提供?其定时时间与哪些因素有关?计数的脉冲由外部提供..定时时是由外部晶振提供..定时加1的周期为一个机器周期...定时时间与初值和晶振有关..计数的脉冲由外部提供..定时时是由外部晶振...
80C 51单片机 内部有几个定时/ 计数器 ?它们由哪些功能寄存器组成?怎样实现定时功能和计数功能?两个16位定时计数器,分别是Timer0Timer1.应用定时/计数器使用以下寄存器:1.中断启用寄存器IE2.中断优先级寄存器IP3.定时器/计数器模式寄存器TMOD4.定时器/计...
MCS- 51单片机 的 程序计数器 有几位?有三种方式:1、16位。加1计数器2、8位。用于较精确的脉冲信号发生器3、8位。此模式将计数器分为:TL0和TH0有三种方式:1、16位。加1计数器2、8位。用于...
MCS- 51单片机计数器 (65536-50000)/256关于65536的疑惑2的15...[最佳回答]1、2的15次方是32768;2、0-65535,总共有65536个数.3、从0开始加,加到65535(也就是计数器全为1时,是65535),总共加了65535次.你理解的65535次是没错...
51单片机 怎样停止定时 计数器 ,就是定时 计数器 完成了任务后不停下来,循环起来。怎么样停止定时器定时呢?51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数。任何时刻,当TR0/TR1为1时,T0/T1定时器计数;当TR0/TR1为0时,T0/T1定时器...
51单片机 如何把蜂鸣器和 计数器 连起来?51单片机可以通过将蜂鸣器和计数器连接起来来实现控制蜂鸣器的功能。具体步骤如下:1.首先,将蜂鸣器的正极连接到51单片机的一个IO口,将蜂鸣器的负极连接到单...
单片机 C语言 计数器程序 ?//timer0设定为计数器模式1TMOD&=0xf0;//清除原来的设定TMOD|=0x05;//T0为计数器模式1TH0=0;TL0=0;//从0开始计数TR0=...
晶振6mhz定时器最大定时时间?应该是51单片机吧,那我按照51的步骤来说。首先51单片机机器周期的计算方式=12/晶振(Hz),单位秒(s),你的6MHz晶振那么就是12/6M=2us,而计数器每一个机器周期...
单片机 定时 计数器 AUSR |=0X40是什么意思?前2句是向定时器装入初值,51单片机定时器是16位,只能分高8位和低8位装入,第3句是设置定时器0的工作方式为方式1,即16位定时器无论是用汇编语言还是C语言编??...