前へ 目次 次へ
調歩同期式シリアルデータ「送信」関数
 

SCI3(シリアルコミュニケーションインタフェース)の初期化ができたので、 データを送信するプログラムを考えてみましょう。

今回も、BestTechnologyの、 GCC Developer Liteに付属する sci.cの関数を利用することにします。

/* sci.cのデータ送信部分 */


// 1文字送信
void rs_putc (char c)
{
  while (SCI3.SSR.BIT.TDRE == 0) ;
  SCI3.TDR = c;
}

// 文字列送信
void rs_puts (char *st)
{
  while (*st) rs_putc (*st++);
}

 
1文字送信関数 rs_putc
 

while (SCI3.SSR.BIT.TDRE == 0) ;

SCI3(シリアルコミュニケーションインタフェース)の初期化のところで説明したように、 シリアルステータスレジスタ(SSR)のTDREは、 値が0のときはトランスミットデータレジスタ(送信用のレジスタ)が利用不可であることを意味しています。 したがって、

SCI3.SSR.BIT.TDRE == 0

はトランスミットデータレジスタが利用不可の場合ということを意味しています。

この行は、トランスミットデータレジスタが利用不可の間は、 何もしないというプログラムになっています。


SCI3.TDR = c

トランスミットデータレジスタ(TDR)は、 送信データを格納するための8ビット(1バイト)のレジスタです。 変数cの値は、1文字送信関数 rs_putcを呼び出す際に与えますから、 この1バイトデータをトランスミットデータレジスタに格納する、 つまり送信することになります。

 
文字列送信関数 rs_puts
 

rs_puts (char *st)

ああっ、ポインタ出てきちゃいましたね。 とりあえず、この関数を呼び出すときには、文字列を""で囲んで渡すか、 文字列をchar型の配列に入れて(配列の最後に0またはナル文字'\0'を入れる)配列名を渡すようにすれば良いかと思います。


while (*st) rs_putc (*st++)

これも、ちゃんと説明しようとすると長くなってしまいますね。

0またはナル文字'\0'になるまで、 渡された文字列を1文字ずつrs_putcで表示します・・・てなことで(@@)/

 
2003/05/23(Fri)
AKI-H8/3664 QFP版のトップページへ
トップページへ
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送