打印

请大家帮我看一下为什么我的中断不能返回

[复制链接]
2948|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liokok119|  楼主 | 2008-11-16 16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ov, vr, AC, dlp, hm
今天用汇编写一中断程序时,不知道为什么中断程序总是不能返回请大家帮我看一下问题再那里?谢谢
  org 0000h
      ljmp main
      org 0003h
      ljmp zd1
      org 0013h
      ljmp zd2
      org 0040h
main: mov tcon,#00h
      mov ie,#85h
      mov ip,#01h
loop:mov p1,#0ffh
     lcall dly
     mov p1,#00h
     lcall dly
     ljmp loop
zd1: push 7
     push 6
     push 5
     push 4
     push acc

     mov r7,#7
     mov a,#01h
 lop:    
     mov p1,a
     lcall dly
      rl a
     djnz r7,lop
     pop acc
     pop 4
     pop 5
     pop 6
     pop 7
     reti
zd2:  push 7
     push 6
     push 5
     push 4
     push acc
     mov r7,#7
     mov a,#80h
lop2: mov p1,a
      lcall dly
      rr a
     djnz r7,lop2
     pop acc
     pop 4
     pop 5
     pop 6
     pop 7
     reti

dly:mov r4,#100  
DY10ms:MOV  R6,#20  ; 置外循环次数
DLP1:  MOV  R7,#250 ; 置内循环次数
DLP2:  DJNZ R7,DLP2 ; 2机周×250 =500机周
       DJNZ R6,DLP1 ; 500机周×20= 10000机周
       DJNZ R4,DY10ms
       ret  
       end
     

相关帖子

沙发
ayb_ice| | 2008-11-16 17:14 | 只看该作者

你中断连PSW都不保存的

使用特权

评论回复
板凳
liokok119|  楼主 | 2008-11-16 17:26 | 只看该作者

没有用到也要保存么?

我才在学单片机很多都不清楚,只是找些列子自己仿照着做

使用特权

评论回复
地板
linqing171| | 2008-11-16 19:07 | 只看该作者

你怎么知道psw没有用到啊。psw里面有什么?

djnz r7,lop
会不会影响psw?

使用特权

评论回复
5
linqing171| | 2008-11-16 20:29 | 只看该作者

进来后先关中断吧。

使用特权

评论回复
6
耕在此行| | 2008-11-16 20:56 | 只看该作者

2楼说得对

呵呵 我也犯过这样的错误.

使用特权

评论回复
7
lyjian| | 2008-11-16 22:25 | 只看该作者

djnz r7,lop不会影响psw

使用特权

评论回复
8
xhtxzxw| | 2008-11-16 22:32 | 只看该作者

嘿嘿

首先,你确定一下,进了中断吗? 怎么进的呢?

使用特权

评论回复
9
lyjian| | 2008-11-16 22:36 | 只看该作者

延时程序变量有冲突

使用特权

评论回复
10
twz8858877| | 2008-11-17 08:56 | 只看该作者

死循环

mov r7,#7
     mov a,#01h
lop:    
     mov p1,a
     lcall dly       ;调用结束后r7=0
      rl a
     djnz r7,lop

使用特权

评论回复
11
救火车| | 2008-11-17 09:18 | 只看该作者

SP也没有置初值

使用特权

评论回复
12
liokok119|  楼主 | 2008-11-17 10:40 | 只看该作者

谢谢大家

感谢给位 问题解决了  

就是延时用了r7 中断也用了r7

使用特权

评论回复
13
Batistuta_| | 2008-11-17 10:58 | 只看该作者

只解决了一部分...

使用特权

评论回复
14
liokok119|  楼主 | 2008-11-17 12:24 | 只看该作者

是啊 ,中断返回的时候还是有点问题

  高级中断返回低级中断的时候出现问题了 我找不出问题在那里,回来又重新写了一个程序 ,仿真就可以了

使用特权

评论回复
15
liokok119|  楼主 | 2008-11-17 12:29 | 只看该作者

请大家帮我看一下有那些问题?

我也发现的问题
1、堆栈没有设置sp
2、出栈的时候顺序没对
3、没有存psw
4、R7有冲突
请帮我看哈 还有那些问题?谢谢
仿真的时候高级中断返回低级中断时,出现问题

使用特权

评论回复
16
lyjian| | 2008-11-17 21:14 | 只看该作者

还有一个问题

主程序也调用dly,中断程序也调用dly。
如果在主程序dly时出现中断会怎样?

使用特权

评论回复
17
5880527| | 2008-11-17 21:53 | 只看该作者

看见一大堆djnz就头大

楼主还是开一个定时器中断作为延时用吧

使用特权

评论回复
18
liokok119|  楼主 | 2008-11-17 22:08 | 只看该作者

恩 谢谢大家了 我试一试

使用特权

评论回复
19
twz8858877| | 2008-11-18 09:05 | 只看该作者

不同中断最好使用不同的工作寄存器区

免得互相影响

使用特权

评论回复
20
tdb| | 2008-11-18 10:09 | 只看该作者

你的程序进中断就死循环了

使用特权

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

本版积分规则

10

主题

45

帖子

0

粉丝