- 9965. Software UART(MikroC)の使用法 [kazu2] 2006/03/18 19:05
-
PIC 16F84A同士でRS232通信(USART)を行おうとプログラムしていま
すが、Soft_Uart_Init()の行で、
Division by zero.
';' expected but ) found.
のエラーが発生し、コンパイルが完了しません。
エラーの原因の究明方法、エラーの解決方法に関するアドバイスが
頂ければ助かります。よろしくお願い致します。
/**
* Software UART送信テスト
*
* PIC 16F84A
* 発信器 10MHz
* 言語 MikroC v2.1
* Device Flags: _CP_OFF _PWRTE_ON _WDT_OFF _HS_OSC
*
* switch: RA0
* LED: RB0
*/
void main(){
//ポートの初期化
PORTA = 0b00000000;
PORTB = 0b00000000;
//入出力の設定
TRISA = 0b00011111; //PORTA5ヶ全て入力設定
TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定
//RX:RB1 TX:RB2 2400 band rate no invert
Soft_Uart_Init(&PORTB, 1, 2, 2400, 0);
do {
Soft_Uart_Write(PORTA.F0);
PORTB.F0 = PORTA.F0; //LED発光確認
}while(1);
}
- 9968. Re: Software UART(MikroC)の使用法 [寝る前に] 2006/03/19 01:29
- もう解決してるかもしれませんが、
> Soft_Uart_Init(&PORTB, 1, 2, 2400, 0);
これを
Soft_Uart_Init(PORTB, 1, 2, 2400, 0);
と書いてみてください。
Examples\extra_examples\software_comm\以下にある
サンプルはそうなってますよ。
- 9969. 投稿者削除 [ ] 2006/03/19 08:41
-
- 9970. 解決 Re: Software UART(MikroC)の使用法 [kazu2] 2006/03/19 08:59
-
寝る前にさん、アドバイスありがとうございます。
> Examples\extra_examples\software_comm\以下にある
> サンプルはそうなってますよ。
サンプルに習って
Soft_Uart_Init(&PORTB, 1, 2, 2400,0);を
→Soft_Uart_Init(PORTB, 1, 2, 2400);
に変更する事で問題は解決しました。ありがとうございました。
送信、受信がうまく動きました。
Examples\extra_examples\software_comm\以下にサンプルソースが
たくさんあるのですね。知りませんでした。今後の参考になります。
また、今回の件は、HelpのmikroC Librariesの中のSoftware UART
Libraryの情報だけを参考にしていた為のトラブルでした。
今後は、Helpとサンプルソースの両方を確認して作業を進める様に
致します。
また、今回のSoft_Uart_Init()の件、こちらのページにも情報紹介
がありました。参考まで。↓
http://www.kuze.jp/sfc/page25.html
/**
* Software UART送信テスト
*
* PIC 16F84A
* 発信器 10MHz
* 言語 MikroC v2.1
* Device Flags: _CP_OFF _PWRTE_ON _WDT_OFF _HS_OSC
*
* switch: RA0
* LED: RB0
*/
void main() {
//ポートの初期化
PORTA = 0b00000000;
PORTB = 0b00000000;
//入出力の設定
TRISA = 0b00011111; //PORTA5ヶ全て入力設定
TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定
//RX:RB1 TX:RB2 2400 band rate
Soft_Uart_Init(PORTB, 1, 2, 2400);
do {
Soft_Uart_Write(PORTA.F0);
PORTB.F0 = PORTA.F0; //LED発光確認
} while(1);
}
/**
* Software UART受信テスト
*
* PIC 16F84A
* 発信器 10MHz
* 言語 MikroC v2.1
* Device Flags: _CP_OFF _PWRTE_ON _WDT_OFF _HS_OSC
*
* LED: RB0
*/
unsigned short int data = 0;
unsigned short int ro = 0;
unsigned short int *recOK;
void main() {
//ポートの初期化
PORTB = 0b00000000;
//入出力の設定
TRISB = 0b00000010; //PORTB RB1:入力、他7ヶは出力設定
recOK = &ro;
//RX:RB1 TX:RB2 2400 band rate
Soft_Uart_Init(PORTB, 1, 2, 2400);
ro = !ro;
do {
do {
data = Soft_Uart_Read(recOK); //receive data
} while(!*recOK);
if(data == 1) {
PORTB.F0 = 1; //LED発光確認
} else {
PORTB.F0 = 0;
}
} while(1);
}