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 件のコメント:
コメントを投稿