としぶぅ~の「工作部屋」...毎日少しのお勉強

趣味・関心事を書いていこうと思います。

PIC16F88を動かす。。。その32(シリアル通信のまとめ)

2012-10-23 22:58:46 | PIC16F88

こんばんわ

としぶぅ~です。

 

雨が降って・・・・また一段と涼しくなりました。

風邪ひかないようにしないと。。。

今日は、昨日シリアル通信ができるようになったのでとりあえずまとめです。

//メインルーチン
void main( void )
{

unsigned char ansel;
int i;
unsigned char baurate;


IoInit(); // I/Oポートの初期化
Tmr1Init(); // タイマ1の初期化
baurate = 12; // 38.4KBps
usartinit(baurate);
ansel = 0x10; // AD4を指定(20120908追加)
adinit(ansel); // RA4をAD4ポートとして初期化する(20120908追加)

//タイマ周期が1/100秒になるように、初期化する
TMR1H = TMR1H_INIT;
TMR1L = TMR1L_INIT;
//時間のカウンタの初期化

一部ですが、コードを抜き出しました。

マーカー部で、ボーレートを入力してシリアルポートのイニシャライズしています。

//USARTの初期化
void uartinit(unsigned char br)
{

/*************************************************
ボーレート:OSC/(16*(br+1))
設定範囲:1<=br<=255

br= 51 :9600bps
br= 25 :19.1kbps
br= 12 :38.2kbps
br= 8 :57.6kbps
br= 16 :115.2kbps


**************************************************/

SPBRG=br; //ボーレートの設定
BRGH=1; //BRGの設定 1:High Speed
SYNC=0; //SYNCの設定 0:非同期設定
SPEN=1; //シリアル通信を使用
RCIE=1; //RX割り込み許可
// TXIE=0; //送信割り込み使用
TXEN=1; //送信on
TX9 = 0; //8bitTrasmit
RX9 =0; //8bitReciving
CREN=1; //連続受信on
RCREG=RCREG; //RCIF:受信割り込みフラグクリア
//RB5とRB7は入力と出力ポートに設定
TRISB2=1; //RB2入力に設定
TRISB5=0; //RB5出力に設定

}

上記のように、先日訳したレジスタの内容を順に設定します。

これで34.8Kbpsでシリアル転送ができるはずです。

 

それで、昨日とった波形の解説・・・・

これでわかるだろうか・・・

多分波形だけ張っていたら、これでなぜ動いているといえる…?なんて思う人いっぱいいると思うので

とりあえず波形の説明入れました。

この波形であれば38.4kbpsで動いていますよ^^

 

まとりあえず今日はまとめてみました。

まとまってない?(笑)

 

受信も多分できると思います。

受信はコード書いてLCDに表示しないといけないのでちょっと時間あるときにやります。

先週は仕事ほとんどできなかったので。。。。今週は忙しい!

 

とりあえず今日はこの辺で。。。

おやすみなさい^^/