Em viết hàm main() như sau , các ngắt vẫn không hoạt động:
Code:
#define DISABLE_INTERRUPTS_H(); {while(INTCONbits.GIEH) INTCONbits.GIEH=0;}
#define DISABLE_INTERRUPTS_L(); {while(INTCONbits.GIEL) INTCONbits.GIEL=0;}
#define ENABLE_INTERRUPTS_H(); {INTCONbits.GIEH=1;}
#define ENABLE_INTERRUPTS_L(); {INTCONbits.GIEL=1;}
#pragma code page
void reset_button( void )
{
// Reset();
_asm RESET _endasm
}
void rx_handler( void )
{
char c;
c = ReadUSART();
putcUSART(c);
}
void main(void)
{
TRISA = 0x2F; // A4 for blink led
TRISB = 0xDF; // RB5 is output
TRISC = 0x90; //
LATBbits.LATB5 = 1;
LATAbits.LATA4 = 1;
OpenADC(ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_8_TAD,
ADC_CH8 & ADC_INT_OFF ,3); //
ADCON1=0x3; // Vref+ Vdd, Vref- Vss
OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON &
USART_ASYNCH_MODE & USART_EIGHT_BIT &
USART_CONT_RX & USART_BRGH_HIGH, 8); //8 bits, 57600
// Setup for SPI mode
SSPSTAT = 0x40;
SSPCON1 = 0x30;
DISABLE_INTERRUPTS_H();
DISABLE_INTERRUPTS_L();
OpenRB0INT (PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & FALLING_EDGE_INT);// setup interrup for RB0
OpenRB1INT (PORTB_CHANGE_INT_ON & PORTB_PULLUPS_ON & RISING_EDGE_INT); // setup interrupt for RB1
ENABLE_INTERRUPTS_H();
ENABLE_INTERRUPTS_L();
while(1);
}
xuất nhập với usart không hoạt động
phím B1 nhấn tới nhấn lui không thấy gì cả (em có chèn thêm vài dòng code để đèn nhấp nháy, nếu reset thì sẽ delay 1 thời gian rồi mới nhấp nháy).