定时、中断练习一

定时、中断练习一

ID:41485912

大小:57.49 KB

页数:9页

时间:2019-08-25

定时、中断练习一_第1页
定时、中断练习一_第2页
定时、中断练习一_第3页
定时、中断练习一_第4页
定时、中断练习一_第5页
资源描述:

《定时、中断练习一》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、定时、中断练习一K利用定吋器实现灯的闪烁在学单片机吋我们第一个例子就是灯的闪烁,那是用延吋程序做的,现在冋想起來,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们可以用定时器来实现灯的闪烁的功能。ORG0000HAJMPSTARTORG30HSTART:MOVP1,#0FFH:弄所灯MOVTMOD,#00000001B;宝耐/诂救器0工仔孑方弍1MOVTH0t#15HMOVTL0,#0A0H;即炭5536SETBTRO;aJi器0科馬迄&LOOP:JBCTFO.NEXT;厶

2、XT紅AJMPLOOP爲刖跳窃到LOOP处迄矽NEXT:CPLP1.0MOVTHO,#15HMOVTL0,#9FH;f餐楚时/针数器的初催AJMPLOOPENDAJMPLOOPEND键入程序,看到了什么?灯在闪烁了,这可是用定时器做的,不再是主程序的循环了。简单地分析一下程序,为什么用JBC呢?TFO是定吋/计数器0的溢出标记位,当定时器产生溢出后,该位由0变1,所以杳询该位就可知宇时时间是否已到。该位为1后,要用软件将标记位清0,以便下一次定时是间到时该位由0变1,所以用了JBC指令,该指位在判1转移的同时,还将该位清0。以上程序是可以实现灯的闪烁了,可是主程序除了让

3、灯闪烁外,还是不能做其他的事啊!不,不对,我们可以在LOOP:和AJMPLOOP指令之J'可插入一些指令来做其他的事情,只要保证执行这些指令的时间少于定时时间就行了。那我们在用软件延时程序的时候不是也口J以用一些指令來替代DJNZ吗?是的,但是那就耍求你精确计算所用指令的时间,然后再减去相应的DJNZ循环次数,很不方便,而现在只要求所用指令的时间少于定时时间就行,显然要求低了。当然,这样的方法还是不好,所以我们常用以下的方法來实现。程序2:用中断实现ORG0000HAJMPSTARTORGOOOBH;宝时器0的中断角逻他饥AJMPTIMEO:跳翕到直2的室时器終瘵牡OR

4、G30HSTART:MOVP1,#OFFH;弄所灯MOVTMOD,#OOOOOOQ1B;宝时/诂数器03介孑方式1MOVTLO,#OAOH;即数5536SETBEA;科為中断久许SETBETO;科宝时/讨数器0元许SETBITRO;宝耐/针数器0科馬迄笛LOOP:AJMPLOOP;直N2:仔臥迪里可驾毎瘙縛唐TIMEO:;宝时器0的中断紅理縛库PUSHACCPUSHPSW;将PSW彷ACCH入t(i伐侶炉GPLP1.0MOVTH0,#15HMOVTLO,#OAOH;重養立时常騷POPPSWPOPACCRETIEND上面的例子屮,定吋吋间一到,TFO由0变1,就会引发屮断

5、,CPU将自动转至000B处寻找程序并执行,由于留给定时器中断的空间只有8个字节,显然不足以写下所有有中断处理程序,所以在000B处安排一条跳转指令,转到实际处理中断的程序处,这样,中断程序可以写在任意地方,也可以写任意长度了。进入定时中断后,首先要保存当前的一些状态,程序中只演示了保存存ACC和PSW,实际工作屮应该根据需要将可能会改变的单元的值都推入堆栈进行保护(本程序屮实际不需保存护任何值,这里只作个演示)。上面的两个程序运行后,我们发现灯的闪烁非常快,根本分辨不出來,只是视觉上感到灯冇些晃动而已,为什么呢?我们可以计算一下,定时器屮预置的数是5536,所以每11

6、-60000个脉冲就是定时时间到,这60000个脉冲的时间是多少呢?我们的品振是12M,所以就是60000微秒,即60毫秒,因此速度是非常快的。如果我想实现一个1S的定吋,该怎么办呢?在该晶振濒率下,最长的定吋也就是65。536个毫秒啊!上面给出一个例了。ORG0000HAJMPSTARTORG000BH;宝时器0的中断角邂込饥AJMPTIME0:跳的到重2的宝时器繹厚紅ORG30HSTART:MOVP1.#0FFH;參所灯MOV30H,#00H;及佯诂软器须儒0MOVTMOD,#00000001B;立时/针炭器03仔孑方式1MOVTHO,#3CHMOVTL0,#0B0

7、H;即嶷15536SETBEA;科為中断久询SETBETO;科宝吋/讨数器0%许SETBTRO;£0^/^jJi器0科馬迄&LOOP:AJMPLOOP:A忑3仆吋,迪里可驾&逢終瘵TIMEO:;宝时器0的中断紅理終唐PUSHACCPUSHPSW;将PSW如ACC加入維桟佟办INC30HMOVA.30HCJNEA.#20,T_RET;30H单走中的仍到了20了鸣?T.L1:CPUP1.0;到3■取反P10MOV30比#0;渚荻件讨数器匸RET:MOVTHO,#15HMOVTLO,#9FH;f墨宝时常救POPPSWPOPACCRETIEND先

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

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

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