首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

帮我看下中断程序?谢谢大家

帮我看下中断程序?谢谢大家

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

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