定时计数器及应用

上传人:我*** 文档编号:134932402 上传时间:2020-06-10 格式:PPT 页数:60 大小:637KB
返回 下载 相关 举报
定时计数器及应用_第1页
第1页 / 共60页
定时计数器及应用_第2页
第2页 / 共60页
定时计数器及应用_第3页
第3页 / 共60页
定时计数器及应用_第4页
第4页 / 共60页
定时计数器及应用_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《定时计数器及应用》由会员分享,可在线阅读,更多相关《定时计数器及应用(60页珍藏版)》请在金锄头文库上搜索。

1、第六章定时 计数器及应用 本章主要内容 定时 计数器基本概念定时 计数器的结构定时 计数器的工作方式定时 计数器应用举例 第一节定时 计数器基本概念 一 问题提出 即 为什么要学习定时 计数器 在测控技术中 往往需要定时检测某个物理参数 或按照一定的时间间隔来进行某种控制 这种定时的获得 可通过两种方法来实现 1 采用软件来实现定时 即编制一段延时程序 但会降低CPU的工作效率 2 采用硬件来实现定时 即使用定时 计数器 当用某个计数功能时 可以对某种事件进行计数 然后根据计数结果来进行控制 不管CPU对定时 计数器设置为定时功能还是计数功能 定时 计数器T0 T1在启动后 都会按照设定的工作

2、方式独立运行 不再占用CPU的时间 只有在定时 计数器溢出后 才可能向CPU发出中断请求信号 因此 定时 计数器是单片机中效率较高 且工作灵活的部件 一 定时 计数器的结构 8051的两个定时 计数器T0 T1实际上就是加1计数器 其中T0由两个8位特殊功能寄存器TH0和TL0构成 T1由两个8位特殊功能寄存器TH1和TL1构成 T0和T1都可由软件设置为定时或计数功能 第二节定时 计数器的结构 对机器周期进行计数 每过一个机器周期 计数器加1 直至计数器计满溢出 由于一个机器周期由12个振荡周期组成 则计数频率为振荡频率的1 12 如 振荡频率为12MHz 振荡周期为 1 12M s 则计数

3、频率为1MHz 机器周期为1us 定时器的定时时间与计数器初值 计数长度 和系统时钟频率 振荡频率 有关 如 定时 计数器T0由TH0和TL0组成 共16位 每过一个机器周期 T0加1 若从初始值T0 0开始 直至T0计数满溢出 则一共要经过216个机器周期 即 总定时时间 216个机器周期 一个机器周期的时间此时 定时时间与计数器初始值和振荡频率有关 且由于振荡频率不易改变 通常改变计数器初值 从而达到改变定时时间的目的 定时 计数器做定时用 定时 计数器做计数用 计数器对来自输入引脚T0 P3 4 和T1 P3 5 的外部信号计数 在每一个机器周期的S5P2期间采样引脚输入电平 若前一个机

4、器周期采样值为1 高电平 后一个机器周期采样值为0 低电平 则计数器加1 由于辨别一个信号由1到0的跳变 需要2个机器周期 所以计数频率为振荡频率的1 24 如 晶振频率为12MHz 则最高计数频率为0 5MHz 二 定时 计数器的功能及应用范围 定时器 计数器具有定时和计数两种功能 应用范围如下 1 定时与延时控制方面可产生定时中断信号 以设计出各种不同频率的信号源 产生定时扫描信号 对键盘进行扫描以获得控制信号 对显示器进行扫描以不间断地显示数据 2 测量外部脉冲方面对外部脉冲信号进行计数可测量脉冲信号的宽度 周期 也可实现自动计数 3 监控系统工作方面对系统进行定时扫描 当系统工作异常时

5、 使系统自动复位 重新启动以恢复正常工作 三 定时 计数器的控制 使用定时 计数器时 除了要选择定时或计数功能外 每种功能还有4种工作方式 包括方式0 方式1 方式2和方式3 而工作方式和其他的设定都是由 定时 计数器方式寄存器TMOD和定时 计数器控制寄存器TCON决定的 即 对定时 计数器的设置也就是对TMOD和TCON的设置 1 定时 计数器的方式寄存器TMOD GATE 门控位GATE 0 软件启动定时器 即用指令使TCON中的TR1 TR0 置1 则可启动定时 计数器1 定时 计数器0 GATE 1 软件和硬件共同启动定时器 即用指令使TCON中的TR1 TR0 置1时 只有外部中断

6、INT0 INT1 引脚输入高电平时才能启动定时 计数器1 定时 计数器0 C T 功能选择位C T 0时 以定时器方式工作 C T 1时 以计数器方式工作 地址为89H 只能用字节寻址 M1M0 操作方式控制位 对应4种二进制编码 也就是4种工作方式 定时器操作方式选择位定义 说明 TMOD是地址为89H的特殊功能寄存器 用于控制定时 计数器T0和T1的工作方式以及功能选择 TMOD不能按位寻址 只能用字节设置 低半字节定义定时 计数器T0 高半字节定义定时 计数器T1 复位时 所有位为0 2 定时 计数器的控制寄存器TCON 地址为88H 可进行位寻址 也可进行字节寻址 各位的功能说明 T

7、F1 TCON 7 定时器1溢出标志位 当定时器1计满溢出时 由硬件自动使TF1置1 并申请中断 对该标志位有两种处理方法 一种是以中断方式工作 即TF1置1并申请中断 响应中断后 执行中断服务程序 并由硬件自动使TF1清0 另一种以查询方式工作 即通过查询该位是否为1来判断是否溢出 TF1置1后必须用软件使TF1清0 TR1 TCON 6 定时器1启停控制位GATE 0时 用软件使TR1置1即启动定时器1 若用软件使TR1清0则停止定时器1 GATE 1时 用软件使TR1置1的同时外部中断INT1的引脚输入高电平才能启动定时器1 TF0 TCON 5 定时器0溢出标志位 其功能同TF1 TR

8、0 TCON 4 定时器0启停控制位 其功能同TR1 IE1 TCON 3 外部中断1请求标志位 当检测到外部中断引脚上存在有效中断请求信号时 由硬件使IE1 1或IE0 1 CPU响应中断 转向中断服务程序 IE0 TCON 1 外部中断0请求标志位 其功能同IE1 IT0 TCON 0 外部中断0触发方式选择位 其功能同IT1 IT1 TCON 2 外部中断1触发方式选择位 IT1 0 外部中断1为电平触发方式IT1 1 外部中断1为边沿触发方式 第三节定时 计数器的工作方式 定时器 计数器的初始化步骤 定时器 计数器是一种可编程部件 在使用定时器 计数器前 一般都要对其进行初始化 以确定

9、其以特定的功能工作 初始化的步骤如下 确定定时器 计数器的工作方式 确定方式控制字 并写入TMOD 预置定时初值或计数初值 根据定时时间或计数次数 计算定时初值或计数初值 并写入TH0 TL0或TH1 TL1 根据需要开放定时器 计数器的中断 给IE中的相关位赋值 启动定时器 计数器 给TCON中的TR1或TR0置1 一 工作方式0及其应用 当MIM0两位为00时 定时 计数器被选为工作方式0 其逻辑结构如下图所示 说明 工作方式0是一个13位的定时 计数器 16位的寄存器 TH0和TL0 只用了13位 即TH0的全8位和TL0的低5位 当TL0的低5位溢出时 向TH0进位 当TH0溢出时 则

10、向中断标志TF0进位 硬件置位TF0 申请中断 启动定时 计数器工作的条件有两种情况 软件启动 GATE 0TRx 1 或 软件与硬件共同启动 GATE 1TRx 1INT0 INT1引脚电平为1 看图 软件启动 硬件与软件共同启动 当GATE 0时 通过非门后 值取反为1 则使或门输出始终保持为1 此时 与引脚INTx的输入电平无关 控制位的电位取决于TRx的状态 若使TRx置1 则接通控制开关 启动定时 计数器开始计数 若使TRx清0 则断开控制开关 停止计数 当GATE 1时 通过非门后 值取反为0 则 或 门的输出取决于INTx引脚的输入电平 当INTx为高电平时 或 门输出为高电平

11、此时 若TRx置1 则接通控制开关 启动定时 计数器开始计数 若TRx清0 则断开控制开关 停止计数 说明 假设T0工作在方式0 TH0的全8位和TL0的低5位组成一个13位的二进制数计数器 单片机开机或复位时 T0的值为0000H 当T0被启动后 从第一个输入脉冲开始计数 每来一个脉冲 计数加1 即从13个0一直加到13个1 再计数一个脉冲时 13位计数器则从13个1变成13个0 并产生溢出 溢出位就被送入TF0标志位 产生中断申请 因此 T0工作在方式0 引起一次中断所允许的计数脉冲最多为 213个 但是 如果定时 计数器每次都固定从全0开始计数 计满后溢出 发出中断申请 就达不到不同定时

12、时间的目的 因此 可以预先向TH0和TL0中装入初始值X 使计数器T0从X值开始计数 直至计满溢出 这样就可得到不同的定时时间 设需要计数的脉冲个数为Y 则 Y 213 X 在计数方式下 当输入第213 X个脉冲时 产生溢出中断申请 在定时方式下 当计第213 X个机器周期时 产生溢出中断申请 即定时时间间隔 t 213 X 振荡周期 12 例 设定时 计数器T0选择工作方式0 定时时间为1ms 振荡频率为12MHz 试编程实现在P1 0输出周期为2ms的方波 解 分析如下 系统采用12MHz的晶振 则振荡周期Tc 1 12M s 机器周期Tm 12Tc 1us 若定时 计数器从全0开始计数

13、直至计满溢出 共需213个机器周期 引起中断所需的定时时间为 213 1us 8 192ms 而题目要求定时时间为1ms 则需将T0赋初始值X 要在P1 0得到输出周期为2ms的方波 要使P1 0每1ms取反一次 初始化过程 计算T0定时1ms的初始值 t 213 X 1us 1ms8192 X 1000X 7192D 11100000 11000B 则 TH0 11100000B E0HTL0 00011000B 18H 确定工作方式 对TMOD寄存器赋值 TMOD 1 TMOD 0 有M1M0 00 选定T0为方式0TMOD 2 有C T 0 选定T0为定时功能 即计机器周期数 TMOD

14、3 有GATE 0 表示不受INT0控制 直接由TR0 1 可启动T0TMOD 4 TMOD 7 用于T1 因此 这里不用 可设为0值 则 TMOD 00H 开放定时器中断 对IE寄存器赋值 则 IE 1000 0010B 启动定时 计数器T0 使TCON的TR0置位 则 TR0 1 解法 在定时 计数器T0中断被禁止的情况下 采用查询TF0状态来控制P1 0的输出 程序清单如下 MOVTMOD 00H MOVTL0 18HMOVTH0 0E0H SETBTR0 LOOP JBCTF0 NEXT SJMPLOOP NEXT MOVTL0 18HMOVTH0 0E0H CPLP1 0 SJMPL

15、OOP 置T0为工作方式0 且为定时功能 并直接由TR0 1启动T0赋初值启动T0TF0 1时 对TF0清0且转移 TF0 0时 查询等待重装计数初值输出取反重复循环 采用查询方式的程序简单 但在定时 计数过程中 CPU要不断查询溢出标志位TF0的状态 当查询在TF0 1时 用指令对TF0清0 且对P1 0取反 这种方法占用了很多CPU的工作时间 使CPU效率下降 因此要采用中断方式 解法 采用定时 计数器溢出中断方式 CPU响应中断后 TF0自动清0 程序清单如下 主程序 MAIN MOVTMOD 00H MOVTL0 18HMOVTH0 0E0H SETBTR0 SETBEA SETBET

16、0 HERE SJMPHERE 置T0为工作方式0 定时功能 并直接有TR0 1启动赋初始值启动T0CPU打开中断T0中断允许等待中断 中断服务子程序 ORG000BH AJMPCTC0 CTC0 MOVTL0 18H MOVTH0 0E0HCPLP1 0 RETI 规定T0中断入口转中断服务子程序重装初值输出取反 达到方波效果中断返回 例 12MHZ晶振 选择T0工作于方式0 解 分析如下 系统采用12MHz的晶振 则振荡周期Tc 1 12M s 机器周期Tm 12Tc 1us 选择T0方式0 若定时 计数器从全0开始计数 直至计满溢出 共需213个机器周期 引起中断所需的定时时间为 213 1us 8 192ms 而题目要求定时时间为2ms 则需将T0赋初始值X 初始化过程 计算T0定时2ms的初始值 t 213 X 1us 2ms8192 X 2000X 6192D 11000001 10000B 则 TH0 11000001B C1HTL0 00010000B 10H 对TMOD赋值 开放相应中断 对IE寄存器赋值 有 TMOD 00H 有 IE 1000 0010B 82H

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号