CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

1文字出力

シリアルコントローラの初期化ができたので引き続き1文字出力ルーチンを作っていきます。

ステータスレジスタSRAを見るとBIT3に送信バッファ空:TxEMTがあるのでこのフラグをチェックしました

1文字出力ルーチンTXのコーディングはこうなります。出力するキャラクタをプッシュしてTXを呼ぶと送信バッファTXRAにデータが書き込まれます。そのあとステータスレジスタTxEMTがセットされるまで(送信データが送出完了するまで)ループします。

このルーチンをLEDチカチカプログラムに組み込み、いつものようにインクリメントデータ垂れ流しをやってみました。

リセット解除直後の波形:

ch1:SCN2681チックセレクト/SIOCSch2;書込みイネーブル/WR,ch3:送信データTXDA

シリアルコントローラに初期化コマンド列を12回、送信データ0x00を13回目に書き込んだあとTXDAがLowになり0x00を送出し始めています

Low期間が約234uS(1/38400baud×(8bit/char+1stopbit))の間つづいて0x00の送出は完了しますが、何故か次のキャラクタに進みません

最初のキャラクタ送出後はステータスレジスタの読み取りが延々と続いていてTxEMTがセットされるまで待つループから抜けられないようです