***Vấn đề đã được giải quyết, chỉ cần tắt Watchdog Timer đi là ok
code: #pragma config WDTE = OFF
Để bài đăng lại cho anh em sau này có gặp thì tham khảo
Nội dung: ngắt ngoài INT được nối với 1 button, mỗi lần button được nhấn thì giá trị hiển thị ở PORTA tăng lên 1. (hiện từ 0->9)
Code:
char j;
void INT_Init()
{
INTCONbits.PEIE = 1; //Enable ngat ngoai vi
INTCONbits.GIE = 1; //Enable ngat toan cuc
INTCONbits.INTE = 1; //Enable ngat ngoai INT
OPTION_REGbits.INTEDG = 1; //Ngat o canh xuong
INTCONbits.INTF = 0; //xoa co ngat INT
ANSELHbits.ANS12 = 0; //pin B0/INT la ngo vao digital
}
#pragma
void interrupt ISR_INT0()
{
if(INTCONbits.INTF && INTCONbits.INTE)
{
if (j<9) j++;
else j = 0;
INTCONbits.INTF = 0;
}
}
void main()
{
TRISA = 0;
while (1) PORTA = j;
}
/**************************************/
Vấn đề: code vẫn chạy, mỗi khi nhấn nút 1 lần thì j tăng giá trị lên 1. Nhưng nó tự động reset về 0 sau 1-2s. Giả sử j = 1, nó tự động reset về j = 0. Nhờ các cao nhân chỉnh sửa giúp em.