こんにちは,小坂です。 あいらんどさん,コメントありがとうございました。 CPUに対して遅い応答の8251のことを念頭においていたのですが,速い応答のこともあるから,そう単純ではないのですね。 コメントのTXRDY==0とTXRDY==1の表現は逆だと思いますが,意味は理解できました。 結局多田さんが行なっている割り込みを利用した「受け付け確認」方法が確実ということになると思いました。(while (TXRDY==1);の部分をstatusのTXRDYではなく信号のTxRDYの立下りエッジで行なっていると解釈しました。信号なので,応答が速かった場合もOKだし,他の要因の割り込みが入ることによる確認時期の遅れもない) H8のsciではこのような苦労を知らなかったので,大変参考になりました。 ありがとうございました。 At 21:11 03/01/20 +0900, あいらんど wrote: > > while (TXRDY==0); > > DATAto8251=mychar; > > while (TXRDY==1); > > > 送信バッファと送信シフトレジスタが空の時に >最初の1バイト目を書き込んだ後、すぐにステータスレジスタ >を読みに行った時、TXRDY==1の状態を通り越してしまいTXRDY==0に >なっている可能性がありそうですね。 > それにデータ書き込み−ステータス読み出しの間に割り込みが入る >ことも考慮しなくてはなりません。 > その場合は3ステップ目で永久ループになっちゃいます。 **************************************************** 〒193 0997 八王子市椚田町1220-2 東京工業高等専門学校 情報工学科 小坂敏文 phone0426-68-5199 Fax68-5098