@BlackDevil

Ja, mit nem Schieberegister kann mann sehr schön 7-Segment-Anzeigen aufbauen. PWM brauste nicht, Du legts das Bit, was Du senden willst, an die Datenleitung und ziehst den Takt kurz auf high(da recht schon ein Zyklus).

Code:
;
;zu Sendendes Zeichen liegt in R20


Ausgabe:ldi R16,7				;Zahler für Auszugebene Bits laden
aus:	clc						;Carry-Register löschen
		ror R20					;1 Bit ins Carry-Register schieben
		brcc aus1				;wenn 1 dann 
		cbi Portb,Daten			;Datenleitung auf LOH ziehen  (ist invertiert)
aus1:	sbi PortD,Takt			;Takt auf 1
		cbi PortD,takt			;Takt auf 0
		sbi PortB,Daten			;Datenleitung auf HIGH ziehen  (ist invertiert)
		dec r16					;Zähler -1
		breq aus2				;wenn alle Bits abgearbeitet dann Sprung zu Ausgabe verlassen
		rjmp aus				;wenn nicht alles Abgearbeitet dann Sprung zur nächsten Bit-Ausgabe
aus2:	rcall pause   			;Pause zwichen den Zeichen
		ret 					;Unterprogramm verlassen