閲覧総計:38744  (本日:3  昨日:3)


PIC-PICの通信(USART)

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

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

【16F628Aの場合】
事例回路は、スイッチを押している間、通信先のPICのLEDが点灯し、
スイッチを離すとLEDが消灯します。

115810351_159.jpgUSART01_30.jpg
/** 
* 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); 
}

★この情報は役に立ちましたか?

選択肢 投票
はい 80  
普通 13  
いいえ 45  

添付ファイル: file115810351_159.jpg 4324件 [詳細] fileUSART01_30.jpg 8957件 [詳細]