- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机教程第9章
第9章 定时器/计数器的应用 9.1 定时器/计数器定时功能的应用 9.2 简易方波发生器 9.3 外部脉冲宽度的测量 9.1 定时器/计数器定时功能的应用 1. 实训目的 掌握定时器/计数器定时功能的使用方法 掌握定时器初值的计算方法 掌握定时中断程序的编程方法 2. 功能设计 主程序: 定时器T0的初始化,应用P1口控制发光二极管L1~L8的亮暗交替显示。 定时器T0中断: T0产生10s的定时中断,当定时时间到时,8个发光二极管全灭,并持续一段时间(延时1s)。 3. 背景知识 8051单片机的定时器/计数器T0(T1)为16位计数器,有4种工作方式。每种工作方式的特点见书中表9.1。 本题目需要T0定时10s,直接使用表9.1中的4种方式均不能达到要求。如果采用方式1,定时100ms,则中断10次时间为100ms×100=10000ms=10s。 (1) 定时器工作方式寄存器TMOD设置如书中所示。 (2) 定时器/计数器控制寄存器TCON设置如书中所示。 (3) 定时器/计数器初始值计算 Tini(初始值)=2N-定时时间/机器周期 其中N是定时器/计数器的定时器长度,与定时器/计数器的工作方式有关。机器周期是晶振周期的12倍,若晶振为12MHz,则机器周期为1μs,若晶振为6MHz,则机器周期为2μs。 如要求定时100ms(100000μs),晶振采用6MHz,则定时器/计数器工作在方式1下的初始值为: Tini=216-100000/2=1553615536 转换为十六进制数为3CB0H。(TL0)=3CH,(TH0)=0B0H。中断次数计数器(R3)=10。 (4) T0中断的入口地址为000BH。 4. 硬件原理与资源分配 硬件原理图如图9.1所示。 硬件资源分配: P1口为8位输出口,驱动8个发光二极管。R5为循环计数器。 图9.1 T0定时实训硬件原理图 5. 参考程序 ORG0000H AJMPMAIN ;转主程序 ORG000BH ;T0中断入口地址 AJMPJT0 ;转T0处理程序 MAIN: NOP ;主程序段 MOVSP,#40H ;设定堆栈 MOVA,#0FFH MOVP1,A ;初始化P1口 MOVR5,#100 MOVTMOD,#01H ;写控制字,T0工作方式1 MOVTH0,#0B0H ;设定初始值 MOVTL0,#3CH SETBTR0 ;启动T0 SETBET0 ;允许T0中断 SETBEA ;开总中断 LOOP: MOVA,#0AAH MOVP1,A ;点亮L1、L3、L5、L7 LCALLYS1 ;调用延时1s程序 MOVA,#55H MOVP1,A ;点亮L2、L4、L6、L8 LCALLYS1 ;调用延时1s子程序 AJMPLOOP ;主程序循环,如果有中断,则转中断处理程序 JT0: NOP ;外部中断0处理程序,如果有中断0则转此段 CLREA ;关总中断 PUSHACC ;保护现场 PUSH02H PUSH03H PUSH04H DJNZR5,RRT MOVR5,#100 MOVA,#0FFH ;L1~L8全灭 MOVP1,A LCALLYS1 ;调用延时1s子程序 RRT: MOVTH0,#3CH ;重装初始值 MOVTL0,#0B0H POP04H ;恢复现场 POP03H POP02H POPACC SETBEA ;开中断 RETI ;中断返回 DLS: MOVR1,#0FFH LOP1: MOVR2,#0FFH LOP: DJNZR2,LOP DJNZR1,LOP1 RET END 子程序YS1见第6章例6.3。 6. 总结与提高 定时器/计数器是单片机内部重要的功能部件,灵活运用定时器/计数器的功能,不仅能够节约硬件资源,而且还能使程序简练、控制灵活。在使用定时器/计数器时应注意以下几个方面: (1) 应根据所要求的定时时间长度和定时的重复性,合理选择定时器的工作方式。 (2) 定时器/计数器的初始化,包括设定TMOD、写入定时初值、设置中断系统和启动定时器运行等。 (3) 若将定时器/计数器用于计数方式,则外部脉冲必须从P3.4(T0)或P3.5(T1)引脚输入,且外部脉冲的最高频率不能超过时钟频率的1/24。 在方式0、方式1、方式2状态下定时器T0、T1的工作是一样的,灵活运用这两个内部定时器,可以大大提高单片机的工作效率,减少对系统硬件资源的占用,降低成本。 9.2 简易方波发生器 1. 实训目的 掌握定时器的使用及定时中断程序的设计方法 掌握方波信号发生器的设计方法 2. 功能设计 用单片机的P3.1端口输出一定频率的方波。P1口外接K1~K8共8个按键,用
文档评论(0)