第05章单片机定时计数器
单片机定时器计数器教学课件
![单片机定时器计数器教学课件](https://img.taocdn.com/s3/m/3b42a74fba68a98271fe910ef12d2af90342a855.png)
单片 机开 发板
如Keil、IAR等,用于编
电
译和烧录程序到单片机
脑
中。
编
用于搭建定时器计数器
程
电路。
软
件
杜
用于编写和调试程序。
邦
线
用于连接单片机引脚和 实验设备。
电阻 、电 容等 电子 元件
实验步骤与操作
5. 实验操作
根据实验要求,操作单片机开发板,观察 定时器计数器的运行状态和输出结果,记 录实验数据。
功能
定时器计数器在单片机中主要实 现定时、计数、产生中断等功能 ,是单片机应用中不可或缺的模 块。
工作原理
工作方式
定时器计数器通常采用计数或计时的 方式工作,通过内部或外部信号的输 入进行计数或计时。
工作流程
定时器计数器接收到启动信号后开始 工作,当计数值达到预设值时,产生 相应的中断或输出信号。
自动化控制
在生产线中,单片机定时器计数 器可以用于控制机械臂的运动、 物料传送等,实现自动化生产。
精确计时
在工业控制中,单片机定时器计数 器可以用于精确计时,如控制设备 的运行时间、报警触发等。
数据采集
单片机定时器计数器可以用于采集 生产过程中的各种数据,如温度、 压力、流量等,为生产管理提供数 据支持。
单片机定时器计数器教学课件
contents
目录
• 单片机定时器计数器概述 • 单片机定时器计数器的应用 • 单片机定时器计数器的编程 • 单片机定时器计数器的实验 • 单片机定时器计数器的案例分析
01
单片机定时器计数器概述
定义与功能
定义
单片机定时器计数器是一种用于 产生时间间隔或计数的硬件设备 ,常用于控制和测量时间。
单片机 第五章2 单片机的定时器计数器
![单片机 第五章2 单片机的定时器计数器](https://img.taocdn.com/s3/m/eec662322af90242a895e5ed.png)
若晶振频率为6MHz,1个机器周期为1/6 x 10-6 x12=2μs 则最小定时时间为:[213 –(213 -1)]x2μs=2μs 最大定时时间为:[213 –0] x2μs=16384μs =16.384ms
2、 方式1 (T1,T0) 当M1M0两位为 01时,定时 /计数器被选为工作方式 1,16位计数器,其逻辑结构 如图 所示。
8FH TCON TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
TF1(TCON.7, 8FH位)----定时器T1中断请求溢出标志位。 TF0(TCON.5, 8DH位)----定时器T0中断请求溢出标志位。 TR1(TCON.6, 8EH位)----T1运行控制位。 0:关闭T1;1:启动T1运行。只由软件置位或清零。 TR0(TCON.4, 8CH位)----T0运行控制位。 0:关闭T0;1:启动T0运行。只由软件置位或清零。
1、 方式0 (T1,T0)
当 M1M0两位为 00时,定时 /计数器被选为工作方式 0, 13位计数器,其逻辑结 构如图所示。
振荡器 ÷12 C/ T = 0 TL0 低5位 C/ T = 1 控制 T0 端 TR0 GATE INT0 端 TH0 高8 位 TF0 中断
+
在方式0下,计数工作方式时,计数值的范围是: 1~8192(213 ) 定时工作方式时,定时时间的计算公式为: (213一计数初值)×晶振周期×12 或(213一计数初值)×机器周期
例4:用定时器l 以工作方式2计数,每计100次进行累计器加1操作.
(1)计算计数初值. 28—100=156D=9CH TH1=9CH,TL1=9CH TMOD寄存器初始化:MlM0=10,C/T=1,GATE=0 因此 TMOD=60H (2)程序设计序设计
第05章 MCS-51单片机的中断与定时(1-4)
![第05章 MCS-51单片机的中断与定时(1-4)](https://img.taocdn.com/s3/m/fb1c71d76f1aff00bed51e1f.png)
2
1
TH0
;P1.0输出“0” ;P1.0输出“1”
5.2 MCS-51单片机的中断系统
五、外中断应用举例
1. 中断初始化程序
设置外中断源的触发方式 设置中断允许寄存器IE 设置中断优先级寄存器IP
2. 中断服务程序
保护现场 中断处理 恢复现场
23/65
5.2 MCS-51单片机的中断系统
【例5-3】 设外部中断0为下降沿触发方 式,高优先级,试编写中断初始化程序
5.2 MCS-51单片机的中断系统
【例5-4】 将单脉冲接到外中断0(INT0)引脚,利 用P1.0作为输出,经反相器接发光二极管。编写程 序,每按动一次按钮,产生一个外中断信号,使发 光二极管的状态发生变化,由亮变暗,或反之
P1.0 单脉冲 发生器 INT0
1
+5V
8031
26/65
5.2 MCS-51单片机的中断系统
串口:0023H
20/65
5.2 MCS-51单片机的中断系统
四、中断请求的撤除
1.定时/计数器中断请求标志TF0/TF1会自动撤除 2.串行口中断请求标志TI/RI要用指令撤除
CLR TI ;清TI标志位 CLR RI ;清RI标志位
3.负脉冲触发的外中断请求标志IE0/IE1会自动撤除 4.低电平触发的外中断请求信号需要外加电路撤除
下次课前请预习5.3节
30/65
5.3 51单片机的定时器/计数器
MCS-51单片机内部有两个16位定时/计数器 T0和T1,简称定时器0和定时器1
在特殊功能寄存器TMOD和TCON的控制下, 它们既可以设定成定时器使用,也可以设定 成计数器使用
定时/计数器有4种工作方式,具有中断功能, 可以完成定时、计数、脉冲输出等任务
单片机——定时计数器
![单片机——定时计数器](https://img.taocdn.com/s3/m/a6dec14ba200a6c30c22590102020740bf1ecd5f.png)
程序
软件延时
➢ 定时时间不 够精确
➢ CPU利用率 不高
能否考虑硬
件延时?
定时/计数器
引例
//ledoneflash.c
#include <reg52.h>
sbit LED1=P1^0;
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
定时/计数器的控制方法
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IEx: 外部中断0/1请求标志。 =1 存在中断请求; =0 无中断请求
ITx: 外部中断触发方式选择。 =1 低电平触发; =0 下降沿触发
定时/计数器的工作方式1
工作方式1: 2个16位的定时/计数器 最大计数脉冲个数:65536(216)
TR0 = 1;
//启动T0
分析:确定T0的工作
while(1) { ; } }
方式TMOD、定时
void T0_int( ) interrupt 1 {
初值TH0、TL0
TH0 = 65286 / 256; //重装初值
TL0 = 65286 % 256;
LED1 = !LED1; //LED取反
➢ 将55536(D8F0H)赋给定时器计数器寄存器TH1、 TL1或者TH0、TL0
➢ TH1 = D8H
TL1 = F0H
➢ 或者TH0 = D8H
TL0 = F0H
定时/计数器的控制方法
工作方式
➢ 方式0:2个13位定时/计数器 ➢ 方式1:2个16位定时/计数器T0、T1(常用) ➢ 方式2:2个8位自动重装定时/计数器T0、T1(常用) ➢ 方式3:T0 分为2个8位Timer;T1 此时不工作
第5章AT89S52定时器计数器
![第5章AT89S52定时器计数器](https://img.taocdn.com/s3/m/173c10b50c22590102029db6.png)
图5-2 TMOD格式
8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位的功能。 (1)GATE———门控位。
0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运 行。
1:用外中断引脚( INT0*或 INT1*)上的电平与运行控制 位TRx共同来控制定时器/计数器运行。
9
5
5.1 定时器/计数器的结构 定时器/计数器T1、T0结构如图5-1所示,T0由特殊功能
寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。
图5-1 定时器/计数器T0、T1结构框图
6
具有定时器和计数器2种工作模式,4种工作方式(方式0、 方式1、方式2和方式3)。属于增1计数器。
定时器/计数器T0分为两个独立的8位计数器TL0和TH0, TL0使用T0的状态控制位C/T*、GATE、TR0、TF0 ,而TH0
23
被固定为一个8位定时器(不能作为外部计数模式),并使用 定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断 请求源TF1。 2.T0工作在方式3时T1的各种工作方式
P1.0输出;T2OE=0,禁止定时时钟从P1.0输出。 DCEN(D0):计数方式选择。DCEN=1,T2的计数方式
由P1.1引脚状态决定。P1.1=1,T2减计数,P1.1=0,T2加 计数;DCEN=0,计数方式与P1.1无关,同T1和T0一样,采 用增1计数。
31
2. 特殊功能寄存器T2CON T2的功能选择由特殊功能控制寄存器T2CON来设定,
(2)M1、M0——工作方式选择位 M1、M0共有4种编码,对应于4种工作方式的选择,如
表6-1所示。
10
(3)C/T*—计数器模式和定时器模式选择位 0:为定时器工作模式,对单片机的晶体振荡器12分频后的
单片机定时器计数器
![单片机定时器计数器](https://img.taocdn.com/s3/m/84493dac6394dd88d0d233d4b14e852458fb39b3.png)
定时器计数器的编程步骤
确定单片机型号和开发环境
根据项目需求选择合适的单片机型号和开发 环境。
编写程序代码
使用编程语言编写程序代码,实现定时器计 数器的功能。
配置定时器计数器
根据需要配置定时器计数器的模式、工作方 式、输入时钟源等参数。
编译和调试
将程序代码编译成可执行文件,并在单片机 上进行调试和测试。
率和周期。
02 单片机定时器计数器的原 理
定时器计数器的原理
定时器计数器是一种用于测量时间间隔的硬件设备,它通过 计数时钟脉冲来计算时间。在单片机中,定时器计数器通常 由一个加法器、一个预分频器、一个计数器和一个控制逻辑 组成。
当定时器计数器的输入时钟脉冲到来时,加法器将计数器的 当前值加1,并将结果存入计数器中。当计数器的值达到预设 的计数值时,定时器计数器就会产生一个中断信号或输出脉 冲信号。
05 单片机定时器计数器的优 化与改进
提高定时器计数器的精度
硬件设计优化
采用高精度的时钟源和计数器,减少计数误差。
软件算法改进
采用更精确的计时算法,如使用高精度计时库或 算法。
校准与补偿
定期对定时器计数器进行校准和补偿,以消除误 差。
优化定时器计数器的响应速度
01
02
03
减少中断延迟
优化中断处理程序,减少 中断响应时间。
1 2 3
自动化生产控制
单片机定时器计数器可以用于自动化生产线的控 制,实现精确的时间间隔控制和计数,提高生产 效率和产品质量。
电机控制
通过单片机定时器计数器,可以精确控制电机的 启动、停止和运行速度,实现电机的高效、稳定 运行。
工业传感器
单片机定时器计数器可以用于工业传感器的时间 基准和计数功能,提高传感器测量的准确性和可 靠性。
单片机课件5MCS-51单片机定时器计数器
![单片机课件5MCS-51单片机定时器计数器](https://img.taocdn.com/s3/m/98840d9377a20029bd64783e0912a21614797f17.png)
定时器的示例代码
基于MCS-51单片机和定时器 计数器,实现控制蜂鸣器的 状态或LED的闪烁频率。
实践演示
控制蜂鸣器的状态
借助定时器计数器,设置蜂鸣器的开关状态以及背 景灯。
控制LED的闪烁频率
基于定时器计数器,利用MCS-51单片机来控制LED 灯的闪烁速率。
总结
1
重要性和应用
定时器计数器是单片机非常重要的组件之一,其应用非常广泛。
5MCS-51单片机定时器计 数器
本课件将介绍单片机中定时器计数器的作用、类型、寄存器、应用以及示例 代码,展现出单片机学习与应用的魅力。
什么是定时器计数器
1 时间的记录器
定时器计数器是一种可编 程的时间计算器,可用于 各种计时和计数任务。
2 核心组件
作为单片机的核心之一, 定时器计数器可以用来控 制其它模块的工作。
3 可编程
可以通过设置定时器的各 个寄存器来控制计时或计 数的周期、频率和模式。
MCS-51单片机的定时器计数器
定时器模块的功能
以MCS-51单片机为例,定时器计数器可以控制脉 冲的发生和周期、计数等。
定时器的类型
MCS-51单片机的定时器分为两种类型:定时器0和 定时器1,每种定时器都具有其特定的应用场景。
2
对单片机的学习和应用的帮助
通过学习单片机和定时器计数器,可以帮助我们更好地理解单片机的工作原理和应用场景。
3
接下来的拓展用,如机器人、智能家居等领域。
定时器的寄存器
MCS-51单片机的定时器计数器有多个寄存器,包 括计数器寄存器、模式寄存器和数据寄存器。
定时器的应用
定时器的使用方法
通过编程初始化各个寄存器, 设置定时器的模式、计数周 期和计数方式等,以达到所 需的计时或计数效果。
单片机计数器,定时器工作原理_
![单片机计数器,定时器工作原理_](https://img.taocdn.com/s3/m/649f5f4e27d3240c8547ef13.png)
模= 1FFFH+1
=2 13
TL0低5位
1
1
1
1
1
1
0
0
X X X 1
1
1
0
0
用指令装入初值: MOV TH0,#0FCH; MOV TL0,#1CH;(xxx用‘0’填入) 方式1 (16位方式): 初值=(-64H)=10000H-64H=FF9CH 用指令装入计数初值: MOV TH0,#0FFH MOV TL0,#9CH
5-24
中断方式 ORG 0000H AJMP MAIN ;单片机复位后从0000H开始执行 ORG 001BH ;T1中断入口 AJMP TIME1 ;转到T1 中断服务程序
ORG 0030H ;主程序 MAIN:MOV A,#01H MOV P1,A ;置初值,第一个LED亮 MOV TMOD,#10H ;T1工作于定时方式1 MOV TH1,#3CH MOV TL1,#0B0H ;定时100ms SETB EA SETB TR1 SETB ET1 WAIT:SJMP WAIT ;中断总允许 ;启动T1工作 ;允许T1中断 ;等待中断
这种情况下,T1仍可工作于方式0、1、2,但不能使用中 断方式。 只有将T1用做串行口的波特率发生器时,T0才工作在方式 3,以便增加一个定时器。
5-16
4、方式3 M1M0=11
1/12fosc
K °
仅适用于T0
定时/计数器0(方式3):2个8位计数器。
振荡源 ÷ 12 C/ T=0 ° S ° C/ T=1 ≥1 °
5-22
分析 : 利用T1完成100ms的定时,当P1口线输出‘1’时, 发光二极管亮,每隔100ms,‘1’左移一次。
《单片机原理及应用》第5章 定时器及应用
![《单片机原理及应用》第5章 定时器及应用](https://img.taocdn.com/s3/m/f70b80e2172ded630b1cb6d0.png)
计数工作方式
通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数。 当输入脉冲信号产生由1至0的下降沿时定时器的值加1。 CPU检测一个1至0的跳变需要两个机器周期,故最高计 数频率为振荡频率的1/24。 为了确保某个电平在变化之前被采样一次,要求电平保持 时间至少是一个完整的机器周期。 对输入脉冲信号的基本要求如图5-2所示。
外部事件
计数电路 时间单位脉冲 单片机 计数完成信号
5.2 89C51定时器概述
• 89C51有两个16位的定时器/计数器,即定时器0(T0)和 定时器1(T1)。它们实际上都是16位加1计数器。 • T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1 和TL1构成。
• 每个定时器都可由软件设置为定时工作方式或计数工作方
• 例:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个 500μs的同步脉冲。请编程序实现该功能。查询方式, fosc=6MHz。
解:(1)模式选择 选T0为模式2,外部事件计数方式。当P3.4引脚上的电平发生 负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为 500μs定时工作方式,并使P1.0输出由1变为0。T0定时到产生 溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。
T0的低5位:01100B=0CH即(TL0)=0CH T0的高8位:11110000B=F0H即(TH0)=F0H
(2)计算最大定时时间T
T0的最大定时时间对应于初值为0. 则:T=213×1/6 × 10-6×12=16.384ms
例2:利用T0的工作模式0产生1ms定时,在P1.0引脚输出 周期为2ms的方波。设单片机晶振频率fosc=12MHz。编 程实现其功能。 解:要在P1.0引脚输出周期为2ms的方波,只要使P1.0每隔 1ms取反一次即可。 (1)选择工作模式 T0的模式字为TMOD=00H,即 M1M0=00,C/T=0,GATE=0,其余位为0。 (2)计算1ms定时时T0的初值
C51单片机课件 5第五章顺序控制系统
![C51单片机课件 5第五章顺序控制系统](https://img.taocdn.com/s3/m/1e3f4766b84ae45c3b358c37.png)
5.2 89C51单片机定时器/计数器
2、中断方式参考源程序:
#include <reg51.h>
sbit P1_0=P1^0; void timer0( ) interrupt 1
{ TH0=0x15;
TL0=0xa0; P1_0=~P1_0; }
void main ( void ) { P1=0xff; TMOD=0X01; TH0=0x15; TL0=0xa0; TR0=1; EA=1; ET0=1; While (1); }
六、顺序控制系统所涉及的知识点
(1)定时/计数器的概念。 (2)89C51单片机中定时/计数器的应用。 (3)C51定时/计数器中断服务程序的设计与应用。
5.2 89C51单片机定时器/计数器
定时和计数功能最终都是通过计数实现的,若计数的事件源是
周期固定的脉冲,则可以实现定时功能,否则只能实现计数功 能。因此可以将定时和计数功能由一个部件实现。
图5-4 定时器/计数器结构框图
5.2 89C51单片机定时器/计数器
2、计数方式:外部输入信号的下降沿触发计数,计数器 在每个时钟周期或时钟周期的12分频采样外部输入信号, 若一个周期的采样值为1,下一个周期的采样值为0,则 计数器加1,故识别一个从1到0的跳变需2个周期,所以,
单片机对外部输入信号最高的计数速率是时钟频率的
实现定时和计数的方法一般有软件、专用硬件电路和可编程定
时器/计数器三种方法。
采用软件只能定时,且占用CPU时间,降低了CPU的使用效率。
专用硬件电路可实现精确的定时和计数,但参数调节不便。
可编程定时器/计数器,不占用CPU时间,能与CPU并行工作, 实现精确的定时和计数,又可以通过编程设置其工作方式和 其它参数,因此使用方便。
第5章 定时器计数器2(1)
![第5章 定时器计数器2(1)](https://img.taocdn.com/s3/m/d01b2079c1c708a1294a442e.png)
2、模式1模式1(M1M0=01)除了使用了THn和TLn全部16位外,其它与模式0相同。
(1)计数工作方式由于定时器/计数器以加1方式计数,假定计数值为X,则应装入定时器/计数器的初值为:初值=216-计数值【216=初值+计数值】所以方式1的计数值围是:1~65536(216=65536),最大值为:65536(2)定时工作方式定时时间t的计算公式为:【t的时间单位为微秒(µs)】计数值=216-初值定时时间t=计数值×机器周期=(216-初值)×(1/晶体振荡频率)×12在模式1下的情况下,如果fosc=12MHz,最大定时时间为:t=(65536-初值)×(1/12)×12=65536-0=65.536ms在模式1下的情况下,如果fosc=6MHz,最大定时时间为:t=(65536-初值)×(1/6)×12=(65536-0)×2=131.072 ms。
【例如】:若晶体振荡为12MHz,要定时2.5ms,计算初值。
要定时2.5ms,也可以用模式1。
2500=(216-初值)×(1/12)×12初值=65536-2500=63036=32768+16384+8192+4096+1024+512+32+16+8+4=1111 0110 0011 1100――> THn =0xF6 和 TLn=0x3C在fosc=12MHz时,如果定时时间大于65.536ms,这时用一个定时/计数器直接处理不能实现,这时可用:1、2个定时/计数器共同处理;2、1个定时/计数器配合软件计数方式处理。
3、模式2方式0和方式1的最大特点是计数溢出后,计数器为全0。
因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。
这不仅影响定时精度,也给程序设计带来麻烦。
方式2就是针对此问题而设置的。
该方式可省去用户软件中重装初值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定定时时间。
第5章 定时计数器
![第5章 定时计数器](https://img.taocdn.com/s3/m/4123cbc28bd63186bcebbceb.png)
图4-11 定时/计数器T0方式0的逻辑结构示意图
2. 方式1 当M1M0=01时,定时/计数器工作于方式1。方式1的计 数位数是16位,由TL0作为低8位,TH0作为高8位共同构 成。其余操作同方式0。
2.定时/计数器控制寄存器TCON TCON的低4位用于控制外部中断,高4位用于控 制定时/计数器的启动和中断申请。 TF0(或TF1)
当计数溢出时,TF0(或TF1)会自动由0变1, 告诉我们计数已满,我们可以通过查询TF0(或TF1) 位的状态来判断计时时间是否已到;
如果采用定时中断方式,则 由0变1时,能自动引发中断。 TF0(或TF1)
16位定时/计数器的计数容量是65536
假设计满一小时需要100,000,000 滴,这称为水钟的计数容量
(2)定时 单片机内部的计数器用作定时器时,是对标准的 时钟进行了计数,每来一个时钟脉冲,计数器加1, 计数器如何能作为定时 只要保证计数脉冲的间隔相等,则计数值就代表了 器使用呢? 时间的流逝。 单片机中的定时器和计数器其实是一个器件: 计数器:是对外部发生的事件进行计数, 定时器:是对单片机内部的标准时钟脉冲进行 计数。
TR0(或TR1) 由图4-11 可知,只有 当TR0(或TR1)为1时,开 关1才能闭合,计数脉冲才 能进入计数器,故TR0(或 TR1)称为运行控制位,可 用指令“SETB TR0(或 TR1)”来置位以启动定时/ 计数器运行;或用指令 “CLR TR0(或TR1)”来关 闭定时/计数器的工作,一 切全靠编程人员控制。
2.初始化程序:
MOV MOV MOV MOV TMOD,#06H TH0,#0F4H TL0,#0F4H IE ,#00H ;T0作计数器,工作于方式2 ;装入时间常数初值 ;自动重装时间常数 ;用查询方式确定计满12盒? ;自动申请中断
单片机原理第5章定时、计数器PPT课件
![单片机原理第5章定时、计数器PPT课件](https://img.taocdn.com/s3/m/0991770bce2f0066f4332263.png)
溢 出
启动
工T作H0
方式
TCON
1
中断
表示计数器计满, 并向CPU申请中断
TMOD
5.1 定时器的结构及工作原理
4、计数模式 对外部每1个脉冲计数
(P3.4)
时钟 ÷12
振荡
C P U
因CPU在S5P2采样 到高电平后,在下1个 S3P1期间装入计数器,
故计数频率为振荡频率 1 的1/24 。
T0
TF1 TR1 TF0
1 TR0
IE1 IT1 IE0 IT0
1
EA
其它状态设置与方式0同 T0(P3.2)
TL0
1
11 11 11 11
11 11 11 11
TH0
M1=1,M0=0 时,工作在模 式2方式。
1
0
&
1
≥1
10
1 INT0(P3.4)
0 0 01 0
ES ET1 EX1 ET0 EX0
其它状态设置与方式0同
T0(P3.2)
TF1 TR1
1 TF0 1 TR0
IE1 IT1 IE0 IT0
TL0
1
1 111 11 11
11 11 11 11 1
0
TH0
&
11
M1=0,M0=1 时,工作在模 式1方式。
≥1
10
1 INT0(P3.4)
1
0 0 01 0
EA
ES ET1 EX1 ET0 EX0
TL0
10110101
01001010
溢 出
启动
工T作H0
方式
TCON
1
中断
表示计数器计满, 并向CPU申请中断
第5章 MCS-51单片单片机内部 定时器计数器
![第5章 MCS-51单片单片机内部 定时器计数器](https://img.taocdn.com/s3/m/ea6d3b1dde80d4d8d15a4f59.png)
LOOP:
例:由P1.0输出方波信号,周 期为2ms,设fosc=12MHz。 (中断方式)
2ms
解:每隔1ms改变一次P1.0的输出状态,即形成方波, 用T0非门控方式1定时。 计算时间常数:X = 216 - t/T = 216 –(1/1000)/10-6 = 65536-1000 = 64536 = FC18H
3 工作模式2 • 模式2把TL0(或TL1)设置成一个可以自动重 装载的8位定时器/计数器 。 用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(晶振12MHz时 T=1s): 256s 自动恢复初值8位定时/计数器。TLx为8位加1计 数器,THx为8位初值暂存器。
复位时,TMOD所有位均置0。 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#0D2H ; 1101 0010 B
定时器控制寄存器TCON除可字节寻址外,各 位还可以位寻址。
位地址 位符号 8FH TF1 8EH 8DH 8CH TR1 TF0 TR0 8BH IE1 8AH 89H 88H IT1 IE0 IT0
解得:T0初值=7096=11011101 11000B,其中将高8位 11011101 B=DDH 赋给 TH0 ,低 5 位 11000B=18H 赋 给 TL0。
方法一:
采用查询工作方式,编程如下:
ORG AJMP 0000H MAIN
LOOP:JNB TF0,$;$为当前指令指 针地址 CLR SETB CLR MOV MOV TF0 P1.0 P1.0 TH0 , #0DDH ;重装载 ;产生2µ s正脉冲
ORG AJMP ORG AJMP ORG MAIN:MOV MOV MOV SETB SETB SETB HERE:SJMP PT0INT:MOV MOV CPL RETI
第05章单片机定时计数器习题解答.
![第05章单片机定时计数器习题解答.](https://img.taocdn.com/s3/m/b9a3641b4b7302768e9951e79b89680203d86b3a.png)
第05章 单片机定时计数器 习题解答一、 填空题1.1. MCS-51单片机中有单片机中有 2 2 个 16 16 位的定时器位的定时器//计数器。
器。
2.2. 定时器定时器//计数器T0可以工作于方式可以工作于方式 0、1、2、3 3 。
3.3. 方式0为 13 位定时器位定时器//计数器。
计数器。
4.4. 若系统晶振频率为12MHz ,则T0工作于定时方式1时最多可以定时 65536 65536 µs。
µs。
5.5. 欲对300个外部事件计数,可以选用定时器个外部事件计数,可以选用定时器//计数器T1的模式的模式 0 0 或模或模式 1 。
6.6. TMOD 中的M1M0= 11时,定时器工作于方式时,定时器工作于方式 3 3。
7.7. 若系统晶振频率为6MHz 6MHz,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为,则定时器可以实现的最小定时时间为 2 2 µs。
8.8. MCS-51单片机工作于定时状态时,计数脉冲来自单片机内部的机器周期 。
9.9. MCS-51单片机工作于计数状态时,计数脉冲来自单片机工作于计数状态时,计数脉冲来自 单片机外部事件单片机外部事件单片机外部事件 。
10.10. 当GATE=0时,时, 则当软件控制位则当软件控制位TR0TR0==1时 启动T0开始工作。
开始工作。
二、 简答题1.1.定时器定时器定时器//计数器T0和T1各有几种工作方式?简述每种工作方式的特点。
如何控制定时器/计数器的工作方式?计数器的工作方式?答:答:T0T0可以工作于方式0,1,2,3;T1可以工作于方式0,1,2方式0:是13位定时位定时//计数器,由TLX 的低5位(位(TLX TLX 的高3位未用)和THX 高8位组成。
成。
方式1:TLX 和THX 组成16位定时位定时//计数器。
计数器。
方式2:方式2为自动重装初值的8位定时位定时//计数器。
第05章 单片机定时计数器 习题解答
![第05章 单片机定时计数器 习题解答](https://img.taocdn.com/s3/m/e2f2a0d2a58da0116c1749e0.png)
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV TMOD,#02H;
SETB ET0
SETB EA
WT: JB SP1,WT;直接寻址位为1转移(按键按下时SP1为0)
MOV P0,A
MOV A,B
MOV DPTR,#TABLE;可以不要
MOVC A,@A+DPTR
MOV P2,A
MOV KEYCNT,#00H
DKN: JNB SP1,$;直接寻址为0转移
LJMP WT
DELY10MS:
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
M1
M0
工作方式
方式说明
0
0
方式0
13位定时/计数器
0
1
方式1
16位定时/计数器
1
0
方式2
具有自动重装初值的8位定时/计数器
1
1
方式3
T0为两个独立的8位计数器,T1为波特率发生器
2.设MCS-51单片机的晶振频率fOSC=6MHz,分别讨论定时器/计数器0在各种工作方式下的最长定时时间。
答:由fosc =6MHz可知,一个机器周期T=2us,由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。
汇编语言参考程序如下:
ORG 0000H;在0000H单元存放转移指令
LJMPMAIN;转移到主程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.工作方式3的应用
【例】假设有一个用户系统中已使用了两个外部中断源, 并 置定时器 T1 于方式 2, 作串行口波特率发生器用, 现要求 再增加一个外部中断源,当有中断时,累加器加1。并由P1.0 口输出一个5KHz的方波(假设晶振频率为 6 MHz)。
思路
在不增加其它硬件开销时,可把定时/计数器 T0置于工作方式3,利用外部引脚T0端作附加 的外部中断输入端,把TL0预置为0FFH,这样 在T0端出现由1至0的负跳变时,TL0溢出,申 请中断,相当于边沿触发的外部中断源。 在方式3下,TH0总是作8位定时器用,可以 靠它来控制由P1.0输出的5kHz方波。由P1.0输 出5kHz的方波,即每隔100μs使P1.0求反一次。 则TH0的初始值: (256-N)×2×10-6=100×10-6 N=206
SETB TR0 HERE: SJMP HERE ORG 0500H LOOP0: CPL RETI END P1.0
C语言参考程序: #
include <reg51.h> //包含特殊功能寄存器库 sbit P1_0=P1^0; //定义P1.0口,程序中用P1_0代替P1.0。 void main() //主函数 { TCON=0x00 //清TCON,定时器中断标志清 零及不允许计数 TMOD=0x02; //设定时器T0工作方式2 TH0=0x9c;TL0=0x9c; //设初值 EA=1;ET0=1; //开中断 TR0=1; //启动计数 while(1); //无限循环,结束主函数 } void time0_int(void) interrupt 1 //中断函数 { P1_0=!P1_0; }
T
= 0 定时方式;C/
T
= 1 计数方式。
M1M0:工作模式选择位。
M1 0 0 1 1 M0 0 1 0 1 工作方 方式说明 式 方式0 方式1 方式2 方式3 13位定时器/计数器 16位定时器/计数器 具有自动重装初值的8位定时器/ 计数器 T0为两个独立的8位计数器,T1 为波特率发生器
1.工作方式寄存器(TMOD
89H)
位
位符号
D7
GATE
D6
C/T
D5
M1
D4
M0
D3
GATE
D2
C/T
D1
M1
D0
M0
←T1方式字段→
←T0方式字段→
GATE:门控位。GATE = 0 启动不受 /INT0或 /INT1的控制;GATE = 1 启动受 /INT0 或 /INT1 的控制。 C/ T : 外部计数器 / 定时器方式选择位。C/
ORG 0000H JMP START ORG 000BH LJMP LOOP0
ORG 0200H
START: MOV TCON,#00H
;停止
MOV TMOD,#02H ;定时器方式2 MOV TH0,#9CH MOV TL0,#9CH SETB SETB EA ET0 ;允许总中断 ;T0中断允许 ;启动T0 ;等待中断 ;中断服务程序 ;计数初值
ORG START: MOV 1000H TCON,#00H ;清TCON,停止定时/计数 ;工作方式设定 ;计数初值设定
MOV TMOD,#00H MOV TH1,#0FBH MOV TL1,#0AH
MOV IE,00H
SETB TR1 LOOP0: JBC TF1,LOOP1 SJMP LOOP0
MOV IE, #9FH SJMP $
ORG 0200H
TL0INT: MOV INC A RETI ORG 0300H
TH0INT: MOV
CPL RETI
外部中断
TL0, #0FFH ;重新设置初值
5KHz方波
TH0,
P1.0
#206
;重新设置初值
END
T1做波特率发生器,设定好后,不需管理
;关中断,用查询方式
;启动TR1 ;查询是否溢出
LOOP1: MOV TH1,#0FBH MOV TL1,#0AH CPL P1.7 SJMP LOOP0 END
;重设初值
;输出取反
C语言参考程序
#
include <reg51.h> //包含特殊功能寄存器库 sbit P1_7=P1^7; //定义P1.7口,程序中用P1_7代替P1.7。 void main() //主函数 { IE=0x00; //关中断 TMOD=0x00; //工作方式设定 TR0=1; //启动定时 for(;;) //无限循环体 { TH1=0xFB;TL1=0x0A; //计数初值设定 do { } while (!TF1) //查询是否溢出,当TF0=1时溢出 来,则跳出do- while循环。 { P1_7=! P1_7; TF1=0;} //溢出,P1.7取反,中断标志TF1 清0。 } }
2.工作方式1 应用
定时计数器的工作方式1与方式0基本相同,区别只 是方式0是13位计数器,而方式1为了16位计数器。 当要求定时时间较长,13位计数器不能满足要求时, 可改用方式1,用16位计数器计数。
【例】设单片机晶振频率fosc=6MHZ,使用 定时器1以方式1产生周期为600μs的等宽方波脉 冲,并由P1.7输出,以查询方式完成。 该题目就是用方式1实现例5-1的功能。原理与 例5-1相似,只需修改工作方ห้องสมุดไป่ตู้和计数初值设置 即可。
第05章 单片机定时计数器
5.1 定时/计数器结构 5.2 定时/计数器工作方式 5.2.1 工作方式0 5.2.2 工作方式1 5.2.3 工作方式2 5.2.4 工作方式3 5.3 定时/计数器应用举例 5.4 全自动洗衣机定时控制Proteus仿真 习 题
5.1 定时/计数器结构
MCS-51单片机定时器/计数器的逻辑结构如图5-1所示。主要由工作方式寄存器 TMOD、控制寄存器TCON和初值寄存器TLX、THX等工作部件组成。
1.工作方式0的应用
【例】设单片机晶振频率fosc=6MHZ,使用定时器1以方式0产生周
期为600μ s的等宽方波脉冲,并由P1.7输出,以查询方式完成。 解:计算计数初值.欲产生周期为600μ s的等宽方波脉冲,只需在 P1.7端以300μ s为周期交替输出高低电平即可,因此定时时间应为 300μ s。设待求计数初值为N,则: (213-N)×2×10-6=300×10-6 N=8042=1F6AH=0001111101101010B 用T1实现。将低5位01010B=0A写入TL1,将高8位有效值 11111011B=FBH写入TH1中。
ORG 0000H LJMP START ORG 000BH ;T0中断 LJMP TL0INT ORG 001BH ;T1中断 LJMP TH0INT ORG 0100H START: MOV TL0, #0FFH ;外部中断源 MOV TH0, #206 ;5KHz方波 MOV TL1, #BAUD MOV TH1, #BAUD MOV TMOD, #27H MOV TCON, #50H ;置T0工作方式3,TL0工作于计数器方式,T1方式2 ; 启动定时器 T0、 T1 ; 开放全部中断 ;BAUD根据波特率要求设置常数
(2)TMOD初始化 为把定时/计数器1设定为方式0,则M1M0=00。为实现定时功能应使 C/T=0,为实现内部定时器启动应使GATE=0,因此设定工作方式控制寄存器 TMOD=00H。 (3)由TR1启动和停止定时器 TR1=1为启动,TR1=0为停止 参考程序如下:
ORG 0000H JMP START
工作在方式2下,计数器的计数值由下式确定:
N=28-X=256-X
计数范围为: 1~256
定时准确
定时器的定时值由下式确定:
T=N*Tcy=(256-X)*Tcy
5.2.4.定时/计数器工作方式3
功能多
当M1,M0=10时,定时/计数器处于工作方式2,此时,定时/及数器的 等效电路如图所示
(1)计算计数初值 欲在P1.7引脚输出周期为600μs的等宽方波脉冲,只需在P1.7端交 替输出300μs的高低电平即可,因此定时时间应为300μs。设计数 初值为N,则: (216-N)×2×10-6=300×10-6 N=8042=1F6AH 将计数初值N的低8位6AH写入TL1;将计数初值N的高8位1FH写 入TH1。 (2)TMOD初始化 题目要求定时器/计数器1为工作方式1,所以M1M0=01;为实现定 时功能应使C/=0;为实现定时器内启动,应使GATE=0。此题目不 涉及定时器/计数器0,为方便起见,设其各控制位均为0。则工作方 式控制寄存器TMOD=10H。 (3)启动和停止控制 因为定时器/计数器1作定时器,故当TR1=1时,启动计数;当 TR1=0时,停止计数。 (4)中断的开放/禁止 题目中要求用查询方式检查T1的计数溢出状态,故设置IE=00H, 以关中断。 请读者自行修改程序。此处不再赘述。
3.工作方式2的应用
【例】使用定时器T0以方式2产生200微秒定时,在P1.0输出周期为400微秒的连续方波。 已知晶振频率fosc=6MHz。 (1)计算计数初值 (256-N)×2×10-6=200×10-6 N=156=9CH (2)TMOD初始化 工作方式2时,M1M0=10,实现定时功能C/T=0,内部启动GATE=0。定时器1不 用,无关位设定为0,可得TMOD=02H。 (3)允许中断 (4)TR0 启动定时 参考程序如下:
C语言参考程序: #
include <reg51.h> //包含特殊功能寄存器库 sbit P1_0=P1^0; //定义P1.0口,程序中用P1_0代替P1.0 void main() //主函数 { TMOD=0x27; //置T0工作方式3,TL0计数器方式;TH0为8位定时器 TL0=0xFF; //送初值,用于外部引脚T0口(P3.4)做新增外部中断 TH0=206; //送定时100μs的初值 TL1=BAUD; //BAUD是根据波特率要求设置的常数 TH1=BAUD; TCON=0x55; //启动定时器 T0、 T1, 置边沿触发 IE=0x9F; //开放全部中断 while(1); //无限循环,结束主函数 } void TL0INT (void) interrupt 1 //中断函数, 处理新增的外部中断源 { TL0=0xFF; // 外部引脚T0引起中断处理程序 } void TH0INT (void) interrupt 3 //中断函数, 处理输出5kHz的方波 { TH0=206; //重送初值 P1_0=!P1_0; //P1.0口取反 }