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

dg128b的中断问题

dg128b的中断问题

在codewarrior3.1下,我选择了汇编语言和绝对地址模式。想测试下实时中断。可是老是出问题,但是编译又没有错。程序如下:


            XDEF RTITIMER
            XDEF Entry        ; export 'Entry' symbol
            ABSENTRY Entry    ; for absolute assembly: mark this as application entry point
           
; include derivative specific macros
            INCLUDE 'mc9s12dg128.inc'


ROMStart    EQU  $4000  ; absolute address to place code/constant data


; variable/data section
            ORG RAMStart
; Insert here your data definition. For demonstration, temp_byte is used.



; code section
            ORG ROMStart
Entry:
            CLI                ; enable interrupts
            LDS   #$3FD0
            LDAA  #$80
            STAA  CRGINT
            LDAA  #$FF
            STAA  DDRB
            LDAA  #$FF
            STAA  PORTB
            LDAA  #$7F
            STAA  RTICTL
LOOP        BRA   LOOP


RTITIMER:
            MOVB  #$80,   CRGFLG
            BRSET PORTB,  #$01, LEDOFF
            LDAA  #$FF
            STAA  PORTB
            BRA   DONE
LEDOFF      LDAA  #$FE
            STAA  PORTB
DONE        RTI                   


;**************************************************************
;*                 Interrupt Vectors                          *
;**************************************************************
  ORG $FFFE


  JMP     Entry      ; Reset
 
  ORG $FFF0
 
  JMP     RTITIMER
 
  END


问题如下:


在模拟环境下,我点全速运行时,程序老是跑到1002这个地址。CCR里面的I为变成了1,察看堆栈里面,各个寄存器也入栈了,堆栈显示程序是从loop bra loop跳出去的。CGRFLG的RTIIE也变成1了。这些表明中断已经发生了。但为什么跑飞了呢?请高手指教

为什么在矢量地址里放JMP指令??
海纳百川  有容乃大
难道这样不行吗!
放FDB可以吗
返回列表