| ??? 08/06/08 21:50 Read: times |
#157289 - if you have a lot to delay by various delays Responding to: ???'s previous message |
if you have a lot to delay by various delays, here is an example. To obtain a delay, you set the app slot (e.g. GCXA10ms[3]) to the "number of delays" and then, either loop or occasionally check for zero.
////////////////////////////////////////////////////////////
//
// ISR 1: void ISR_T0 (void)
//
void ISR_T0 (void) interrupt 1 using 1
{
U8 T0Ctemp;
SB0_TCON_TR0 = 0;
S0_TH0 = HIGH1M1m;
S0_TL0 = LOW1M1m;
SB0_TCON_TR0 = 1;
// 1ms counters
for (T0Ctemp = CNT_1MSE; T0Ctemp != 0 ; T0Ctemp-- )
{
if ((GCXA1mse-1)[T0Ctemp])
{
(GCXA1mse-1)[T0Ctemp]--;
}
}
// 10ms counters
if (GCXA1mse[T1M_CNT] == 0)
{
GCXA1mse[T1M_CNT] = 10;
for (T0Ctemp = CNT_10MS; T0Ctemp != 0 ; T0Ctemp-- )
{
if ((GCXA10ms-1)[T0Ctemp])
{
(GCXA10ms-1)[T0Ctemp]--;
}
}
// 100ms counters
if (GCXA10ms[T10M_CNT] == 0)
{
GCXA10ms[T10M_CNT] = 10;
for (T0Ctemp = CNT_100M; T0Ctemp != 0 ; T0Ctemp-- )
{
if ((GCXA100m-1)[T0Ctemp])
{
(GCXA100m-1)[T0Ctemp]--;
}
}
// 1 sec counters
if (GCXA100m[T100M_CNT] == 0)
{
GCXA100m[T100M_CNT] = 10;
for (T0Ctemp = CNT_1SEC; T0Ctemp != 0 ; T0Ctemp-- )
{
if ((GCXA1sec-1)[T0Ctemp])
{
(GCXA1sec-1)[T0Ctemp]--;
}
}
}
}
}
} // end ISR_T0
Erik |



