Ngắt trong C18
Mình mới viết 1 code để ngắt port B trong C18 [RB4 - RB7], nhưng không hiểu sao khi nạp code thì ngay cả những câu lệnh khởi tạo cũng không thực hiện được. Nhưng khi mình bỏ phần code ngắt đi thì những câu lệnh trong hàm main lại thực hiện như bình thường. Ai có kinh nghiệm, xin chỉ giùm mình sai ở chỗ nào nhé.
#include <p18F4620.h> #include "../code/gpio.h" #include "../code/lcd.h" #pragma config WDT = OFF //check #pragma config OSC = HS //check #pragma config PWRT = ON //check #pragma config BOREN = SBORDIS //check #pragma config BORV = 3 //check #pragma config MCLRE = ON //check #pragma config LVP = OFF //check void main(); void ISR (); char mes1[] = "Test interrupt"; char mes2[] = "OK"; void main () { RCONbits.IPEN = 0; //cho phep mo hinh uu tien ngat INTCONbits.RBIE = 1; //enalbe bo ngat RB INTCONbits.RBIF = 0; //xoa co ngat cua RB INTCONbits.PEIE = 1; //cho phep toan bo ngat ngoai vi khong bi che INTCONbits.GIE = 1; //cho phep toan bo ngat khong bi che portD_digital(); lcd_init(); lcd_goto_xy(1,1); lcd_display_string(mes1); while(1); } #pragma code high_vector = 0x08 void interrupt(void) { _asm goto ISR _endasm } #pragma code #pragma interrupt ISR void ISR() { lcd_goto_xy(1,2); lcd_display_string(mes2); INTCONbits.RBIF = 0; } |
Múi giờ GMT. Hiện tại là 10:34 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam