Hallo alle zusammen

Ich weiß zwar das dieses Thema schon länger inaktiv ist trotzt dem wollt ich hier mal eine Frage los werden. Ich bin gerade dabei mir eine Propeller Uhr zu bauen und wollte fragen wie man aus einer Tabelle mit mehren Dateien hinter einander eine nach der andern ziehen kann.
Oder wie man das mit der Zeichen Auswahl besser machen kam.
Ich will nämlich die Uhrzeit nicht wie im Original an 4 Sieben Segment anzeigen aus geben sonder über einen Propeller mit 8 led’s . Zu sagen ist noch das an den Itn0 Pin eine Lichtschranke habe die gegen Masse zieht nur an einer Stelle durch eine Blechfahne unterbrochen wird und dann plus potenzial an den Pin anliegt.
Ich hoffe einer von euch kann mir helfen oder Verbesserungsvorschläge machen.
Ich wehre sehr dankbar darüber, weil ich auch noch nicht sehr lange mit Bascom arbeite.

Hier noch mein Quellcode der von der Black- Strom Uhr von Wolfgang Schwarz abgeleitet ist:

Code:
        '*******************************************************************************
' http://www.black-strom.de.vu/
'
'
' Feature:
' - mit Interner Zeitbasis (Timer1)
' - Multiplexausgabe auf Siebensegmentanzeige (Timer0)
' - Uhr ist über zwei Taster einstellbar.
'
' To Do:
' -
'
' Feature for the future:
' - anderer µC  evnt. ATMega8, da der 902312 für den rest nicht reichen wird
' - Uhr stellen über RC5, braucht Timer0
' - Wecker
' - DCF77 empfang
' - Datum zusätzliche über Alphanumerische anzeigen
'
'
' History:
' - V2.3.3 wird ein taster zum uhr stellen länger betätigt> schnellvorlauf
' - V2.3.2 beim uhr stellen die sekunden auf null setzen
' - V2.3.1 Uhren Code aus dem Inetrupt Label ind die Hauptschleife verschoben.
' - V2.3   Uhren Code umgeschrieben; jede Ziffer wir jetzt einzelnt gezählt,
'          Function Bcdzahl und Label Multiplex wir überflüssig.
'          Die Uhr ist jetzt einstellbar.
' - V2.2   Bugy  <ö#+Q@
' - V2.1   Uhr geeicht auf 4MHz > Load_timer1 = 62755
' - V2.0   erster Hardware test
' - V1.0   nur am PC getestet
'
' HW Stack: 40 ; SW Stack 20 ; Framesize: 16
'
'*******************************************************************************


' µC Deklarationen
$regfile = "2313def.dat"                                    'AT90S2313-Deklarationen
$crystal = 4000000


' Variablen
Dim Temp_ziffer As Byte                                     'welche ziffer soll bearbeitet werden
Dim Bcd_aus As Byte                                         'enthält den Wert der dez zahl die ausgegeben werden soll

Dim Ausgang As Byte                                         'Segmentfolge die Ausgegeben wird aus Segmentcode - Tabelle
Dim Sek_blink As Bit                                        'Blinkt im Sekunden Takt

Dim Zl_sekunde As Byte                                      'Zeit Variablen
Dim Zl_minute As Byte                                       'enthalten die Uhrzeit
Dim Zl_stunde As Byte                                       'Zl-... => Low Wert der Zeit
Dim Zh_sekunde As Byte                                      'Zh-... => High Wert der Zeit
Dim Zh_minute As Byte
Dim Zh_stunde As Byte

'Dim A As Byte
'Dim B As Byte
'Dim B1 As Byte
'A = 1

' Ein-/Ausgänge
Config Portb = Output
Portb = Ausgang                                             'Port B als Ausgang
Ddrd = &B1111111
Config Portd = Input
Ddrd = &B11111000                                           '1 Ausgang, 0 Eingang
Portd = &B0000111                                           'pull up w.




'Eingänge:
T_min_stellen Alias Pind.0
T_h_stellen Alias Pind.1
Licht Alias Pind.2

' Sonstiges
Const Load_timer1 = 62755                                   'Konstande auf die der Timer1 geladen wird
'4MHz = 62755 | 62760 etwas zu langsam <> 62750 etwas zu schnell



'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Timer0 für Multiplexausgabe
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

'On Timer0 7segment                                          'Interrupt-Routine für Timer0-Overflow
'Config Timer0 = Timer , Prescale = 1                        'Takt: Quarz/Prescale  (möglich: 1, 8, 64, 256, 1024)
'Enable Timer0                                               'Timer0-Overflow-Interrupt einschalten


'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Timer 1 als Zeitbasis
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

On Timer1 Sekunde_plus                                      'Interrupt-Routine für Timer1-Overflow
Config Timer1 = Timer , Prescale = 64                       'Takt: Quarz/Prescale  (möglich: 1, 8, 64, 256, 1024)
Enable Timer1                                               'Timer0-Overflow-Interrupt einschalten
Enable Interrupts                                           'Interrupts global zulassen
Load Timer1 , Load_timer1                                   'Lädt den Timer auf einen wert vor


'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Hauptprogramm
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Do                                                          'Start Hauptschleife


' ### Uhren Code ###
' Es wird für jede Ziffer einzelnd gezählt, das ermöglicht eine einfacher ausgabe
' auf den 7segmentanzeigen. Der Zählvorgang funktioniert ím prinzip wie z.B.
' bei einem normalen Logik Zähler-IC

If Zl_sekunde = 10 Then                                     'Wenn der Sekunden Low Wert = 10
Zl_sekunde = 0                                              'wird er auf 0 gesetzt
Incr Zh_sekunde                                             'und der High Wert um eins erhöht
   If Zh_sekunde = 6 Then                                   'Ist der High Wert 6 (entspricht 60 Sekunden)
   Zh_sekunde = 0                                           'wird er auf 0 gesetzt
   Incr Zl_minute                                           'und der Minuten Low Wert um eins erhöht
   End If
End If


If Zl_minute = 10 Then
   Zl_minute = 0
   Incr Zh_minute
End If
If Zh_minute = 6 Then
   Zh_minute = 0
   Incr Zl_stunde
End If


If Zl_stunde = 10 Then
   Zl_stunde = 0
   Incr Zh_stunde
End If
If Zh_stunde = 2 And Zl_stunde = 4 Then
   Zl_stunde = 0
   Zh_stunde = 0
End If



' ### Uhr stellen ###
' Wird der Taster "T_min_stellen" betätigt werden die Minuten um eins erhöht.
' Wird der Taster "T_h_stellen" betätigt werden die Stunden um eins erhöht.
' Werden beide gleichzeitig betätigt werden Stunden und Minuten auf Null gesetzt.
' Wird einer der Taster länger betätigt (> 150ms) gibt es einen schnellvorlauf

If T_min_stellen = 0 Then                                   'Wird "T_min_stellen" betätigt
   Waitms 1                                                 'Entprellen
   If T_min_stellen = 0 Then                                'Ist der Taster immer noch betätigt
   Incr Zl_minute                                           'wird Minute um eins erhöht
   Zl_sekunde = 0                                           'Sekunden auf Null setzen
   Zh_sekunde = 0
   End If
End If


If T_h_stellen = 0 Then
    Waitms 1
    If T_h_stellen = 0 Then
    Incr Zl_stunde
    Zl_sekunde = 0
    Zh_sekunde = 0
    End If
End If


If T_min_stellen = 0 And T_h_stellen = 0 Then               'Wenn "T_Min_stellen" und "T_H_stellen" gleichzeitig betätigt
    Zl_minute = 0                                           'dann werden Minuten und Stunden auf 0 gestzt
    Zh_minute = 0
    Zl_stunde = 0
    Zh_stunde = 0
End If



'Loop                                                        'Ende Hauptschleife

'End                                                         'Programm Ende


'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Bei jedem Aufruf wir nur eine Ziffer ausgegeben, d.h nur eine Anzeige wird
' angesteuert. Die anderen bleiben dunkel. Bei jedem Aufruf wird eine Anzeige
' weitergeschaltet.
'
' Anzeigen anordnung
'
' 1111  2222   3333  4444
' 1  1  2  2   3  3  4  4
' 1111  2222   3333  4444
' 1  1  2  2   3  3  4  4
' 1111o 2222o  3333o 4444o
'
'                        ^-- Dezimalpunkt
'                      ^---- 4. Ziffer | Minute Low Wert  | Variable Zl_minute
'                ^---------- 3. Ziffer | Minute High Wert | Variable Zh_minute
'         ^----------------- 2. Ziffer | Stunde Low Wert  | Variable Zl_stunde
'   ^----------------------- 1. Ziffer | Stunde High Wert | Variable Zh_stunde


'7segment:
If Licht = 0 Then


If Temp_ziffer = 4 Then Temp_ziffer = 0                     'bestimmt die auszugebende Ziffer (1 bis 4)
Incr Temp_ziffer                                            'bei jedem aufruf des Lable wir eine andere Ziffer ausgegeben

Select Case Temp_ziffer                                     'welche Ziffer soll angesteuert werden
   Case 1 : Bcd_aus = Zh_stunde
   Case 2 : Bcd_aus = Zl_stunde
   Case 3 : Bcd_aus = Zh_minute
   Case 4 : Bcd_aus = Zl_minute
End Select



Select Case Bcd_aus
    Case 1 : Ausgang = Lookup(1 , Segmentfolge)
    Case 2 : Ausgang = Lookup(2 , Segmentfolge)
    Case 3 : Ausgang = Lookup(3 , Segmentfolge)
    Case 4 : Ausgang = Lookup(4 , Segmentfolge)
    Case 5 : Ausgang = Lookup(5 , Segmentfolge)
    Case 6 : Ausgang = Lookup(6 , Segmentfolge)
    Case 7 : Ausgang = Lookup(7 , Segmentfolge)
    Case 8 : Ausgang = Lookup(8 , Segmentfolge)
    Case 9 : Ausgang = Lookup(9 , Segmentfolge)
    Case 0 And Temp_ziffer = 1 : Ausgang = Lookup(10 , Segmentfolge)       'Nullstellenunterdrückung  bei der ersten Ziffer
    Case 0 And Temp_ziffer > 1 : Ausgang = Lookup(0 , Segmentfolge)       'wenn nicht erste Ziffer Null anzeigen
    End Select
Portb = Ausgang

'Ausgabe des 7 Segmentcodes (Invertierend [Not] bei Anz. mit gem. Anode)

End If
Portb = 0
Loop
'Return
End

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
' Interrupt-Routine für Timer1 / Zeitbasis
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Sekunde_plus:


Load Timer1 , Load_timer1                                   'Lädt den Timer auf einen wert vor

Incr Zl_sekunde                                             'Erhöht den Low Wert der Sekunde um eins

Toggle Sek_blink                                            'Ändert sich jede Sek., 1sec an 1sec aus


Return


' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


Segmentfolge:                                               'GFEDCBA / "1" Segment AN
Data 126 , 131 , 133 , 137 , 145 , 161 , 193 , 126          '0
Data 0 , 1 , 33 , 97 , 255 , 1 , 1 , 0                      '1
Data 33 , 67 , 133 , 137 , 145 , 161 , 65 , 1               '2
Data 130 , 129 , 129 , 145 , 145 , 145 , 145 , 110          '3
Data 4 , 12 , 20 , 36 , 68 , 132 , 255 , 4                  '4
Data 226 , 145 , 145 , 145 , 145 , 145 , 145 , 142          '5
Data 62 , 81 , 145 , 145 , 145 , 145 , 145 , 142            '6
Data 128 , 128 , 128 , 128 , 143 , 144 , 160 , 192          '7
Data 110 , 145 , 145 , 145 , 145 , 145 , 145 , 110          '8
Data 112 , 145 , 145 , 145 , 145 , 145 , 145 , 126          '9
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0                          'Leerzeichen