Das multiplexen mehrerer 7-Segmentanzeigen war mir zu aufwendig, zumal die CPU ständig damit beschäftigt ist die Anzeige zu bedienen. Ich entschied mich mal den 74HC595 auszuprobieren. Das Hauptprogramm zählt einfach nur von 0000 hoch.
Beschreibung :
SDI ist der seriell Data in vbunden mit dem Portpin der in Bascom mit SER definiert ist. Geht bei SDO wieder raus nach SDI zu nächstem Chip-
SCK schiebt die daten mit jeder High Low Flanke durch den Chip.
RCK überträgt die daten an den Ausgang.
Hier die Bascom Quelltext:

$regfile = "m16def.dat"
$crystal = 16000000
'Baud = 9600
'PC0 SCK
'PC1 SER
'PC2 RCK
Dim Uno As Byte
Dim Decem As Byte
Dim Centum As Byte
Dim Mille As Byte
Dim B As Byte
Dim Y As Byte
Sck Alias Portc.0
ser Alias Portc.1
Rck Alias Pinc.2
Start:
Y = &B01000000
For B = 0 To 3
Shiftout Ser , Sck , Y
Next B
Waitus 10
Rck = 0
Waitus 10
Rck = 1
Wait 5
Do
Gosub Anzeigen
Uno = Uno + 1
If Uno = 10 Then
Decem = Decem + 1
Uno = 0
End If
If Decem = 10 Then
Centum = Centum + 1
Decem = 0
End If
If Centum = 10 Then
Mille = Mille + 1
Centum = 0
End If
If Centum = 10 Then Goto Start
Loop
Anzeigen:
Y = Lookup(uno , Dta0)
Shiftout Ser , Sck , Y , 0 , 8 , 40
Y = Lookup(decem , Dta0)
Shiftout Ser , Sck , Y , 0 , 8 , 40
Y = Lookup(centum , Dta0)
Shiftout Ser , Sck , Y , 0 , 8 , 40
Y = Lookup(mille , Dta0)
Shiftout Ser , Sck , Y , 0 , 8 , 40
Waitms 2
Reset Rck
Waitms 2
Set Rck
Waitms 600
Return
End
Dta0:
Data , &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110 , &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111