INT-Interrupt trên vi điều khiển
INT-interrupt là một loại ngắt trên portb vi điều khiển 16f877A.
Trong bài viết về các loại ngắt trên PORTB vi điều khiển 16fxx chúng ta đã được giới thiệu qua các loại ngắt trên PORTB và cách cấu hình các thanh ghi để thực hiện ngắt (interrupt). Trên portb gồm có ngắt khi thay đổi trạng thái portb và ngắt INT-INT/RB0-Interrupt.
Sau đây là một đoạn code sử dụng int-interrupt trên vi điều khiển pic 16f877A.
/*Using an external interrupt to detect the status of RB0 to control leds in portC
Cmu: Pic 16f877A
Compiler: mikroC pro
Author: localhost/dientudieukhien.net
*/
void interrupt(){
PORTC =~ PORTC;
delay_ms(1000);
INTF_bit = 0; //Clear External interrupt flag
}
void main() {
TRISC=0x00; //PortC at output.
GIE_bit = 1; //Enable Global interrupt
INTEDG_bit = 1; //Interrupt on rising edge of INT pin
INTE_bit = 1; // Enable External interrupt
INTF_bit = 0; //Clear External interrupt flag
while(1){
PORTC=0x00; // clear portc
}
Đoạn code trên thực hiện ngắt khi có sự thay đổi mức logic trên port RB0. Ngắt sẽ thực hiện đảo trạng thái portc. Đối với việc dò trạng thái portb.f0 cũng có thể thực hiện bang hàm BUTTON nhưng sẽ không gọn và nhạy như khi ta sử dụng ngắt.