魔力学堂129区:51 单片机中断返回为什么会飞?

来源:百度文库 编辑:高校问答 时间:2024/05/11 12:11:34
编有好几个程序都是reti之后pc不知道指到哪里去了啊,反正不是中断发生的地方,谁能分析一下啊
什么是reti长偏移?
PIC系列的单片机我也用过,不过这里我只想讨论51的问题。

估计是你的堆栈没有设定:
PUSH ACC
PUSH PSW
....
POP PSW
POP ACC
或你的堆栈占用的内存太少导致堆栈溢出,那就必须要重新调整堆栈的数据如:
MOV SP,#70H就太少了因为你其中的SJMP等跳转指令也是占用堆栈空间的所以你就要重新调整:MOV SP,#30H(40H)

改用MICROCHIP的PIC系列单片机就不会飞了。
http://zhidao.baidu.com/question/8015574.html

你有没有设定入栈地址?reti是长偏移还是短偏移,是否跟你使用的指令有关?