我正试图使用程序集为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发布于 2022-01-18 22:12:22
您的程序似乎是正确的,并在我的安装工作良好,至少在前几个级别7中断。
您是否在“Options”->中启用了异常处理?
您不应该在ISRs中做任何耗费时间的事情--这在interupt服务例程中是非常糟糕的做法。特别是"JSR延迟“电话似乎很危险。通常的做法是在ISR中设置一个变量,并在主循环中对其进行操作。
https://stackoverflow.com/questions/70672710
复制相似问题