目次

割込み処理

 本ボードでは、2つの割込みを利用します。



タイマー割込み

 パルス出力用のステートマシンを管理します。 100usごとに、変数stateをインクリメントします。 変数stateが200になったならば、0に戻します。 ステートマシンは、フラグを受取って、与えられた 処理を実行します。 ソースコードは、以下です。 #define STA_LAST 200 #int_rtcc void timer_handler(void) { /* set TMR0 6 (256-250) */ set_timer0(6); /* interval process */ state++ ; if ( state == STA_LAST ) state = 0 ; /* set flag */ tflag = ON ; }

受信割込み

 PCから送信された文字を、受信バッファに格納します。 1レコード受信をしたならば、フラグをセットして main関数に通知します。 1レコード受信終了は、'\r'(0x0d)で判定します。 #define SMAX 5 #int_rda void echo_handler(void) { UBYTE chx ; /* get one character */ chx = rcreg ; sbuf[s_idx] = chx ; /* update buffer index */ s_idx++ ; if ( s_idx == SMAX ) s_idx = 0 ; /* judge */ if ( chx == '\r' ) { sflag = ON ; s_idx = 0 ; } }

目次

inserted by FC2 system