打印

外部中断int0与定时器t0的中断嵌套

[复制链接]
5142|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
单片机00|  楼主 | 2010-12-7 20:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 单片机00 于 2010-12-7 20:43 编辑

程序设计要求:
         1、使用8个led灯模拟交通灯,编程实现十字路**通灯的变化规律,通行时间为5秒,黄灯时间为1秒,人行灯通行时,闪烁5次,闪烁周期为1秒。
          2、应用开关k1手动控制由高到低时,模拟有急救车通过,并使用外部中断实现急救车优先通过的控制,通过时间为1秒。急救车通过时,各方向的灯均为禁行。

下面是我设计的程序,但只能满足要求1,当程序进入外部中断wai时,程序就死这儿了;没有按预期的延时1秒后返回主程序,我想应该是中断嵌套的问题,可不管怎么改都解决不了,请高手们帮忙找找错,先谢了!!!!
org 0
ljmp main
org 0003h
ljmp wai;外部中断入口
org 000bh
ljmp zi;定时器中断入口
org 0030h
main:mov tmod,#1
mov th0,#3ch
mov tl0,#0b0h
mov ie,#83h
setb it0
LOOP1:MOV R7,#5
LOOP2:MOV A,#5BH
MOV P1,A
CLR 7FH
SETB TR0
MOV R6,#10
JNB 7FH,$
MOV A,#0DBH
MOV P1,a
CLR 7FH
MOV R6,#10
JNB 7FH,$
DJNZ R7,LOOP2
MOV A,#0EBH
MOV P1,A
CLR 7FH
MOV R6,#20
JNB 7FH,$
LOOP3:MOV R7,#5
LOOP4:MOV A,#0B5H
MOV P1,a
clr 7fh
mov r6,#10
jnb 7fh,$
mov a,#0bdh
mov p1,a
clr 7fh
mov r6,#10
jnb 7fh,$
djnz r7,loop4
mov a,#0beh
mov p1,a
clr 7fh
mov r6,#20
jnb 7fh,$
ljmp loop1
wai:clr tr0 ;外部中断服务子程序
mov ie,#83h;开中断
mov ip,#02h;设T0为高优先级
mov 30h,r6
mov 31h,r7
mov c,7fh
push acc
push th0
push tl0;前面都为现场保护
mov th0,#3ch
mov tl0,#0b0h
setb tr0 ;
clr 7fh
mov a,#0bbh
mov p1,a
mov r6,#20
jnb 7fh,$
pop tl0
pop th0
pop acc
mov 7fh,c
mov r6,30h
mov r7,31h
mov ip,#01h;
reti
zi:djnz r6,next;定时器中断子程序
setb 7fh
next:mov th0,#3ch
mov tl0,#0b0h
reti
end

相关帖子

沙发
chunyang| | 2010-12-7 20:45 | 只看该作者
如果在外中断服务程序中调用定时器中断,必须将定时器中断的优先级提高至外中断优先级以上,正确设置中断优先级寄存器即可。

使用特权

评论回复
板凳
单片机00|  楼主 | 2010-12-9 18:32 | 只看该作者
你说的我都做了,可是没用啊!!!
wai:clr tr0
mov ie,#83h;开中断
mov ip,#02h;设T0为高优先级
mov 30h,r6
mov 31h,r7
mov c,7fh
push acc
push th0
push tl0;前面都为现场保护
mov th0,#3ch
mov tl0,#0b0h
setb tr0 ;
clr 7fh
mov a,#0bbh
mov p1,a
mov r6,#20
jnb 7fh,$
pop tl0
pop th0
pop acc
mov 7fh,c
mov r6,30h
mov r7,31h
mov ip,#01h;
reti

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

3

帖子

1

粉丝