第六章:定时计数器B讲解
单片机第六章定时器
这种方式下,计数寄存器由13位组成,即THx高八位(作计数器)
和TLx的低5位构成。TLx的高3位未用。
计数时,TLx的低5位溢出后向THx进位,THx溢出后 将TFx置位,并向CPU申请中断。
用软件控制,置 l时,启动 T1;清0时,停止 T1。
TF0(TCON.5)——T0的溢出标志。
TR0(TCON.4)——T0的运行控制位。
用软件控制,置1时,启动T0;清 0时,停止 T0。
• IE1(TCON.3)——外部中断1中断请求标志位。
• IE0(TCON.1)——外部中断0中断请求标志位。
器之外,还可用作串行接口的波特率发生器。
6.2
定时器/计数器T0、T1
T0、T1 的内部结构简图示于图6-1中。从图中 可以看出,T0、T1由以下几部分组成:
• 计数器TH0、TL0和TH1、TL1;
•
•
特殊功能寄存器TMOD、TCON;
时钟分频器;
•
输入引脚T0、T1。
6.2.1 与定时器/计数器T0、T1有关的 特殊功能寄存器
⑵定时器/计数器T1
T0方式3时,T1可以工作在方式0、1、2三种方式 T1的结构如图6–6所示。 由于T0占用了原来T1的启动位TR1和溢出标志TF1, 所以此时T1溢出时不能置位溢出标志,不能申请中断, 其溢出信号送给串行口,此时T1作为波特率发生器。
T1的启停由写入方式字控制,当写入方式0/1/2 时,T1立即启动,写入方式3 时,立即停止工作。
分析:设置T0工作在方式2,计数功能,每记满100个外 部脉冲,从P1.0输出一个低电平脉冲信号(简化的打包 操作)。
第六章单片微机的定时器计数器原理及应用
中断矢量001BH
⑴T0方式3下的T0
在方式3情况下,T0被拆成二个独立的8位计数器TH0、TL0。 ▲ TL0:8位定时/计数器,使用T0原有的控制寄存器资 源:TF0,TR0,GATE,C/T,INT0,中断矢量等; ▲ TH0:8位定时器,占用T1的中断溢出标志TF1,运行控 制开关TR1,中断矢量001BH,只能对片内机器周期脉冲计数
复位后,两个寄存器全部清零。
6.3.2 定时器/计数器T2的工作方式
T2的工作方式用控制位CP/RL2(T2CON.0)和RCLK +TCLK来选择。T2有3种工作方式,如表6-2所示:捕获方式、 自动重装载方式和波特率发生器方式。
⒈ 捕获方式
在一定条件下,自动将计数器TH2和TL2的数据读入捕获寄存器 RCAP2H和RCAP2L,亦即TH2和TL2内容的捕获是通过捕获寄 存器RCAP2H和RCAP2L来实现的。其工作原理可参见图6-7。
当CP/RL2=0时,选择自动重装载方式。 若T2的中断是被允许的,则无论发生TF2=1还是EXF2 =1,CPU都会响应中断,此中断向量的地址为002BH。响应 中断后,应用软件撤除中断申请。TF2 和EXF2都是直接可寻 址位,可采用CLR TF2和CLR EXF2指令实现撤除中断申请的 功能。
触发 方式
89H IE0
中断 标志
88H IT0
触发 方式
⒊ T0、T1 的数据寄存器——TH1、TL1,TH0、TL0 ⒋ 定时器/计数器中断
⑴ 中断允许寄存器IE
⑵ 中断矢量 ⑶ 中断优先级寄存器IP
6.2.2 定时器/计数器T0、T1 的工作方式
T0:有4种工作方式可选(方式0,1,2,3)
当CP/RL2=l时,选择捕获方式。
51单片机定时器计数器详解
51单⽚机定时器计数器详解第六章定时器/计数器6.1 定时器的结构及⼯作原理6.2 定时器的控制6.3 定时器的⼯作模式及其应⽤第六章定时器/计数器实现定时⼀般有多种⽅法:1. 利⽤软件实现(延时程序)优点:简单,控制⽅便;缺点:CPU效率低。
2. 外部硬件实现:单稳态定时器、计数定时器优点:CPU效率⾼;缺点:修改参数⿇烦。
3. 利⽤计数器实现输⼊脉冲定时器/计数器作⽤主要包括产⽣各种时标间隔、记录外部事件的数量等,是单⽚机中最常⽤、最基本的部件之⼀。
外来脉冲定时计数定时器/计数器功能⽰意图6.1 定时器/计数器的结构及⼯作原理6.1.1 定时器/计数器的基本结构MCS-51单⽚机有⼆个定时器/计数器,每个定时器/计数器由⼏个专⽤寄存器组成。
TMOD(89H )⾼四位TMOD(89H )低四位⽅式寄存器TCON(88H)TCON(88H)控制寄存器*8DH 8BH 8CH 8AH TH1 TL1TH0 TL0数据寄存器(16位)定时器T1定时器T0定时器/计数器的结构如下图所⽰。
定时器/计数器的基本结构框图申请P3.5or P3.4or 8DH 8BH8CH 8AH6.1.2 定时器/计数器的⼯作原理定时器/计数器结构原理图INTx P3.YGATE :门控制位:定时/计数控制位TC/x=0,1Y=2,3Z=4,5⼀. 对外部输⼊信号的计数功能当T0或T1设置为计数⼯作⽅式时,计数器对来⾃输⼊引脚P3.4(T0)和P3.5(T1)的外部信号计数。
若前⼀个机器周期采样值为1,后⼀个机器周期采样值为0,则计数器加1。
所以计数器计数的频率最⾼为fosc 的1/24。
BDEHT H >1个机器周期T L >1个机器周期L⼆. 定时功能:定时器/计数器的定时功能也是通过计数实现的,它的计数脉冲是由单⽚机的⽚内振荡器输出经12分频后产⽣的信号,即为对机器周期计数。
INTx P3.Y例如:晶振频率=12MHz 机器周期=1us ,计数1次=1us ,计数频为=1MHz 。
定时计数器B讲义课件
定时计数器重要参数
定时时间
指定时计数器可以设定的最大时间 间隔,通常以微秒或毫秒为单位。
分辨率
指定时计数器能够分辨的最小时间 间隔,通常取决于计数器的位数和
时钟频率。
精度
指定时计数器的实际计时结果与设 定值之间的误差范围。
触发方式
指定时计数器在达到设定时间间隔 后触发信号的方式,可以是电平触 发或边沿触发。
案例三:基于单片机的定时计数器应用
• 总结词:单片机是一种集成了一定数量外围设备和CPU的微控 制器,具有体积小、价格低、易于编程等优点。基于单片机的 定时计数器应用适用于各种小型嵌入式系统。
案例三:基于单片机的定时计数器应用
• 详细描述 • 单片机的选择:选择具有合适逻辑单元、内存容量和I/O引脚数量的单片机,
驱动程序开发流程
开发定时计数器驱动程序的主要流程包括:初始化、配置 、中断处理、读写操作以及关闭等环节。
定时计数器应用程序开发
应用程序接口
应用程序通过操作系统提供的API 接口来访问和控制定时计数器。 这些API通常包括开启/关闭定时 计数器、设置参数、读取状态以 及处理中断等。
应用程序主要功能
应用程序主要实现了以下功能:通 过调用API接口来控制定时计数器 的开启/关闭、设置参数、读取状 态以及处理中断等。
应用程序开发流程
开发定时计数器应用程序的主要流 程包括:初始化、配置、运行和关 闭等环节。
定时计数器测试与调试
01
测试环境搭建
为了确保定时计数器软件设计的正确性和稳定性,我们需要搭建一个专
门的测试环境来进行测试和调试。测试环境通常包括硬件设备(如定时
计数器芯片)、驱动程序和应用程序等。
02
第六章-STM32-定时器的使用-《基于ARM的单片机应用及实践--STM32案例式教学》课件
第六章 STM32 定时器的使用 通用定时器配置步骤
1)TIM3时钟使能 这里我们通过APB1ENR的第1位来设置TIM3的时钟,因为 Stm32_Clock_Init函数里面把APB1的分频设置为2了, 所以我们的TIM3时钟就是APB1时钟的2倍,等于系统时 钟(72M)。 2)设置TIM3_ARR和TIM3_PSC的值 通过这两个寄存器,设置自动重装的值及分频系数。这 两个参数加上时钟频率就决定了定时器的溢出时间。
计数器寄存器:TIMx_CNT 预分频器寄存器:TIMx_PSC 自动装载寄存器:TIMx_ARR
第六章 STM32 定时器的使用 通用寄存器时基单元 1)计数器寄存器:TIMx_CNT
16位的计数器,设定值从1~65535
第六章 STM32 定时器的使用 计数器模式 向上计数模式:计数器从0计数到设定的数值,然后 重新从0开始计数并且产生一个计数器溢出事件。
在定时器配置完了之后,因为要产生中断,必不可少的 要设置NVIC相关寄存器,以使能TIM3中断。
6)编写中断服务函数 编写定时器中断服务函数,通过该函数处理定时器 产生的相关中断。中断产生后,通过状态寄存器的 值来判断此次产生的中断属于什么类型。然后执行 相关的操作。
第六章 STM32 定时器的使用 通用寄存器时基单元
第六章 STM32 定时器的使用
2)预分频器寄存器:TIMx_PSC 预分频器可以讲计数器的时钟频率按1到65536之间的任 意值分频,它是一个16位寄存器。 这个寄存器带有缓冲区,它能够在工作时被改变。新的 预分频器参数在下一次更新事件到来时被采。
第六章 STM32 定时器的使用 预分频器寄存器在事件更新时采用
定时器的工作频率计算公式为 CK_CNT=定时器时钟/(TIMx_PSC+1) 其中CK_CNT表示定时器工作频率 TIMx_PSC表示分频系数
第六章 MCS-51单片机内部定时器
6.3.1 模式0及应用
在这种模式下,16位寄存器只用了13位。 其中,TL0的高3位未用,TH0占8位。当 TL0的低5位溢出时,向TH0进位。当TH0 溢出时,向中断标志位TF0进位,并申请中 断。 因此,可通过查询TF0 是否置位或考 察中断是否发生来判断定时器/计数器0的 操作完成与否。
(2)计算1ms定时T0的初值:
机器周期为(1/fOSC)×12=[1/(12×106)]×12=1μs, 设T0的 计数初值为X,则 (213-X)×1×10-6=1×10-3ms
X=213-1×10-3/(1×10) -6 =8192-1000=7192D=1110000011000
高8位: E0H 低5位: 18H
fosc=12MHz, 采用查询方式。
解:方波周期 T=1/100Hz=0.01s=10ms 用T1定时5ms 计数初值 X为: X=216-12×5×103/12=60536=EC78H 程序如下:
MOV TMOD, #10H ;T1模式1,定时方式
SETB TR1 LOOP:MOV TH1,#0ECH
例:晶振为12MHZ ,则计数周期为
T=12/(12*106)Hz =1微秒
最短的定时 周期
计数器工作方式:
当定时器/计数器为计数工作方式时,通过
引脚T0和T1对外部信号计数,外部脉冲的下降
沿触发计数
在每个机器周期的
采样过程:
S5P2期间采样引脚
当输入脉冲信号从1到0的负跳变时,计数器就 自动加1。 由于检测一个由1到0的跳变需要两 个机器周期,所以 计数的最高频率为振荡频 率的1/24。为了确保给定电平在变化前至少被 采样一次,外部计数脉冲的高低电平均需保持 一个机器周期以上。(占空比没有限制)
6.3 定时器计数器的四种模式及应用
(2)计算初值 ) T0工作在外部事件计数方式,当计数到 8时,再加 工作在外部事件计数方式, 工作在外部事件计数方式 当计数到2 1计数器就会溢出。设计数初值为 ,当再出现一次 计数器就会溢出。 计数器就会溢出 设计数初值为X, 外部事件时,计数器溢出。 外部事件时,计数器溢出。 则: X+1=28 X= 28 -1=11111111B=0FFH T0工作在定时工作方式,设晶振频率为 工作在定时工作方式, 工作在定时工作方式 设晶振频率为6MHz, , 500µs相当于 相当于250个机器周期。因此,初值 为 个机器周期。 相当于 个机器周期 因此,初值X为 (28-X)×2µs=500µs × X=6=06H
的工作模式0在 例2:利用 的工作模式 在P1.0引脚输出周期为 :利用T0的工作模式 引脚输出周期为 2ms的方波。设单片机晶振频率 的方波。 的方波 设单片机晶振频率fosc=12MHz。 。 分析:要在P1.0引脚输出周期为 引脚输出周期为2ms的方波,只要使 的方波, 分析:要在 引脚输出周期为 的方波 P1.0每隔 每隔1ms取反一次即可。 取反一次即可。 每隔 取反一次即可 (1)选择工作模式 ) T0的模式字为 的模式字为TMOD=00H,即 的模式字为 , M1M0=00,C/T=0,GATE=0,其余位为 。 , , ,其余位为0。 (2)计算1ms定时时 的初值 )计算 定时时T0的初值 定时时 (213-X)×1/12 × 10-6×12=1×10-3 s × × X=7192D=11100000 11000B T0的低 位:11000B=18H即 (TL0)=18H 的低5位 的低 即 T0的高 位:11100000B=E0H即 (TH0)=E0H 的高8位 的高 即
三、模式 3的应用举例 的应用举例 例1:设某用户系统已使用了两个外部中断源,并 :设某用户系统已使用了两个外部中断源, 置定时器T1工作在模式 工作在模式2, 置定时器 工作在模式 ,作串行口波特率发生器 现要求再增加一个外部中断源,并由P1.0引脚 用。现要求再增加一个外部中断源,并由 引脚 输出一个5kHz的方波。fosc=12MHz. 的方波。 输出一个 的方波
《定时计数器》课件
定时计数器的使用步骤
开启定时计数器
在设置好所需参数后,用户可 以启动定时计数器开始计时。
实时监控
在计时过程中,用户可以通过 显示界面实时查看当前计数值 和计时状态。
停止计时
当达到设定时间或需要停止计 时时,用户可以按下停止按钮 ,计时器将停止工作。
重置
若需重新计时,用户可以将计 数值重置为初始状态,并重新
信号。
触发器
触发器是定时计数器的 重要组成部分,用于控 制计数器的开始和停止
。
计数器
计数器用于记录输入信 号的个数,可以是二进
制或十进制。
输出信号
定时计数器的输出信号 可以是控制信号、状态
信号或脉冲信号。
定时计数器的工作流程
01
02
03
04
启动
当输入信号满足一定条件时, 触发器被触发,计数器开始计
定时计数器的基本原理是利用触发器的翻转时刻来记录时间间隔的起始和结束时刻 。
当输入信号的上升沿或下降沿到来时,触发器翻转,记录下当前时刻,从而计算出 时间间隔。
定时计数器的精度取决于触发器的翻转时刻的准确性,因此需要采用高精度的触发 器。
02
定时计数器的分类
机械式定时计数器
机械式定时计数器是最早的定时计数 器类型,它利用机械原理来实现计时 和计数功能。
现不必要的时间误差。
05
定时计数器的维护与 保养
定时计数器的清洁保养
清洁外壳表面
使用干燥的软布擦拭计数器的外 壳表面,以去除灰尘和污垢。
清洁内部组件
定期打开计数器外壳,使用吸尘器 或干燥的软布清洁内部电路板和元 件。
清洁触点
定期检查并清洁计数器的触点,以 确保良好的接触性能。
第6讲 定时器与计数器
TMOD T0引脚 0 M0 1 M1 C/T 0 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0
工作方式2结构
定时器T0工作方式2结构
溢出 申请 中断 申请 中断 TCON TF1 TR1 TF0 TR0 溢出 TH0 8位 T0引脚 1 TL0 8位 &
≥1
四、定时计数器控制寄存器
1、工作方式控制寄存器TMOD
C/T用于选择定时或计数方式,定时计数器4种工作方式 可通过TMOD中的M1、M0进行选择。
MCS-51单片机将门控位GATE、定时计数方式选择位C/T、
工作方式选择位M1、M0组合在工作方式控制寄存器TMOD 中,TMOD是特殊功能寄存器,字节地址为89H。TMOD共8位, 低4位用于T0的工作方式选择,高4位用于T1的工作方式选择。 各位定义如下:
每个计数脉冲使加1计数器加1。(f< fosc/24 ,)
4. 加1计数器
加1计数器由特殊功能寄存器TH0与TL0组成,工作前应
先将TH0与TL0置初值Count。然后由定时或计数脉冲使加1计
数器加1,当加1计数器加到FFFFH后再加1时,发生溢出回零,
硬件自动将中断标志TF0置1,并以此向CPU发中断请求。 溢出回零后硬件要完成以下几项工作: ① 将溢出标志TF0置1。 ② 以TF0=1为标志向CPU发中断请求信号。 ③ 若CPU响应,则在响应过程中由硬件将TF0清零。并转入中断 处理程序执行定时或计数任务。
工作方式
00; 01; M1M0 = 10; 11;
加1计数器位数
13位 16位
加1计数器
TH15~8,TL4~0 TH15~8,TL7~0
方式0 方式1 方式2 方式3
第六章定时器及应用
定时时间为: t=计数值×机器周期 =(216-T0初值)×振荡周期×12
(二)模式 1 工作特点
当C/ T =1时,T0对外部输入计数。计数长度为: L=(216-T0初值)(个外部脉冲)
T 1初 值 2 16
T 1初 值 2
16
20ms
t
振 荡 周 期 12
10m s 1 12 6 6 10
T 1初值 60536 EC78H
∴(TH1)=ECH,(TL1)=78H
解:2)确定工作模式寄存器TMOD的值 ∵ 定时器T1工作于模式1的定时器工作方式, ∴ 高四位: GATE=0,C/T=0,M1M0=01 ,低四位:取0。 ∴ (TMOD)=0001 0000 B = 10H
因此:(TL0)=0B0H
(TH0)=3CH
源程序清单(使发光二极管闪烁,每1S闪烁1次) #include<at89x51.h> unsigned char temp=5; main() void timer_0( )interrupt 1 { { TMOD=0x01; TH0=0X3C; TL0=0XB0; TH0=0X3C; temp--; TL0=0XB0; if(temp==0) ET0=1; { EA=1; temp=5; TR0=1; P1_0=~P1_0; P1_0=1; } while(1); } }
3)编程(定时器溢出中断方式) #include <at89x51.h> 思考:设定时器T0用于定 void main() { 时10ms,晶振为6MHz。 TMOD=0x10; 编程实现:P1.0输出周期 TH1=0xec; TL1=0x78; 为40ms,高电平宽为10ms, ET1=1; EA=1; TR1=1; 低电平宽为30ms的矩形波。 P1_1=1; 如何编程? while(1); } void timer_1() interrupt 3 { TH1=0xec; TL1=0x78; P1_1=~P1_1; }
定时计数器结构及工作原理ppt课件
;p1.0清0 ;启动定时500us ;查询溢出标志,定时到TF0=1转移,且TF0=0.
SJMP LOOP2
4. 方式3:仅对定时/计数器0有效
T0 TH0+TL0
5.
对定时/计数器1,停顿计数。
将定时/计数器0分成两个独立的8位计数器TH0、TL0。
① TL0除仅用8位Reg 外,其他同方式0、 1。 可任务在定时或计数 方式。
MOV TL0 , #131 ;TL0装入时间常数(256-125)
CPL P1.1
;P1.1口得到方波
RETI
ORG 001BH ;T1中断处置程序首地址
MOV TH0 , #06H ;TH0装入时间常数(256-250)
CPL P1.2
;P1.2口得到方波
RETI MAIN: MOV TMOD , #03H ;T0任务于方式3、定时
ORG 000BH ;到中断效力程序
ORG 0100H
MAIN: MOV SP ,#60H MOV TMOD ,#00 ;
方式0 方式1 MOV TM0D ,#01H
MOV TL0,#0CH ;
MOV TL0 , #0CH
MOV TH0 ,#0F0H ;
MOV TH0 , #0FEH
SETB EA
TX才被允许计数。
利用GATE的这一功能②,可测③试INTX 引脚上正脉冲的宽度
〔机对器T0周初期始数化〕编。程其方法如下图: GATE=1. ① T0从0开场计数
T0停顿计数 ④ 读T0的值。 INTXX
程序: ORG 4000H MOV TMOD,#09H
; T0 初始化 ; T0任务于方式1, 定时,
300Ω
P1.7
定时器计数器工作原理
定时器计数器工作原理
定时器计数器工作原理是利用双色LED分别显示计数值的方法,实时记录时间。
定时器计数器通常由一个时钟信号源和一个计数寄存器组成。
首先,时钟信号源提供完整的周期性时钟信号,如晶振或外部脉冲源。
该信号被传输到计数寄存器中,开始计数。
计数寄存器是一个二进制寄存器,能够计数时钟信号的脉冲次数。
当计时器启动时,计数寄存器开始从初始值开始计数,然后每接收到一个时钟信号,计数值就会加一。
计数器通过一个高速时钟信号和一个除频器来控制计数频率。
除频器可以通过设置不同的分频比来改变计数频率,从而实现不同的计时精度。
双色LED用来显示计时值。
例如,一个红色LED用于表示小时位,一个绿色LED用于表示分钟位。
当计数器的值递增到下一个单位时,相应的LED会亮起,显示出当前的计数值。
通过以上步骤循环执行,定时器计数器可以实时记录时间,并在LED上显示出来。
这种设计简单、可靠,广泛应用于计时器、时钟等各种设备中。
定时与应用
第六章 单片机的定时/计数器
例2:编写一段具有两级循环的延时程序程序。
50ms延时,设晶振频率为12MHz,则机器周期为1us。
DEL: DEL1: MOV R7,#200 MOV R6,#123 NOP DJNZ R6,$ ;1us ;1us ;1us ;2us
DJNZ R7,DEL1
RET
;2us
第六章 单片机的定时/计数器
第6章 定时器/计数器及应用
89C51系列单片机内有两个可编程的定时器/计数器T0和T1;
89C51系列中除这两个定时器外,还有一个定时器/计数器T2 一、 计算机定时方法概述 1) 软件定时
原理:软件定时靠执行一个循环程序进行时间延迟。
特点:时间精确,且不需要外加硬件电路。但要占用CPU, 增加CPU开销,
• 方式开关向上拨,输入脉冲信号是对时钟振荡周期再做12分频;
第六章 单片机的定时/计数器
说明:当设置为计数工作方式时 CPU在每个机器周期的S5P2期间采样T0和T1引脚的
输入电平,若前一个机器周期采样值为1,后一个机器周期
采样值为0,计数器的计数值加1。因此,检测一个从1到0的 负跳变需要2个机器周期,即24个振荡周期,故最高计数频 率为晶振频率fOSC的24分频。 为了确保某个给定电平在变化前至少被采样一次,要 求高电平(或低电平)保持时间至少为1个完整的机器周期。
定时器/计数器T0工作方式2的结构图
第六章 单片机的定时/计数器
注:当计数溢出后,不是像前两种工作方式那样通过软件方法,而是 由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为 硬件加载。
第六章 单片机的定时/计数器
例3: 使用定时器0以工作方式2产生100 s定时,在
单片机定时计数器原理
单片机定时计数器原理
单片机定时计数器原理是通过利用单片机内部的定时/计数器
模块来实现定时功能。
具体原理如下:
1. 单片机内部定时/计数器模块:单片机内部集成了一个或多
个定时/计数器模块,该模块由寄存器、时钟源和控制电路组成。
2. 寄存器设置:通过对寄存器的设置,可以选择计数器的工作模式、时钟源和计数值。
3. 时钟源选择:单片机提供多种时钟源,如外部晶体振荡器、内部时钟振荡器等。
根据具体应用的需求,选择合适的时钟源。
4. 工作模式选择:单片机提供多种工作模式,如定时模式、计数模式等。
根据具体应用的需求,选择合适的工作模式。
5. 计数值设置:可以通过对寄存器的设置,来确定计数器的计数值。
计数值的大小决定了定时的时间长度。
6. 中断触发:当计数器达到设定的计数值时,会自动触发定时中断信号。
通过中断服务程序,可以实现相应的定时功能。
7. 中断处理:定时中断触发后,单片机会跳转到中断服务程序,执行相应的操作。
如更新显示屏、控制外部设备等。
通过以上原理,单片机定时计数器可以实现各种定时任务,如
延时、定时触发事件等。
通过合理设置寄存器的值和选择合适的工作模式,可以满足不同应用场景的需求。
02-定时计数器的工作方式课件
单 片 机 的 定 时 / 计 数 器-定时/计数器工作方式12TLx THx (低8位) (高8位)TvFx 申请中断Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制 =1开关接通或门与门振荡器定时模式▼ TLx计满溢出则向THx进位,THx计数溢出则把TCON中的溢出标志位TFx置“1”。
工作方式1:16位的定时/计数器(TLx为低8位,THx为高8位)定时器模式下计数初值的计算▼计数初值 = 最大计数值(216=65536) - 需要计的脉冲数计数初值的计算:12TLx THx (低8位) (高8位)TvFx 申请中断Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制 =1开关接通或门与门振荡器计数模式工作方式1:16位的定时/计数器(TLx为低8位,THx为高8位)开始是否采用中断方式?开中断EA=1,ETx=1计算初值高8位送THx,低8位送TLxY写TMOD选择工作方式N 启动定时器TRx=1返回方式1初始化流程方式1应用实例用T1产生一个50Hz的对称方波,由P2.0输出,采用中断和程序查询两种方式实现。
假设晶振频率f osc =12MHz。
分析▼方波周期T=1/50=0.02s=20ms,用T1定时10ms,即每10ms,P2.0取反一次,即可输出频率为50Hz的方波。
▼晶振频率为12MHz,采用定时器方式1时,最大定时时间为65.536ms,10ms<65.536ms,可以用方式1实现。
▼计数初值为:机器周期为1µs,定10ms需要计10ms/1µs=10000个机器周期。
计数初值X1=216-10000=65536-10000=55536 即TH1=55536/256,TL1=55536%256。
▼定时器T1每溢出一次,需要重新装一次初值。
中断方式编程#include "at89x51.h"void main(void){TMOD=0x10;//将T1设置为方式1TH1=55536/256; //装入计数初值TL1=55536%256;ET1=1;//开T1中断EA=1;//开总中断TR1=1; //启动定时器while(1); //等待10ms时间到}void intt1(void) interrupt 3 //T1中断服务函数{TH1=55536/256;//重新装入计数初值TL1=55536%256;P2_0=~P2_0;//P2.0取反}查询方式编程#include "at89x51.h"void main( ){TMOD=0x10; //将T1设置为方式1TR1=1;//启动定时器while(1){TH1=55536/256; //装入计数初值TL1=55536%256;while(!TF1); //等待TF1溢出P2_0=~P2_0; //P2.0取反TF1=0;//软件清TF1标志位 }}20ms10ms 仿真运行效果振荡器÷12TLx (8位)TFx申请中断Tx端TRx位GATE位INTx端≥1&C/T=0C/T=1控制 =1开关接通或门与门THx (8位)▼ 8位定时/计数器,TLx为计数单元;▼可自动重装载计数初值(TLx溢出后, THx→TLx,初始化时, THx和TLx赋相同的初值);▼晶振为12MHz时,最大定时时间为:(28-0)* 1μs =256μs。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由M1、M0决定的定时/计数器的工作方式
M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 13位定时/计数器 16位定时/计数器 具有自动重装入的8位定时/计数器 定时器0(T0)分为2个独立的8位定时器, T1在方式3时停止工作 说明
举例:设置T1为16位的计数器对外部脉冲计数,T1启动不受 外部中断影响。则 MOV TMOD,#50H;(0101 0000B)
•
对外部脉冲进行计数,计数值根据要求确定。X:初值,N: 计数器位数,则 N
X 2 计数值
2
定时器/计数器的4种工作方式
SFR: 定时器方式寄存器TMOD
TMOD用于定义工作方式以及操作方式。其格式为:
高位 TMOD
GATE C/T M1 M0 GATE C/T M1
低位
M0
定时/计数器1
计数状态: X=M-计数值
定时状态: X=M-定时时间/Tcy 而 Tcy=12÷
•
每一种工作方式对应的最大计数值:
方式0 方式1 方式2 13位计数器 16位计数器 8位计数器
方式3
•
8位计数器
213 8192 216 65536 28 256 28 256
定时初值: 对机器周期进行计数。T:定时时间,X:初值,N:计数 器位数,f osc:系统时钟(晶振)频率,则: 12 N (2 X ) T f osc X 2N fosc /12 T 计数初值:
余码均计入高 8 位TH0 的初值, 则 T0
TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1
补充: 定时器/计数器应用举例
补充: 定时器/计数器应用举例
一、 方式 0 例 1 利用定时器T0产生1ms定时,并使P1.0输出周期为 2 ms的方波, 设单片机晶振频率为 6 MHz。 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 定时 1 ms的初值: 因为 机器周期=12÷6 MHz= 2 μs
定时/计数器0
TMOD的高4位控制定时/计数器1,低4位控制定时/计数0。
其中M1、M0定义定时/计数器的工作方式。
1)方式0 (13位计数器)
Timer
1 0 1 1 0 1 0 0 1
Count
1
当M1、M0位置成00时,工作方式为方式0,由图这时定时/计数器的加 1计数器为13位,即TL的低5位和TH的8位。 计数脉冲源由TMOD的C/T位来决定。TL和TH的计数值由全“1”变为 全“0”时,TCON的中断溢出标志位TF置位,定时/计数器向CPU申请中 断。允许计数脉冲输入的条件是:TR0/1=1且GATE=0或/INT01=1,这些 均由软件设置。
(1)T1工作在方式0
(2)T1工作在方式1
振荡器
1/12
C/T=0 C/T=1
TL1 TH1 (8位) (8位)
串行口
T1(P3.5)
(3)T1工作在方式2
(3) 定时/计数器的初始化
由于定时/计数器是可编程的,因此在进行定时或计数之前要把程 序进行初始化。初始化一般包括以下几个步骤: S1.确定工作方式—TMOD寄存器赋值。 S2.置定时/计数器的初值—直接将初值写入寄存器TH0、TL0和 TH1、TL1。 S3.根据需要,开放中断—对寄存器IE置初值。 S4.启动—使TCON寄存器中的TR1或TR0置位,置位后,加1计 数器按规定的工作方式和初值开始计数。 初值N的计算可以通过下式求得: 计数方式:N=M-计数值 定时方式时:N=M-定时值×(fosc/12)。 其中:M为加1计数器的最大值(在不同的工作方式中,M可以为 213、216或28),fosc为振荡器频率(即主振频率)。
/计数器(而不是用延时程序来获得定时),减轻 了CPU的负担。 (2)定时和计数的本质是一样的。当计数器所 计的脉冲是频率不变的信号时,通过计数值就可以 知道时间长短,这时计数器就成了定时器。
MCS51单片机的定时/计数器资源
有2个(8052有3个)16位的定时/计数器,均为加1计数; 4种工作方式(16位/13位/8位/波特率),由TMOD控 制寄存器中的M1、M0位来控制 两个SFR:TMOD定义工作方式,TCON控制有关功 能 定时器的实质为对MCU片内机器周期计数,而计数器 对芯片外部引脚T0、T1上的脉冲信号个数计数。
4)方式3 (两个独立8位计数器,仅限T0)
TH0、TL0 被拆作于不 同用途
定时 器模 式 独立!
在工作方式3模式下,定时/计数器0被拆成两个独立的8位计数器TL0和 TH0。其中TL0既可以作计数器使用,也可以作为定时器使用,定时/计 数器0的各控制位和引脚信号全归它使用。其功能和操作与方式0或方式 1完全相同。 TH0就没有那么多“资源”可利用了,只能作为简单的内部定时器使用, 而且由于定时/计数器0的控制位已被TL0占用,因此只能借用定时/计数 器1的控制位TR1和TF1,也就是以计数溢出去置位TF1,TR1则负责控 制TH0定时的启动和停止。 由于TL0既能作定时器也能作计数器使用,而TH0只能作定时器使用而 不能作计数器使用,因此在方式3模式下,定时/计数器0可以构成二个 定时器或者一个定时器和一个计数器。 T0工作于方式3时,T1的工作方式就不可避免受到一定的限制,因为自 己的一些控制位已被定时/计数器0借用,只能工作在方式0、方式1或方 式2下,不同的是定时/计数器1不能使用溢出标志和中断!
单片机与控制技术
电气学院:王欣
第6章:MCS-51的定时器/计数器
RE:
硬件编程结构及引脚[已介绍] CPU主要部件与特殊功能寄存器(SFR)[已介绍] 片内外存储器的组织结构和编址[已介绍] 并行I/O口[已介绍] 中断及中断系统[已介绍] 定时/计数器(外设) 【本次课内容!】 串行口(外设)
工作方式2就针对这个问题而设置,它具有自动重装载功能,即自 动加载计数初值,所以也称为自动重加载工作方式。 在这种工作方式中,16位计数器分为两部分,即以TL0为计数器, 以TH0作为预置寄存器,初始化时把计数初值分别加载至TL0和 TH0中,当计数溢出时,不再象方式0和方式1那样需要“人工干 预”,由软件重新赋值,而是由预置寄存器TH以硬件方法自动给 计数器TL0重新加载。
如果设置T1工作在方式3,则T1停止工作,相当于其他方式时令TR1=0。
T0工作在方式3下T1的各种工作方式 一般情况下,当T1用作串行口的波特率发生器 时, T0才工作在方式3。 T0处于方式3时, T1可定为方式0、方式1和方 式2,用来作为串行口的波特率发生器,或不 需要中断的场合。
定时/计数器的工作原理
定时 / 计数器中的核心部件为可预置初值计数器。预 置初值后开始计数,直至计数值归0或产生溢出,可申请 中断。 计数器有加 1 计数或减1计数两种形式。
内部时钟脉冲 (定时) 外部输入脉冲 K2 计数脉冲 可预置初值计数器 溢出信号 中断 请求
K1
(计数)
功能
选择
启动 控制
计数初值
说明: ①当用作定时器功能时,加1计数器每经过一个机器周 期的时间加1 ,所以定时器可看作计算机器周期的计数器。 由于每个机器周期包含12个振荡信号周期,所以加1计数 器的计数脉冲频率为振荡器信号的1/12,当振荡器频率为 6MHz时计数脉冲的最高频率为500KHz,或周期为2µs。
②当用作计数器功能时,加1计数器的计数脉冲取自外 部输入引脚T0、T1(8052还有T2),只要这些引脚上有 一个从“1”到“0”的负跳变,加1计数器就加1。CPU在每 个机器周期对外部输入状态进行采样。计数器加1的执行 是在检测到跳变后的那个机器周期时刻。由于需要两个机 器周期(24个振荡信号周期)来识别一个从“1”到“0”的 负跳变,所以最大计数速率为振荡信号频率的1/24。显而 易见,为了保障外部输入状态在改变之前至少采样一次, 因此,信号必须至少保持一个完整的机器周期。
所以 1 ms内T0 需要计数N次: N= 1 ms÷2 μs = 500
补充: 定时器/计数器应用举例
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为
X=M-N=8 192-500=7 692=1E0CH
但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其
1
定时/计数器的结构
T1
T0
TF1
TF0
设定4种工作状态
图6-1 MCS-51定时器/计数器逻辑结构框图
51系列单片机中有两个特殊功能寄存器(TMOD/TCON),用于 定义定时/计数器的工作方式和控制定时/计数器的有关功能.
1)定时器方式寄存器TMOD(只能按字节地址访问!) TMOD用于定义工作方式以及操作方式。其格式为:
2)方式1 (16位计数器)
方式1和方式0的工作原理基本相同,唯一不同是T0和T1工作 在方式1时是16位的计数/定时器 方式1时的计数长度M是2的16次方。16位的初值直接拆成高 低字节,分别送入THx和TLx即可。
3)方式2 (8位计数器,初始值自动重装)
作为计数器
保存计数初值
工作方式0和工作方式1的最大特点就是计数溢出后,计数器为 全0,因而循环定时或循环计数应用时就存在反复设置初值的问 题,这给程序设计带来许多不便,同时也会影响计时精度。
2)定时器控制寄存器TCON
SETB TR0;启动 定时器0
软件控制
用于外部中断(中 断系统中已介绍)