PIC初心者用掲示板

★★ 質問する前に下記をチェック ★★
(PICに関する疑問は必ず解決するはず)
←←←「電子工作の実験室」へ
←←←← 

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 9965. Software UART(MikroC)の使用法 [kazu22006/03/18 19:05
    ┗ 9968. Re: Software UART(MikroC)の使用法 [寝る前に2006/03/19 01:29
        ┗ 9969. 投稿者削除 [ ] 2006/03/19 08:41
        ┗ 9970. 解決 Re: Software UART(MikroC)の使用法 [kazu22006/03/19 08:59


9965. Software UART(MikroC)の使用法 [kazu22006/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)の使用法 [kazu22006/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);
}