#freeze
閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)~
~
*PIC-PICの通信(USART) [#i498b963]

PICマイコン同士の通信にチャレンジ。調べた結果 
USART機能 
(Universal Synchronous Asynchronous Receiver Transmitter) 
http://picfun.com/serial23.html 
を用いるのが手軽で確実と結論。 06/11/02

USART機能とは、シリアル通信(RS232C通信)と同じ通信方法の事です。

【16F628Aの場合】
事例回路は、スイッチを押している間、通信先のPICのLEDが点灯し、
スイッチを離すとLEDが消灯します。
|&attachref(115810351_159.jpg,zoom,150x150,button){新しい写真添付};|&attachref(USART01_30.jpg,zoom,150x150,button){新しい写真添付};|

 /** 
 * USART送信 
 * 
 * PIC 16F628A 
 * 発信器:内臓4MHz 
 * 電源:乾電池3本(4.5V) 
 * switch: RA0 
 *  
 * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF 
 *        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT 
 * 
 * 言語 MikroC v2.1 
 */
 void main() { 
 
   PORTA = 0b00000000; //PORTAの中身をきれいにする 
   PORTB = 0b00000000; //PORTBの中身をきれいにする 
 
   CMCON = 0b00000111; //PORTAをデジタル入出力使用に設定 
 
   TRISA = 0b00000001; //RA0を1:入力に、他を0:出力に設定 
   TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定 
 
   Usart_Init(2400); //通信速度を2400 band rateに設定 
 
   do { 
     if(PORTA.F0 == 1) { 
       Usart_Write('A'); //RA0=1なら'A'を送信 
     } else { 
       Usart_Write(0); //RA0=0なら 0 を送信 
     } 
 
   } while(1); 
 } 


 /** 
 * USART受信 
 * 
 * PIC 16F628A 
 * 発信器:内臓4MHz 
 * 電源:乾電池4本(6.0V) 
 * LED: RB3 
 *  
 * Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF 
 *        _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT 
 * 
 * 言語 MikroC v2.1 
 */ 
 unsigned short int data; 
 
 void main() { 
 
   PORTB = 0b00000000; //PORTBの中身をきれいにする 
 
   TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定 
 
   Usart_Init(2400); //通信速度を2400 band rateに設定 
 
   do { 
     if(Usart_Data_Ready()) { 
       data = Usart_Read(); 
       if(data == 'A') { 
         PORTB.F3 = 1; //dataが'A'ならRB3=1(LED ON) 
       } else { 
         PORTB.F3 = 0; //それ以外はRB3=0(LED OFF) 
       } 
     } 
   } while(1); 
 }

★この情報は役に立ちましたか?
#vote(はい[58],普通[11],いいえ[15])

#comment_nospam