【问题标题】:Problem Showing Interrupt message on Easy68k在 Easy68k 上显示中断消息的问题
【发布时间】:2022-01-11 19:57:00
【问题描述】:

我正在尝试使用汇编为 68k 处理器编写程序。我正在使用 Easy68k

该程序的主要思想是,当按下重置按钮时会出现一条消息,并伴随七段的变化。

当点击 7 级按钮时会出现另一条消息。

重置消息出现并且工作正常,但点击 7 级中断按钮似乎没有任何作用。

你能帮我找出问题吗?

代码如下:

 ORG    $0
    DC.L $00FFFFF0
    DC.L $00000500
    
    ORG $07C
    DC.L $2000
    
    ORG $500
    MOVEA.L #$E00000, A3
    MOVE.L #0, D1
    LEA SEVEN_SEG_CODE, A2
    
    MOVE #13, D0
    LEA START_TEXT, A1
    TRAP #15
    
    BRA START
    
    
    ORG $2000
LEVEL_7_INTERRUPT:
    MOVE    #13, D0
    LEA TEXT1, A1
    TRAP #15
    MOVE #3, D0
    TRAP #15
    BSR DELAY
    MOVE #13, D0
    LEA TEXT2, A1
    TRAP #15
    BSR DELAY
    MOVE.B $E00012, $E00010
    MOVE.B (A2, D1), (A3)
    ADDA.L #2, A3
    BSR DELAY
    ADD.L #1, D1
    RTE
    
    
DELAY:  MOVE.L #1000000, D5
LOOP2:  SUB.L #1, D5
        BNE LOOP2
        RTS
       
       
START_TEXT: DC.B 'WELCOME HARDWARE RESET',$0D,$0A, 0
TEXT1: DC.B 'WELCOME TL7',$0A,$0D, 0
TEXT2: DC.B 'ANOTHER WELCOME TL7',$0A,$0A, 0
SEVEN_SEG_CODE: DC.B %00000000, %11111111, %00000000, %11111111, %00000000, %11111111, %00000000, %11111111, %00000000, %11111111

        ORG $1000

START:                  ; first instruction of program

* Put program code here
        MOVE.L #0, D6
LOOP:   ADD.L #1, D6
        BSR DELAY
        BRA LOOP
    SIMHALT             ; halt simulator

* Put variables and constants here

    END    START        ; last line of source

【问题讨论】:

    标签: assembly interrupt-handling 68000 easy68k


    【解决方案1】:

    您的程序似乎(有点)正确并且在我的安装中运行良好,至少对于最初的几个 7 级中断。

    你是否在“Options”->“Enable Exceptions”中开启了异常处理?

    您不应该在 ISR 中做任何耗时的事情 - 这在中断服务例程中被认为是不好的做法。尤其是“JSR DELAY”调用似乎很危险。通常的做法是在 ISR 中设置一个变量,然后在主循环中对其进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多