static struct tmrtab { BytePtr caddr; BytePtr cwaddr; unsigned mask; unsigned pgm; }
tmrtab[] = {
{ Timer10,
Timer1Control,TMR10DONE,TMR10PRG
},
{ Timer11,
Timer1Control,TMR11DONE,TMR11PRG
},
{ Timer12,
Timer1Control,0,
TMR12PRG
},
{ Timer20,
Timer2Control,TMR20DONE,TMR20PRG
},
{ Timer21,
Timer2Control,TMR21DONE,TMR21PRG
},
{ Timer22,
Timer2Control,TMR22DONE,TMR22PRG
},
{ Timer11,
Timer1Control,TMR11DONE,TMR11PRG
},
{ Timer30,
Timer3Control,0,
TMR30PRG
},
{ Timer31,
Timer3Control,0,
TMR31PRG
},
{ Timer32,
Timer3Control,0,
TMR32PRG
}
};
....
...
...
void StartTimer(
register int tid,
/* timer id # */
register unsigned n)
/* # of 0.1ms ticks */
{
register struct tmrtab *timer;
timer = tmrtab+tid;
*timer->cwaddr = timer->pgm;
/* program timer
*/
*InterruptReg = ~timer->mask;
/* clear the timer "done" bit */
*timer->caddr = LSB(n);
/* load count, starting the timer */
*timer->caddr = MSB(n);
}
...........
.........
.....
|