16F877Aで – nibuiroフラグメント β

16F877Aで

16F877Aで

ソースコードはココ.

UART割り込みecho

いざ、書き込んで、Teratermを起動。
シリアルを選択、設定->シリアルポートからボーレートも確認。
なんだこれ。

なんだこれ。


生データを見たいと思い調べてみるとDebugモードがあるらしい。
C:\Program Files (x86)\teraterm\TERATERM.INIのDebug=offをDebug=onとする。

FE FE FE FE FE …

…え?

‘A’や0x31など試す
FE FE FE FE FE …

どうにも正常に転送できていないらしい、だが転送されているっぽい動きなのでTXモードは有効にできているのだろうと。
レジスタの設定を見直す、見直す。
BRGH = 0 ( 低速 )
(非同期)ボーレート = FOSC /(64(X+1))

あっ。 TXSTA = 0x20 としてみたらAと表示された。

TMR1を利用して割り込み

なぜだろう, 全く時間が合わない.
かなり悩んだ.
原因はTMR0とTMR1のカウンタのビット数が異なることだった.
データシートは熟読しよう