/* 概要:ブートローダーを使ったプログラムで書き込むためのプログラム マイコン:PIC18F2550 ファイル名:LED001.c RC0:LED */ #include <p18f2550.h> #include <delays.h> // リセットベクタ #pragma code reset_vector=0x1000 extern void _startup(void); void remapped_reset(void) { _asm goto _startup _endasm} #pragma code void main(void) { TRISCbits.TRISC0=0; // RC0 is output (LED) while(1) { PORTCbits.RC0=1; // RC0=ON Delay10KTCYx(250); PORTCbits.RC0=0; // RC0=ON Delay10KTCYx(250); } }
LED001.c ファイルの他にrm18f2550 - HID Bootload.lkr ファイルを用意する必要があります。
rm18f2550 - HID Bootload.lkr ファイルはrm18f4550 - HID Bootload.lkr のコードを修正して、
ファイル名を変更したものです。
変更箇所は一か所です。
FILES p18f4550.lib
↓
FILES p18f2550.lib
PIC18F2550-LED.zip
ダウンロード
コンフィギュレーションは ブートローダが制御しているのでプログラムで指定する事はできませんん。
作成するプログラムは0x1000から記述する必要があります。
割り込み制御について、PICは割り込みが発生すると0x0008または0x0018にある割り込みベクタへプログラムカウンタを移動させます。
この領域はブートローダが制御する領域なので、この領域を使用したプログラムを作成することはできません。
割り込みが発生すると、ブートローダは0x1008または0x1018にジャンプする命令を実行します。
作成するプログラムでは、割り込みの制御を0x1008と0x1018に記述しておく必要があります。
// リセットベクタ #pragma code 0x1000 // エントリポイント void main() { // 任意の処理 } // 高優先割り込みベクタ #pragma code ih_vect = 0x1008 void ih_vect_method() { _asm GOTO ISR_HIGH _endasm } // 低優先割り込みベクタ #pragma code il_vect = 0x1018 void il_vect_method() { _asm GOTO ISR_LOW _endasm } #pragma code #pragma interrupt ISR_HIGH #pragma interruptlow ISR_LOW save = WREG,BSR,STATUS
0 件のコメント:
コメントを投稿