/**************************************************/ /* パルス幅の計測 割り込み RIKIYA 2004/02/26 */ /* inputtest3.c */ /* H8-3048/F */ /* キャプチャ割り込みによるパルス幅計測 */ /**************************************************/ #include <3048.h> /* メイン関数************************************************/ int main(void){ EI; // 割り込みマクロ P1.DDR = 0xff; // port1出力に設定 表示LED PA.DDR = 0x00; // portA入力に設定 パルス入力用 ITU1.TCR.BYTE = 0x23; // GRAインプットキャプチャ,カウンタクリアGRA clock 1/8 ITU1.TIOR.BYTE = 0xCF; // GRA両エッジインプットキャプチャ ITU1.TIER.BIT.IMIEA = 1; // IMFAフラグ割り込み許可 ITU.TSTR.BIT.STR1 = 1; // カウント開始 while(1){} // 何もしない } /* 割り込み処理 *********************************************/ void int_imia1(void){ long counter; ITU1.TIER.BIT.IMIEA = 0; // IMFA割り込み禁止 ITU1.TSR.BIT.IMFA = 0; // フラグをクリア if(PA.DR.BIT.B4 == 1){ // 入力パルス立ち上がりの場合 } if(PA.DR.BIT.B4 == 0){ // 入力パルス立下りの場合 counter = ITU1.GRA; P1.DR.BYTE = counter >> 4; // 4BITシフトさせP1に表示 } ITU1.TIER.BIT.IMIEA = 1; // IMFA割り込み許可 }