RC0ポートに繋がっているLEDは通常の処理で点滅、
RC1ポートに繋がっているLEDは割り込みが発生する度に点滅
/* 概要:タイマ0を使った割り込みを使ってみる HID - Bootloaderを使った書き込み マイコン:PIC18F2550 ファイル名:nain.c 開発環境:MPLAB C18 */ #include <p18f2550.h> #include <delays.h> #include <timers.h> void high_isr (void); void low_isr (void); // リセットベクタ #pragma code reset_vector=0x1000 extern void _startup(void); void remapped_reset(void) { _asm goto _startup _endasm } #pragma code // 高優先割込み関連の記述 ==== #pragma code high_vector=0x1008 void high_interrupt (void) { _asm GOTO high_isr _endasm } #pragma code #pragma interrupt high_isr void high_isr (void) { /* ここに高優先割込み処理を記述する */ INTCONbits.TMR0IF = 0; // タイマ0割り込みフラグを0にする WriteTimer0(18660); LATCbits.LATC1 = !LATCbits.LATC1;//RC1のLED点滅点<->灯点滅 } // 低優先割込み関連の記述 ==== #pragma code low_vector=0x1018 void low_interrupt (void) { _asm GOTO low_isr _endasm } #pragma code #pragma interruptlow low_isr void low_isr (void) { /* ここに低優先割込み処理を記述する */ } void main(void) { TRISC=0; // ポートCをすべて出力ピンにする OpenTimer0( TIMER_INT_ON & //割込み:ON T0_16BIT & //16 bit モードに設定 vs 8bit モード( T0_8BIT ) T0_SOURCE_INT & //内部クロック使用 T0_PS_1_128 //128ビットプリスケーラ 1/8 vs 1/1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 ); WriteTimer0(18660);//48MHzで0.5s RCONbits.IPEN = 0; //割込み優先順位制御:OFF (RCON レジスタのIPENビット = 0) INTCONbits.TMR0IE = 1; //タイマ0割込み許可 INTCONbits.PEIE = 1; //周辺割込み許可 //INTCONレジスタの b6ビット : 低位割込み許可/禁止(割り込み優先順位制御 有りの場合) INTCONbits.GIE = 1; //全割込み許可 //INTCONレジスタの b7ビット : 高位割込み許可/禁止(割り込み優先順位制御 有りの場合) while(1) { //通常の処理 PORTCbits.RC0=1; //RC0ポートのLED点滅 Delay10KTCYx(0); //0=>256 48MHzで213.3 ms PORTCbits.RC0=0; Delay10KTCYx(0); } }
0 件のコメント:
コメントを投稿