割り込み処理とは、コンピュータがプログラムを実行している最中に何かしらのイベントが生じた時に、プログラムの実行を一時中断して「割り込みハンドラ(ISR: Interrupt Service Routine)」というルーチンを呼び出し、ISR 内でイベントに対応する処理を行う機能のことです。
イベント処理が終わったら元のプログラムの実行に戻ります。
割り込みイベントの種類としてはコンピュータ(CPU)の外部装置から要求される「外部割り込み(またはハードウェア割り込み)」と、コンピュータ(CPU)が実行中のプログラム内から要求される「内部割り込み(またはソフトウェア割り込み)」があります。
外部割り込みを行う外部装置の例として入出力装置、外部記録装置、タイマー、ネットワーク機器などがあります。
一方、内部割り込みの例としてはゼロ除算などの例外処理や、スーパーバイザコール(SVC)などがあります。
なおマイコンで割り込みと言えば一般的には外部割り込みの事を意味します。
もしプログラム内から明示的に内部割り込みをかけたい場合は、下のコードの様に何か適当な割り込み処理(下の例ではINT割り込み)を有効にしてから割り込みフラグを ON にすると ISR が呼び出されます。
// INT 割り込み有効化 INTCONbits.INTF = 0; INTCONbits.INTE = 1 ; INTCONbits.GIE = 1; 〜(適当な処理)〜 // 割り込みフラグを ON にすると ISR に実行が移る INTCONbits.INTF = 1;