Re: pic18f4620 TIMER1 中斷問題
|
||||
---|---|---|---|---|
資深會員
|
OpenTimer1 應該 放在 while(1) 之前 比較好吧 ?
如果 LED 是要給人看的 ; #define TMR1_VAL 65536-16384 時間太短了吧 ( 16 mS , 以 4 M Hz X'TAL 來說 )
發表於: 2009/8/15 0:58
|
|||
|
pic18f4620 TIMER1 中斷問題
|
||||
---|---|---|---|---|
新會員
|
#include<p18f4620.h>
#include<timers.h> #pragma config OSC = HS, BOREN = OFF, BORV = 2, PWRT = ON, WDT = OFF, LVP = OFF #define TMR1_VAL 65536-16384 void Init_TMR1(void); void timer1_isr(void); #pragma code low_vector = 0x18 void low_interrupt(void) { _asm GOTO timer1_isr _endasm } #pragma code #pragma interruptlow timer1_isr void timer1_isr(void) { PIR1bits.TMR1IF = 0; WriteTimer1(TMR1_VAL); PORTD++; } void main(void) { PORTD = 0x00; TRISD = 0; Init_TMR1(); INTCONbits.PEIE = 1; INTCONbits.GIE = 1; while(1); } void Init_TMR1(void) { OpenTimer1(TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_EXT & T1_PS_1_1 & T1_OSC1EN_ON & T1_SYNC_EXT_ON ); WriteTimer1(TMR1_VAL); PIR1bits.TMR1IF = 0; } //------------------------------------------------------------------------- 這是一個會讓LED所顯示的二進位數字自動加(從書上COPY下來的) 可是我用這程式下去跑都不會跑進中斷裡面 那如果我把 OpenTimer1(TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_EXT & T1_PS_1_1 & T1_OSC1EN_ON & T1_SYNC_EXT_ON ); 的 T1_PS_1_1 改成 T1_PS_1_8 他就會跑進中斷 我不大懂的是~~~位啥 T1_PS_1_1 跑不進去中斷 而且就算我改成了 T1_PS_1_8 他還是指中斷一次就一直在while(1) 裡面循環 不會在計續產生中斷~~
發表於: 2009/8/13 23:37
|
|||
|