Hallo,
ich hab mir zwar Dein Programm angeguckt, konnte aber auch keinen großen Fehler
finden, nur ein paar Anregungen.

Du benutzt keine Interrupts, wozu dann cli und sei ?
Bei den enable Puls brauchst Du keine 5 ms warten, ein paar nops reichen vollkommen.
So wie Du den XZeiger belegst ist es schon was komisch, so geht es sicherlich auch,
aber eleganter wäre z.B.

.equ puffer = 0x060

und dann mit
ldi XH,HIGH(puffer)
ldi XL,LOW(puffer)

Aber das ist eher kosmetischer Natur

A ja,
in Deiner endlos schleife machst Du zwei pushs :

push lowb
push highb

und wo werden sie wieder weggeholt?
Leider habe ich mir das nicht genau angeguckt, vielleicht hollst Du sie irgendwo in einer
anderen routine wieder weg, die ersten rcalls tun das aber nicht.

Nicht daß Du dir den Stack zumüllst.......

Gruß Sebastian