Re: 大問題請求幫助(USART傳到一半會不定時當住)
|
||||
---|---|---|---|---|
資深會員
|
我也遇到同样问题,有时不会,有时出现,感觉不稳定,如果跑掉,发现是TMR0中断被改变了,INTCON0=01,原来设置=E0,请高手帮忙
發表於: 2008/11/3 20:00
|
|||
|
Re: 大問題請求幫助(USART傳到一半會不定時當住)
|
||||
---|---|---|---|---|
資深會員
|
沒辦法幫你細看程式
一般來說,會遇到當住的情形 常常是某個中斷發生,程式卻沒有清除掉那個中斷旗標 結果程式就一直跑到中斷位址去了 看起來就像是當掉了一樣 看你程式,只有一個tmr0的高優先中斷程式 有沒可能是漏了什麼中斷沒處理阿
發表於: 2008/10/31 11:06
|
|||
|
大問題請求幫助(USART傳到一半會不定時當住)
|
||||
---|---|---|---|---|
初級會員
|
程式如下所示,如果把 void Init_TMR0(void); 這功能關起,量TX腳就正常一直傳送。
如果把void Init_TMR0(void);打開,量TX腳位會不定時傳到一半就不傳了。 研究了很久,一直都會這樣。 (可是偏偏又需要void Init_TMR0(void);的功能) 請求高手幫助,感謝萬分。 ------------------------------------------------------------------------------- #include <p18f2321.h> #include <delays.h> #include <usart.h> #include <adc.h> #include <timers.h> #pragma config OSC=HS, BOR=OFF, BORV=2, PWRT=ON, WDT=OFF, LVP=OFF #define count_val 55690 unsigned int time_cnt; void Init_TMR0(void); void timer0_isr (void); void Init_USART(void); void Init_MCU(void); #pragma code high_vector=0x08 void high_interrupt (void) { _asm GOTO timer0_isr _endasm } #pragma code #pragma interrupt timer0_isr void timer0_isr (void) { INTCONbits.TMR0IF=0; WriteTimer0(count_val); if(time_cnt>0) time_cnt--; } void main (void) { Delay10TCYx(200); Init_MCU(); Init_USART(); Init_TMR0(); WriteUSART(0x00); while(BusyUSART()); WriteUSART(0x00); while(BusyUSART()); while (1) { WriteUSART(0xAA); while(BusyUSART()); time_cnt=5; while(time_cnt); }//while } void Init_MCU(void) { ADCON0=0x05; //CH1:05 CH0:01 ADCON1=0x0D; //A:AN0、AN1 ADCON2=0x3A; TRISA=0xFF; TRISB=0xFF; TRISC=0XB9; PORTA=0xFF; PORTB=0xFF; PORTC=0xF9; } void Init_USART(void) { OpenUSART( USART_TX_INT_OFF & //USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & //USART_CONT_RX & USART_BRGH_HIGH, 12 ); PIR1bits.RCIF=0; } void Init_TMR0 (void) { OpenTimer0( TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_EDGE_RISE & T0_PS_1_1 ); WriteTimer0(count_val); INTCONbits.TMR0IF=0; INTCON2bits.TMR0IP=1; RCONbits.IPEN=1; INTCONbits.GIEL=1; INTCONbits.GIEH=1; //INTCONbits.PEIE = 1; //INTCONbits.GIE = 1; }
發表於: 2008/10/31 10:47
|
|||
|