Прогнал код в студии. Вроде все правильно. Единственное, что можно предложить, это, вместо одноразовой инициализации портов B и D на вывод, сделать подтверждение состояния DDRx и при выводе информации.
Код:
reset: ldi Temp1,RamEnd ;set stack
out SPL,Temp1
cli
ldi temp1,0xff ;port init
out ddrb,temp1
ldi temp1,0b01111100
out ddrd,temp1
.
.
.
IndicDelay: ldi temp2,0xff
eor Temp1,Temp2
out PortB,Temp1
;********************************************
ldi temp1,0xff ;port init
out ddrb,temp1
;********************************************
.
.
.
SendAdd:
in Temp2,PortD
andi Temp2,0b11000011
or Temp2,Temp1
out PortD,Temp2
;********************************************
ldi temp1,0b01111100
out ddrd,temp1
;********************************************
ret