
#include <8052.h>

static unsigned char ms_tenth_countdown;

// dynamically setup table.
// Indexed top down.
// setup glitchlessly!
unsigned char __pdata table_P1_over_time[180 + 1];

void Timer0_ISR (void) interrupt 1 {

    // assuming P1 is only used for servos.
    P1 = table_P1_over_time [ ms_tenth_countdown ];

    TF0 = 0;

    if (!--ms_tenth_countdown)
        ms_tenth_countdown = 180;

}

void main(void){}