Gast
#47872
tach!!
ich meld mich mal wieder mit fragen:
wie ihr vielleicht schon wisst hab ich vor eine digitaluhr zu bauen.
ich realisiere die mit schieberegistern. da ich 6 stellen hab (2 für
stunden, 2 für minuten und 2 für sekunden) benötige ich für jede
anzeige ein 8-bit schieberegister. wenn alle schieberegister
angeschlossen sind, habe ich also ein 48-bit schieberegistern.
die ausgabe erfolgt über PD4, 5 und 6. PD4 ist clock, PD5 ist data und
PD 6 ist strobe. momentan ist jede ziffer in einer variablen
gespeichert. eine eins sieht z.b. so aus:
eins: sbi PORTD, 4 ;der punkt
cbi PORTD, 4
sbi PORTD, 4 ;segment g
cbi PORTD, 4
sbi PORTD, 4 ;segment f
cbi PORTD, 4
sbi PORTD, 4 ;segment e
cbi PORTD, 4
sbi PORTD, 4 ;segment d
cbi PORTD, 4
sbi PORTD, 5 ;data wird auf 1 gesetzt
sbi PORTD, 4 ;segment c (leuchtet)
cbi PORTD, 4
sbi PORTD, 4 ; segment b
cbi PORTD, 4
cbi PORTD, 5 ; data wieder auf null
sbi PORTD, 4 ;segment a (leuchtet nicht)
cbi PORTD, 4
sbi PORTD, 6 ;strobe (die 8 bits
cbi PORTD, 6 werden gesetzt
nun brauche ich einen "counter" der die variable "sekunde" um 1
erhöht (vojn 0 auf 1 auf2 auf 3 auf 4 auf 5 auf 6.....) ein zweites
sub-programm soll dann zur passenden variable der ziffer springen (bei
6 zu sechs bei 7 zu sieben) wenn nun die zahl 0 wieder erricht wird,
soll die variable "zehnersekunden" auf 1 gesetzt werden... und so
weiter bis stunden....
wichtig ist, das immer alle 48bis ausgegeben werde... um z.b. 00:00:03
darzustellen muss ich 5 mal die null und dann die eins ins
schieberegister eingeben. das ist aber unwichtig.. ich brauche eher
diesen "counter" und die "auswerte" routine...