2010年11月20日土曜日

RS232C通信-PIC18F2550

LED やスイッチ、可変抵抗器は必要ありません。




  1. /* 
  2. 概要:とりあえずRS232C通信 
  3. ブートローダーを使った書き込み 
  4.  
  5. マイコン:PIC18F2550 
  6.  
  7. ファイル名:RS232C.c 
  8.  
  9. 開発環境:MPLAB C18 
  10.  
  11. */  
  12.   
  13. #include <p18f2550.h>  
  14. #include <usart.h>  
  15. #include <stdio.h>  
  16.   
  17. // リセットベクタ    
  18. #pragma code reset_vector=0x1000  
  19.   
  20. extern void _startup(void);  
  21. void remapped_reset(void) { _asm goto _startup _endasm}  
  22.   
  23. #pragma code  
  24.   
  25. void main (void)  
  26. {  
  27.  char Mes[10]="Start!!\r\n";  
  28.    
  29.  // configure USART  
  30.  OpenUSART(USART_TX_INT_OFF & //送信割込みの禁止  
  31.  USART_RX_INT_OFF &    //受信割込みの禁止  
  32.  USART_ASYNCH_MODE &   //非同期(調歩)モード  
  33.  USART_EIGHT_BIT &   //8ビットモード  
  34.  USART_CONT_RX &    //連続受信モード  
  35.  USART_BRGH_LOW,    //低速ボーレート  
  36.  77);       //SPBRGレジスタ 9600 bps  
  37.    
  38.  TRISC = 0b11111101;                 //RC7(RX): input mode   RC6(TX): output mode  
  39.    
  40.  while (1)  
  41.  {  
  42.   putsUSART(Mes);  
  43.  }  
  44.    
  45.  CloseUSART();  
  46. }  

SPBRGレジスタの計算方法
FOSC = HSPLL_HS//48MHz
通信速度:9600bps
USART_BRGH_LOW:64
48*1,000,000/9,600/64-1=77.125

RS232C.zip
ダウンロード

1 件のコメント:

  1. 管理人さん

    古い記事に今更となってしまいますが,質問です.
    RS232Cを用いてシリアル通信する際に
    USART関数を用いるのはわかるのですが...
    メイン文の前にリセットベクタを記述しているのには
    どんな意味があるのでしょうか?

    返答よろしくお願いします.

    返信削除