Board logo

标题: 帮我看下中断程序?谢谢大家 [打印本页]

作者: quewuhongchen    时间: 2010-10-21 15:14     标题: 帮我看下中断程序?谢谢大家

TR0_ISR:
    PSHX
    PSHY
   SEI
   ldaa  #$01
   staa  TFLG1
   CLI
   PSHY
   PSHX
   RTI  
  
main:
   ldaa  #$80
   staa  TSCR1
   ldaa  #$01
   staa  TIOS
   ldaa  #$00
   staa  TCTL2
   ldaa  #$01
   staa  TIE
   ldaa  #$87
   staa  TSCR2
   ldaa  #$01
   staa  TFLG1
   ldx   #$fff0
   stx   TC0
   CLI
WAIT:
   NOP
   BRA  WAIT
   ORG  $FFEE
   FDB  TR0_ISR


注:当程序跳出中断时回不到WAIT中。我怀疑是页的问题。可是因为某种原因我只能先用汇编完成此项目
故不能采用#pragma把中断包起来。
该怎么办好?大家帮我想想。真的弄了2天啦,也找不到好的汇编按例
作者: zephanshaka    时间: 2010-10-26 15:18

首先保证 中断程序在 NOBANKED区,否则中断返回会有异常。
其次,你的中断程序中使用了四次"PSH"操作,而没有"PUL"操作,
导致执行RTI指令时,从堆栈中恢复现场时出现了错误。
因为在进中断时,堆栈按顺序保存了现场,出中断时,会按反次序出栈,
也就是说你在中断中意外改变了堆栈中保存的现场,导致中断无法正常返回。

你应该把后面两个 PSH 改成 相应的 PUL指令,使堆栈正常




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0