|
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 |
|
06-12-2010, 07:08 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 4
: |
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; } |
|
|