シリアル通信機能

簡単なサンプルプログラム

通信実験の際には、HyperTerminal 等で、通信条件を データ8bit, パリティ無し, ストップビット1bit, 通信速度 38400bps, フロー制御無し に設定すること HyperTerminal での行末文字は、キー入力の際には、 Ctrl-Jとなることに注意。
int main()
{
    PMR1 = 0x00;
    PCR1 = 0xff; /* 兼用のポートをポート1に設定 */
    PDR1 = 0x00; /* ポート1をクリア */

    STI();       /* 割り込み全体を許可 */
    rs_init() ;  /* シリアルポートの初期化 */

    /* 最も簡単な動作テスト */
    /*    シリアル入力をそのまま出力 */
    while( 1 ) {
        short int c = _rs_getc() ;
        if ( c != EOF ) {
            _rs_putc( c ) ;
        }
    }
}
int main()
{
    PMR1 = 0x00;
    PCR1 = 0xff; /* 兼用のポートをポート1に設定 */
    PDR1 = 0x00; /* ポート1をクリア */

    STI();       /* 割り込み全体を許可 */
    rs_init() ;  /* シリアルポートの初期化 */

    /* 行入力/行出力の動作テスト */
    /*    1行入力し、文字に応じてLEDを点灯 */
    /*    0:B0/ON,1:B0/OFF,2:B1/ON,3:B1/OFF */

    rs_puts( "START\r\n" ) ;
    while(1) {
        unsigned char tmp[ 100 ] ;
        if ( _rs_gets( tmp , 100 ) != NULL ) {
            if ( tmp[ 0 ] >= '0' && tmp[ 0 ] <= '3' ) {
                switch( tmp[ 0 ] ) {
                case '0' : PDR1 |= 0x1 ;  break ;
                case '1' : PDR1 &= ~0x1 ; break ;
                case '2' : PDR1 |= 0x2 ;  break ;
                case '3' : PDR1 &= ~0x2 ; break ;
                }
                rs_puts( "OK\r\n" ) ;
            } else {
                rs_puts( "NG\r\n" ) ;
            }
        }
    }
    rs_exit() ;        /* シリアルポートの終了処理 */
    return 0 ;
}

プログラム