汇编中的中断向量有什么问题
what is wrong with interupt vector in assembly
为什么不调用 changetime?
当 int0 的上升沿为真时,我想做一些操作。
我设置了中断并做了所有事情我认为错误来自 .org
的第一行
.include "m32def.inc"
.ORG [=10=]
RJMP define
.ORG [=10=]2
RJMP changetime
.ORG
.DB [=10=]C,[=10=]A,,
.ORG 0
.DB $FC,,$DA,$F2,,$B6,$BE,$E0,$FE,$F6
.ORG 0
.DB $FB,$F6,$F1,$E2,$C4
define:
LDI R20,246
LDI R24,
OUT GICR,R24
LDI R24,
OUT GICR,R16
SEI
LDI R24,
OUT MCUCR,R24
SBI DDRD,0
SBI DDRD,1
LDI R16,
OUT SPH,R16
LDI R16,[=10=]
OUT SPL,R16
changetime:
LDI R20,$FF
CPI R21,5
BRNE dochangetime
LDI R21,0
RJMP exitchangetime
dochangetime:
LDI R31,
MOV R30,R21
LPM R20,Z
INC R21
LOPP:RJMP LOPP
exitchangetime:
RETI
但电脑绝对不会进入更改时间。
我认为您对外部中断有些困惑。关于 8 位 AVR 微控制器的外部中断有一个很好的教程:
http://www.avr-tutorials.com/interrupts/The-AVR-8-Bits-Microcontrollers-External-Interrupts
首先,由于我不知道你想做什么,我会给出一些解决问题的一般思路。您已在此处定义了外部中断指令:
.ORG [=10=]2
RJMP changetime
这部分说当一个外部中断发生时($002 的情况是外部中断 0)跳转到 changetime。所以要中断我们应该启用 PORTD 的位 2。外部中断 0 可由外部引脚 INT0 激活,如果 SREG I-flag 和相应的
中断掩码被设置。所以如果你想在外部更改时间,你应该启用相应的 PIN。
为什么不调用 changetime? 当 int0 的上升沿为真时,我想做一些操作。 我设置了中断并做了所有事情我认为错误来自 .org
的第一行.include "m32def.inc"
.ORG [=10=]
RJMP define
.ORG [=10=]2
RJMP changetime
.ORG
.DB [=10=]C,[=10=]A,,
.ORG 0
.DB $FC,,$DA,$F2,,$B6,$BE,$E0,$FE,$F6
.ORG 0
.DB $FB,$F6,$F1,$E2,$C4
define:
LDI R20,246
LDI R24,
OUT GICR,R24
LDI R24,
OUT GICR,R16
SEI
LDI R24,
OUT MCUCR,R24
SBI DDRD,0
SBI DDRD,1
LDI R16,
OUT SPH,R16
LDI R16,[=10=]
OUT SPL,R16
changetime:
LDI R20,$FF
CPI R21,5
BRNE dochangetime
LDI R21,0
RJMP exitchangetime
dochangetime:
LDI R31,
MOV R30,R21
LPM R20,Z
INC R21
LOPP:RJMP LOPP
exitchangetime:
RETI
但电脑绝对不会进入更改时间。
我认为您对外部中断有些困惑。关于 8 位 AVR 微控制器的外部中断有一个很好的教程:
http://www.avr-tutorials.com/interrupts/The-AVR-8-Bits-Microcontrollers-External-Interrupts
首先,由于我不知道你想做什么,我会给出一些解决问题的一般思路。您已在此处定义了外部中断指令:
.ORG [=10=]2
RJMP changetime
这部分说当一个外部中断发生时($002 的情况是外部中断 0)跳转到 changetime。所以要中断我们应该启用 PORTD 的位 2。外部中断 0 可由外部引脚 INT0 激活,如果 SREG I-flag 和相应的 中断掩码被设置。所以如果你想在外部更改时间,你应该启用相应的 PIN。