2003年12月29日(月)
●INTERRUPT
INTERRUPTとはある仕事をしている時に飛び込んできた急な仕事を処理する事で割り込みとも呼びます。例えば何かやっている最中に電話に出る事も、割り込みといえるでしょう。上記の例から主の作業をメインルーチン、電話などのようなイベントを割り込みルーチンとわける事になります。PICでは割り込みが発生すると強制的に04番地に飛ぶようになっておりますので、割り込みを利用するプログラムの場合は次の様に記述します。
ORG 0x00; Power On vector
goto main
ORG 0x04; Interrupt vector
goto interrupt
interrupt
割り込み処理プログラム
retfie
main
メインプログラム
end
●割り込み要因
PIC12F628の割り込み要因には次のようなものがあります。
TMR0/1/2 タイマーオーバーフロー
RB0(PORTB-0)/PORT変化/コンパレーター
CCP/URART(通信)/EEPROMライト完了
●INTCON (割り込みの設定)
割り込みの設定にはINTCONレジスターとPIC16F628で追加となった各機能別のレジスタとで設定します。
★GIE(BIT7)
設定されている全ての割り込み要求を受け付けます。0をセットすると全ての割り込みは受け付けなくなります。
★PEIE(BIT6)
特にPIC16F628で追加された周辺ブロック(TMR1/2,CCP,URART,EEPROM)の割り込み要求を受け付けます。1で受け付け/0で拒否
PIC16F84ではこのビットはEEPROM書き込み完了でした。
★TOIE(BIT5)
TMR0オーバーフロー割り込みの受け付け可否を設定します。1で受け付け
★INTE(BIT4)
ポートB-0による外部割り込みの受け付け可否を設定します。1で受け付け
★RBIE(BIT3)
ポート変化割り込みの受け付け可否を設定します。1で受け付け
★TOIF(BIT2)
TMR0がオーバーフローするとこのビットが1になります。
★INTF(BIT1)
ポートB-0割り込みが発生するとこのビットが1になります。
★RBIF(BIT0)
ポート変化割り込み発生するとこのビットが1になります。
《注意》
TOIF/INTF/RBIFは一般に割り込みフラグと呼ばれ、割り込みルーチンに飛んだときにどの割り込みが発生したのかを判別する為に使用されます。このフラグはセットされたら自動クリアされませんので、次も割り込みをさせる時はクリアする必要があります。
TMR0オーバーフローとPORTB-0外部割込み化の両方の割り込みセットするには次の様に記述します。
bsf INTCON,T0IE ; TMR0 OVERFLOW Interrupt ENABLE
bsf INTCON,INTE ; PORTB-0
bsf INTCON,GIE ; Interrupt Enable
次回は周辺機能の割り込みの設定を解説します。
|