Okay - die LED hämgt also an D.5.
Stimmen denn die 16 MHz? Ansonsten könnten nämlich die vermeintlichen 50 Millisekunden sehr viel länger dauern, was Extrem-Zeitlupentempo zur Folge hätte...

Der Code sieht soweit ziemlich o.k. aus...

Im Zusammenhang mit dem Mega32 liest man hier öfter noch was über das JTAG-Fuse, das wohl öfter mal Ungemach bereitet. So ´ne druckreife Erklärung was das genau ist habe ich leider nicht parat, aber Du könntest das entsprechende FuseBit ja mal löschen (ist im Original-Zustand gesetzt).

So´n einfaches Programm, das die Zeiten und den Ausganspin checkt, hast Du schon versucht? Etwa so...

DDRD.5=1

Do
Toggle PortD.5
waitms 500
Loop

Mehr fällt mir im Moment auch nicht ein...