//
// INT 割り込み
//
// INT(RB0, 6ピン)の入力状態が変化した時に割り込みが発生します
// 立ち下がり(High->Low)で割り込みがかかるか、立ち上がり(Low->High)で
// 割り込みがかかるかについては OPTION_REGbits.INTEDG の値で設定可能です
//
#include "setting.h"

#ifdef USE_RB0INT

void init_rb0int(void) {

    // 1をセットすると全ての割り込み処理を許可します
    // 0をセットすると全ての割り込み処理を一旦停止します
    // 詳しくはデータシート 89p を参照してください
    // ここでは一旦 0 をセットして全ての割り込み処理を一旦停止してください
    INTCONbits.GIE = ? ; 
    
    // INT(RB0) を入力モードにします
    // 詳しくは input.c の説明を読んで下さい
    TRISB = TRISB | ? ;

    // INT(RB0) にプルアップ抵抗を接続しない場合は内部プルアップ機能を有効にします
    // 詳しくは input.c の説明を読んで下さい
    WPUB = WPUB | ? ;
    OPTION_REGbits.nWPUEN = 0;

    // INT 割り込みを行うタイミングを指定します
    // 0 をセットすると立ち下がり(High→Low)で割り込みをします
    // 1 をセットすると立ち上がり(Low→High)で割り込みをします
    // 詳しくはデータシート 175p を参照してください
    OPTION_REGbits.INTEDG = ? ;
    
    // INT 割り込みが起きた時に 1 がセットされる割り込みフラグです
    // なお自動ではリセットされないので手動でリセットする必要があります
    // とりあえず 0 でリセットしておきます
    INTCONbits.INTF = ? ;
    
    // 1 をセットすると INT 割り込みを許可します
    // 詳しくはデータシート 89p を参照してください
    INTCONbits.INTE = ? ; 
    
    // 1をセットすると全ての割り込み処理を許可します
    // 0をセットすると全ての割り込み処理を一旦停止します
    // 詳しくはデータシート 89p を参照してください
    // ここでは 1 をセットして全ての割り込み処理を許可してください
    INTCONbits.GIE = ? ; 
}

#endif