- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(高职张志良)认真的孩子都会受到老天眷顾的加油
⒉ 定时/计数器应用步骤 ⑴ 合理选择定时/计数器工作方式 ⑵ 计算定时/计数器定时初值(按上述公式计算) ⑶ 编制应用程序 ①定时/计数器的初始化 包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。 ②正确编制定时/计数器中断服务程序 注意是否需要重装定时初值,若需要连续反复使用原定时时间,且未工作在方式2,则应在中断服务程序中重装定时初值。 【例】试用T1方式2编制程序,在P1.0引脚输出周期为400?S的脉冲方波,已知fosc=12MHZ。 解:① 计算定时初值 T1初值=28-200?s/1?s=256–200=56=38H TH1=38H;TL1=38H ② 设置TMOD: 0 0 10 0000 B=20H T0控制位,与T1无关 T1方式2 T1定时器 T1启动与 无关 ③ 编制程序如下: ORG 0000H ;复位地址 LJMP MAIN ;转主程序 ORG 001BH ;T1中断入口地址 LJMP IT1 ;转T1中断服务程序 ORG 0100H ;主程序首地址 MAIN: MOV TMOD,#20H ;置T1定时器方式2 MOV TL1,#38H ;置定时初值 MOV TH1,#38H ;置定时初值备份 MOV IP,;置T1高优先级 MOV IE,#0FFH ;全部开中 SETB TR1 ;T1运行 SJMP $ ;等待T1中断 ORG 0200H ;T1中断服务程序首地址 IT1: CPL P1.0 ;输出波形取反首地址 RETI ;中断返回 【课堂练习题】 参照以上例题工作方式2,按下列要求分别修改程序: ① 脉冲方波从P3.0输出; ② fosc=6MHz; ③ 脉冲方波脉宽为100?s; ④ 用定时/计数器T0; 【例】已知晶振12MHZ,参阅图5-15,要求利用定时器 T0使图中发光二极管D进行秒闪烁。 解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮500ms,暗500 ms。晶振12MHz,每机周1?s,T0方式1最大定时只能65ms余。 取T0定时50ms,计数10次,即可实现500ms定时。 ① 计算定时初值 T0初值 =216-50000?s/1?s =65536–50000=15536=3CB0H TH0=3CH;TL0=B0H。 ② 设置TMOD: 0000 0 0 01 B = 01H T0方式1 T0 与 无关 T1控制位 ③ 编制程序如下: ORG 0000H ;复位地址 LJMP MAIN ;转主程序 ORG 000BH ;T0中断入口地址 LJMP IT0 ;转T0中断服务程序 ORG 0100H ;主程序首地址 MAIN:MOV TMOD,#01H ;置T0定时器方式1 MOV TH0,#3CH ;置T0初值50mS MOV TL0,#0B0H ; MOV IE,;T0开中 MOV R7,#0AH ;置50mS计数器初值 SETB TR0 ;T0运行 SJMP $ ;等待中断 【例】已知fosc=6MHz,试编写24小时模拟电子钟程序,秒分时数分别存在R1、R2、R3中,可直接调用显示程序DIR。 解: ORG 0000H ;复位地址 LJMP IT0 ;转主程序 ORG 000BH ;T0中断入口地址 LJMP IT0 ;T0中断,转T0中断服务子程序IT0 ORG 1000H ;主程序首地址 START:MOV R1,#0 ;秒计数器清0 MOV R2,#0 ;分计数器清0 MOV R3,#0 ;时计数器清0 MOV R4,#0 ;500?S计
文档评论(0)