2017-01-21 4 views
0

changetimeが呼び出されないのはなぜですか? int0の立ち上がりエッジが真であるときに何らかの操作をしたい。 iはinterupt設定し、私は間違っては.ORGアセンブリー内のインターベクトベクトルに何が問題なのですか

.include "m32def.inc" 
.ORG $00 
RJMP define 
.ORG $002 
RJMP changetime 
.ORG $40 
.DB $0C,$0A,$21,$11 
.ORG $100 
.DB $FC,$60,$DA,$F2,$66,$B6,$BE,$E0,$FE,$F6 
.ORG $200 
.DB $FB,$F6,$F1,$E2,$C4 

define: 
LDI R20,246 
LDI R24,$41 
OUT GICR,R24 
LDI R24,$40 
OUT GICR,R16 
SEI 
LDI R24,$03 
OUT MCUCR,R24 
SBI DDRD,0 
SBI DDRD,1 
LDI R16,$04 
OUT SPH,R16 
LDI R16,$00 
OUT SPL,R16 

changetime: 
LDI R20,$FF 
CPI R21,5 
BRNE dochangetime 
LDI R21,0 
RJMP exitchangetime 
dochangetime: 
LDI R31,$03 
MOV R30,R21 
LPM R20,Z 
INC R21 
LOPP:RJMP LOPP 
exitchangetime: 
RETI 

から最初のラインからですが、正確に決してPCがchangetimeに行くんだと思いallthingありません。

+0

割り込みを有効にしましたか? – Jester

+0

はい、私は(SEI) –

+2

をリセットします。あなたのリセットISRは 'changetime'に落ちます、それは本当に欲しいものですか? –

答えて

0

あなたは何とか外部割り込みについて混乱していると思います。 8ビットAVRマイクロコントローラ用の外部割り込みについての良いチュートリアルがあります:

http://www.avr-tutorials.com/interrupts/The-AVR-8-Bits-Microcontrollers-External-Interrupts

まず第一に、私はあなたが私はあなたの問題を解決する方法をいくつかの一般的なアイデアを与えるだろう何をしたいのか分からないからです。あなたがここにあなたの外部割り込みディレクティブを定義しています

.ORG $002 
RJMP changetime 

この部分は外部割り込みが発生したときは、($ 002の場合のために、それは外部割り込み0)changetimeにジャンプすることを言います。したがって割り込みには、PORTDのビット2を有効にする必要があります。外部割り込み0は、SREG Iフラグと対応する割り込みマスクが設定されている場合、外部ピンINT0によってアクティブにすることができます。したがって、外部で時刻を変更する場合は、対応するPINを有効にする必要があります。

+0

コメントを追加して、何をしたいのかを説明したら、私はあなたのコードをより良くすることができます。 – alpay

関連する問題