《定时器计数器习题》PPT课件

《定时器计数器习题》PPT课件

ID:36728153

大小:548.10 KB

页数:41页

时间:2019-05-10

《定时器计数器习题》PPT课件_第1页
《定时器计数器习题》PPT课件_第2页
《定时器计数器习题》PPT课件_第3页
《定时器计数器习题》PPT课件_第4页
《定时器计数器习题》PPT课件_第5页
资源描述:

《《定时器计数器习题》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1第6章定时器/计数器习题126.4定时器/计数器的编程和应用4种方式,方式0与方式1基本相同,只是计数位数不同。方式0初值计算复杂,一般不用方式0,而用方式1。6.4.1方式1的应用【例6-1】假设系统时钟频率采用6MHz,在P1.0引脚上输出一个周期为2ms的方波,如图6-13所示。2图6-13P1.0引脚上输出周期为2ms的方波3基本思想:方波周期T0确定,T0每隔1ms计数溢出1次,即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务子程序中对P1.0取反,如图6-13所示。为此要做如下几步工作。(1)计算计数初值X机器周期

2、=2s=210−6s设需要装入T0的初值为X,则有(216−X)210−6=110−3,216−X=500,X=65036。X化为十六进制数,即:65036=FE0CH。T0的初值为TH0=FEH,TL0=0CH。34(2)初始化程序设计采用定时器中断方式工作。包括定时器初始化和中断系统初始化,主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确的设置,并将计数初值送入定时器中。(3)程序设计中断服务子程序除了完成所要求的产生方波的工作之外,还要注意将计数初值重新装入定时器,为下一次产生中断做准备。本例,主程序用一条转至

3、自身的短跳转指令来代替。45参考程序如下:ORG0000H;程序入口RESET:AJMPMAIN;转主程序ORG000BH;T0中断入口AJMPIT0P;转T0中断处理程序IT0PORG0100H;主程序入口MAIN:MOVSP,#60H;设堆栈指针MOVTMOD,#01H;设置T0为方式1定时ACALLPT0M0;调用初始化子程序PT0M0HERE:AJMPHERE;原地循环,等待中断56PT0M0:MOVTL0,#0CH;T0初始化,装初值的低8位MOVTH0,#0FEH;装初值的高8位SETBET0;允许T0中断SETBEA;总中断

4、允许SETBTR0;启动T0RETIT0P:MOVTL0,#0CH;中断子程序,T0重装初值MOVTH0,#0FEHCPLP1.0;P1.0的状态取反RETI程序说明:当单片机复位时,从程序入口0000H跳向主程序MAIN处执行。其中调用了T0初始化子程序PT0M0。67子程序返回后,程序执行“AJMPHERE”指令,则循环等待。当响应T0定时中断时,则跳向T0中断入口,再从T0中断入口跳向IT0P标号处执行T0中断服务子程序。当执行完中断返回的指令“RETI”后,又返回断点处继续执行循环指令“AJMPHERE”。在实际的程序中,“AJM

5、PHERE”实际上是一段主程序。当下一次定时器T0的1ms定时中断发生时,再跳向T0中断入口,从而重复执行上述过程。如CPU不做其他工作,也可用查询方式进行控制,程序要简单得多。78查询方式参考程序:MOVTMOD,#01H;设置T0为方式1LOOP:MOVTH0,#0FEH;T0置初值MOVTL0,#0CHSETBTR0;接通T0LOOP1:JNBTF0,LOOP1;查TF0,TF0=0,T0未溢出;;TF0=1,T0溢出,CLRTR0;T0溢出,关断T0CPLP1.0;P1.0的状态求反SJMPLOOP查询程序虽简单,但CPU必须要不

6、断查询TF0标志,工作效率低。89【例6-2】系统时钟为6MHz,编写定时器T0产生1s定时的程序。基本思想:采用定时器模式。因定时时间较长,首先确定采用哪一种工作方式。时钟为6MHz的条件下,定时器各种工作方式最长可定时时间:方式0最长可定时16.384ms;方式1最长可定时131.072ms;方式2最长可定时512s。由上可见,可选方式1,每隔100ms中断一次,中断10次为1s。910(1)计算计数初值X因为(216−X)210−6= 10−1,所以X= 15536 = 3CB0H。因此TH0 = 3CH,TL0 = B0H。

7、(2)10次计数的实现对于中断10次的计数,采用B寄存器作为中断次数计数器。(3)程序设计参考程序如下:ORG0000H;程序运行入口RESET:LJMPMAIN;跳向主程序入口MAINORG000BH;T0的中断入口LJMPIT0P;转T0中断处理子程序IT0PORG1000H;主程序入口1011MAIN:MOVSP,#60H;设堆栈指针MOVB,#0AH;设循环次数10次MOVTMOD,#01H;设置T0工作在方式1定时MOVTL0,#0B0H;给T0设初值MOVTH0,#3CHSETBET0;允许T0中断SETBEA;总中断允许SE

8、TBTR0;启动T0HERE:SJMPHERE;原地循环,等待中断1112IT0P:MOVTL0,#0B0H;T0中断子程序,T0重装初值MOVTH0,#3CHDJNZB,RTURN;B中断次

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。