第6章 MCS-51单片机内部定时器、数器及串行接口

更新时间:2023-08-27 10:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

单片机内部定时器/ 第6章 MCS - 51单片机内部定时器 章 单片机内部定时器 计数器 及串行接口6.1 定时器 计数器的结构及工作原理 定时器/计数器的结构及工作原理 计数器的结构及工作原理 6.2 方式和控制寄存器 方式和控制寄存器 6.3 工作方式 6.4 定时器 计数器应用举例 定时器/计数器应用举例 计数器应用举例 6.5 MCS - 51单片机的串行接口 单片机的串行接口 6.6 串行口的应用

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

6.1 定时器 计数器的结构及工作原理 定时器/计数器的结构及工作原理

图 6.1 定时器/计数器结构框图

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

加法计数器是计满溢出时才申请中断, 所以在给计数器 赋初值时, 不能直接输入所需的计数值, 而应输入的是计数 器计数的最大值与这一计数值的差值, 设最大值为 M, 计数 值为 N, 初值为 X, 则 X的计算方法如下:  计数状态: X=M-N 定时状态: X=M-定时时间/T 而 T=12÷晶振频率

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

6.2 方式和控制寄存器定时器/计数器的方式寄存器 计数器的方式寄存器TMOD 一、 定时器 计数器的方式寄存器

图 6.2 TMOD各位定义

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

1. M1M0工作方式控制位 工作方式控制位 表 6.1 工作方式选择表M1 M0 方式 0 0 1 1 0 1 0 1 0 1 2 3 说 明 13 位定时器(TH的 8 位和TL的低 5 位) 16 位定时器/计数器 自动重装入初值的 8 位计数器 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止 工作

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

2. C/T 定时器方式或计数器方式选择位 定时器方式或计数器方式选择位 若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。  3. GATE 定时器 计数器运行门控标志位 定时器/计数器运行门控标志位 计数器运行门控标志位 当 GATE=1 时 , 只 有 INT0 ( 或 INT1) 引 脚 为 高 电 平 且 TR0(或TR1 )置 1 时, 相应的定时器 /计数器才被选通工作, 这时可用于测量在INTx端出现的正脉冲的宽度。若GATE=0, 则只要 TR0 (或 TR1)置 1, 定时器 /计数器就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

定时器/计数器控制寄存器 计数器控制寄存器TCON 二、 定时器 计数器控制寄存器 

TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。TF产生的中断申请是否被接受, 还需要由中断是否开放 来决定。 TR1、TR0 分别是定时器 /计数器T1、

T0 的运行控制位, 通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时 被清 0。

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

6.3 工作方式一、 方式 0

图6.3 方式 0(13位计数器)

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

方式1 二、 方式

图 6.4 方式 1(16位计数器)

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

三、方式 2

图 6.5 方式 2(初始常数自动重装载)

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

四、 方式 3

图 6.6 方式 3(两个 8 位独立计数器)

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

6.4 定时器 计数器应用举例 定时器/计数器应用举例的应用 一、 方式 0 的应用 例 1 利用定时器输出周期为 2 ms的方波, 设单片机晶振 频率为 6 MHz。  选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。  定时 1 ms的初值:  因为 机器周期=12÷6 MHz= 2 µs

所以 1 ms内T0 需要计数N次:  N= 1 ms÷2 µs = 500

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0 的初值调整为 TH0=0F0H, TL0=0CH TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

程序清单如下:  ORG 0000H ORG 000BH AJMP TOINT ; T0中断入口 ORG 0030H START: MOV SP, #60H; 初始化程序 MOV TH0, #0F0H ; T0赋初值 MOV TL0, #0CH MOV TMOD, #00H SETB TR0 ; 启动T0  AJMP START; 复位入口

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

SETB ET0 ; 开T0中断 SETB EA ; 开总允许中断 MAIN: AJMP MAIN ; 主程序 TOINT: CPL P1.0 MOV TL0, #0CH MOV TH0, #0F0H RET

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

应用 二、 方式 1应用 应用 方式 1 与方式 0 基本相同, 只是方式 1 改用了 16 位计数 器。 要求定时周期较长时, 13 位计数器不够用, 可改用 16 位 计数器。  例 2 已知某生产线的传送带上不断地有产品单向传送, 产品之间有较大间隔。使用光电开关统计一定时间内的产品 个数。 假定红灯亮时停止统计, 红灯灭时才在上次统计结果 的基础上继续统计, 试用单片机定时器 /计数器T1的方式 1完 成该项产品的计数任务。

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

图 6.7 硬件原理图

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

(1) 初始化: TMOD=11010000B=0D0H (GATE=1, C/T=1, M0M1=01) TCON=00H (2) T1在方式1时, 溢出产生中断, 且计数器回零, 故在中 断服务程序中, 需用R0计数中断次数, 以保护累积计数结果。

单片机学习的良师益友

第6章 MCS - 51单片机内部定时器/计数器及串行接口

(3) 启动T1计数, 开T1中断。  程序清单如下: ORG 0000H 

AJMP START ; 复位入口 ORG 001BH AJMP T1INT ; T1中断入口 ORG 0100H START: MOV SP, #60H ; 初始化程序 MOV TCON, #00H MOV TMOD, #0D0H MOV TH1, #00H

本文来源:https://www.bwwdw.com/article/1zji.html

Top