我得程序在进中断和出中断时利用堆栈进行现场保护和回复现场上,可是如果我加了这两部分,程序不能进入中断或只能进一次中断,而且在中断返回时程序会跑飞,如果不加入这两部分,程序运行的很顺畅,我觉的问题在我的堆栈上面,请教各位老师和高手帮我分析一下原因好么?我应该从哪里检查程序呢?谢谢各位!
在我的程序里只有堆栈用到了AR7,其它的地方都没有用,怎么会产生冲突呢?我用ST1,ST0试了一下,发现在保护现场时,ST1和ST0的值都能存入堆栈,但是在返回的时候就出现错误
另外我还有各问题,在保护现场和恢复现场中分别有
GISR3:
MAR *,AR6
POPD *+
………………
TIME2_ISR: ………………
………………
GISR3_EXIT:
mar *,AR6
……………………
PSHD *
CLRC INTM
RET
POPD *+和PSHD*,这两句话我一直不明白是什么意思,是做什么用的,请一起指教一下好么?谢谢啦!
8个AR是不是也应该保存呢?
另外我在很多保护现场和回复现场中看到,在保护现场中用POPD *+,在恢复现场中用到PSHD *,我一直都没有弄明白这两句到底是什么意思呢?
如果进行现场保护,应该是把数据压入堆栈,为什么要采用出栈的POPD*+呢?
恢复现场也是,应该是把堆栈的数据弹回原来的寄存器,按理说应该是用出栈指令,怎么反而用了进栈的PSHD*呢?麻烦您赐教!谢谢!