PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Ngắt trong C18 (http://www.picvietnam.com/forum/showthread.php?t=7505)

Nortune 06-12-2010 07:08 AM

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