




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 定时 计数器 2 定时方法概述定时计数器结构和工作原理定时计数器的控制寄存器定时器的四种工作方式定时器的应用 3 一 定时方法概述 软件定时 软件定时靠执行一个循环程序以进行时间延迟 特点是时间精确 且不需要外加硬件电路 但软件定时要占用CPU开销 因此软件定时的时间不宜太长 采用时基电路定时 特点是 定时功能全部由硬件电路完成 不占CPU时间 但需通过改变电路的元件参数来调节定时时间 在使用上不够灵活方便 采用可编程芯片定时 这种定时方法是通过对系统时钟脉冲的计数来实现的 计数值通过程序设定 改变计数值 也就改变了定时时间 使用起来既灵活有方便 结论 MCS 51单片机把定时电路集成在芯片中 称之为定时器 计数器 8051型单片机有两个定时 计数器 分别称为定时器 计数器0和定时器 计数器1 4 二 定时计数器结构和工作原理 定时器方式寄存器主要用于设定定时器的工作方式 定时器控制寄存器主要用于控制定时器的启动与停止 并保存T0 T1的溢出和中断标志 定时器0 定时器1 5 定时 计数器的结构框图 16位的定时器 计数器实质上是一个加l计数器 可实现定时和计数两种功能 其功能由软件控制和切换 定时器属硬件定时和计数 是单片机中效率高而且工作灵活的部件 6 定时器 计数器的定时功能 计数器的加1信号由振荡器的12分频信号产生 即每过一个机器周期 计数器加1 直至计满溢出 定时器的定时时间与系统的时钟频率有关 因一个机器周期等于12个时钟周期 所以计数频率应为系统时钟频率的十二分之一 如果晶振频率为12MHz 则机器周期为1 s 通过改变定时器的定时初值 并适当选择定时器的长度 8位 13位或16位 可以调整定时时间 7 定时器 计数器的计数功能 通过外部计数输入引脚T0 P3 4 和T1 P3 5 对外部信号计数 外部脉冲的下降沿将触发计数 计数器在每个机器周期的S5P2期间采样引脚输入电平 若一个机器周期S5P2期间采样值为1 下一个机器周期S5P2期间采样值为0 则计数器加1 再下一个机器周期S3P1期间 新的计数值装入计数器 因检测一个由1至0的跳变需要两个机器周期 故外部信号的最高计数频率为时钟频率的二十四分之一 如果晶振频率为12MHz 则最高计数频率为0 5MHz 虽然对外部输入信号的占空比无特殊要求 但为了确保给定电平在变化前至少被采样一次 外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上 8 1 工作方式寄存器TMOD M0 M1 C T0 GATE0 M0 M1 C T1 GATE1 TMOD 字节地址89H D7D6D5D4D3D2D1D0 方式选择 00 方式0 01 方式1 10 方式2 11 方式3 定时 计数选择 0 定时器 1 计数器 门控位 三 定时计数器的控制寄存器 9 GATE 门控制位 用于控制定时器的启动是否受外部中断源信号的影响 GATE 0时 与外部中断无关 由TCON寄存器中的TRx位控制启动 GATE 1时 由控制位TRx和引脚共同控制启动 只有在没有外部中断请求信号的情况下 即外部中断引脚 1时 才允许定时器启动 10 2 定时控制寄存器 TCON 当定时器1计满溢出时 由硬件自动使TF0置1 并申请中断 对该标志位有两种处理方法 一种是以中断方式工作 即TF0置1并申请中断 响应中断后 执行中断服务程序 并由硬件自动使TF0清0 另一种以查询方式工作 即通过查询该位是否为1来判断是否溢出 TF0置1后必须用软件使TF0清0 GATE 0时 用软件使TR0置1即启动定时器1 若用软件使TR0清0则停止定时器1 GATE 1时 用软件使TR1置1的同时外部中断INT0的引脚输入高电平才能启动定时器0 11 3 中断允许控制寄存器 EX0 ET0 EX1 ET1 ES ET2 EA IE 字节地址A8H D7D6D5D4D3D2D1D0 定时 计数器1中断允许控制位 定时 计数器0中断允许控制位 0 允许中断 1 禁止中断响应 中断允许总控制位 12 4 中断优先级寄存器IP 字节地址B8H 13 四 定时计数器的四种工作方式 定时器T0 T1的工作方式 14 1 工作方式0 13位计数器 TR1 1 启动计数 GATE0 0时 GATE0 1时 启动计数 启停控制 定时计数选择 13位计数器 15 计数工作方式 最大的计数值为8192 213 预置的初值 X 213 N 定时工作方式 定时时间的计算公式为 T 213 计数初值 晶振周期 12 如晶振频率为6MHZ 12MHZ 求最小定时时间和最小定时时间 机器周期 预置的初值 16 例 单片机晶振频率为12MHz 若产生1ms定时 采用方式0 试计算初值X X 1110000000011000B E018H所以 TH E0H TL 18H 解 预置的初值 17 2 工作方式1 16位计数器 16位计数器 18 计数工作方式 最大的计数值为65536 216 预置的初值 X 216 N 定时工作方式 定时时间的计算公式为 T 216 计数初值 晶振周期 12 如晶振频率为6MHZ 12MHZ 求最小定时时间和最小定时时间 预置的初值 X 216 T 晶振周期 12 19 例 单片机晶振频率为12MHz 若产生1ms定时 采用方式1 试计算初值X 所以 TH FCH TL 18H 解 预置的初值 20 例 已知晶振频率fosc 12MHz 使用定时器0以工作方式1 在P1 0输出周期为2ms的连续正方波脉冲 试编写相关程序 解 计算初值 TH0 FCH TL0 18H ORG0000HLJMPMAIN 跳转到主程序ORG000BH T0的中断入口地址LJMPDVT0 转向中断服务程序ORG0100HMAIN MOVSP 60H 设堆栈指针MOVTMOD 01H 置T0工作于方式1 初始化TMODMOVTH0 0FCH 装入计数初值 装入初值MOVTL0 018HSETBET0 T0开中断 中断设置SETBEA CPU开中断SETBTR0 启动T0 启动定时器SJMP 等待中断DVT0 CPLP1 0 P1 0取反输出MOVTH0 0FCH 重新装入计数值MOVTL0 018HRETI 中断返回END 21 查询方式 ORG0000HLJMPMAIN 跳转到主程序ORG0100HMAIN MOVTMOD 01H 置T0工作于方式1 初始化TMODLOOP MOVTH0 0FCH 装入计数初值 装入初值MOVTL0 018HSETBTR0 启动T0 启动定时器JNBTF0 查询TF0标志 如为1 说明T0溢出 则往下执行CLRTF0 清除TF0中断标志位CLRTR0 T0溢出 关闭定时器CPLP1 0 P1 0状态取反SJMPLOOPEND 22 3 工作方式2 自动装载初值的8位计数器 注 适用于需要重复定时或计数的场合 定时精度比较高 但定时时间较短 用作定时或计数时的加1计数器 用作赋值 保存初值 23 例 已知晶振频率fosc 6MHz 要求使用定时器0以工作方式2产生100 s定时 在P1 0输出周期为200 s的连续正方波脉冲 试编写相关程序 解 计算初值 MOVTMOD 02H 设置定时器0为工作方式2MOVTH0 0CEH 设置计数初值MOV TL0 0CEHSETBTR0 启动定时LOOP JBCTF0 LOOP1 查询计数溢出AJMPLOOPLOOP1 CPLP1 0 输出方波 初值自动装入AJMPLOOP 24 例6 3当T0 P3 4 引脚上发生负跳变时 从P1 0引脚上输出一个周期为1ms的方波 如图所示 系统时钟为6MHz 1 工作方式选择T0为方式1计数 初值0FFFFH 即外部计数输入端T0 P3 4 发生一次负跳变时 T0加1且溢出 溢出标志TF0置 1 发中断请求 在进入T0中断程序后 启动T1 T1定义为方式2定时 在T0脚发生一次负跳变后 启动T1每500 s产生一次中断 在中断服务程序中对P1 0求反 使P1 0产生周期1ms的方波 25 2 计算T1初值设T1的初值为X 则 28 X 2 10 6 5 10 4X 28 250 6 06H 3 程序设计ORG0000HRESET LJMPMAIN 复位入口转主程序ORG000BHLJMPIT0P 转T0中断服务程序ORG001BHLJMPIT1P 转T1中断服务程序ORG0100HMAIN MOVSP 60HACALLPT0M2 调用对T0 T1初始化子程序LOOP MOVC F0JNCLOOP T0没有产生中断 等待T0中断SETBET1 允许T1中断SETBTR1 启动T1SJMP 26 PT0M2 MOVTMOD 25H 初始化 T1为方式2定时 T0为方式1计数MOVTL0 0FFH T0置初值MOVTH0 0FFHSETBET0 允许T0中断MOVTL1 06H T1置初值MOVTH1 06HCLRF0SETBEA 开中断SETBTR0 启动T0RETIT0P CLRTR0 T0中断服务程序 停止T0计数SETBF0 建立T0产生中断的标志RETIIT1P CPLP1 0 T1中断服务 P1 0位取反RETIEND 27 4 工作方式3 为什么定时 计数器T1无工作方式3 两个独立的计数器 注 当T1用作串行口的波特率发生器时 T0才工作在方式3 TH0被固定为1个独立的8位定时器 无外部计数功能 并使用T1的资源 TR1 TF1 TL0使用T0的资源 TR0 TF0 INT0 GATE G T 28 例 假设某MCS 51应用系统的两个外中断源已被占用 设置T1工作在方式2 作波特率发生器用 现要求增加一个外部中断源 并控制P1 0引脚输出一个5kHz的方波 设系统时钟为12MHz 29 1 选择工作方式TL0为方式3计数 把T0引脚 P3 4 作附加的外中断输入端 TL0初值设为0FFH 当检测到T0引脚电平出现负跳变时 TL0溢出 申请中断 这相当于跳沿触发的外部中断源 TH0为8位方式3定时 控制P1 0输出5kHz的方波信号 30 2 初值计算TL0的初值设为0FFH 5kHz的方波的周期为200 s TH0的定时时间为100 s TH0初值X计算如下 28 X 2 10 6 1 10 4X 28 100 156 9CH 3 程序设计 31 ORG0000HLJMPMAINORG000BH T0中断入口LJMPTL0INT 跳T0中断服务程序ORG001BH 在T0方式3时 TH0占用T1的中断LJMPTH0INT 跳TH0中断服务程序ORG0100HMAIN MOVTMOD 27H T0方式3计数 T1方式2定时作串行口波特率发生器MOVTL0 0FFH 置TL0初值MOVTH0 9CH 置TH0初值MOVTL1 dataL data为波特率常数MOVTH1 dataH 32 MOVTCON 15H 启动T0或用SETBTR0MOVIE 9FH 允许所有中断SJMP TL0INT MOVTL0 0FFH TL0中断服务程序 TL0重新装入初值SETBTR1 启动TH0定时RETITH0INT MOVTH0 9CH TH0中断服务程序 TH0重新装入初值CPLP1 0RETI 33 初始化程序应完成如下工作 对TMOD赋值 以确定T0和T1的工作方式 计算初值 并将其写入TH0 TL0或TH1 TL1 中断方式时 则对IE赋值 开放中断 使TR0或TR1置位 启动定时 计数器定时或计数 小结 34 五 定时器的应用 1 门控制位GATE的应用 测量脉冲宽度 GATE 0时 与外部中断无关 由TCON寄存器中的TRx位控制启动 GATE 1时 由控制位TRx和引脚共同控制启动 只有在没有外部中断请求信号的情况下 即外部中断引脚 1时 才允许定时器启动 35 ORG0000HRESET AJMPMAIN 复位入口转主程序ORG0100HMAIN MOVSP 60HMOVTMOD 90H T1为方式1定时控制字MOVTL1 00HMOVTH1 00HLOOP0 JBP3 3 LOOP0 INT1高 则循环SETBTR1 如INT1为低 启动T1LOOP1 JNBP3 3 LOOP1 INT1低 则循环LOOP2 JBP3 3 LOOP2 INT1高 则循环CLRTR1 停止T1计数MOVA TL1 T1计数值送A将A中的T1计数值送显示缓冲区转换成显示的代码LOOP3 LCALLDIR 调用显示子程序DIR显示T1计数值AJMPLOOP3 36 2 实时时钟的设计 实时时钟实现的基本思想 如何获得1秒的定时 可把定时时间定为100ms 采用中断方式进行溢出次数的累计 计满10次 即得到秒计时 如何保存秒 分 时 片内RAM中规定3个单元作为秒 分 时单元 具体安排如下 42H 秒 单元 41H 分 单元 40H 时 单元如何实现从秒到分 从分到时 从秒到分 从分到时是通过软件累加并进行比较的方法来实现的 37 时钟主程序流程 中断服务程序流程 38 例 将定时器T0扩展为外部中断源 解 将定时器T0设定为方式2 自动恢复计数初值 TH0和TF0的初值均设置为FFH 允许T0中断 CPU开放中断 源程序如下 MOVTMOD 06HMOVTH0 0FFHMOVTL0 0FFHSETBTR0SETBET0SETBEA T0引脚每输入一个负跳变 TF0都会置1 向CPU请求中断T0脚相当于边沿触发的外部中断源输入线 3 作为外部中断源 39 本章小结 8051单片机共有两个可编程的定时器 计数器 分别称为定时器0和定时器1 它们都是16位加1计数器 定时器 计数器的工作方式 定时时间 计数值和启停控制由程序来确定 定时器 计数器有四种工作方式 工作方式由定时器方式寄存器TMOD中的M1 M0位确定 方式0是13位计数器 方式1是16位计数器 方式2是自动重装初值8位计数器 方式3时 定时器0被分为两个独立的8位计数器 定时器1是无中断的计数器 此时定时器1一般用作串行口波特率发生器 定时器 计数器有定时和计数两种功能 由定时器方式寄存器TMOD中的C T位确定 当定时器 计数器工作在定时功能时 通过对单片机内部的时钟脉冲计数来实现可编程定时 当定时器 计数器工作在计数功能时 通过对单片机外部的脉冲计数来实现可编程计数 40 当定时器 计数器的加1计数器计满溢出时 溢出标志位TF1 TF0 由硬件自动置1 对该标志位有两种处理方法 一种是以中断方式工作 即TF1 TF0 置1并申请中断 响应中断后 执行中断服务程序 并由硬件自动使TF1 TF0 清0 另一种以查询方式工作 即通过查询该位是否为1来判断是否溢出 TF1 TF0 置1后必须用软件使TF1清0 定时器 计数器的初始化实际上就是对定时器 计数器进行编程 以实现设计者所要求的控制功能 这通过对TMOD TH0 TH1 TL0 TL1 IE TCON专用寄存器中相关位的设置来实现 其中IE TCON专用寄存器可进行位寻址 41 选择题 1 定时 计数器T0在GATE 1时运行的条件有 A P3 2 1B 设置好定时初值C TR0 1D T0开启中2 对定时器0进行关中断操作 需要复位中断允许控制寄存器的 A EA和ET0 B EA和EX0 C EA和ET1 D EA和EX13 在下列寄存器中 与定时器 计数器控制无关的是 A TCON B SCON C IE D TMOD4 与定时工作方式0和1相比较 定时工作方式2不具
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中化金融业务管理办法
- ppp项目部管理办法
- 融资租赁定价管理办法
- 精装房安装管理办法
- 莲花湖夜间管理办法
- 装修装饰材料管理办法
- 业务限时办结管理办法
- 个人信息专项管理办法
- 芙蓉镇景区管理办法
- 个人转贷服务管理办法
- 轴承装配工标准化作业考核试卷及答案
- 2025至2030中国电动车仪表行业发展分析及前景趋势与投资报告
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试备考试题及答案解析
- 2025年分步重复光刻机项目发展计划
- 2025年探伤工(二级)重点难点考试试卷
- (正式版)DB15∕T 385-2020 《行业用水定额》
- 村级财务业务知识培训课件
- 2025年特种设备检验人员资格考试(压力管道检验师GDS)历年参考题库含答案详解(5套)
- 白内障囊外摘除联合青光眼人工晶体植入术后护理查房
- 药品停产管理办法
- 2025年《临床输血技术规范》
评论
0/150
提交评论