der atmega kann ein pwm erzeugen, ohne dass du dich darum kümmern musst. mit deiner methode ist der µC voll ausgelastet, und du kannst nichts anderes machen. schau dir im datenblatt die timer an.

Code:
   ldi  temp,  (1<<WGM20)|(1<<COM21)|(1<<CS20)
   out  TCCR2, temp

   ldi temp,127
   out  OCR2, temp
damit hast du ein 50% pwm an port OC2 (port B3 am atmega 8 ).