trong hàm main bạn khai báo sử dụng loại ngắt (timer, ngắt ngoài,...)(cho phép ngắt), nhưng khi nào thì xảy ra ngắt...mỗi loại ngắt có một tác động riêng khi dấu hiệu này bị tác động sẽ gây ra ngắt (ví dụ timer ngắt khi bị trào, ngắt ngoài khi thay đổi xung,...)
đoạn code đầy đủ sử dụng ngắt timer đây
Code:
//********************************************************************
#include <16F877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
////#use fast_io(b)
#byte portc=0x07 ///khai bao dia chi portb
#byte portb=0x06
////#define led pin_B0
int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(0);
++count;
if(count==560)
{
count=0;
a=a<<1; // dich trai a 1bit
}
if(a==256)
{
a=1;
count=0;
}
}
//Chuong trinh chinh
main()
{
set_tris_c(0);
set_tris_b(0);
enable_interrupts(global);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(0);
count=0;
a=1;
while(true)
{
portc=a;
portb=0x01010101;
}
}