定时计数器中断系统.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例1.选用TO操作模式0,用于定时,由P1.0输出周期为10ms的方波,设晶振fosc= 6MHz。 解:P1.0输出周期为10ms宽的方波,只要每隔5ms取反一次即可得到10ms的方波。因此可以选用TO定时5ms。 Xo=213-fosc×t/12=8192—6×5×1000/12=8192—2500=5692=163CH 由于作13位计数器使用,TL0的高3位未用,应填0,而将计数初值低字节的高3位左移至高字节的低3位,其余5位均左移3位。TH0占高8位,所以Xo的实际值应为: X=1011000100011100B=B11CH 根据题意设置模式控制字00H 由于上电复位后,TMOD各位均为0,所以此字可以不用写入。 初始化程序如下: ORG 8000H MOV TL0,#1CHTO的计数初值X0 MOV THO,#081H SETB TR0 ;启动TO LPl:JBCTF0,LP2TO计数溢出否,同时清除TF0AJMP LPl ;没有溢出等待 LP2:MOV TH0,#081HMOV TL0,#1CHCPL P1.0SJMP LPl ;重复循环 例2.用定时器1产生一个50Hz的方波,由P1.1输出,仍用程序查询方式,fosc=12MHz。 解:方波周期T=1/50=O.02s=20ms,用T1定10ms,计数初值X1: X1=216—12×10×1000/12=65536—10000=55536D8FOH 源程序如下: MOV TMOD,#10HT1模式1,定时SETB TRl ;启动T1 LOOP: MOV THl,#0D8HT1计数初值MOV TLl,#0FOHJNB TFl,$T1没有溢出等待CLR TFl ;产生溢出清标志位 CPL P1.1P1.1取反输出SJMP LOOP ;循环 例3.用定时器1,模式2计数,要求每计满200次,将P1.端取反。 解:T1工作于计数方式,外部计数脉冲由T1(P3.5)引脚引入,每来一个由1至0的跳变1,由程序查询TFl的状态。 计数初值 Xl=28—200=56=38H THl=TLl=38H,TMOD=60H(计数方式,模式2) MOV TMOD,#60HT1模式2,计数方式 MOV THl,#38HT1计数初值 MOV TLl,#38H SETB TRl ;启动T1 LOOP: JBCTFl,REPTFl=1转 SJMP LOOP ;否则等待 REP: CPLP1.0P1.o取反输出SJMP LOOP 例4由P3.4引脚(TO)输入一低频脉冲信号(其频率小于0.5kHz),要求P3.每发生一P1.0输出一个500s的同步负脉冲,同时P1.0输出一个lms的同步正脉冲。已fosc =6MHz。 解:按题意画出输出信号的波形如图。 编程思路: 设初态P1.0输出高电平(系统复位时即为高),P1.1输出低电压,设TO为模式2,计数工(初值为FFH)。当加在P3.4上的外部脉冲产生由1至0的负跳变时,则使TO计数器1而产生溢出,程序查询到TF0为1时,改变为500s定时工作方式,并且使P1.0输出为0,P1.1输出1。当TO第一次定时500s到时,计数器溢出后,使P1.o恢复为1,TO继续第二500μs定时的计数,产生溢出后恢复P1.1为0。然后TO又恢复对外部脉冲的计数方式,如 500μs定时的计数初值X为:X=256—500×6/12=6 程序如下: START:MOV TMOD,#06H TO模式2,计数工作方式 MOV TH0,#0FFH TO计数初值 MOV TL0, #0FFH CLR P1.1 P1.1初态为0 SETB TR0 TO LOOP: JBC TF0, LP1 ;检测外部信号负跳变否? SJMP LOOP ;无等待 LPl: CLR TR0 MOV TMOD,#02H TO改变为定时500s,模式2 MOV TH0,#06H MOV TL0, #06H SETB P1.1 ;P1.1输出1 CLR P1.0 P1.0输出0 SETB TR0 TO定时 LOOPl:JBC TF0, LP2 500μs到否? SJMP LOOP1 LP2: SETB P1.0 P1.0恢复 LOOP2:JBC TF0, LP3 500μs到否

文档评论(0)

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

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

1亿VIP精品文档

相关文档