19定时器计数器应用举例..doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
19定时器计数器应用举例.

课 题 定时器/计数器应用举例 授课方式:讲授 教学目的: 1.掌握定时器/计数器初值的计算方法。 2.掌握定时器/计数器应用程序的编制方法。 重点、难点: 重点:定时器/计数器初值的计算方法,定时器/计数器应用程序的编制方法。 难点:定时器/计数器初值的计算方法,定时器/计数器工作方式的选择。 教学过程: 导入: 实例:通过定时器/计数器控制小喇叭进行音乐演奏实例引起学生兴趣。 上一次课我们主要介绍了AT89C51单片机内部有两个定时器/计数器T0和T1,其核心是计数器,基本功能是加1,对外部事件脉冲计数是计数器,对片内部机器周期的脉冲计数则是定时器。 AT89C51单片机定时器器/计数器的方式控制寄存器TMOD(89H),用来设置T0,T1的工作方式.控制寄存器TCON(88H):,用来控制T0,T1的启动和停止。四种工作方式的特点。 那我们如何对单片机定时器/计数器的初始化,如何编写实际的应用程序? 我们前面介绍的广告灯的设计P1口接LED灯要实现闪烁效果,灯的亮灭需要延时,具体做法是通过编写软件延时子程序来实现的,其程序如下: ORG 0000H SJMP START ORG 0080H START: MOV P1,#00H;灯亮 CALL DELAY MOV P1,#0FFH;灯灭 CALL DELAY SJMP START DELAY: MOV R3,#20 D1:MOV R4,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET END 那如果通过定时器/计数器来实现延时,该如何编写程序呢? 一、方式 0 的应用 图1方式1(13位计数器)示意图 方式0构成一个13位定时器/计数器。16位加法计数器(TH0和TL0)只用了13位,其中TH0占高8位,TL0占低5位(只用低5位,高三位未用)。当TL0低5位溢出时自动向TH0进位,而TH0溢出时向中断位TF0进位(硬件自动置位),并申请中断。 例 1 用定时器1、方式0实现1s延时.(晶振12MHz) 解:因为方式0采用13位计数器,其最大定时时间为:8192*1μs=8.192ms,因此,我们可选定时时间为5ms,再循环200次.定时时间选定后再确定计数值. 计数值=5ms/1μs=5*1000=5000 因13位计数器中TL1的高3位未用,应填写0,TH1占高8位, TH1:(8192-5000)/32 TL1:(8192-5000)MOD 32 采用方式0定时,固TMOD=00H 编写1s延时子程序如下: DELAY: MOV R3,#200 ;置5ms计数循环初值 MOV TMOD,#00H ;设定时器为方式0 MOV TH1,# (8192-5000)/32 ;置定时初值 MOV TL1,# (8192-5000)MOD 32 SETB TR1 ;启动T1 LP1: JBC TF1,LP2 ;查询计数溢出 SJMP LP1 ;未到5ms继续计数 LP2: MOV TH1,# (8192-5000)/32 ;重新置定时初值 MOV TL1,# (8192-5000)MOD 32 DJNZ R3,LP1 ;未到1s继续循环 RET ;返回主程序 END 二、方式1的应用 图2 方式1(16位计数器)示意图 方式1构成16位定时器/计数器,其结构与操作几乎与方式0完全相同,唯一的差别是两者的计数位数不同。 例 2 用定时器0、方式1实现1s延时.(晶振12MHz) 解:计数值=5ms/1μs=5*1000=5000 TH1:(65536-5000)/256 TL1:(65536-5000)MOD 256 采用方式0定时,固TMOD=01H 编写1s延时子程序如下: DELAY: MOV R3,#200 ;置5ms计数循环初值 MOV TMOD,#01H ;设定时T0器为方式1 MOV TH0,# (65536-5000)/256 ;置定时初值 MOV TL0,# (65536-5000)MOD 256 SETB TR0 ;启动T0 LP1: JBC TF0,LP2 ;查询计数溢出 SJMP LP1 ;未到5ms继续计数 LP2: MOV TH0,# (65536-5000)/256 ;重新置定时器初值 MOV TL0,# (65536-5000)MOD 256

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档