2010年11月20日土曜日

RS232C通信-PIC18F2550

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




/*
概要:とりあえずRS232C通信
ブートローダーを使った書き込み

マイコン:PIC18F2550

ファイル名:RS232C.c

開発環境:MPLAB C18

*/

#include <p18f2550.h>
#include <usart.h>
#include <stdio.h>

// リセットベクタ  
#pragma code reset_vector=0x1000

extern void _startup(void);
void remapped_reset(void) { _asm goto _startup _endasm}

#pragma code

void main (void)
{
 char Mes[10]="Start!!\r\n";
 
 // configure USART
 OpenUSART(USART_TX_INT_OFF & //送信割込みの禁止
 USART_RX_INT_OFF &    //受信割込みの禁止
 USART_ASYNCH_MODE &   //非同期(調歩)モード
 USART_EIGHT_BIT &   //8ビットモード
 USART_CONT_RX &    //連続受信モード
 USART_BRGH_LOW,    //低速ボーレート
 77);       //SPBRGレジスタ 9600 bps
 
 TRISC = 0b11111101;                 //RC7(RX): input mode   RC6(TX): output mode
 
 while (1)
 {
  putsUSART(Mes);
 }
 
 CloseUSART();
}

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関数を用いるのはわかるのですが...
    メイン文の前にリセットベクタを記述しているのには
    どんな意味があるのでしょうか?

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

    返信削除