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)
-   -   [Cần giúp đỡ] Ngắt ngoài PIC16F887 - MPLABX XC8 (http://www.picvietnam.com/forum/showthread.php?t=33490)

dat_huynh2303 03-05-2014 12:14 AM

[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 :D

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.


Múi giờ GMT. Hiện tại là 03:44 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam