/******************************************************************************** * MAHE, 13.05.2002, 12H40 - now compiling as project of separated source files ********************************************************************************/ #include "timer.h" #include #include Timer globalTimer; /******************************************************************************************** * Init of Timer1 module * p. 51 ff ********************************************************************************************/ void initTimer1(void) { /****************** * Timer1 clock source * is internal clock (Fosc/4) ******************/ TMR1CS=0; /***************** * Set start values * see calculation * above at stru_timer * TMR1H:TMR1L=10000=0x2710 *****************/ TMR1H=0x27; TMR1L=0x10; /***************** * Prescaler is set * to 1:1 by setting * bits T1CON<5:4> * to 00 *****************/ T1CON&=0xCF; /* 1100 1111 */ T1CON|=0x00; /* 0000 0000 */ } /******************************************************************************************** * Start Timer1 ********************************************************************************************/ void startTimer1(void) { /************************ * Reload timer register * with value 0x3CAF ************************/ TMR1H=TMR1_MSB_RELOAD; TMR1L=TMR1_LSB_RELOAD; TMR1ON=1; } /******************************************************************************************** * Stop Timer1 ********************************************************************************************/ void stopTimer1(void) { TMR1ON=0; } /******************************************************************************************** * startGlobalTimer ********************************************************************************************/ void startGlobalTimer(unsigned int counterValue) { /********************* * Disable interrupt * for Timer1 module * in PIE1 *********************/ TMR1IE=0; /************************ * Reload timer register * with value 0xD8EF ************************/ TMR1H=TMR1_MSB_RELOAD; TMR1L=TMR1_LSB_RELOAD; /********************* * Set timer values *********************/ globalTimer.counter=counterValue; globalTimer.isRunning=1; globalTimer.isTerminated=0; globalTimer.timer1Counter=0; /********************* * Enable interrupt * for Timer1 module * in PIE1 *********************/ TMR1IE=1; } /******************************************************************************************** * isFinishedGlobalTimer ********************************************************************************************/ char isFinishedGlobalTimer(void) { /* char retval; globalTimer.isTerminated ? retval=1 : retval=0; return retval; */ return globalTimer.isTerminated; }