PIC24-Timer Kullanımı

Merhaba,
Microchip 16bit PIC24F serisinde Timer kullanımı aşağıdaki gibidir.
/*
Aykut ULUSAN
Elektronik Mühendisi
IZMIR
www.uicroarm.com
işlemci : PIC24Fj64
Board : EXPKITS EX16L-A (PIC24F ve PIC33F geliştirme boardu)
*/
#include <p24Fxxxx.h>
// xtal kullanacağız bu nedenle config içinde osc'yi değiştireceğiz, bu durum sadece config2 half word'u etkiler
_CONFIG1(0x3F20) // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x7AAE) // 10mhz xtal (HS),
#define fosc (10000000)/2
#define tmr2_pr 256
#define reload (unsigned short) ((fosc/tmr2_pr)-1)
#define LED1 LATBbits.LATB0
int
main(void){
unsigned char c;
while (OSCCONbits.COSC!=2);
AD1PCFG=0xFFFF;
TRISB=0xFFFE; //RB0 çıkış
T2CON = 0;
TMR2 = 0;
PR2 = reload; // timer'ın limit değeri
T2CONbits.TCKPS=3;
IFS0bits.T2IF=0;
T2CONbits.TON=1;
while(1){
if(IFS0bits.T2IF){
IFS0bits.T2IF = 0;
LED1 = !LED1;
if(c<5){c++;}
if((4<c)&&(c<15)){c++;PR2 = reload>>1;} // 0,5sn
if((14<c)&&(c<45)){c++;PR2 = reload>>2;} // 250ms
if((44<c)&&(c<100)){c++;PR2 = reload>>3;} // 125ms
if(c>99){c=0;PR2 = reload;}
}
}
return 0;
}