![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#4 |
|
Đệ tử 3 túi
Tham gia ngày: Dec 2006
Bài gửi: 60
: |
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);
}
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). thay đổi nội dung bởi: littlephoc, 25-07-2007 lúc 04:35 AM. |
|
|
|
|
|