好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

定时器及应用.ppt

49页
  • 卖家[上传人]:m****
  • 文档编号:582108579
  • 上传时间:2024-08-29
  • 文档格式:PPT
  • 文档大小:5.20MB
  • / 49 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第六章第六章 定时器及应用定时器及应用n§6.1 定时器概述定时器概述n§6.2 定时器的控制定时器的控制 n§6.3 定时器的四种模式及应用定时器的四种模式及应用 n§6.4 思考题与习题思考题与习题 定时器概述n实现定时或计数,通常采用以下三种方法: 1、硬件法 硬件定时功能完全由硬件电路完成,不占用CPU时间但当要求改变定时时间时,只能通过改变电路中的元件参数来实现,很不灵活 2、软件法 软件定时是执行一段循环程序来进行时间延时优点是无需额外的硬件开销,时间比较准确,但牺牲了CPU的时间 3、可编程定时器/计数器 8051内部提供了2个可编程的定时器/计数器T0、T1,它们可以用于定时或对外部脉冲计数,还可以作为串行口的波特率发生器定时器达到预定定时时间或计数满时,给出溢出标志,还可以发出内部中断 定时器概述n组成:6个SFR寄存器,包括TMOD、TCON、TH0和TL0、TH1和TL1n定时/计数器的核心:一个加1计数器,完成加1计数功能n定时功能:若是对单片机内部的机器周期进行计数,从而得到定时时间,这就是定时功能。

      每个机器周期计数器加1n计数功能:若是对单片机的T0、T1引脚输入信号进行计数,即计数功能,当外部输入信号出现下降沿时,计数器加1n定时功能和计数功能的设定和控制都是通过软件来设定的 8051定时/计数器逻辑结构 T0、T1的内部结构框图 定时器定时器/计数器计数器0、、1的初始化编程的初始化编程 定时器的控制n工作模式寄存器TMODnGATE=1,T0、T1的启动由INTi引脚和TRi位共同控制只有INTi引脚为高电平时,TRi置“1”才能启动定时/计数器nGATE=0,T0、T1由软件设置TRi来控制启动TRi=1,启动;TRi=0,停止 定时器/计数器的工作方式nTMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1nM1M0:工作方式控制位,对应的工作方式如下图: 控制寄存器TCONnTCON用于控制定时/计数器的启、停、溢出标志和外部中断信号触发方式nTFi:T0、T1溢出位当计数溢出时,由硬件自动使TFi置1,并向CPU申请中断,中断响应后硬件自动清0TFi也可作为程序查询的标志位,在查询方式下由软件清0nTRi:T0、T1运行控制位TRi=1,启动计数,TRi=0,停止计数 定时器的4种模式及应用n每种工作模式对应的最大计数值 模式0 :13位计数器 213=8192 模式1 :16位计数器 216=65536 模式2 :8位计数器 28=256 模式3 :8位计数器 28=256n定时初值: 对机器周期进行计数。

      T:定时时间,X:初值,N:计数器位数,fosc:系统时钟频率 (2N-X) ×12/fosc=T X=2N-fosc/12×Tn计数初值: 对外部脉冲计数,计数值根据要求确定N:计数器位数,X:初值,则: X=2N-计数值 定时器/计数器工作模式0n模式0为13位计数器n定时时间T:nT=(213-X) ×12/fosc=(213-X) ×机器周期n计数初值:X=213-计数值振荡器振荡器÷12…TL1低低5位位TH18位位TF1&≥11T1引脚引脚S1TcyC/T=0C/T=1S2TR1GATE中断中断INT1引脚引脚 工作模式0举例n例:应用定时器T0产生1ms定时,并使P1.0输出周期为2ms的方波,已知晶振频率为6MHzn初值X: (213-X) ×12/(6×106)=1×10-3nX=7692=1E0CH,二进制表示为X=0001 1110 0000 1100nTH0=0F0H(高8位),TL0=0CH(低5位) 采用查询TF0状态方式: ORG 2000H MOV TMOD,#00H;写入方式控制字 MOV TL0,#0CH;计数初值写入 MOV TH0,#0F0H SETB TR0;启动T0LOOP:JBC TF0,PE;TF0=1溢出转移PE,清TF0 AJMP LOOP;未溢出PE: MOV TL0,#0C0H;重装计数初值 MOV TH0,#0F0H CPL P1.0 AJMP LOOP END 采用定时器溢出中断方式的程序 ORG 0000H ; 主程序RESET: AJMP MAIN ; 跳过中断服务程序区 ORG 000BH;定时器T0中断矢量 AJMP PE;转入中断服务程序 ORG 0030H MAIN: MOV TMOD,#00H;设置T0为模式0 MOV TL0,#0CH;计数初值写入 MOV TH0,#0F0H SETB EA ;CPU开中断 SETB ET0 ;T0中断允许 SETB TR0 ;启动定时 HERE:SJMP HERE ;等待中断 ORG 0120H ;中断服务程序PE: MOV TL0,#0C0H;重装计数初值 MOV TH0,#0F0H CPL P1.0 ;P1.0取反 RETI;中断返回 定时/计数器工作模式1 n模式1是16位定时/计数器,与模式0的区别是计数器的长度。

      比模式0常用n定时时间T:nT=(216-X) ×12/fosc =(216-X) ×机器周期n计数初值:X=216-计数值 模式1举例n例:用定时器T1产生一个50Hz的方波,由P1.1输出,采用查询的方式进行控制,设晶体频率为12MHz ① 确定计数初值 方波周期T=20ms,用T1定时10ms,P1.1取反输出,计数初值X:T =(216-X) ×12/fosc =10 ×10-3 ② 设置工作模式寄存器TMOD TMOD=0001 0000B=10H ③ 启动定时计数器 模式1举例 ORG 2000H MOV TMOD,#10H SETB TR1LOOP:MOV TH1,#0D8H MOV TL1,#0F0H JNB TF1,$ CLR TF1 CPL P1.1 SJMP LOOP END 定时/计数器工作模式2n模式2是能自动重装计数初值的8位计数器。

      低8位作计数器使用,高8位保存计数初值n定时方式计数初值:X=28-T×fosc/12n计数方式计数初值:X=28-计数值 工作模式2举例n例1、利用定时器T1的模式2对外部信号计数要求每计满100次,将 P1.0端取反 思路思路:外部信号由T1(P3.5)引脚输入,每发生一次负跳变计数器加1,每输入100个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反一次 T1的计数初值:的计数初值: X= 28 -100=156=9CH,因此,TH1=TL1=9CH TMOD=0110 0000B=60H 工作模式2举例程序清单: ORG 0000H LJMP MAIN ORG 001BH ;中断服务程序入口 CPL P1.0 RETI MAIN: MOV TMOD,#60H ;设置T1为模式2,外部计数方式 MOV TL1,#9CH ;T1计数器初值 MOV TH1,#9CH MOV IE,#88H ; 定时器开中断 SETB TR1 ;启动T1计数 HERE: SJMP HERE ;等待中断 工作模式2举例n例2、由P3.4引脚(T0)输入一低频脉冲信号,要求P3.4每发生一次负跳变时,P1.0输出一个200us的同步负脉冲,同时P1.1输出一个400us的同步正脉冲。

      已知晶振频率为6MHz,初态为P1.0为高,P1.1为低n思路:T0工作于模式2,外部事件计数方式,初值为FFH(一次计数就产生中断),查询TF0,为1后改为200us定时,设置P1.0和P1.1状态第一次200us 定时完成,设置P1.0和P1.1状态,继续第二次200us定时,第二次定时完成,设置P1.0和P1.1状态,恢复初值FFH,循环即:反复改变计数值 n程序清单:START:MOV TMOD,#06H;T0模式2,计数 MOV TH0,#0FFH;计数初值 MOV TL0,#0FFH CLR P1.1;P1.1初态为0 SETB TR0 LOOP: JBC TF0,LP1;检测外部信号负跳变 SJMP LOOP;LP1: CLR TR0;关定时器 MOV TMOD,#02H;T0改变为定时200us ,模式2 MOV TH0,#156;定时的计数初值 MOV TL0 ,#156 SETB P1.1;P1.1输出1 CLR P1.0; P1.0输出0 SETB TR0;启动定时 LOOP1:JBC TF0,LP2;第1个200us到否 SJMP LOOP1;未到等待LP2: SETB P1.0 ;到了恢复P1.0LOOP2: JBC TF0,LP3;第2个200us到否 SJMP LOOP2LP3: CLR P1.1 CLR TR0;关定时器 AJMP START 定时/计数器工作模式3n模式3下,T0和T1的结构、功能不同nT0模式3: TL0和TH0分成两个互相独立的8位计数器。

      其中TL0用原T0的各控制位、引脚和中断 源,即GATE0、TR0、TF0和T0引脚、INT0引脚 TH0只有内部定时,占用定时器T1的TR1和TF1nT1无模式3: 将T1设置为方式3 ,会使T1立即停止计数 定时/计数器工作模式3n在T0模式3时,T1仍可设置为方式0~2由于TR1和TF1被T0的TH0占用,计数器开关K已被接通,此时仅用T1的C/T控制T1运行计数器溢出时,只能将输出送入串行口或用于不需要中断的场合n在一般情况下,当T1用作串行口波特率发生器时,T0才设置为工作模式3此时,常把定时器T1设置为模式2,用作波特率发生器 T0模式3结构图 T0模式3下,T1结构 工作模式3举例n例:应用T0模式3,分别设定200us和400us定时,并使P1.0和P1.1分别产生周期为400us和800us方波,已知晶振频率为6MHz,采用中断方式n200us计数初值: (28-X) ×2×10-6=200×10-6,X=156=9CHn400us计数初值: (28-X) ×2×10-6=400×10-6,X=56=38H ORG 2000HSTART:AJMP MAIN ORG 000BH AJMP PIT0;转入T0中断处理入口 ORG 001BH AJMP PIT1;转入T1中断处理入口 ORG 2100HMAIN: MOV SP,#60H MOV TMOD,#03H;模式3 MOV TL0,#9CH;定时200us初值 MOV TH0,#38H;定时400us初值 MOV TCON,#50H;启动TL0,TH0计数 MOV IE,#8AH,开T0、T1中断 LOOP: AJMP LOOP;等待中断PIP0 : MOV TL0,#9CH;T0中断处理程序 CPL P1.0 RETIPIT1: MOV TH0,#38H;T1中断处理程序 CPL P1.1 RETI 利用GATE测试外部输入脉冲宽度nGATE=0时,定时器的启动只受TRi位控制nGATE=1时,定时器的启动受TRi位和外部中断信号INTi的共同控制。

      只有当INTi引脚为1,同时TRi=1时才能启动计数; INTi引脚为0时停止计数n换个角度看,当GATE=1时,定时器实际记录的时间就是相应INTi引脚上高电平的持续时间通过反相器,则可测得相应引脚的低电平的持续时间两个时间之和即为该引脚上输入波形的周期,其倒数为输入波形的频率,还可算出占空比等参数 利用GATE测试外部输入脉冲宽度n测试原理(以T0为例,GATE=1,TR0=1) 测试脉宽举例n例:利用T0门控位GATE来测试由INT0(P3.2)引脚输入的正脉冲宽度,已知晶振为12MHz,所测得的高8位值存入片内RAM的21H单元,低8位值存入片内20H单元中n思路:采用T0工作模式1(16位计数),GATE=1,TR0=1,初值为0000H 测试脉宽举例 MOV TMOD,#09H;T0定时,模式1 MOV TH0,#00H;T0计数初值0000H MOV TL0,#00H MOV R0,#20H;RAM的地址指针LOOP1:JB P3.2,LOOP1;等待INT0变低 SETB TR0;启动T0准备计数LOOP2:JNB P3.2,LOOP2;等待INT0变高LOOP3:JB P3.2,LOOP3 ;等待INT0再次变低 CLR TR0;INT0变低停止计数 MOV @R0,TL0;存入计数值 INC R0 MOV @R0,TH0 综合应用举例n例1、设时钟频率为6MHz。

      编写利用T0产生1s定时的程序①① 确定定时器确定定时器T0的工作模式的工作模式模式0最长可定时16.384ms; 模式1最长可定时131.072ms;模式2最长可定时512us;定时1s,可选用模式1,每隔100ms中断一 次,中断10次从而达到1s的定时②② 求计数器初值求计数器初值X(216-X)×12/(6 × 106) =100×10-3 sX=15536=3CB0H③③ 实现方法实现方法: 对于中断10次计数,可使T0工作在计数方式,也可用循环程序的方法实现本例采用循环程序法 源程序清单 ORG0000H AJMP MAIN; 上电,转向主程序 ORG 000BH ;T0的中断服务程序入口地址 AJMP SERVE ;转向中断服务程序 ORG 0080H ;主程序MAIN : MOV SP,#60H ;设堆栈指针 MOV B,#0AH ;设循环次数 MOV TMOD,#01H;设置T0工作于模式1 MOV TL0,#0B0H;装计数值低8位 MOV TH0,#3CH;装计数值高8位 SETB TR0 ;启动定时 SETB ET0;T0开中断 SETB EA;CPU开中断 SJMP $;等待中断SERVE: MOV TL0,#0B0H ;重新赋初值 MOV TH0,#3CH DJNZ B,LOOP ;B-1不为0,继续定时 CLR TR0 ;1s定时到,停止T0工作LOOP: RETI ;中断返回 END 综合应用举例n例2、设计实时时钟程序。

      ① 计算计数初值 时钟计时的最小单位是秒,而单片机的最长定时时间只能达到131ms(时钟频率为6MHz),可把定时器的定时时间定为100ms,计数溢出10次即得到1秒如fosc=6MHz,使用定时器T1,以工作模式1进行100ms的定时,则计数初值X为:X=15536=3CB0H ② 采用中断方式进行溢出次数的累计,计满10次即得到秒计时 ③ 从秒到分和从分到时的计时可通过累计和数值比较实现满1s,秒位累加;满60s,分位累加;满60min,时位累加;满24h全部累加单元清0 设设T1为模式为模式1设中断次数设中断次数清计时单元清计时单元开中断开中断启动启动T1调用显示子程序调用显示子程序保护现场赋计数初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢复现场返回aaNNNNYYYY主程序流程图中断服务程序流程图 ORG 0000H AJMP MAIN ; 上电,转向主程序 ORG 001BH ;T1的中断服务程序入口地址 AJMP SERVE ;转向中断服务程序 ORG 2000H ;主程序MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#10H ;设置T1工作于模式1 MOV 20H,#0AH ;设循环次数 CLR A MOV 30H,A ;时单元清0 MOV 31H,A ;分单元清0 MOV 32H,A ;秒单元清0 SETB ET1 ;T1开中断 SETB EA ;CPU开中断 MOV TL1,#0B0H ;装计数值低8位 MOV TH1,#3CH ;装计数值高8位 SETB TR1 ;启动定时 SJMP $ ;等待中断 中断服务程序: SERVE: PUSH PSW ;保护现场 PUSH ACC MOV TL1,#0B0H ;重新赋初值 MOV TH1,#3CH DJNZ 20H,RETUNT ;1s未到,返回 MOV 20H,#0AH ;重置中断次数MOV A,#01H ADD A,32H ;“秒位”加1 DA A ;转换为BCD码 MOV 32H,A CJNE A,#60H,RETUNT ;未满60s,返回 MOV 32H,#00H ;计满60s,“秒位”清0 MOV A,#01H ADD A,31H ;“分位”加1 DA A ;转换为BCD码 MOV 31H,A CJNE A,#60H,RETUNT ;未满60min,返回 MOV 31H,#00H ;计满60min,“分位”清0 MOV A,#01H ADD A,30H ;“时位”加1 DA A ;转换为BCD码 MOV 30H,A CJNE A,#24H,RETUNT ;未满24h,返回 MOV 30H,#00H ;计满24h,“时位”清0RETUNT: POP ACC ;恢复现场 POP PSW RETI ;中断返回 END 运行中读定时/计数器n8051可以随时读写TLi和THi,比如用于实时显示计数值等。

      n但在读取时应注意由于分时读取TLi和THi而带来的特殊性假如先读TLi,再读THi,由于这时定时/计数器还在运行,如果在读THi之前刚好发生TLi溢出向THi进位,这样读得的TLi值就不正确,同样,先读THi后读TLi时也可能产生这种错误 运行中读定时/计数器n解决办法:先读THi,后读TLi,再重读THi,若两次读取的THi值一样,则读入的数据正确;若两次读取THi值不一致,则必须重读 RDTIME:MOV A,TH0;读TH0 MOV R0,TL0;读TL0 CJNE A,TH0,RDTIME;再读TH0, 与上次读入的TH0比较,若不等,重读 MOV R1,A RET 定时器/计数器2n8032/8052增加了一个定时器/计数器2定时器/计数器2可以设置为定时器,也可以设置为外部事件计数器,具有三种工作方式:16位自动重装载定时器/计数器方式、捕捉方式和串行口波特率发生器方式。

      输入引脚T2(P1.0)是外部计数脉冲输入端;输入引脚T2EX(P1.1)是外部控制信号输入端 定时器/计数器2由特殊功能寄存器TH2、TL2、RCAP2H、RCAP2L等电路组成其中TH2、TL2构成16位加法计数器RCAP2H、RCAP2L构成16位寄存器在自动重装载方式中,RCAP2H、RCAP2L作为16位初值寄存器,在捕捉方式中,当T2EX(P1.1)上出现负跳变时,把TH2、TL2的当前值捕捉到寄存器RCAP2H、RCAP2L中 n定时器/计数器2的工作由控制寄存器T2CON控制T2CON的格式如表所示n各位功能描述: 定时器/计数器2的自动重装载及捕捉工作方式 波特率发生器工作方式 。

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.