目次
前
次
割込み処理
本ボードでは、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 ;
}
}
目次
前
次