- /*
- 概要:ブートローダーを使ったプログラムで書き込むためのプログラム
- マイコン: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 件のコメント:
コメントを投稿