#include near unsigned char byte1; near unsigned char byte2; near unsigned char counter; long x; #define STR 0x01; #define DAT 0x02; #define CLK 0x04; void clock(void) { PAOUT &= ~CLK; PAOUT |= CLK; } void strobe(void) { PAOUT &= ~STR; PAOUT |= STR; } void out_LEDs(void) { asm("ld _counter,#16"); asm("back:"); PAOUT &= ~DAT; asm("rlc _byte1"); asm("rlc _byte2"); asm("jr nc,clkin"); PAOUT |= DAT; asm("clkin:"); clock(); asm("dec _counter"); asm("jr nz,back"); strobe(); } void init_gpio(void) { PADD = 0x00; PAOUT = 0xFF; } void main(void) { DI(); init_gpio(); back: byte1 = 0x00; byte2 = 0xFF; out_LEDs(); for(x=0; x<20000; x++){} byte1 = 0xFF; byte2 = 0x00; out_LEDs(); for(x=0; x<20000; x++){} goto back; }