Board logo

标题: dg128b的中断问题 [打印本页]

作者: pig_lee    时间: 2006-3-22 15:23     标题: 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了。这些表明中断已经发生了。但为什么跑飞了呢?请高手指教


作者: strongchen    时间: 2006-3-23 10:33

为什么在矢量地址里放JMP指令??
作者: pig_lee    时间: 2006-3-23 11:39

难道这样不行吗!
放FDB可以吗




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