@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
Lesezeichen