<PC-PIC間のRS232C通信>

PCのキーボードから文字を、RS232C経由でPICに送るとPICから文字を返す回路とプログラムに挑戦です。
使用部品は、おなじみの16F688、FT232RL USB-シリアル変換モジュール、コンデンサ0.1μ、抵抗1Kです。

PC側に必要ソフトとして、ハイパーターミナル、Tera Termなどが必要です。
(PC側から文字をRS232Cを介して送るソフト)
ここでは、自作ソフトを使いました(下記画像のYYRS232_ver1)

  回路図


完成回路(赤丸印の部品だけです。回路図にない部品は、次期ステップアップ用です。)

下記画像は(PC画面)、PCのキーボードから文字を入力するとPIC側から文字(顔文字)を返してくる。 3パターンで上からA、B、Cに対応する顔文字です。





//////////////////////// ソース ///////////////////// #include <htc.h> #include <stdio.h> #include <string.h> __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO); __IDLOC(0001); ioport(); char getch(); void putch(char); main() { OSCCON=0x30; /* 500kHz */ // OSCCON=0x70; /* 8000kHz */ ioport(); char rxdata; RCSTA=0x90; /* USART非同期モード */ TXSTA=0x20; BRGH=1; /* 500khz 1200bps */ SPBRG=25; // BRGH=1; /* 500khz 2400bps */ // SPBRG=12; // BRGH=0; /* 8000khz 2400bps */ // SPBRG=51; // BRGH=0; /* 8000khz 9600bps */ // SPBRG=12; while(1){ rxdata=getch(); /*rxdataにPCからの文字を入れる*/ if(rxdata == 'A'){ printf("(^^♪\n"); } if(rxdata == 'B'){ printf("(~o~)\n"); } if(rxdata == 'C'){ printf("(*^_^*)\n"); } } } ioport() { TRISA=0x00; /* RC5/RXピンは入力ピン */ TRISC=0x2F; /* RC4/TXピンは出力ピン */ ANSEL=0x00; CMCON0=0x07; } char getch() { while(!RCIF); /* 受信したら */ return(RCREG); /* データを読む */ } void putch(char txdata) { while(!TXIF); /* 送信バッファが空いたら */ TXREG=txdata; /* 1バイトだけ書く */ } ///////////// ソース ここまで ///////////// *PCとPIC間のRS232C通信基礎が出来たので、次はキーボードから入力した欧文を  PICからモールス信号にして見たいと思います。  この、おもしろ実験室で紹介している「PICによるCW SEND」は文字入力を1文字づつ  SW操作で、モールス信号を出力させている。  文字数が長いと、SW操作に時間が掛かりやりづらい^_^;、SW操作なので仕方ないのですが(^_^.)