定时中断程序.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时中断程序

1、用定时器延时 开始接在单片机P1端口的P1.7亮,用定时器延时60ms后P1.6亮,依次向右移动,循环显示。 采用定时器做延时: START: MOV R0,#8 MOV A, LOOP: MOV P1,A ; 使 P1.0输出 LCALL DELAY RR A DJNZ R0,LOOP ; 调定时器延时子程序 JMP START ; 跳到START处 主程序 DELAY: MOV TMOD, ; 设定TO工作在MODE1 SETB TR0 ; 启动TO开始计时 MOV TL0,#LOW(65536-60000) ; 装入低位定时常数 MOV TH0,#HIGH(65536-60000); 装入高位定时常数 JNB TF0,$ ; T0没有溢出等待 CLR TF0 ; 产生溢出清标志位 RET ; 子程序返回 延时子程序 END ; 程序结束 功能说明: 开始时P1.0亮,延时10秒后,左移至P1.1亮,如此左移到第6个灯(P1.5)亮后,再从头开始向左移动,1分钟循环一次。 程序:DS02.ASM 01: START: MOV R0, #6 ;设左移6次 02: MOV A, ;存入开始点亮灯位置 03: LOOP: MOV P1, A ;传送到P1并输出 04: ACALL DELAY ;调延时子程序 05: RL A ;左移一位 06: DJNZ R0, LOOP ;判断移动次数 07: JMP START ;重新设定显示值 主程序 08:DELAY: MOV R1,#200 ;设置软件计数初值 09: MOV TMOD,; 设定TO工作在MODE1 10: SETB TR0 ; 启动TO开始计时 11: AGAIN: MOV TL0,#LOW(65536-50000) ; 装入低位 12: MOV TH0,#HIGH(65536-50000); 装入高位 13: LOOP1: JBC TF0,LOOP2 ;TF0是1转移至LOOP2并清0 14: JMP LOOP1 15:LOOP2: DJNZ R1,AGAIN ;R1不是0,则转移至AGAIN (定时加软 16: CLR TR0 ;是,则停止T0计时 件计数) 17: RET ; 子程序返回 延时子程序 18: END ; 程序结束 功能说明:采用两个定时器合用,T0设置为定时方式,T1设置为计数方式。T0定时时间为50ms,计满产生的输出信号由P1.7口发光二极管显示。同时还将该信号输入到计数器T1(P3.5脚)作为T1的计数输入脉冲,当输入信号产生由1到0的跳变时触发计数器工作,使计数器的值增1。计数器T1的初始值设置为100,计满时所用的时间为50ms×2×100,即10s。并由P1.0端口发光二极管来显示,所以P1.0端口的灯每10s点亮或熄灭一次。 程序:DS03.ASM 01: ORG 00

文档评论(0)

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

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

1亿VIP精品文档

相关文档