求助..请大家帮我看看为什么调用了子程序后定时就不准了..

[复制链接]
2424|1
 楼主| YFEVA 发表于 2007-6-3 08:15 | 显示全部楼层 |阅读模式
请各位高手帮忙看看了,弄了很久都没弄明白为什么计时一开始准的,一个闹钟时间到后调用音乐子程序,然后回来计时就边快了。。(计时用T1,音乐子程序用T0,在T1中断服务程序里调用了音乐子程序)<br /><br />ORG&nbsp;0000H<br />AJMP&nbsp;MAIN<br />ORG&nbsp;000BH<br />LJMP&nbsp;INTT0<br />ORG&nbsp;001BH<br />LJMP&nbsp;INTT1<br />ORG&nbsp;0100H<br />MAIN:<br />MOV&nbsp;30H,#00H<br />MOV&nbsp;31H,#00H<br />MOV&nbsp;32H,#00H<br />MOV&nbsp;33H,#14H<br />SETB&nbsp;PT0<br />CLR&nbsp;PT1<br /><br />MOV&nbsp;TMOD,#10H<br />MOV&nbsp;TL1,#00H<br />MOV&nbsp;TH1,#4CH<br />SETB&nbsp;ET1<br />SETB&nbsp;TR1<br />SETB&nbsp;EA<br />AJMP&nbsp;$<br /><br />INTT1:<br />MOV&nbsp;SP,#60H<br />PUSH&nbsp;PSW<br />PUSH&nbsp;ACC<br />MOV&nbsp;TH1,#4CH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;晶振11.0592M,50ms定时<br />MOV&nbsp;TL1,#00H<br />DJNZ&nbsp;33H,RETURN&nbsp;&nbsp;&nbsp;<br />MOV&nbsp;33H,#14H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;20次计满为1s<br />INC&nbsp;32H<br />MOV&nbsp;A,32H<br />CJNE&nbsp;A,#60,RETURN&nbsp;&nbsp;;判断秒钟到60s<br />MOV&nbsp;32H,#00H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;到60s清零<br />MOV&nbsp;A,31H<br />ADD&nbsp;A,#1<br />DA&nbsp;A<br />MOV&nbsp;31H,A<br /><br />TABTIME:&nbsp;&nbsp;&nbsp;;一分钟扫一次定时表,比较计时到否&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />PUSH&nbsp;PSW<br />PUSH&nbsp;ACC<br />COMPARE:<br />MOV&nbsp;20H,#00H<br />COMP1:MOV&nbsp;A,20H<br />MOV&nbsp;DPTR,#TABLE<br />MOVC&nbsp;A,@A+DPTR<br />CJNE&nbsp;A,30H,COMP2<br />INC&nbsp;20H<br />MOV&nbsp;A,20H<br />MOVC&nbsp;A,@A+DPTR<br />CJNE&nbsp;A,31H,COMP3<br />LCALL&nbsp;MUSIC<br />AJMP&nbsp;COMP3<br />COMP2:INC&nbsp;20H<br />COMP3:INC&nbsp;20H<br />COMP4:MOV&nbsp;A,20H<br />CJNE&nbsp;A,#06H,COMP1<br />RETURN1:<br />POP&nbsp;ACC<br />POP&nbsp;PSW<br /><br /><br />CJNE&nbsp;A,#60H,RETURN<br />MOV&nbsp;31H,#00H<br />MOV&nbsp;A,30H<br />ADD&nbsp;A,#1<br />DA&nbsp;A<br />MOV&nbsp;30H,A<br />CJNE&nbsp;A,#24H,RETURN<br />MOV&nbsp;30H,#00H<br />RETURN:<br />POP&nbsp;ACC<br />POP&nbsp;PSW<br />RETI<br /><br />MUSIC:&nbsp;&nbsp;&nbsp;;音乐子程序,用T0中断<br />PUSH&nbsp;PSW<br />PUSH&nbsp;ACC<br />PUSH&nbsp;DPL<br />PUSH&nbsp;DPH<br /><br />MAIN1:<br />MOV&nbsp;TMOD,#01H<br />SETB&nbsp;ET0<br />SETB&nbsp;EA<br />SETB&nbsp;TR0<br />START0:<br />SETB&nbsp;P1.0<br />MOV&nbsp;40H,#00H<br />NEXT:<br />MOV&nbsp;A,40H<br />MOV&nbsp;DPTR,#TABLEM<br />MOVC&nbsp;A,@A+DPTR<br />MOV&nbsp;R0,A<br />JZ&nbsp;ENDD<br />ANL&nbsp;A,#0FH<br />MOV&nbsp;R7,A<br />MOV&nbsp;A,R0<br />SWAP&nbsp;A<br />ANL&nbsp;A,#0FH<br />JNZ&nbsp;SING<br />CLR&nbsp;TR0<br />LJMP&nbsp;D1<br />SING:<br />DEC&nbsp;A<br />MOV&nbsp;52H,A<br />RL&nbsp;A<br />MOV&nbsp;DPTR,#TABLEF<br />MOVC&nbsp;A,@A+DPTR<br />MOV&nbsp;TH0,A<br />MOV&nbsp;51H,A<br />MOV&nbsp;A,52H<br />RL&nbsp;A<br />INC&nbsp;A<br />MOVC&nbsp;A,@A+DPTR<br />MOV&nbsp;TL0,A<br />MOV&nbsp;50H,A<br />SETB&nbsp;TR0<br />D1:<br />LCALL&nbsp;DELAY<br />INC&nbsp;40H<br />LJMP&nbsp;NEXT<br />ENDD:<br />CLR&nbsp;TR0<br />LJMP&nbsp;EXIT&nbsp;<br /><br />INTT0:<br />PUSH&nbsp;PSW<br />PUSH&nbsp;ACC<br />MOV&nbsp;TL0,50H<br />MOV&nbsp;TH0,51H<br />CPL&nbsp;P1.0<br />POP&nbsp;ACC<br />POP&nbsp;PSW<br />RETI<br /><br />DELAY:MOV&nbsp;R1,#100<br />DELAY1:MOV&nbsp;R2,#30&nbsp;<br />DELAY2:MOV&nbsp;R3,#29<br />DELAY3:DJNZ&nbsp;R3,DELAY3&nbsp;<br />DJNZ&nbsp;R2,DELAY2<br />DJNZ&nbsp;R1,DELAY1<br />DJNZ&nbsp;R7,DELAY<br />RET<br /><br />EXIT:<br />POP&nbsp;DPH<br />POP&nbsp;DPL<br />POP&nbsp;ACC<br />POP&nbsp;PSW<br />RET<br /><br />TABLE:DW&nbsp;0002H,0003H,0015H<br />TABLEM:<br />DB&nbsp;44H,54H,64H,44H<br />DB&nbsp;44H,54H,64H,44H<br />DB&nbsp;64H,74H,88H<br />DB&nbsp;64H,74H,88H<br />DB&nbsp;82H,92H,82H,72H,64H,44H<br />DB&nbsp;82H,92H,82H,72H,64H,44H<br />DB&nbsp;44H,84H,48H<br />DB&nbsp;44H,14H,48H<br />DB&nbsp;00H<br />TABLEF:<br />DW&nbsp;64260,64400,64524,64580,64684,64777,64820,64898<br />DW&nbsp;64968,65030,65058,65110,65157,65178,65217<br /><br />END
dengm 发表于 2007-6-3 08:19 | 显示全部楼层

MOV SP,#60H 移到 main: 后

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部