"Пустых" байтов не бывает - что запишешь, то и прочитаешь. А если не запишешь - то прочитаешь любую пургу, т.к. МК сам свое ОЗУ при подаче питания никак не инициализирует У тебя какая-то дурная кодировка - насилу перевел. Кстати, в будущем пользуйся кнопкой <аsm>:
; Подпрограмма передачи команды по UART'у
transmit:
sbi UCSRB, TXEN ; включить передатчик
sbi UCSRA, UDRE ; поднять флаг USART Data Register Empty
wait_for_tr:
sbis UCSRA, UDRE
rjmp wait_for_tr
nop
ld temp, X+ ; прочитать данные из RAM в переменную temp
tst temp ; если команда закончилась, то на выход
; cpi temp, 0xff
breq transm_out
; cpi temp, 65
; breq fl
fl_out:
out UDR, temp ; отправить данные в UART
rjmp wait_for_tr ; вернуться в начало для передачи следующего символа
transm_out:
; sbi PORTC, led
cbi UCSRB, TXEN ; выключить передатчик
ret
;fl:
; sbi PORTC, led
; ldi r18, 0xff
;on:
; tst r18
; breq off
; nop
; nop
; nop
; dec r18
; rjmp on
;off:
; cbi PORTC, led
; rjmp fl_out
Дальше. Передатчик (как и приемник) UART включать следует только один раз при инициализации, а не в каждой подпрограмме, а уж выключать вообще не нужно. И главное - из твоего куска невозможно узнать, правильно ли инициализирован UART, порты, да и сам МК - поэтому приведи весь код. Не забудь про кнопку <аsm>, а код сначала скопируй в Notepad, и вали его сюда только после того, как убедишься, что он в Notepad'е читабельный.