Trích:
Nguyên văn bởi shoknshok
Bạn có thể giải thích đoạn code dùng ngắt trong con này được ko? Mình cũng đang tìm hiểu nhưng không biết viết một đoạn chương trình ngắt như thế nào cả? Thanks! 
|
Tôi viết một đoạn ví dụ cho bạn xem, đầu tiên là khởi tạo ngắt. nếu bạn dùng nhiều ngắt thì dùng nguyên portB 8 pin (xem lại datasheet), còn dùng 1 ngắt thì có RB0 vì đó là chân ngắt đặt biệt. Tôi dùng RB0 để ngắt xung nhận từ encoder, mỗi khi xung cạnh xuống là báo ngắt và biến xung tăng lên 1.
//===========INITIALIZE PWM MODUL===============================//
void init_ngat()
//XEM DATASHEET TRANG 128
{
PEIE = 1;//cho phep ngat ngoai vi
GIE = 1;//cho phep ngat toan cuc
INTEDG = 0;//ngat RB0 khi co xung xuong
INTF = 0;//xoa co ngat RB0
//INTE = 1;// chua cho phep ngat ngoai RB0 hoat dong
//ADIE = 1;// cho phep ngat ADC
//ADIF = 0;// xoa co bao ngat ADC
}
/=====CHUONG TRINH DEM XUNG ENCODER====================//
void interrupt ISR()
{
if(INTF && INTE)
{xung++;
INTF =0;}
}
Bạn tham khảo chương trình trong bài tiểu luận này sẽ hiểu thêm hơn về ngắt
http://www.picvietnam.com/forum/showthread.php?t=30520