- 追加された行はこの色です。
- 削除された行はこの色です。
#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(はい[31],普通[7],いいえ[10])
#vote(はい[32],普通[7],いいえ[10])
#comment_nospam