51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ◆学习MCU > 详细内容
[基础篇]十九、定时、中断练习1
阅读次数:4340  字体大小: 【】 【】【

作者:平凡单片机

定时、中断练习一

1 、利用定时器实现灯的闪烁

在学单片机时我们第一个例子就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们可以用定时器来实现灯的闪烁的功能。

例 1 :查询方式

ORG 0000H

AJMP START

ORG 30H

START:

MOV P1,#0FFH ;关所 灯

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#15H

MOV TL0,#0A0H ;即数5536

SETB TR0 ;定时/计数器0开始运行

LOOP:JBC TF0,NEXT ;如果TF0等于1,则清TF0并转NEXT处

AJMP LOOP ;否则跳转到LOOP处运行

NEXT:CPL P1.0

MOV TH0,#15H

MOV TL0,#9FH;重置定时/计数器的初值

AJMP LOOP

END AJMP LOOP

END

键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。简单地分析一下程序,为什么用 JBC 呢? TF0 是定时 / 计数器 0 的溢出标记位,当定时器产生溢出后,该位由 0 变 1 ,所以查询该位就可知宇时时间是否已到。该位为 1 后,要用软件将标记位清 0 ,以便下一次定时是间到时该位由 0 变 1 ,所 以用了 JBC 指令,该指位在判 1 转移的同时,还将该位清 0 。

以上程序是可以实现灯的闪烁了,可是主程序除了让灯闪烁外,还是不能做其他的事啊!不,不对,我们可以在 LOOP : …… 和 AJMP LOOP 指令之间插入一些指令来做其他的事情,只要保证执行这些指令的时间少于定时时间就行了。那我们在用软件延时程序的时候不是也可以用一些指令来替代 DJNZ 吗?是的,但是那就要求你精确计算所用指令的时间,然后再减去相应的 DJNZ 循环次数,很不方便,而现在只要求所用指令的时间少于定时时间就行,显然要求低了。当然,这样的方法还是不好,所以我们常用以下的方法来实现。

程序 2 :用中断实现

ORG 0000H

AJMP START

ORG 000BH ;定时器0的中断向量地址

AJMP TIME0 ;跳转到真正的定时器程序处

ORG 30H

START:

MOV P1,#0FFH ;关所 灯

MOV TMOD,#00000001B ;定时/计数器0工作于方式1

MOV TH0,#15H

MOV TL0,#0A0H ;即数5536

SETB EA ;开总中断允许

SETB ET0 ;开定时/计数器0允许

SETB TR0 ;定时/计数器0开始运行

LOOP: AJMP LOOP ;真正工作时,这里可写任意程序

TIME0: ;定时器0的中断处理程序

PUSH ACC

PUSH PSW ;将PSW和ACC推入堆栈保护

CPL P1.0

MOV TH0,#15H

MOV TL0,#0A0H ;重置定时常数

POP PSW

POP ACC

RETI

END

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
  • 评论人:[匿名] 时间: [2012/9/29 10:58:11] IP:[213.175.191.23*]
  • NbLB9E , [url=http://ehllgpkttbxk.com/]ehllgpkttbxk[/url], [link=http://udejkmtytszq.com/]udejkmtytszq[/link], http://geumqennwnvz.com/
  • 评论人:[匿名] 时间: [2012/9/29 4:59:33] IP:[127.0.0.*]
  • lUILAU <a href="http://cfeusfnbgxmq.com/">cfeusfnbgxmq</a>
  • 评论人:[匿名] 时间: [2012/9/28 5:44:45] IP:[86.98.29.15*]
  • BfiCiB , [url=http://bsnocgwkqawm.com/]bsnocgwkqawm[/url], [link=http://xnpmkomtwtdv.com/]xnpmkomtwtdv[/link], http://bykkgkojkjzy.com/
  • 评论人:[匿名] 时间: [2012/9/28 3:30:47] IP:[184.169.168.2*]
  • qmr6z9 , [url=http://xcsgmnwltpdq.com/]xcsgmnwltpdq[/url], [link=http://zqijtfgcyvas.com/]zqijtfgcyvas[/link], http://kaugfiadwpsc.com/
  • 评论人:[匿名] 时间: [2012/9/26 12:00:11] IP:[208.47.6.17*]
  • Holy Toledo, so glad I clikecd on this site first!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号