#include "softtimer.h" volatile uint16_t timer1_acc; uint16_t softtimer_last[SOFTTIMERNUMS]; void softtimer_reset(uint8_t timernum){ softtimer_last[timernum] = timer1_acc; } uint8_t softtimer(uint8_t timernum, uint16_t interval){ uint16_t timer1_acc_tmp = timer1_acc; // because of volatile if((uint16_t)(timer1_acc_tmp - (uint16_t)(softtimer_last[timernum]) >= interval )){ softtimer_last[timernum] = timer1_acc_tmp; return(1); } return(0); } // SOFTTIMER( , ); // #define SOFTTIMER(n,a) if(softtimer((n),(a*8)))