51系列单片机项目实践 石长华 主编 课件汇总 第9章 定时器计数器

合集下载

51单片机定时器 66页PPT文档

51单片机定时器 66页PPT文档
(2) 当GATE=1时, “与门”的输出信号K由INTx输入 电平和TRx位的状态一起决定(即此时K=TRx·INTx),
当且仅当TRx=1且INTx=1(高电平)时,计数启动; 否则,计数停止。
返回
27
5.3 定时器的工作方式——方式1
5.3.2 方式1
M1、M0=01,为16位的计数器,除位数外,其他与方式0相同。
缺点: 只有8位计数器,定时时间短、计数范 围小。其定时时间为: (28-初值)×振荡周期×12
若晶振频率为12MHz,则最长的定时时间为 (28-0)×(1/12)×12us=0.256ms
方式2工作过程图 (x=0, 1) 。
30
5.3 定时器的工作方式——方式3
5.3.4 方式3 只适用于定时器/计数器T0。T1不能工作在方式3。 如果将T1置为方式3,则相当于TR1=0,停止计数 (此时T1 可用来作串行口波特率产生器) 。
5.3.1 方式0 5.3.2 方式1 5.3.3 方式2 5.3.4 方式3
5.4 定时器的编程和应用
5
第5章 定时器/计数器及其应用
5.1 定时器的结构及工作原理
6
5.1 定时器的结构及工作原理
8051
内 部 结定 构时 框器 图
组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器 TMOD和控制寄存器TCON等组成。内部通过总线与CPU相连。
当TL1的低5位计数溢出时,向TH1进位。而TH1计 数溢出时,则向中断标志位TF1进位(即硬件将TF1 置1),并请求中断。
可通过查询TF1是否置“1”或考察中断是否发生来判 定定时器T1的操作完成与否。
25
5.3 定时器的工作方式——方式0

51单片机 定时器与计数器课件

51单片机 定时器与计数器课件

(2) 方式1
M1M0=01工作原理
16位的定时计数器,由TH1的8位和TL1的8位组成 (以T1为例,T0原理相同) 震荡器 T1(P 3.5) TR1 GATE INT1 ÷12
C/T=0 C/T=1 1 K TL1 TH1 8位 8位 控制 16位计数器 TF1 中 断
定时/计数器方式1逻辑图
;设置工作模式 ;T0送初值high(-1000) ;开放CPU中断 ;开放T0中断 ;启动计数器 ;等待计数器溢出中断
TH0,#0FCH ;T0送初值 TL0,#18H P1.0 ;P1.0取反产生方波
查询方式 ORG
AJMP ORG - MAIN:MOV SETB - LOOP:MOV MOV JNB CPL CLR SJMP END
定时/计数器的计数方向、初值计算及溢出处理
计数方向
- 加计数:每个脉冲计数器加1 - 减计数:每个脉冲计数器减1。
计数器的容量:
- 计数器有一定的计数范围(脉冲计数的最大个数),由 计数器的位宽度决定。
-
2n=X初值+要求(计数或定时) X初值= 2n —要求(计数或定时)
计数器的溢出:
定时计数的概念---假 如 有 一 个 水 容 器
一个定时/计数的形象实例
1000滴水刚好装满 问:还需滴入多少滴水才能将其 装满?
答:还需滴入500滴水才能将其 装满,501滴溢出。 这就是“计数” 初始时已经装入500滴水
这就是“计数初值”
问:如果每秒滴入1滴水,还需多 长时间才能将其装满? 这就是“定时” 答:还需500秒时间才能将其装 满,501秒溢出。
定时与计数的关系
定时/计数器:
对电脉冲进行计数的单元电路。 用计数器为周期性脉冲计数,产生定时。 定时和计数是同一个概念,本质上定时只是 计数的一个特例。

片机课件5MCS51单片机定时器计数器

片机课件5MCS51单片机定时器计数器
计数方式
定时器/计数器在外部事件(如电平变 化或脉冲信号)的驱动下,对外部事 件进行计数,当计数值达到预置值时 ,输出比较器输出信号。
定时器/计数器的计数范围
• 定时器/计数器的计数范围取决于其位数和时钟频率。例如,一个8位的定时器/计数器在1MHz的时钟频率下,其最大计数 值为255。
03
定时器/计数器的使用方 法
中断优先级和嵌套
根据实际需求设置中断优先级和嵌 套关系,以满足不同的应用需求。
04
定时器/计数器的应用实 例
定时器的应用实例
01
02
03
04
频率测量
利用定时器测量输入信号的频 率,如测量音频信号的频率。
时间间隔测量
利用定时器测量两个事件之间 的时间间隔,如测量按键按下
到松开的时间。
延时控制
利用定时器实现精确的延时控 制,如控制LED的闪烁频率。
利用计数器和定时器结合测量两个事 件之间的时间间隔,如测量按键按下 到松开的时间。
定时器/计数器的综合应用实例
01
02
03
电机控制
利用定时器和计数器实现 电机的速度控制和位置控 制,如步进电机或伺服电 机。
数字信号处理
利用定时器和计数器实现 数字信号的处理和分析, 如滤波、频谱分析等。
事件触发和计数
谢谢观看
定时器/计数器的初始化
初始化寄存器
启动定时器/计数器
在开始使用定时器/计数器之前,需要 先初始化其相关寄存器,包括设置工 作模式、预分频值、计数值等。
在完成初始化后,通过相应的控制位 启动定时器/计数器开始计数。
配置时钟源
选择合适的时钟源,如系统时钟或外 部时钟,以确保定时器/计数器正常工 作。

最新单片机原理MCS 51定时器计数器教学PPT

最新单片机原理MCS 51定时器计数器教学PPT

单片机原理MCS 51定时器计数器教学PPT 电子邮件:[电子邮件保护]电话:85191952地址:实验大楼B208,第6章MCS-51定时器/计数器,2,1-1定时器/计数器结构和工作模式,1-2定时器/计数器示例,3,1-1定时器/计数器结构和工作模式,定时器/计数器是MCS-51单片机的重要功能模块之一。

在检测、控制和智能仪器等应用中,定时器通常用作实时时钟,以实现定时检测、定时控制。

计时器也可以用来产生毫秒宽度的脉冲来驱动电机,如步进电机。

计数器主要用于计数外部事件。

在MCS-51单片机中有三个定时器/计数器T0、T1和T2。

本章主要介绍MCS-51结构、原理、工作模式及应用。

8051芯片上有两个16位定时器/计数器:定时器0 (T0)和定时器(T1)。

、5、、1、模式寄存器TMOD特殊功能寄存器TMOD是T0和T1的工作模式寄存器,其格式如下:TMOD的低4位T0的模式字段和高4位T1的模式字段具有相同的含义。

,6,7,定时和外部事件计数模式选择位C/T 0:定时模式。

1:外部计时法。

GATE 1:定时器计数由外部引脚输入电平0控制:定时器计数不受外部引脚输入电平控制。

,8,,2、控制寄存器TCON特殊功能寄存器TCON的高4位存储定时器的操作控制位和溢出标志位,低4位存储外部中断的触发模式控制位并锁存外部中断请求源。

TCON格式如下:定时器T0运行控制位TR0溢出标志位TF0定时器T1运行控制位TR1溢出标志位TF1,9,,3、定时器运行模式MCS-51的定时器T0有四种工作模式:模式0、模式1、模式2和模式3;定时器T1有三种工作模式:模式0、模式1、模式2。

10、模式0、模式0是一个13位计数器,由TL1的低5位和TH1的8位组成。

如果这个计数器加上一个计数器,从计算初始值到溢出的时间是:,11,例1:在某个时间写T0初始化程序1毫秒,12。

模式1、模式1和模式0之间的区别仅在于计数器中的位数不同。

单片机定时计数器PPT教案学习

单片机定时计数器PPT教案学习
7.2.2 控制寄存器TCON
TCON是定时计数器控制寄存器,在51单片机 复位后 初始化 值为所 有位都 被清“0”
位序号 位名称
说明
7
TF1
定时计数器1溢出标志位,其功能和TF0相同
6
TR1
定时计数器1启动控制位,其功能和TR0相同
5
TF0
定时计数器0溢出标志位,该位被置位则说明单片机检测到了
定时计数器0的溢出,并且PC自动跳转到该中断向量入口,当
1
5
M10
4
M01
T1工作方式选择位
M10M01
工作方式
00
0
01
1
10
2
10
3
3
GATE0
定时计数器0门控位,其功能和GATE1相同
2
C/T0#
定时计数器0定时/计数选择位,其功能和C/T1#相同
1
M10
T0工作方式选择位,其功能和M10M01相同
0
M00
第21页/共34页
7.2 51单片机定时计数器的寄存器 P1
第54页/共34页
7.3 51单片机定时计数器的工作方式
7.3.2 工作方式1
当M1、M0设定为“01”时,T0/T1工作 于方式1,和工 作方式 0比较 起来, 工作方 式1的得 唯一区 别在于 此时的 内部计 数器宽 度为16位,分 别由TH 0/TH1的8位 和TL0/T L1的8位组成 ,其溢 出方式 和驱动 事件的 来源和 工作方 式相同 。51系 列单片 机的定 时计数 器采用 加1计数 的方式 ,即当 接收到 一个驱 动事件 时候计 数器加 1,当 计数器 溢出时 候则产 生相应 的中断 请求, 第一个 驱动事 件到来 时刻和 中断请 求产生 。

MCS-51单片机内部定时器计数器

MCS-51单片机内部定时器计数器
•MCS-51单片机内部定时器计数器
二、 方式1
方式 1(16位计数器)
•MCS-51单片机内部定时器计数器
方式1和方式0的工作原理基本相同,唯一 不同是T0和T1工作在方式1时是16位的计数/定 时器。
方式1时的计数长度M是2的16次方。16位 的初值直接拆成高低字节,分别送入TH和TL 即可。
•MCS-51单片机内部定时器计数器
M1 M0:四种工作方式的选择位 工作方式选择表
M1 M0 方式
说明
0 0 0 13 位定时器(TH的 8 位和TL的低 5 位)
0 1 1 16 位定时器/计数器
1 0 2 自动重装入初值的 8 位计数器 T0 分成两个独立的 8 位计数器,
1 1 3 T1 在方式 3 时停止工作
定时 1 ms的初值:
因为 机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0 需要计数N次:
•MCS-51单片机内部定时器计数器
N= 1 ms÷2 μs = 500
由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0
0。TF产生的中断申请是否被接受, 还需要由中断计数器T1、 T0 的运行控制位,
通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时
被清 0。
•MCS-51单片机内部定时器计数器
定时器的工作方式
一、 方式 0
方式 0(13位计数器)
•MCS-51单片机内部定时器计数器
•MCS-51单片机内部定时器计数器

MCS51单片机的定时器计数器PPT课件

MCS51单片机的定时器计数器PPT课件
工作方式寄存器TMOD
T1
T2
GATE C / T M1 M0 GATE C / T M1 M0
M1,M0:工作方式选择位 。 =00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。
3.工作方式2 ( M1M0=10 ,自动重装计数初值的8位定 时器/计数器)
16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对 它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器, 而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将 计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计 数的应用场合(如串行数据通信的波特率发生器)。
可编程定时器:通过专用的定时器/计数器芯片实现。其特点是 通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序 设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数 功能。
2
2.MCS-51内部定时器/计数器
MCS-51单片机内部有两个16位可编程的定时器/计数器,简称 为T0和T1,均可作定时器用也可计数器,它们均是二进制加法 计数器,当计数器计满回零时能自动产生溢出中断请求,表示定 时时间已到或计数已终止。适用于定时控制、延时、外部计数和 检测等。 计数器:对引脚T0(P 3.4 )和T1(P3.5.)输入的外部脉冲信号 计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。 计数的最高频率一般为振荡频率的1/24。 定时器:对系统晶振振荡脉冲的12分频输出进行计数。 (1)定时器/计数器的结构
时器/计数器的启/停。 = 1 :硬件控制,由外部中断请求信号 INT 0 / INT1 和TCON中的

MCS51定时器计数器PPT课件

MCS51定时器计数器PPT课件

启动控制 B=TR1•A =TR1•(INT1+GATE )
GATE
TRx
INTx 启动情况
0
0
X
停止
0
1
X
启动定时/计数
1
0
X
停止
1
1
启动定时/计数
1
1
停止
其中: 1 表示高电平,0表示低电平,X表示任意状态
举例:利用GATE位测正脉冲的宽度
方式1
方式1是一个16为定时器/计数器,见图6-7。 方式1的结构几乎与方式0完全一样,唯一的差别是:方式1 中的TH1(TH0)和TL1(TL0) 均是8位的,构成16位计数器。
ห้องสมุดไป่ตู้
表示定时时间到 。
已达预期个数。
f=12MHz,
最高计数频率为振荡频率
一个机器周期是1 μs
的1/24。即计数周期=2机器
周期。
6.2.1 定时器/计数器的控制
定时器/计数器的工作由TCON和TMOD控制 由软件把控制字写入TCON和TMOD,用来设置T/C0和 T/C1的工作方式和控制功能。 当8051系统复位时,TCON和TMOD所有位都被清0。 一、工作模式寄存器TMOD(89H) TMOD用于控制T/C0和T/C1的工作模式,其各位的定义 格式如下:
MCS-51定时器/计数器
重点内容
1、定时/计数器结构特点及控制 2、定时/计数器及中断系统综合应用
6.2 MCS-51的定时器/计数器
在单片机实时应用系统中,需要定时和对外部事件计数的功能 。 定时:对周期已知的脉冲信号计数 计数:对外部事件计数,对周期未知的外来脉冲信号计数 定时方法:
采用软件延时占用CPU的时间,降低了CPU的使用效率; 定时或计数方法:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时器T1工作方式选择表: 定时器T0工作方式选择表 :
2. 定时器/计数器控制寄存器TCON 定时器控制寄存器TCON各位格式如下:
各位功能和名称如下: TF0/1(TCON.7)——定时器0/1溢出标志 当定时器0/1计满溢出时,由硬件使TF1置1,并且申请中断 进入中断服务程序后,由硬件自动清0。 TR0/1(TCON.6)——定时器9/1运行控制位 当TR0/1=1时,启动定时器0/1工作;当TR0/1=0时,关闭定时器。 IE1(TCON.3)——外部中断1请求标志。 IT1(TCON.2)——外部中断1触发方式选择位。 IE0(TCON.1)——外部中断0请求标志。 IT1(TCON.0)——外部中断0触发方式选择位。
脉冲,保证单片机以规定的频率运行。 3.P0口接一个双向缓冲驱动芯片74LS245,再接至
LCD的段码端,用以驱动LCD的段码显示; 4. P3口接至LCD的位码端,用以选择要显示的数码管。
9.1.2 基本功能
电子时钟的基本功能如下:
1.电子时钟显示的格式是XX-XX-XX,从10-10-10开始 计数,每隔10秒,P3.6引脚对应的数码管(秒十 位)就加1亮一次,而秒个位清0;每隔60秒, P3.4引脚对应的数码管(分个位)就加1亮一次, 而秒个位和十位都清0;同理,其它情况依此类推。
TMOD为T0、T1的工作方式寄存器,其各位的格式如下:
其各位的功能如下: 位7 GATE——T1的门控位。 当GATE=0时,只要控制位TR1置1,即可启动定时器T1开始工作; 当GATE=1时,除需要将TR1置1外,还要使引脚为高电平,才能 启动相应的定时器开始工作。 位6 ——T1的功能选择位。 当=0时,T1为定时器方式; 当=1时,T1为计数器方式。
void main(void) {
TMOD = 0x01;
// T/C0工作在定时器方式1
P1_0 = 0;
TH0 = (65536 - 1000)/256; // 预置计数初值
TL0 = (65536 - 1000)%256;
EA = 1;
// CPU开中断
ET0 = 1;
// T/C0开中断
TR0 = 1;
第9章 定时器/计数器
9.1 项目内容:电子时钟的设计 9.2 程序设计 9.3 相关知识:定时/计数器综述
9.1 项目内容:电子时钟的设计
• 9.1.1 硬件电路设计
电子时钟的硬件电路图如下所示:
该设计电路由以下部分组成: 1. 复位电路采用“上电复位”方式。 2. 时钟电路以12MHz的频率向单片机提供振荡
9.3.3 定时/计数器的工作方式
通过对M1,M0位的设置,T0可选择4种工作方式,T1 可选择3种工作方式。
1. 方式0
当TMOD中M1M0=00时,T/C工作在方式0。其逻辑电路
结构如下图所示。
方式0为13位的T/C,由TH提供8位,TL提供低5位(TL的高3位无效) 的计数值,满计数值为,但启动前可以预置计数初值。 当T/C值为0时,为定时器,振荡源12分频的信号作为计数脉冲; 当T/C值为1时,为计数器,对外部脉冲输入端T0或T1输入的脉冲 计数。 计数脉冲能否加到计数器上,受启动信号的控制。当GATE=0时, 只要TR=1,则T/C启动;当GATE=1时,此时T/C启动受到双重控制。 T/C启动后立即加1计数,当13位计数满时,TH向高位进位。此进 位将中断溢出标志TF置1,产生中断请求,表示定时时间到或计数 次数到。若T/C开中断(ET=1)且CPU开中断(EA=1),则当CPU转向 中断服务程序时,TF自动清零 。 2. 方式1 当TMOD中M1M0=01时,T/C工作在方式1。 方式1与方式0基本相同,唯一的区别在于计数寄存器的位数是16 位的,由TH和TL寄存器各提供8位,满计数值为2-e16。
4. 方式3 当TMOD中M1M0=10时,T/C工作在方式2。其逻辑电路 结构如下图所示。
9.3.4 定时/计数器的初始化
1. 初始化步骤 在使用单片机的定时/计数器前,应对它进行编程初始 化,主要是对TMOD和TCON编程,还需计算和装载T/C的 计数初值。一般完成以下几个步骤: (1) 确定T/C的工作方式——编程TMOD寄存器。 (2) 计算T/C中的计数初值,并装载到TH和TL。 (3) T/C在中断方式工作时,须开CPU中断和源中断—
TL0 = (65536 - 1000)%256;
do{ } while (!TF0); // 查询等待TF0置位
P1_0 = P1^0;
// 定时时间到,P1.0反相
TF0 = 0;
// 软件清TF0
}
}
用定时器0的方式1编程,采用中断方式。程序名为timer92.c
#include<reg51.h>
电子时钟的设计
**************************************************/ #include<reg51.h> #include<电子时钟.h> #define uchar unsigned char #define uint unsigned int uchar code table[] =
—编程IE寄存器。 (4) 启动T/C——编程TCON中的TR0或TR1。
2.计数初值的计算 (1) 定时器的计数初值 在定时器方式下,T/C是对机器周期脉冲计数的,如果 fosc = 6MHz,那么一个机器周期为12/fosc = 2us,则
(2)计数器的计数初值 在计数器方式下:
9.3.5 定时/计数器的应用举例
3.方式2 当TMOD中M1M0=10时,T/C工作在方式2。其逻辑电路结 构如下图所示。 方式2中TH和TL被当作两个8位计数器。计数过程中, TH寄存8位初值并保持不变,由TL进行8位计数。计数 溢出时,除产生溢出中断请求外,还自动将TH中初值 重装到TL,即重装载。除此之外,方式2也同方式0。
用定时器0的方式1编程,采用查询方式。程序名为:timer91.c
#include<reg51.h>
sbit P1_0 = P1^0;
void main(void)
{
TMOD = 0x01;
// 定时器0方式1
TR0 = 1;
// 启动T/C0
For(;;)
{
TH0 = (65536 - 1000)/256; // 装载计数初值
second = 0;
void main()
{
TMOD = 0x01;
// 定时器0方式1
TH0=(65536-50000)/256; // 装载计数初值,每次定时50ms
TL0=(65536-50000)%256;
count = 0;
// 中断次数为0
EA = 1;
// 开CPU中断
ET0 = 1;
2.当计数至24小时时,所有数码管都被清0,重新开 始计时。
3.如果想调整初始时间,可在程序中修改hour, minute,second的初值即可。
9.2 程序设计
9.2.1 程序代码设计 部分程序如下所示:
/*************************************************
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f }; // 共阴极段码表0,1,2,3,4,5,6,7,8,9 sbit P3_0 = P3^0; sbit P3_1 = P3^1; sbit P3_2 = P3^2; sbit P3_3 = P3^3;
void timer0() interrupt 1 using 0
// 定时中断响应定50ms
{
ET0=0;
// 关闭定时器0源中断
TR0=0;
// 关闭定时器0
TH0=(65536-50000)/256;
// 重装计数初值
TL0=(65536-50000)%256;
count++;
// 定时中断的次数
位5和位4 M1和M0——T1的方式选择位 位3 GATE——T0的门控位。
当GATE=0时,只要控制位TR0置1,即可启动定时 器T0开始工作; 当GATE=1时,除需要将TR0置1外,还要使引脚为 高电平,才能启动相应的定时器开始工作。 位2 ——T0的功能选择位。 当=0时,T0为定时器方式; 当=1时,T0为计数器方式。 位1和位0 M1和M0——T0的方式选择位
// 开定时器0中断
TR0 = 1;
// 启动定时器0
hour = 10,minuter = 10,second = 10;
// 开机显示10-10-10
while(1)
{
Display(hour,minute,second);
}
}
9.2.2 仿真结果
下图是电子时钟在计数时某一个时刻的具体运行情 况的截图:
9.3 相关知识:定时/计数器综述
• 9.3.1 定时/计数器的结构和工作原理
1. 定时/计数器T0、T1的结构 定时/计数器的原理结构框图如图6-3所示。
2. 定时/计数器的原理 定时/计数器的工作原理图如图6-4所示。
9.3.2 定时/计数器的工作方式寄存器和控制寄存器
• 1. 工作方式寄存器TMOD
if(count == 20)
// 计数20次到1秒
{
count = 0;
second ++;
if(second >= 59)
{
second = 0;
minute ++;
if(minute >= 59)
{
minute = 0;
相关文档
最新文档