#include near unsigned char byte; near unsigned char counter; near unsigned char n; long x; #define DAT 0x01; #define STR 0x02; #define CLK 0x04; char Num[10] = {0xBF, 0x06, 0xDB, 0x4F, 0xE6, 0x6D, 0xFD, 0x07, 0xFF, 0x67}; //0 - 9 even numbers have a dot void clock(void) { PCOUT &= ~CLK; PCOUT |= CLK; } void strobe(void) { PCOUT &= ~STR; PCOUT |= STR; } void out_LEDs() { asm("ld _counter,#8"); // mag assembly daw ba!!! asm("back:"); PCOUT &= ~DAT; asm("rrc _byte"); asm("jr nc,clkin"); PCOUT |= DAT; asm("clkin:"); clock(); asm("dec _counter"); asm("jr nz,back"); strobe(); } void init_gpio(void) { PCDD = 0x00; PCOUT = 0xFF; } void main(void) { DI(); init_gpio(); back: byte = Num[n]; out_LEDs(); for(x=0; x<142000; x++){} //approx. 1 sec. n++; if(n == 10) n = 0; goto back; }