// task2.c #include #include <912d60.h> #include "kernel.h" /* counts seconds and displays them */ void task2 (void) { char i; extern unsigned long int system_tick; unsigned long int delta_t const unsigned int tick_size = 65535; const unsigned long int one_second = 1000000; static unsigned char hh=0, hm=0, hl=0, mh=0, ml=0, sh=0, sl=0; static unsigned long int last_mark; int redraw; static char startup = 1; INTR_ON(); delta_t = (system_tick - last_mark) * tick_size; if (delta_t > one_second) { last_mark = system_tick; sl++; redraw = 1; if (sl > 9) { sh++; sl = 0; redraw = 2; } if (sh > 5) { ml++; sh = 0; redraw = 4; } if (ml > 9) { mh++; ml = 0; redraw = 5; } if (mh > 5) { hl++; mh = 0; redraw = 7; } if (hl > 9) { hm++; hl = 0; redraw = 8; } if (hm > 9) { hh++; hm = 0; redraw = 9; } if (hh > 9) { hh = 0; redraw = 9; } // display time if (startup) { putchar(hh+48); putchar(hm+48); putchar(hl+48); putchar(':'); putchar(mh+48); putchar(ml+48); putchar(':'); putchar(sh+48); putchar(sl+48); startup = 0; } else { for (i=0; i