- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系统初始化,主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外,还要注意将计数初值重新装入定时器,为下一次产生中断做准备。 本例,主程序用一条转至自身的短跳转指令来代替。 * 参考程序如下: * 程序说明:当单片机复位时,从程序入口0000H跳向主程序MAIN处执行。其中调用了T0初始化子程序PT0M0。 子程序返回后,程序执行“AJMP HERE”指令,则循环等待。 当响应T0定时中断时,则跳向T0中断入口,再从T0中断入口跳向IT0P标号处执行T0中断服务子程序。 * 当执行完中断返回的指令“RETI”后,又返回断点处继续执行循环指令“AJMP HERE”。在实际的程序中,“AJMP HERE” 实际上是一段主程序。当下一次定时器T0的1ms定时中断发生时,再跳向T0中断入口,从而重复执行上述过程。 如CPU不做其他工作,也可用查询方式进行控制,程序要简单得多。 * 查询程序虽简单,但CPU必须要不断查询TF0标志,工作效率低。 【例6-2】系统时钟为6MHz,编写定时器T0产生1s定时的程序。 基本思想:采用定时器模式。因定时时间较长,首先确定采用哪一种工作方式。时钟为6MHz的条件下,定时器各种工作方式最长可定时时间: 方式0最长可定时16.384ms; 方式1最长可定时131.072ms; 方式2最长可定时512?s。 由上可见,可选方式1,每隔100ms中断一次,中断10次为1s。 * (1)计算计数初值X 因为(216???X)×2?×10?6?=?10?1,所以X?=?15536?=?3CB0H。因此TH0?=?3CH,TL0?=?B0H。 (2)10次计数的实现 对于中断10次的计数,采用B寄存器作为中断次数计数器。 (3)程序设计 参考程序如下: * * 程序说明:不论1s定时时间是否已到,都返回到“SJMP HERE”指令处。“SJMP HERE”指令实际是一段主程序。在这段主程序中再通过对F0标志的判定,可知1s定时是否到,再进行具体处理。 6.4.2 方式2的应用 是可自动重新装载初值的8位计数器/定时器,省去重装初值指令。 当某个定时器/计数器不使用时,可扩展一个负跳沿触发的外中断源。 【例6-3】扩展一个负跳沿触发的外部中断源,把定时器/计数器T0脚作为外部中断请求输入端,溢出标志TF0作为外中断请求标志。 基本思想:设为方式2(自动装入常数方式)计数模式,TH0、TL0初值均为0FFH。当T0脚发生负跳变时,T0计数溢出,TF0置“1”,单片机发出中断请求。 初始化程序: * * 程序说明:当连接在P3.4(T0脚)的外部中断请求输入脚电平发生负跳变时,TL0加1,产生溢出,TF0置“1”,向单片机发出中断请求,同时TH0的内容0FFH送TL0,即TL0恢复初值0FFH。 P3.4脚相当于一个负跳沿触发的外中断请求源输入。对P3.5也可做类似的处理。 【例6-4】 当T0(P3.4)引脚上发生负跳变时,作为P1.0引脚产生方波的启动信号。开始从P1.0脚上输出一个周期为1ms的方波,如图6-14(系统时钟6MHz)。 * 设计思想:T0设为方式1计数,初值为FFFFH。当外部计数输入端T0(P3.4)发生一次负跳变时,T0加1且溢出,溢出标志TF0置“1”,向CPU发出中断请求,此时T0相当于一个负跳沿触发的外部中断源。 进入T0中断程序后,F0标志置“1”,说明T0引脚上已接收过负跳变信号。T1定义为方式2定时。在T0引脚产生一次负跳变后,启动T1每500μs产生一次中断,在中断服务子程序中对P1.0求反,使P1.0产生周期1ms方波。由于省去重新装初值指令,所以可产生精确的定时。 * 图6-14 负跳变触发输出一个周期为1ms的方波 * (1)计算T1的初值 设T1的初值为X,则 (28???X)×2×10?6=5×10?4 X?=28??250=6=06H (2)程序设计 参考程序: * * 程序说明:当单片机复位时,从0000H跳向主程序MAIN处执行程序。其中调用了对T0,T1初始化子程序PT0M2。子程序返回后执行标号LOOP处指令,循环等待T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的复位初始值为0,所以程序就在标号LOOP处循环等待。 当T0(P3.4)脚发生负跳变时,由于T0计数溢出,则跳向T0中断服务子程序。此时停止T0计数,并把T0引脚接收过负脉冲的标志F0置1
原创力文档


文档评论(0)