第七章定时计数器
【大学课件】定时计数器PPT-精品文档

定时时间为:TC=XTu。其中,Tu为单位时间间隔,TC为定时时间。 STC12C5410AD单片机的定时器/计数器0或1是对脉冲进行不断加1 进行计数的,因此,不能直接将实际的计数值作为计数初值送入计数寄 存器THX、TLX中,而必须将实际计数值以28、213、216为模求补,以补 码作为计数初值设置THX和TLX。即应装入计数/定时器的初值为:
$include ORG LJMP ORG LJMP ORG MAIN: MOV MOV MOV SETB SETB SETB HERE: LJMP T0_ISR: MOV RETI END (STC12.INC) ;包含STC12C5410AD单片机寄存器定义文件 0000H MAIN ;转主程序 000BH ;定时器T0中断服务程序入口地址 T0_ISR ;转中断服务程序 0100H ;主程序的存放起始地址 MOV SP,#60H ;给栈指针赋初值 TMOD,#06H ;定时器T0工作于方式2 TL0,#0FFH ;送时间常数 TH0,#0FFH ET0 ;允许T0中断 EA ;CPU开中断 TR0 ;启动T0计数器 HERE ;等待 DEC A ;T0中断服务程序 P1,A ;累加器A内容减1送P1口
13/49
单片机应用技术
【例8-l】 设计利用定时/计数器T0、T1端作为外部中断源输入线进行外部中断源扩充 的程序。 解:为了扩充外部中断源,可以利用定时/计数器工作于计数状态时,T0(P3.4) 或T1(P3.5)引脚上发生负跳变,计数器增1这一特性,把P3.4、P3.5作为外部中断源 请求输入线,使计数器的计数值为-1(即0FFH),则外部T0、T1输入一个脉冲即计数溢 出,从而置位相应的中断请求标志,以此来申请中断,则相当于扩充了一根/INT线。 编程时,将T0置为方式2计数,计数初值0FFH,计数输入端T0(P3.4)发生一次负 跳变,计数器加1并产生溢出标志向CPU申请中断,中断处理程序使累加器A内容减1,送 P1口,然后返回主程序。汇编语言程序清单如下:
单片机原理及接口技术(C51编程)第7章 定时器计数器

图7-14 由外部计数输入信号控制LED的闪烁
(3)设置IE寄存器 本例由于采用T1中断,因此需将IE寄存器的EA、ET1位置1。
(4)启动和停止定时器T1 将寄存器TCON中TR1=1,则启动T1计数;TR1=0,则停止T1计数。
参考程序如下:
#include <reg51.h> void Delay(unsigned int i)
7.4 定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,只是计数位数不同。方
式0为13位,方式1为16位。由于方式0是为兼容MCS-48而设,计数初 值计算复杂,所以在实际应用中,一般不用方式0,常采用方式1。
7.4.1 P1口控制8只LED每0.5s闪亮一次 【例7-1】在AT89S51的P1口上接有8只LED,原理电路见图7-
当TMOD的低2位为11时,T0被选为方式3,各引脚与T0的逻辑关系 见图7-8。
T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位 C/T* 、GATE、TR0 ,而TH0被固定为一个8位定时器(不能作为外部 计数模式),并使用定时器T1的状态控制位TR1,同时占用定时器T1的 中断请求源TF1。
13。采用T0方式1的定时中断方式,使P1口外接的8只LED每0.5s闪亮 一次。
23
图7-13 方式1定时中断控制LED闪亮
24
(1)设置TMOD寄存器 T0工作在方式1,应使TMOD寄存器的M1、M0=01;应设置C/T*=0,为定
时器模式;对T0的运行控制仅由TR0来控制,应使相应的GATE位为0。定时 器T1不使用,各相关位均设为0。所以,TMOD寄存器应初始化为0x01。 (2)计算定时器T0的计数初值
《定时计数器》课件

定时计数器的使用步骤
开启定时计数器
在设置好所需参数后,用户可 以启动定时计数器开始计时。
实时监控
在计时过程中,用户可以通过 显示界面实时查看当前计数值 和计时状态。
停止计时
当达到设定时间或需要停止计 时时,用户可以按下停止按钮 ,计时器将停止工作。
重置
若需重新计时,用户可以将计 数值重置为初始状态,并重新
信号。
触发器
触发器是定时计数器的 重要组成部分,用于控 制计数器的开始和停止
。
计数器
计数器用于记录输入信 号的个数,可以是二进
制或十进制。
输出信号
定时计数器的输出信号 可以是控制信号、状态
信号或脉冲信号。
定时计数器的工作流程
01
02
03
04
启动
当输入信号满足一定条件时, 触发器被触发,计数器开始计
定时计数器的基本原理是利用触发器的翻转时刻来记录时间间隔的起始和结束时刻 。
当输入信号的上升沿或下降沿到来时,触发器翻转,记录下当前时刻,从而计算出 时间间隔。
定时计数器的精度取决于触发器的翻转时刻的准确性,因此需要采用高精度的触发 器。
02
定时计数器的分类
机械式定时计数器
机械式定时计数器是最早的定时计数 器类型,它利用机械原理来实现计时 和计数功能。
现不必要的时间误差。
05
定时计数器的维护与 保养
定时计数器的清洁保养
清洁外壳表面
使用干燥的软布擦拭计数器的外 壳表面,以去除灰尘和污垢。
清洁内部组件
定期打开计数器外壳,使用吸尘器 或干燥的软布清洁内部电路板和元 件。
清洁触点
定期检查并清洁计数器的触点,以 确保良好的接触性能。
定时器与计数器

第7章定时器/计数器MCS-51单片机内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1(8052提供3个,这第三个称定时器T2)。
它们既可用作定时器方式,又可用作计数器方式。
7 . 1定时器/计数器结构定时器/计数器的基本部件是两个8位的计数器(其中TH1,TL1是T1的计数器,TH0,TL0是T0的计数器)拼装而成。
在作定时器使用时,输入的时钟脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器也可看作是对计算机机器周期的计数器(因为每个机器周期包含12个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号)。
故其频率为晶振频率的1/12。
如果晶振频率为12MH Z,则定时器每接收一个输入脉冲的时间为1us。
当它用作对外部事件计数时,接相应的外部输入引脚T0(P3.4)或T1(P3.5)。
在这种情况下,当检测到输入引脚上的电平由高跳变到低时,计数器就加1(它在每个机器周期的S5P2时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,则计数器加1)。
加1操作发生在检测到这种跳变后的一个机器周期中的S3P1,因此需要两个机器周期来识别一个从“1”到“0”的跳变,故最高计数频率为晶振频率的1/24。
这就要求输入信号的电平要在跳变后至少应在一个机器周期内保持不变,以保证在给定的电平再次变化前至少被采样一次。
定时器/计数器有四种工作方式,其工作方式的选择及控制都由两个特殊功能寄存器(TMOD和TCON)的内容来决定。
用指令改变TMOD或TCON的内容后,则在下一条指令的第一个机器周期的S1P1时起作用。
1、定时器的方式寄存器TMOD图7-1 TMOD寄存器各位定义特殊功能寄存器TMOD为定时器的方式控制寄存器,寄存器中每位的定义如图7-1所示。
高4位用于定时器1,低4位用于定时器0。
其中M1,M0用来确定所选的工作方式,如表7-1所示。
①M1 M0 定时器/计数器四种工作方式选择,见表7-1所示。
微机原理与接口技术_第7章8253

§7-1 8253的工作原理 ——8253的内部结构和引脚信号
然后,开始递减计数。即每输入一个时钟脉冲,计数
器的值减1,当计数器的值减为0时,便从OUT引脚输出 一个信号。输出信号的波形主要由工作方式决定,同 时还受到从外部加到GATE引脚上的门控信号控制,它 决定是否允许计数。 当用8253作外部事件计数器时,在CLK脚上所加的计 数脉冲是由外部事件产生的,这些脉冲的间隔可以是 不相等的。 如果要用它作定时器,则CLK引脚上应输入精确的时 钟脉冲。这时,8253所能实现的定时时间,决定于计 数脉冲的频率和计数器的初值,即 定时时间=时钟脉冲周期tc×预臵的计数初值n
16
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 ③引脚 8253的3个计数器都各有3个引脚,它们是:
CLK0~CLK2:计数器0~2的输入时钟脉冲从这里输
入。频率不能大于2MHz。
OUT0~OUT2:计数器0~2的输出端。
GATE0~GATE2:计数器0~2的门控脉冲输入端。
4
第七章 可编程计数器/定时器8253及其应用 ——概述 2. 不可编程的硬件定时 555芯片是一种常用的不可编程器件,加上外接电阻和电 容就能构成定时电路。这种定时电路结构简单,价格 便宜,通过改变电阻或电容值,可以在一定的定时范 围内改变定时时间。但这种电路在硬件已连接好的情 况下,定时时间和范围就不能由程序来控制和改变, 而且定时精度也不高。 3. 可编程的硬件定时 ①可编程定时器/计数器电路利用硬件电路和中断 方法控制定时,定时时间和范围完全由软件来确 定和改变,并由微处理器的时钟信号提供时间基 准,这种时钟信号由晶体振荡器产生,故计时精
12
§7-1 8253的工作原理 ——8253的内部结构和引脚信号 8253输入信号组合的功能表
定时计数器的工作原理

定时计数器的工作原理定时计数器是一种常见的计时器,用于测量时间间隔,控制定时操作或执行循环等。
该计数器具有一定的精度和稳定性,其工作原理及应用场景也非常广泛。
下面我们将为大家介绍定时计数器的工作原理,包括硬件和软件实现。
硬件实现定时计数器通常由一个计数器和一个时钟源组成。
时钟源提供固定的时钟信号,计数器通过计数来测量时间间隔或执行定时操作。
时钟源通常是晶振,可以提供极高的稳定性和精度。
计数器可以是简单的二进制计数器,也可以是复杂的倒计数器和分频器等。
不同类型的计数器可以根据不同的应用场景进行选择。
在定时计数器的设计中,需要考虑到时钟信号的频率和计数器的位数。
时钟信号的频率决定了时间分辨率的大小,而计数器的位数则限制了计数器的最大值。
一个10位二进制计数器可以计数到1023,而一个16位二进制计数器可以计数到65535。
选取合适的时钟频率和计数器位数可以满足不同的应用要求。
定时计数器还可以通过外部信号触发计数器开始计数。
这种触发方式通常称为外部触发或同步触发,可以提高计数器的精度和控制性能。
在测试仪器中,可以通过外部触发控制测试时序,在控制系统中,可以通过外部触发控制执行任务。
在嵌入式系统中,定时计数器通常由软件实现。
软件实现的定时计数器主要依赖于系统时钟和定时中断。
系统时钟提供了一个固定的时钟信号,一般由晶振或外部时钟源提供。
定时中断是一个由硬件实现的中断,可以周期性地触发软件中断服务程序的执行。
定时计数器通过定时中断实现定时操作和时间测量。
每当定时中断发生时,中断服务程序会对定时计数器进行更新,并执行相应的定时操作。
在控制系统中,可以通过定时计数器实现周期性的任务执行,定时采样和控制输出等功能。
在嵌入式系统中,定时计数器还可以用于实现延时等操作。
1. 定时中断的触发频率:定时中断的触发频率决定了定时计数器的分辨率和响应速度。
合理的触发频率可以提高定时计数器的精度和控制性能。
2. 定时计数器的位数:定时计数器的位数决定了定时器的最大值和分辨率。
定时器 计数器的工作原理

定时器计数器的工作原理
定时器和计数器是电子设备中常见的两种功能模块。
它们可以分别完成精确计时和计数的任务。
定时器的工作原理是基于一个稳定的时钟源,通常是晶体振荡器。
时钟源会产生一个固定频率的周期性信号,这个信号频率可以根据系统需求进行调节。
定时器的主要组成部分是一个计数器和一些辅助逻辑电路。
计数器用于记录时钟脉冲的数量,根据计数值和时钟频率可以确定经过的时间。
辅助逻辑电路用于控制计数器的工作方式,例如开始计数、计数暂停、计数清零等。
当定时器启动后,时钟信号会连续地输入计数器。
每个时钟脉冲都会使计数器的计数值加1。
当计数器的计数值达到某个预先设置的目标值时,辅助逻辑电路会触发一个中断信号,以通知系统达到了设定的时间。
计数器的工作原理与定时器相似,但它主要用于计数任务,而不是计时。
计数器通常用于记录输入信号的脉冲数量,可以用来测量运动物体的速度、计算输入信号的频率等。
计数器也是由一个计数器和辅助逻辑电路组成。
计数器记录输入脉冲的数量,辅助逻辑电路用于控制计数器的工作方式,例如开始计数、计数暂停、计数清零等。
当计数器启动后,每个输入脉冲都会使计数器的计数值加1。
当计数器的计数值达到预先设置的目标值时,辅助逻辑电路会触发一个中断信号,通知系统完成了预定的计数任务。
总结起来,定时器和计数器都是基于时钟脉冲的工作,通过计数器记录时钟脉冲的数量来实现计时或计数的功能。
它们在很多电子设备中都有广泛的应用。
定时器计数器工作原理

定时器计数器工作原理
定时器计数器是一种用于计算时间间隔的电子设备。
它通过内部的晶振、分频器和计数器等组件实现精确的计时功能。
工作原理如下:
1. 晶振:定时器计数器内部搭载了一个晶振,晶振的频率非常稳定,一般为固定的几十千赫兹。
2. 分频器:晶振的频率可能非常高,但计数器需要较低的频率进行计数,所以需要一个分频器将晶振的频率降低,得到一个更低的频率作为计数器的输入。
3. 计数器:分频器将得到的较低频率信号送入计数器,计数器会根据信号的脉冲个数来进行计数。
4. 触发器:计数器会将计数结果保存在一个触发器中,可以通过读取这个触发器来获取时间间隔的计数值。
5. 重置:当计数器达到设定的计数值后,会自动重置为初始状态,重新开始计数。
通过以上几个步骤的组合,定时器计数器可以实现精确的时间间隔计算。
可以根据不同的需求设置不同的晶振频率、分频器的分频倍数和触发器的位数,以实现不同精度的计数功能。
定时器计数器广泛应用于各种电子设备中,如计时器、时钟、
定时开关等。
它们都依赖于定时器计数器的准确计时功能,来实现精确的时间控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 控制寄存器TCON(88H)
TF1
T1 请求 有/无
TR1
T1 工作 启/停
P3.4 P1.0
500us
500us
P1.1 计数方式
1ms 定时方式
图7-5
计数方式 (初值FFH)
1ms 定时方式
解 按提意,设计方法如图7-5所示。
初态P1.1输出高电平(系统复位时实现),P1.1输出低电平,T0选方式2计数方式(计一个脉冲,初值为FFH)。当加在 P3.4上的外部脉冲负跳变时,T0加1,计数器溢出,程序查询到TF0为1,改变T0为500s定时工作方式,并使P1.0 输出0,P1.1输出1。T0第一次定时500s溢出后,P1.0恢复1,T0第二次定时500s溢出后,P1.1恢复0,T0恢 复外部脉冲计数。
第七章定时计数器
1
1. 定时工作方式
设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。 每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。 如:当8051采用12MHz晶体时,每个机器周期为1μs,计5 个机器周期即为5 μs,即定时5 μs 。
2. 计数工作方式
方式1(16位方式): C=(-64H)补=10000H-64H=FF9CH
用指令装入计数初值: MOV TH0,#0FFH MOV TL0,#9CH
方式2(8位自动再装入方式) C=(-64H)补=100H-64H=9CH 初值既要装入TH0,也要装入TL0: MOV TH0V TH1,#3CH
MOV TL1,#0B0H ;重装计数初值
RETI
;中断返回
以上程序进入循环执行,八个LED一直循环轮流点亮。
例7-2 在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒周而复始,设fosc=6MHZ。
解: 16位定时最大为
2 *2us=131.072ms,显然1不6能满足要求,可用以下两种方法解决。
t=(216一T0初值) ×时钟周期×12 16寄存器(THx和TLx) 中THx提供高8位、TLx提供低8位计数初值
3. 方式2
当TMOD中M1M0=10时,定时器工作在方式2。 方式2是8位的可自动重装载的定时计数方式。
16位的计数器被拆成两个8位,其中TL0用作8位计数器, TH0用以保持计数初值。当TL0计数溢出,置TF0,TH0 中的初值自动装入TL0,继续计数,循环重复计数。
设定时500s的初始值为X,则:
(256-X)×2×10-6 = 500×10-6
解得 X=6
源程序如下: BEGIN: MOV TMOD,#6H ;
MOV TH0,#0FFH ; MOV TL0,#0FFH CLR P1.1 ; SETB TR0 ; DELL: JBC TF0,RESP1 ; AJMP DELL RESP1: CLR TR0 MOV TMOD,#02H;
MOV TMOD,#10H ;T1工作于定时方式1
MOV TH1,#3CH
MOV TL1,#0B0H ;定时100ms
SETB TR1
;启动T1工作
SETB ET1
;允许T1中断
WAIT:SJMP WAIT
;等待中断
;单片机复位后从0000H开始执行
IV1:RL A
;中断服务程序,左移一位
MOV P1,A
AGAI: JBC TF1,SHI; 100ms到转SHI,并清TF1 SJMP AGAI
SHI: RL A SJMP NEXT
②中断方式 ORG 0000H
AJMP MAIN
ORG 001BH
AJMP IV1
;转移到IV1
ORG 0030H
;主程序
MAIN:MOV A,#01H
MOV P1,A ;置第一个LED亮
7.4.2 定时计数器的初始化编程 定时计数器的初始化编程步骤:
1)根据定时时间要求或计数要求计算计数器初值; 2)工作方式控制字送TMOD寄存器; 3)送计数初值的高八位和低八位到THX和TLX寄存
器中; 4)启动定时(或计数),即将TRX置位。
如果工作于中断方式,需要置位EA(中断总开关)及ETX(允许定时/计数器中断)。并编中断服务程序。
7.4.3 应用编程举例
例7-1 如图7-2所示, P1中接有八个发光二极管,编程使八个管轮流点 亮,每个管亮100ms,设晶振为6MHz。
分析 利用T1完成100ms的定时,当P1口线输出“1” 时,发光二极管亮,每隔100ms”1”左移一次,采用定时方式1,先计算计数初值:
MC= =2μs 100ms/2μs =50000=C350H (C350H)补 =10000H-C350H=3CB0H
MOV R4,#0AH;中断10次计数 SETB TR0 SJMP $ ;等待中断 IP0:DJNZ R4,RET0; MOV R4,#0AH CPL P1.7 RET0:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 RETI
例7-3 有P3.4引脚(T0)输入一低频信号(其小于0.5kHZ),要求P3.4每发生一次负跳变时, P1.0输出一个 500us同步负脉冲,同时P1.1输出一个1ms的同步正脉冲。已知晶振频率为6MHZ。
************* 用汇编语言编程 ***************
①查询方式如下: ORG 0030H MOV A,#01H: 置第一个LED亮
NEXT:MOV P1,A MOV TMOD,#10H ;T1工作于定时方式1 MOV TH1,#3CH MOV TL1,#0B0H; 定时100ms SETB TR1
定时器T1
定时器T0
TMOD (89H)
D7 GATE
D6
D5
D4
C/T
M1
M0
D3 GATE
D2
D1
D0
C/T
M1 M0
GATE:门控信号 GATE=0,TRx=1时即可启动定时器工作 ; GATE=1, TRx=1 INTx=1才可启动定时器工作。
C/T:定时器/计数器选择位 C/T=1,为计数器方式; C/T=0,为定时器方式。
设置为计数工作方式时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。
当输入脉冲信号产生由1至0的下降沿时,定时器的值加1, 在每个机器周期CPU采样T0和T1的输入电平。
若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加 1。
由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。
程序中用JBC指令对定时/计数溢出标志位进行检测,当标志位为1时跳转并清标志。
方法2:T0每隔100ms中断一次,利用软件对T0的中断次数进行计数,中断10次即实现了1秒的定时。 ORG 000BH ;T0中断服务程序入口 AJMP IP0 ORG 0030H ;主程序开始
MAIN:CLR P1.7 ;T0定时100ms MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA
7.4.1 定时器的计数初值C的计算7.和4 装定入时计数器的应用程序设计
计数初值(C)的求法如下。 ★ 计数方式:
计数初值 C=模-X(其中X为要计的脉冲个数) ★定时方式:
计数初值 C=[ t / MC]补=模-t / MC 其中t为欲定时时间,MC为8xx51的机器周MC=12/fosc 当采用12MHZ晶振时,MC=1us; 当采用6MHZ晶振时,MC=2us。
TF0
T0 请求 有/无
TR0
T0 工作 启/停
IE1
INT1 请求 有/无
IT1
INT1 方式 下沿/ 低电平
IE0
INT0 请求 有/无
IT0
INT0 方式 下沿/低电
平
TCON寄存器 中定时器控制 仅用了其中高四位,其意义如下: TF1:T1溢出中断请求标志。 TF1=1,T1有溢出中断请求。 TF1=0,T1无溢出中断请求。 TR1:T1运行控制位。 TR1=1,启动T1工作。 TR1=0,停止T1工作。
定时、计数溢出否可查询TF0是否置位,如果开中断则产生溢出中断。
2 .方式1 当TMOD中M1M0=01时,定时计数器工作在方式1。
该模式是一个16位定时/计数方式。 寄存器TH0和TL0是以全16位参与操作, 计数方式时最大计数 216=65536(个外部脉冲) 用于定时工作方式时,定时时间为:
用于计数工作方式时,最大计数值为: 28=256(个外部脉冲)。
用于定时工作方式时,其定时时间为; t=(28—TH0初值)×振荡周期×12
这种工作方式可省去用户重装常数的程序,并可产生精确的定时时间,特别适用作串行口波待率发生器。
4.方式3
当TMOD中M1M0=11时,定时器工作在方式3。 若将T0设置为模式3,TL0和TH0被分成为两个互相独立的8位计数器TH0和 TL0 。 TL0可工作为定时方式或计数方式。占用原T0的各控制位、引脚和中断源。即C/T、GATE、TR0、TF0和T0 (P3.4)引 脚、INT0 (P3.2)引脚。 TH0只可用作定时功能,占用定时器T1的控制位TR1和T1的中断标志位TF1,其启动和关闭仅受TRl的控制。 定时器T1无模式 3, 可工作于方式0、1、2,但不能使用中断方式。 只有将T1用做串行口的波特率发生器时,T0才工作在方式3,以便增加一个定时器。
TF0:T0溢出中断请求标志。 TF0=1,T0有溢出中断请求。 TF0=0,T0无溢出中断请求。