View Single Post
Old 03-05-2014, 12:14 AM   #1
dat_huynh2303
Nhập môn đệ tử
 
Tham gia ngày: Dec 2013
Bài gửi: 2
:
Unhappy [Cần giúp đỡ] Ngắt ngoài PIC16F887 - MPLABX XC8

***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.

thay đổi nội dung bởi: dat_huynh2303, 03-05-2014 lúc 03:38 PM.
dat_huynh2303 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn