+++ Hier werde ich nach und nach alle Programme aus meiner oder mit Quellangabe fremder Hand einfügen +++

bis dahin schaut in meinen Projekten Treppenlich, Einfahrtslicht. Codeschloss und Jalousiensteuerung nach. Dort sind die Programme verlinkt... Danke für Eure Geduld.


2015 - Projekt Codeschloss mit Stimme

2017 - Projekt Codeschloss - Updade 2017

   $regfile = "m32def.dat"
   $crystal = 8000000
   $hwstack = 100
   $swstack = 100
   $framesize = 100
   '$sim

   'V1.12 - 2016-01-17
   '- längere Magnetzeit
   '- Wiederholung des Öffenens durch Taste #
   'V1.14 - 2017-04-22
   '- durch anfügen einer Ziffer kann die Öffnungsfreigabe über # auf 0,5-9h ausgedeht werden
   '- durch * oder Falscheingabe ist diese rücksetzbar
   '- während dessen leuchtet grüne LED
   '- bei Falscheingabe wird Öffnungsfreigabe zurück gesetzt
   '- Speicherreste in Puffer werden zyklich gelöscht
   '- Uhrzeitansage + stellen hinzugefügt
   '- wegen Voicestörung flackernde Hintergrundbeleuchtung entfernt
   '- tausende Verbesserungen eingefügt (variable Lautstärkeparameter, Ansagen für Tests usw.)
   ''V1.15 - 2017-05-01
   '- Eichfaktor wiederholen bei Eingabe
   '- neue Sub Zeitansage erstellt um Rücksprünge zu Anfang zu vermeiden
   '- Eichfaktor auslesen über Code 0000
   ''V1.16 - 2017-05-02
   '- Eichfaktor wiederholen bei Eingabe bereinigt
   ''V1.17 - 2017-10-09
   '- Eichfaktor verändert auf 34470
   '- keine Ansage Eichfaktor bei Uhrzeit
   '- separate Ansage Eichfaktor
   ''V1.18 - 2017-11-03
   '- Eichfaktor verändert auf 34500
   '- Offenhaltezeit repariert
   '- Eichfaktor wir in EPROM RAM geschrieben
   ''V2.01 - 2018-07-07
   '- 8MHz Quarz eingebaut
   '- Eichfaktor auf Normalgröße zurück gesetzt
   '- Tastenprellen beseitigt
   '- Offenhalten früher ermöglichen also wenn die Ansage noch läuft
   ''V2.02 - 2018-08-10
   '- Mute auch auf Zeitansage ausdehnen

   '************** Alle Ports als Eingang oder Ausgang definieren ****************
   Ddra = &B11111111
   Ddrb = &B00010000
   Ddrc = &B11000111
   Ddrd = &B01111111

   '******* Alle Ports auf 0 bzw. 1 setzen für definierten Anfangszustände *******
   'Bei Eingängen durch 1 den Pulldownwiderstand aktivieren
   Porta = &B11111111
   Portb = &B00011111
   Portc = &B00000111
   Portd = &B00001111

   '******************** Übersicht Speicherbereiche Variablen ********************
   'Dim as Bit     = 0 bis 1
   'Dim as Byte    = 0 bis 255
   'Dim as Integer = -32768 bis +32767
   'Dim as Word    = 0 bis 65535
   'Dim as Long    = -2147483648 bis 2147483647
   'Dim as Single  = 1,5 x 10^-45 bis 3,4 x 10^38
   'Dim as Double  = 5,0 x 10^-324 bis 1,7 x 10^308
   'Dim as String  = 254 Zeichen

   '****************************** Übersicht IO **********************************
   'In / Out Pin Typ Signalname
   'PA0        40        O        Attiny 861A PB4 SW3
   'PA1        41        O        Attiny 861A PB5 SW2
   'PA2        42        O        Attiny 861A PB6 SW1
   'PA3        43        O        Attiny 861A PA3 SW8
   'PA4        44        O        Attiny 861A PA4 SW7
   'PA5        45        O        Attiny 861A PA5 SW6
   'PA6        46        O        Attiny 861A PA6 SW5
   'PA7        47        O        Attiny 861A PA7 SW4
   'PB0        1         I        Tasten 1-2-3
   'PB1        2         I        Tasten 4-5-6
   'PB2        3         I        Tasten 7-8-9
   'PB3        4         I        Tasten *-0-#
   'PB4        5         O        Tasten 1-4-7-*
   'PB5        6         I        frei
   'PB6        7         I        frei
   'PB7        8         I        frei
   'PD7        21        I        frei
   'PC0        22        O        Volume 1  39k
   'PC1        23        O        Volume 2  70k
   'PC2        24        O        Volume 3  330k
   'PC3        25        I        frei
   'PC4        26        I        frei
   'PC5        27        I        Voice
   'PC6        28        O        Magnetschloss
   'PC7        29        O        Klingel
   'PD0        14        O        Tasten 3-6-9-#
   'PD1        15        O        Tasten 2-5-8-0
   'PD2        16        O        Verstärker
   'PD3        17        O        LED Stripe blau
   'PD4        18        O        LED rot lock
   'PD5        19        O        LED grün unlock
   'PD6        20        O        LED Taster

   '*************************** Variablen declarieren ****************************
   Dim Volumer As Byte
   Dim Volumek As Byte
   Dim Volumec As Byte
   Dim Volumej As Byte
   Dim Eichfaktor As Word
   Dim Eichfaktorx As Eram Word                             'Merker Eichfaktor im EPROM RAM
   Dim Sekunde As Byte
   Dim Minute As Byte
   Dim Stunde As Byte
   Dim Wochentag As Byte
   Dim Unlocksp As Byte

   Dim Zeit1 As Long

   Dim Unlocktime As Word
   Dim Tempeich As Word
   Dim Tempsek As Byte                                      '255s = max
   Dim Restsek As Word                                      '65536 s = 18h max

   Dim I As Integer
   Dim J As Integer
   Dim L As Integer
   Dim M As Integer

   Dim Zeichen As Byte
   Dim Menge As Byte
   Dim File As Byte
   Dim Falsch As Byte
   Dim Volume As Byte

   Dim K As Bit
   Dim Richtig As Bit
   Dim Uhrstellen As Bit
   Dim Volumestellen As Bit
   Dim Unlocklong As Bit
   Dim Mute As Bit
   Dim Zeitansagen As Bit

   Dim Code1 As String * 5
   Dim Code2 As String * 5
   Dim Code3 As String * 5
   Dim Code4 As String * 5
   Dim Code5 As String * 5
   Dim Code6 As String * 5
   Dim Code7 As String * 5
   Dim Code8 As String * 5
   Dim Code9 As String * 5
   Dim Code10 As String * 5

   Dim Numsp As String * 11
   Dim Tempzeit As String * 11
   Dim Tempvolume As String * 2
   Dim Abstand As String * 5

   '************************** Timer1 konfigurieren ******************************
   Config Timer1 = Timer , Prescale = 256                   'Timer konfigurieren  8000000 / 256 = 31250Hz
   Enable Timer1                                            'bei 16 bit 65535 Überlauf Startwert bei 34285
   On Timer1 Sekundeisr                                     'Timerüberlaufsprungmarke setzen
   Enable Interrupts
   Start Timer1

   Declare Sub Voice
   Declare Sub Zeitansage

   Numsp = ""
   Menge = 4
   Zeichen = 0
   Tempsek = 0
   Restsek = 0
   Unlocktime = 30
   Zeit1 = 30
   File = 0
   Volume = 2
   Volumer = 2
   Volumek = 2
   Volumec = 2
   Volumej = 2
   Mute = 1
   M = 0
   Richtig = 0
   Falsch = 0
   Uhrstellen = 0
   Unlocklong = 0
   Wochentag = 1
   Stunde = 0
   Minute = 1
   Sekunde = 0
   Unlocktime = 0
   If Eichfaktorx > 32999 And Eichfaktorx < 35001 Then
     Eichfaktor = Eichfaktorx
   Else
     Eichfaktor = 34285                                     '>34285< +31250 = 65535
     Eichfaktorx = 34285
   End If                                                   '34285   Wert bei genau 8MHz
   Portd.= 1
   Portd.= 1
   Portd.= 1

   '==============================================================================
   '==============================================================================
   '==============================================================================
   '****************************** Hauptprogramm *********************************


   'Schleife Zahlenschloss
   Anfang:
   Zeitansagen = 0
   If Unlocktime = 30 Then Restsek = 0
   If Zeit1 < 30 Then Restsek = Restsek + 30
   Tempsek = 0
   I = 0
   J = 0
   K = 0

   'Led Lock rot
   Portd.= 0

   Waitms 10
   'Tastaturspeiseports alle setzen, damit geprüft werden kann, ob alle
   'Tasten Losgelassen wurden.
   Portb.= 0
   Portd.= 0
   Portd.= 0

   'Prüfung losgelassen?
   If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang

   Offenhaltezeit:
   Portc.= 0

   '*********** Schleife Tastenfeld mit Abschaltung Voice nach xx min ************
   Do

   'Codes also feste Parameter refresh falls verloren gegangen durch Dimmstörung oder Netzspitzen
   Code1 = "****"                       ' Ralf  Code habe ich gelöscht wegen Onlinestelleung :)
   Code2 = "****"                       ' Katrin
   Code3 = "****"                       ' Cindy
   Code4 = "****"                       ' Jeronimo
   Code5 = "0002"                       ' Uhrzeit stellen  + Eichfaktor Uhrteit
   Code6 = "0003"                       ' alle Uhrtexte testen
   Code7 = "0004"                       ' alle restliche Texte und Sounds testen
   Code8 = "0000"                       ' Uhrzeit ansagen ohne Eichfaktor
   Code9 = "0001"                       ' Eichfaktor ansagen
   Code10 = "9999"                      ' Volume danach stellt jede Zahl die Lautstärke 
der Users ein  
                                        ' 1-7 für 4 Ziffern für Speicher Ralf-Katrin-Cindy-Jeronimo

   'Prüfung Parameter + Defaultwert wenn ausser Bereich
   If Eichfaktor < 33500 Or Eichfaktor > 35000 Then Eichfaktor = 34285
   If Volumer < 1 Or Volumer > 7 Then Volumer = 1
   If Volumek < 1 Or Volumek > 7 Then Volumek = 1
   If Volumec < 1 Or Volumec > 7 Then Volumec = 1
   If Volumej < 1 Or Volumej > 7 Then Volumej = 1

  '===============================================================================
   'Tastefeldauswertung + Verstärker voreinschalten
   'Zeile 1 mit Tasten 1-4-7-*
   Portb.= 0
   Portd.= 1
   Portd.= 1
   Waitus 1
   If Pinb.= 0 And Pinb.= 1 And Pinb.= 1 And Pinb.= 1 Then
   Portd.= 0
   Portb.= 1
   Goto Nummer1
      Elseif Pinb.= 1 And Pinb.= 0 And Pinb.= 1 And Pinb.= 1 Then
      Portd.= 0
      Portb.= 1
      Goto Nummer4
         Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 0 And Pinb.= 1 Then
         Portd.= 0
         Portb.= 1
         Goto Nummer7
            Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 1 And Pinb.= 0 Then
            Portd.= 0
            Portb.= 1
            Goto Nummerstern
   End If

   'Zeile 2 mit Tasten 2-5-8-0
   Portb.= 1
   Portd.= 1
   Portd.= 0
   Waitus 1
   If Pinb.= 0 And Pinb.= 1 And Pinb.= 1 And Pinb.= 1 Then
   Goto Nummer2
   Portd.= 0
   Portd.= 1
      Elseif Pinb.= 1 And Pinb.= 0 And Pinb.= 1 And Pinb.= 1 Then
      Portd.= 0
      Portd.= 1
      Goto Nummer5
         Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 0 And Pinb.= 1 Then
         Portd.= 0
         Portd.= 1
         Goto Nummer8
            Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 1 And Pinb.= 0 Then
            Portd.= 0
            Portd.= 1
            Goto Nummer0
   End If

   'Zeile 3 mit Tasten 3-6-9-#
   Portb.= 1
   Portd.= 0
   Portd.= 1
   Waitus 1
   If Pinb.= 0 And Pinb.= 1 And Pinb.= 1 And Pinb.= 1 Then
   Portd.= 0
   Portd.= 1
   Goto Nummer3
      Elseif Pinb.= 1 And Pinb.= 0 And Pinb.= 1 And Pinb.= 1 Then
      Portd.= 0
      Portd.= 1
      Goto Nummer6
         Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 0 And Pinb.= 1 Then
         Portd.= 0
         Portd.= 1
         Goto Nummer9
            Elseif Pinb.= 1 And Pinb.= 1 And Pinb.= 1 And Pinb.= 0 Then
            Portd.= 0
            Portd.= 1
            Goto Nummerraute
   End If

   '==============================================================================
   'LEDs auf Tastenfeld ansteuern
   'Dimmung Taster nach Zeit1 auf und abdimmen
   If Mute = 1 Then Portd.= 1
   'Für LED Stripe
   Portd.= 1

   If J < 290 And K = 0 Then
     M = M + 1
     If M > 10 Then
       M = 11
       J = J + 1
     End If
   Else
     K = 1
   End If

   If J > 0 And K = 1 Then
     M = M - 1
     If M < 1 Then
       M = 0
       J = J - 1
     End If
   Else
     K = 0
   End If

   'Gleitendes Auf und Abdimmen des tasters aber stetiges Dimmen des LED Stripes
   For L = 1 To 291
     'Für Verharrung in 100% LED Taster
     If L > J Then
       If Numsp = "" Then Portd.= 0
     End If
    'Dimmung LED Stripe nach Zeit
     If L > 100 Then
       If Numsp = "" Then Portd.= 0
     End If
     Waitus 10
   Next L

   'rote LED Lebenszeichen
   I = I + 1
   If I = 500 And Numsp = "" Then
    'LED lock rot
     Portd.= 1
       Elseif I = 505 And Unlocklong = 0 Then
       Portd.= 0
         Elseif I = 550 And Numsp = "" Then
         Portd.= 1
           Elseif I = 555 And Unlocklong = 0 Then
           Portd.= 0
             Elseif I = 600 And Numsp = "" Then
            'LED unlock grün
             Portd.= 1
               Elseif I > 605 Then
               If Richtig = 0 Then Portd.= 0
               I = 0
   End If

   '==============================================================================
   'Sprachmodul und Restzeitmanagement
   'Abschaltung Voicemodul und Entsperrungsmodi nach Zeit 30s siehe Sub Voice
   If Zeit1 < 1 Then
     Falsch = 0
     Richtig = 0
     Unlocktime = 30
   End If

   'je nach Restzeit vorzeitig Verstärker ausschalten nach nx s egal welche Offenhaltezeit gesetzt ist
   If Pinc.= 1 Then Tempsek = 0
   If Tempsek = 29 Then Portd.= 1


   'Zaehler Wartezeit bis zur vollständigen Eingabe und neu Nummernspeicher
   'löschen wenn Zeichen 0 damit Speicher im Leerlauf immer geleert wird
   If Zeichen = 0 Then Numsp = ""

   If Tempsek = 5 And Zeichen > 0 Then                      '10s
     Numsp = ""
     Zeichen = 0
     File = Rnd(9) + 101
     Call Voice
     Tempsek = 0
     Zeit1 = 30
   End If

   If Tempsek = 15 Then
     Unlocklong = 0
     Volumestellen = 0
     Mute = 1
   End If


   Loop

   '==============================================================================
   '==============================================================================
   '==============================================================================

   '************************ Nummerneingabeauswertung ****************************
   Nummer1:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "1"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 151
   If Uhrstellen = 1 And Zeichen = 1 Then File = 211
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer2:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "2"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 152
    If Uhrstellen = 1 And Zeichen = 1 Then File = 212
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer3:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "3"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 153
   If Uhrstellen = 1 And Zeichen = 1 Then File = 213
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer4:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "4"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 154
   If Uhrstellen = 1 And Zeichen = 1 Then File = 214
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer5:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "5"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 155
   If Uhrstellen = 1 And Zeichen = 1 Then File = 215
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer6:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "6"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 156
   If Uhrstellen = 1 And Zeichen = 1 Then File = 216
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer7:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "7"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 157
   If Uhrstellen = 1 And Zeichen = 1 Then File = 217
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer8:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "8"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 158
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer9:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "9"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 159
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummer0:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   Numsp = Numsp + "0"
   If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
     File = Rnd(9) + 1
       Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
       File = Rnd(9) + 11
         Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
         File = Rnd(9) + 21
           Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 31
   Else
     File = Rnd(9) + 121
   End If
   Zeichen = Zeichen + 1
   If Uhrstellen = 1 Or Volumestellen = 1 Then File = 149
   Call Voice
   If Zeichen < Menge Then
     Goto Anfang
   Else
     Goto Auswertung
   End If

   '==============================================================================
   Nummerstern:
   Tempsek = 0
   Unlocktime = 30
   If Unlocklong = 0 Then Richtig = 0
   Zeit1 = 30
   If Zeichen = 0 And Richtig = 0 Then
     If Mute = 1 Then
       Mute = 0
     Else
       Mute = 1
     End If
   Else
     Numsp = Numsp + "*"
         If Mid(code1 , 1 , 1) = Mid(numsp , 1 , 1) Then
           File = Rnd(9) + 1
             Elseif Mid(code2 , 1 , 1) = Mid(numsp , 1 , 1) Then
             File = Rnd(9) + 11
               Elseif Mid(code3 , 1 , 1) = Mid(numsp , 1 , 1) Then
               File = Rnd(9) + 21
                 Elseif Mid(code4 , 1 , 1) = Mid(numsp , 1 , 1) Then
                 File = Rnd(9) + 31
         Else
         File = Rnd(9) + 121
         End If
     Call Voice
       If Richtig = 0 Then
         Zeichen = Zeichen + 1
         Call Voice
       Else
         Richtig = 0
        'LED unlock grün
         Portd.= 0
         Zeichen = 0
         Numsp = ""
       End If
   End If
   Goto Anfang

   '==============================================================================
   Nummerraute:
   If Richtig = 0 Then
      File = Rnd(9) + 111
      Numsp = ""
      Mute = 1
      Zeichen = 0
      Falsch = 0
      Uhrstellen = 0
      I = 0
      Call Voice
      For I = 1 To 8
         'LED lock rot
         Portd.= 1
         'LED unlock grün
         Portd.= 1
         Waitms 300
         Portd.= 0
         Portd.= 0
         Waitms 80
         I = I + 1
      Next
      Goto Anfang
   Else
      Goto Unlock
   End If

   '==============================================================================
   '==============================================================================
   '==============================================================================
   '***************************** Codeauswertung *********************************
   Auswertung:
   Waitms 500
   '==============================================================================
   'Code 1 Ralf
   If Numsp = Code1 And Volumestellen = 0 And Uhrstellen = 0 Then
     File = Rnd(9) + 41
    'Zeit ansagen
     Call Voice
     Goto Unlock

     '============================================================================
     'Code 2 Katrin
     Elseif Numsp = Code2 And Volumestellen = 0 And Uhrstellen = 0 Then
       File = Rnd(9) + 51
       Call Voice
       Goto Unlock

      '===========================================================================
      'Code 3 Cindy
       Elseif Numsp = Code3 And Volumestellen = 0 And Uhrstellen = 0 Then
         File = Rnd(9) + 61
         Call Voice
         Goto Unlock

         '========================================================================
         'Code 4 Jeronimo
         Elseif Numsp = Code4 And Volumestellen = 0 And Uhrstellen = 0 Then
           File = Rnd(9) + 71
           Call Voice
           Goto Unlock

           '======================================================================
           'Code 5 Uhrstellen aktivieren
           Elseif Numsp = Code5 And Volumestellen = 0 And Uhrstellen = 0 Then
             Uhrstellen = 1
             Numsp = ""
             Zeichen = 0
             File = 147
             Call Voice
             Tempsek = 0
             Zeit1 = 30
             Goto Anfang

             '====================================================================
             'Uhrzeit eingeben und ansagen
             Elseif Uhrstellen = 1 Then
               If Zeichen < 10 Then Goto Anfang
               Uhrstellen = 0
               Zeichen = 0
               Tempzeit = Mid(numsp , 1 , 1)
               Wochentag = Val(tempzeit)
               If Wochentag < 1 Or Wochentag > 8 Then Wochentag = 1
               Tempzeit = Mid(numsp , 2 , 2)
               Stunde = Val(tempzeit)
               If Stunde > 23 Then Stunde = 0
               Tempzeit = Mid(numsp , 4 , 2)
               Minute = Val(tempzeit)
               If Minute > 59 Then Minute = 0
               Zeichen = 0
               File = 148
               Call Voice
               Anfangvoice9:
               If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice9
               Endevoice9:
               If Pinc.= 1 Then Goto Endevoice9
               Call Zeitansage
               Anfangvoice10:
               If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice10
               Endevoice10:
               If Pinc.= 1 Then Goto Endevoice10
               'Wenn Eichwert eingegeben, dann übernehmen und ansagen
               Tempzeit = Mid(numsp , 6 , 5)
               If Tempzeit <> "00000" Then
                   Tempeich = Val(tempzeit)
                   If Tempeich > 32999 And Tempeich < 35001 And Tempeich <> Eichfaktor Then
                     File = 146
                     Call Voice
                     Anfangvoice15:
                     If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice15
                     Endevoice15:
                     If Pinc.= 1 Then Goto Endevoice15
                     Eichfaktor = Tempeich
                     Eichfaktorx = Eichfaktor               '>34285< +31250 = 65535
                     For I = 6 To 10
                       Tempzeit = Mid(numsp , I , 1)
                       Tempeich = Val(tempzeit)
                       File = 150 + Tempeich
                       If File = 150 Then File = 149
                       Call Voice
                       Anfangvoice16:
                       If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice16
                       Endevoice16:
                       If Pinc.= 1 Then Goto Endevoice16
                     Next I
                     I = 0
                   End If
                 Else
                   Tempeich = 0
                 End If
                 Numsp = ""
                 Zeichen = 0
                 Tempsek = 0
                 Zeit1 = 30
                 Goto Anfang

                 '================================================================
                 'Code 6 - alle Zeitvoices testen und mit # abbrechen und mit 3 vorspulen
                 Elseif Numsp = Code6 And Volumestellen = 0 And Uhrstellen = 0 Then
                   Portd.= 0
                   For I = 145 To 243
                     If I = 210 Then I = 211
                     File = I
                     Call Voice
                     Anfangvoice1:
                     'Vorspulen mit Taste 3
                     If Pinc.= 0 And Pinb.= 1 And Tempsek < 20 Then Goto Anfangvoice1
                     Endevoice1:
                     'Vorspulen mit Taste 3
                     If Pinc.= 1 And Pinb.= 1 Then Goto Endevoice1
                     'Abbruch durch Rautetaste
                     If Pinb.= 1 And Pinb.= 1 And Pinb.= 1 And Pinb.= 0 Then Goto Abbruch1
                   Next I
                   Abbruch1:
                   Portd.= 1
                   I = 0
                   Numsp = ""
                   Zeichen = 0
                   Tempsek = 0
                   Zeit1 = 30
                   Goto Anfang

                     '============================================================
                     'Code 7 alle Codeschlosssounds testen und mit # abbrechen und mit 3 vorspulen
                     Elseif Numsp = Code7 And Volumestellen = 0 And Uhrstellen = 0 Then
                     Portd.= 0
                     Tempsek = 0
                     Zeit1 = 30
                     For I = 1 To 142
                       File = I
                       Call Voice
                       Anfangvoice2:
                       'Vorspulen mit Taste 3
                       If Pinc.= 0 And Pinb.= 1 And Tempsek < 20 Then Goto Anfangvoice2
                       Endevoice2:
                       'Vorspulen mit Taste 3
                       If Pinc.= 1 And Pinb.= 1 Then Goto Endevoice2
                       'Abbruch durch Rautetaste
                       If Pinb.= 1 And Pinb.= 1 And Pinb.= 1 And Pinb.= 0 Then Goto Abbruch2
                     Next I
                     Abbruch2:
                     Portd.= 1
                     I = 0
                     Numsp = ""
                     Zeichen = 0
                     Tempsek = 0
                     Zeit1 = 30
                     Goto Anfang

                        '=========================================================
                        'Code 8 - Zeit ansagen
                        Elseif Numsp = Code8 And Volumestellen = 0 And Uhrstellen = 0 Then
                        Call Zeitansage
                        Numsp = ""
                        Zeichen = 0
                        Tempsek = 0
                        Zeit1 = 30
                        Goto Anfang

                           '=========================================================
                           'Code 9 - Zeit ansagen
                           Elseif Numsp = Code9 And Volumestellen = 0 And Uhrstellen = 0 Then
                           File = 146
                           Anfangvoice7:
                           If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice7
                           Endevoice7:
                           If Pinc.= 1 Then Goto Endevoice7
                           Call Voice
                           Anfangvoice8:
                           If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice8
                           Endevoice8:
                           If Pinc.= 1 Then Goto Endevoice8
                           Numsp = Str(eichfaktor)
                           For I = 1 To 5
                             Tempzeit = Mid(numsp , I , 1)
                             Tempeich = Val(tempzeit)
                             File = 150 + Tempeich
                             If File = 150 Then File = 149
                             Call Voice
                             Anfangvoice3:
                             If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice3
                             Endevoice3:
                             If Pinc.= 1 Then Goto Endevoice3
                           Next I
                           I = 0
                           Numsp = ""
                           Zeichen = 0
                           Tempsek = 0
                           Zeit1 = 30
                           Goto Anfang

                          '==========================================================
                          'Code 10 - Lautstärkenparameter für jeden User eingeben
                           Elseif Numsp = Code10 Or Volumestellen = 1 Then
                              If Volumestellen = 1 Then
                                Tempvolume = Mid(numsp , 1 , 1)
                                Volumer = Val(tempvolume)
                                If Volumer < 1 Or Volumer > 7 Then Volumer = 1
                                Tempvolume = Mid(numsp , 2 , 1)
                                Volumek = Val(tempvolume)
                                If Volumek < 1 Or Volumek > 7 Then Volumek = 1
                                Tempvolume = Mid(numsp , 3 , 1)
                                Volumec = Val(tempvolume)
                                If Volumec < 1 Or Volumec > 7 Then Volumec = 1
                                Tempvolume = Mid(numsp , 4 , 1)
                                Volumej = Val(tempvolume)
                                If Volumej < 1 Or Volumej > 7 Then Volumej = 1
                                Volumestellen = 0
                                File = 142
                                Call Voice
                                Anfangvoice4:
                                If Pinc.= 0 And Tempsek < 10 Then Goto Anfangvoice4
                                Tempsek = 0
                                Zeit1 = 30
                                Endevoice4:
                                If Pinc.= 1 Then Goto Endevoice4
                                For I = 1 To 4
                                  Tempzeit = Mid(numsp , I , 1)
                                  Tempeich = Val(tempzeit)
                                  File = 150 + Tempeich
                                  Call Voice
                                  Anfangvoice5:
                                  If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice5
                                  Endevoice5:
                                  If Pinc.= 1 Then Goto Endevoice5
                                Next I
                                I = 0
                              Else
                                Volumestellen = 1
                                Zeit1 = 30
                                Tempsek = 0
                                Zeit1 = 30
                                File = 141
                                Call Voice
                                Anfangvoice6:
                                If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice6
                                Endevoice6:
                                If Pinc.= 1 Then Goto Endevoice6
                              End If
                              Numsp = ""
                              Zeichen = 0
                              Tempsek = 0
                              Zeit1 = 30
                              Goto Anfang
   Else
      Goto Lock
   End If


   '==============================================================================
   '==============================================================================
   '==============================================================================
   '******************************** Oeffnen *************************************
   Unlock:
   Numsp = ""
   If Richtig = 1 Then Unlocklong = 0 Else Unlocklong = 1
   Richtig = 1
   'Tastenfeld aktivieren
   Portb.= 0
   Portd.= 0
   Portd.= 0
   'Led Lock rot
   Portd.= 0
   'Magnetschlosss
   Portc.= 1
   'LED unlock grün
   Portd.= 1
   Zeit1 = 30
   Zeichen = 0
   Falsch = 0
   Tempsek = 0
   Zeit1 = 30
   For I = 0 To 100
     Waitms 30
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Offenhaltezeit
   Next
   Portc.= 0
   Call Zeitansage
   Mute = 1
   Goto Anfang

   '==============================================================================
   '==============================================================================
   '==============================================================================
   '******************************* Verriegeln ***********************************
   Lock:
   Numsp = ""
   Zeichen = 0
   Richtig = 0

   'Led Lock rot
   Portd.= 1

   'Wenn zum dritten mal falscher Code, dann Klingel ansteuern
   Falsch = Falsch + 1

   If Falsch > 2 Then
      File = Rnd(9) + 91
      Call Voice
        'Schleife für blinkenden  LED Stripe und Taster LED
         For I = 1 To 10
           'Taster LED
            Portd.= 1
            'LED Stripe
            Portd.= 0
            Waitms 300
            Portd.= 0
            Waitms 300
            I = I + 1
         Next
         'Klingel
         Portc.= 1
         Portd.= 1
         Waitms 500
         Portc.= 0
         Falsch = 0
         Richtig = 0
   Else
      File = Rnd(9) + 81
      Call Voice
        'Schleife für blinkendes LED Stripe
         For I = 1 To 10
            'LED Stripe
            Portd.= 0
            Waitms 300
            Portd.= 1
            Waitms 300
            I = I + 1
            Richtig = 0
         Next
   End If
   I = 0

   'Led Lock rot
   Portd.= 0
   'Taster LED
   Portd.= 1
   'LED Stripe
   Portd.= 0
   'Zeit für
   Tempsek = 0
   Zeit1 = 30
   Unlocktime = 30
   Unlocklong = 0
   Mute = 1
   Goto Anfang
   End


   '==============================================================================
   '==============================================================================
   '==============================================================================
   '*********************** Unterprogramm Zeitansage *****************************
    Sub Zeitansage
     Zeitansagen = 1
    'Zeitansagen wenn Spache fertig
     If Unlocktime = 30 Then Tempsek = 0 Else Tempsek = Tempsek + 30
     Zeit1 = 30
     Anfangvoice11:
     'Tastenbetätigunng führt zu Abbruch Zeit
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang
     If Pinc.= 0 And Tempsek < 1 Then Goto Anfangvoice11
     Endevoice11:
     If Pinc.= 1 Then Goto Endevoice11
     File = 145
     Call Voice
     Anfangvoice12:
     'Tastenbetätigunng führt zu Abbruch Zeit
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang
     If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice12  'es ist jetzt
     Endevoice12:
     If Pinc.= 1 Then Goto Endevoice12
     File = Wochentag + 210                                 'Mo-So
     Call Voice
     Anfangvoice13:
     'Tastenbetätigunng führt zu Abbruch Zeit
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang
     If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice13
     Endevoice13:
     If Pinc.= 1 Then Goto Endevoice13
     File = Stunde + 220                                    'Stunde + Uhr
     Call Voice
     Anfangvoice14:
     'Tastenbetätigunng führt zu Abbruch Zeit
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang
     If Pinc.= 0 And Tempsek < 5 Then Goto Anfangvoice14
     Endevoice14:
     'Tastenbetätigunng führt zu Abbruch Zeit
     If Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Or Pinb.= 0 Then Goto Anfang
     If Pinc.= 1 Then Goto Endevoice14
     File = Minute + 150                                    'Minute
     If Minute > 0 Then Call Voice
     Zeitansagen = 0
    End Sub


   '==============================================================================
   '==============================================================================
   '==============================================================================
   '*************************** Unterprogramm Voice ******************************

    Sub Voice
   ' Programm 8 bit decoder für sound
   'PA0        40        O        Attiny 861A PB4 SW3
   'PA1        41        O        Attiny 861A PB5 SW2
   'PA2        42        O        Attiny 861A PB6 SW1
   'PA3        43        O        Attiny 861A PA3 SW8
   'PA4        44        O        Attiny 861A PA4 SW7
   'PA5        45        O        Attiny 861A PA5 SW6
   'PA6        46        O        Attiny 861A PA6 SW5
   'PA7        47        O        Attiny 861A PA7 SW4
   'File 1-10    = Tastenecho Ralf
   'File 11-20   = Tastenecho Katrin
   'File 21-30   = Tastenecho Cindy
   'File 31-40   = Tastenecho Jeronimo
   'File 41-50   = Code1 ok
   'File 51-60   = Code2 ok
   'File 61-70   = Code3 ok
   'File 71-80   = Code4 ok
   'File 81-90   = Code falsch
   'File 91-100  = Code 3x hintereinander falsch + Klingel
   'File 101-110 = Zeitüberschreitung Eingabe
   'File 111-120 = Reset Eingabe
   'File 121-130 = Tastenecho allgemein
   'File 131-140 = Ansage Offenhaltezeit für Taste * 131-139 = 1-9h, 140= 30min
   'File 141     = Volumeeinstellung aktiv
   'File 142     = Volumeeinstellung ansagen
   'File 143-144 = frei
   'File 145     = es ist jetzt
   'File 146     = Eichfaktor erkannt
   'File 147     = Stellen
   'File 148     = Uhr erfolgreich gestellt
   'File 149     = Null
   'File 150     = ein für Stunde Ein Uhr ...
   'File 151-209 = 1 - 59 als Zahlen gesprochen für Stunde+Min
   'File 210     = frei
   'File 211     = Montag
   'File 212     = Dienstag
   'File 213     = Mittwoch
   'File 214     = Donnerstag
   'File 215     = Freitag
   'File 216     = Samstag
   'File 217     = Sonntag
   'File 218-219 = frei
   'File 220-243 = 0Uhr bis 23Uhr
   'File 244-250 = frei

   'Ports zurücksetzen
   Porta = &B11111111

   'Vertärker ein
   If Mute = 1 And Portd.= 1 Then
     Portd.= 0
     Elseif Mute = 0 And Portd.= 0 Then
       Portd.= 1
   End If

   'Ausschaltzeit Verstärker definieren 30 x 1s = 30s
   Tempsek = 0
   Zeit1 = 30

   '==============================================================================
   'Benutzerlautstärke setzen
   Volume = 2
   If Zeitansagen = 1 Then Goto Volumealt

   If File > 0 And File < 11 Then
     Volume = Volumer
     Elseif File > 40 And File < 51 Then
     Volume = Volumer                                       'Ralf
       Elseif File > 10 And File < 21 Then
       Volume = Volumek
         Elseif File > 50 And File < 61 Then
         Volume = Volumek                                   'Katrin
           Elseif File > 20 And File < 31 Then
           Volume = Volumec
             Elseif File > 60 And File < 71 Then
             Volume = Volumec                               'Cindy
               Elseif File > 30 And File < 41 Then
               Volume = Volumej
                 Elseif File > 70 And File < 81 Then
                 Volume = Volumej                           'Jeronimo
                   Elseif File > 80 And File < 91 Then
                   Volume = 3                               'Code falsch
                     Elseif File > 90 And File < 101 Then
                     Volume = 4                             'Code 3x falsch
                       Elseif File > 100 Then
                       Volume = 2                           'Rest
   End If

   Volumealt:

  '       330k 70k 39k 33k
   If Volume < 2 Then
     Portc = &B00000000                                     '33k
       Elseif Volume = 2 Then
       Portc = &B00000001                                   '69k
         Elseif Volume = 3 Then
         Portc = &B00000010                                 '103k
           Elseif Volume = 4 Then
           Portc = &B00000011                               '172k
             Elseif Volume = 5 Then
             Portc = &B00000100                             '363k
               Elseif Volume = 6 Then
               Portc = &B00000101                           '402k
                 Elseif Volume > 6 Then
                 Portc = &B00000111                         '470k
   End If

   '===============================================================================
   'Wenn Öffnungsverlängerung aktiv mit Uhrzeit Timer länger freigeben über Raute
   If Richtig = 1 And Zeichen = 1 And Unlocklong = 1 Then
     Zeichen = 0
     Unlocksp = 10
     Tempsek = 0
     Restsek = 0
     Mute = 1
     Zeit1 = 30
     Unlocktime = 30
     If Numsp <> "*" And Numsp <> "#" Then Unlocksp = Val(numsp) Else Unlocktime = 30
     '1h mal Ziffer
      Numsp = ""
      Zeichen = 0
      Unlocklong = 0
        If Unlocksp = 1 Then                                '1h
          Unlocktime = 3600
          File = 131
          Elseif Unlocksp = 2 Then                          '2h
            Unlocktime = 7200
            File = 132
            Elseif Unlocksp = 3 Then                        '3h
              Unlocktime = 10800
              File = 133
              Elseif Unlocksp = 4 Then                      '4h
                Unlocktime = 14400
                File = 134
                Elseif Unlocksp = 5 Then                    '5h
                  Unlocktime = 18000
                  File = 135
                  Elseif Unlocksp = 6 Then                  '6h
                    Unlocktime = 21600
                    File = 136
                    Elseif Unlocksp = 7 Then                '7h
                      Unlocktime = 25200
                      File = 137
                      Elseif Unlocksp = 8 Then              '8h
                        Unlocktime = 28800
                        File = 138
                        Elseif Unlocksp = 9 Then            '9h
                          Unlocktime = 32400
                          File = 139
                          Elseif Unlocksp = 0 Then          '0,5h
                            Unlocktime = 1800
                            File = 140
      End If
  End If

   '==============================================================================
   'Soundfile aufrufen
   'wegen vereinfachter IC durchverdrahtung muss anders gerechnet werden und es kann nicht 

   'dezimal eingegeben werden
   'PortA.0 ist auf binär 4 verdrahtet, PortA.1 auf 2 , PortA.2 auf 1, 

   'PortA.3 auf 128, PortA.4 auf 64, PortA.5 auf 32
   'PortA.6 auf 16, PortA.7 auf 8
   Waitms 50
   If File = 1 Then
   '  8-16-32-64-128-1-2-4  Reihenfolge von &B11111111 und 0 = aktiv
   Porta = &B11111011                                       '251
   Elseif File = 2 Then
   Porta = &B11111101                                       '253
   Elseif File = 3 Then
   Porta = &B11111001                                       '249
   Elseif File = 4 Then
   Porta = &B11111110                                       '254
   Elseif File = 5 Then
   Porta = &B11111010                                       '250
   Elseif File = 6 Then
   Porta = &B11111100                                       '252
   Elseif File = 7 Then
   Porta = &B11111000                                       '248
   Elseif File = 8 Then
   Porta = &B01111111                                       '128
   Elseif File = 9 Then
   Porta = &B01111011
   Elseif File = 10 Then
   Porta = &B01111101
   Elseif File = 11 Then
   Porta = &B01111001
   Elseif File = 12 Then
   Porta = &B01111110
   Elseif File = 13 Then
   Porta = &B01111001
   Elseif File = 14 Then
   Porta = &B01111100
   Elseif File = 15 Then
   Porta = &B01111000
   Elseif File = 16 Then
   Porta = &B10111111
   Elseif File = 17 Then
   Porta = &B10111011
   Elseif File = 18 Then
   Porta = &B10111101
   Elseif File = 19 Then
   Porta = &B10111001
   Elseif File = 20 Then
   Porta = &B10111110
   Elseif File = 21 Then
   Porta = &B10111010
   Elseif File = 22 Then
   Porta = &B10111100
   Elseif File = 23 Then
   Porta = &B10111000
   Elseif File = 24 Then
   Porta = &B00111111
   Elseif File = 25 Then
   Porta = &B00111011
   Elseif File = 26 Then
   Porta = &B00111101
   Elseif File = 27 Then
   Porta = &B00111001
   Elseif File = 28 Then
   Porta = &B00111110
   Elseif File = 29 Then
   Porta = &B00111010
   Elseif File = 30 Then
   Porta = &B00111100
   Elseif File = 31 Then
   Porta = &B00111000
   Elseif File = 32 Then
   Porta = &B11011111
   Elseif File = 33 Then
   Porta = &B11011011
   Elseif File = 34 Then
   Porta = &B11011101
   Elseif File = 35 Then
   Porta = &B11011001
   Elseif File = 36 Then
   Porta = &B11011110
   Elseif File = 37 Then
   Porta = &B11011010
   Elseif File = 38 Then
   Porta = &B11011100
   Elseif File = 39 Then
   Porta = &B11011000
   Elseif File = 40 Then
   Porta = &B01011111
   Elseif File = 41 Then
   Porta = &B01011011
   Elseif File = 42 Then
   Porta = &B01011101
   Elseif File = 43 Then
   Porta = &B01011001
   Elseif File = 44 Then
   Porta = &B01011110
   Elseif File = 45 Then
   Porta = &B01011010
   Elseif File = 46 Then
   Porta = &B01011100
   Elseif File = 47 Then
   Porta = &B01011000
   Elseif File = 48 Then
   Porta = &B10011111
   Elseif File = 49 Then
   Porta = &B10011011
   Elseif File = 50 Then
   Porta = &B10011101
   Elseif File = 51 Then
   Porta = &B10011001
   Elseif File = 52 Then
   Porta = &B10011110
   Elseif File = 53 Then
   Porta = &B10011010
   Elseif File = 54 Then
   Porta = &B10011100
   Elseif File = 55 Then
   Porta = &B10011000
   Elseif File = 56 Then
   Porta = &B00011111
   Elseif File = 57 Then
   Porta = &B00011011
   Elseif File = 58 Then
   Porta = &B00011101
   Elseif File = 59 Then
   Porta = &B00011001
   Elseif File = 60 Then
   Porta = &B00011110
   Elseif File = 61 Then
   Porta = &B00011010
   Elseif File = 62 Then
   Porta = &B00011100
   Elseif File = 63 Then
   Porta = &B00011000
   Elseif File = 64 Then
   Porta = &B11101111
   Elseif File = 65 Then
   Porta = &B11101011
   Elseif File = 66 Then
   Porta = &B11101101
   Elseif File = 67 Then
   Porta = &B11101001
   Elseif File = 68 Then
   Porta = &B11101110
   Elseif File = 69 Then
   Porta = &B11101010
   Elseif File = 70 Then
   Porta = &B11101100
   Elseif File = 71 Then
   Porta = &B11101000
   Elseif File = 72 Then
   Porta = &B01101111
   Elseif File = 73 Then
   Porta = &B01101011
   Elseif File = 74 Then
   Porta = &B01101101
   Elseif File = 75 Then
   Porta = &B01101001
   Elseif File = 76 Then
   Porta = &B01101110
   Elseif File = 77 Then
   Porta = &B01101010
   Elseif File = 78 Then
   Porta = &B01101100
   Elseif File = 79 Then
   Porta = &B01101000
   Elseif File = 80 Then
   Porta = &B10101111
   Elseif File = 81 Then
   Porta = &B10101011
   Elseif File = 82 Then
   Porta = &B10101101
   Elseif File = 83 Then
   Porta = &B10101001
   Elseif File = 84 Then
   Porta = &B10101110
   Elseif File = 85 Then
   Porta = &B10101010
   Elseif File = 86 Then
   Porta = &B10101100
   Elseif File = 87 Then
   Porta = &B10101000
   Elseif File = 88 Then
   Porta = &B00101111
   Elseif File = 89 Then
   Porta = &B00101011
   Elseif File = 90 Then
   Porta = &B00101101
   Elseif File = 91 Then
   Porta = &B00101001
   Elseif File = 92 Then
   Porta = &B00101110
   Elseif File = 93 Then
   Porta = &B00101010
   Elseif File = 94 Then
   Porta = &B00101100
   Elseif File = 95 Then
   Porta = &B00101000
   Elseif File = 96 Then
   Porta = &B11001111
   Elseif File = 97 Then
   Porta = &B11001011
   Elseif File = 98 Then
   Porta = &B11001101
   Elseif File = 99 Then
   Porta = &B11001001
   Elseif File = 100 Then
   Porta = &B11001110
   Elseif File = 101 Then
   Porta = &B11001010
   Elseif File = 102 Then
   Porta = &B11001100
   Elseif File = 103 Then
   Porta = &B11001000
   Elseif File = 104 Then
   Porta = &B01001111
   Elseif File = 105 Then
   Porta = &B01001011
   Elseif File = 106 Then
   Porta = &B01001101
   Elseif File = 107 Then
   Porta = &B01001001
   Elseif File = 108 Then
   Porta = &B01001110
   Elseif File = 109 Then
   Porta = &B01001010
   Elseif File = 110 Then
   Porta = &B01001100
   Elseif File = 111 Then
   Porta = &B01001000
   Elseif File = 112 Then
   Porta = &B10001111
   Elseif File = 113 Then
   Porta = &B10001011
   Elseif File = 114 Then
   Porta = &B10001101
   Elseif File = 115 Then
   Porta = &B10001001
   Elseif File = 116 Then
   Porta = &B10001110
   Elseif File = 117 Then
   Porta = &B10001010
   Elseif File = 118 Then
   Porta = &B10001100
   Elseif File = 119 Then
   Porta = &B10001000
   Elseif File = 120 Then
   Porta = &B00001111
   Elseif File = 121 Then
   Porta = &B00001011
   Elseif File = 122 Then
   Porta = &B00001101
   Elseif File = 123 Then
   Porta = &B00001001
   Elseif File = 124 Then
   Porta = &B00001110
   Elseif File = 125 Then
   Porta = &B00001010
   Elseif File = 126 Then
   Porta = &B00001100
   Elseif File = 127 Then
   Porta = &B00001000
   Elseif File = 128 Then
   Porta = &B11110111
   Elseif File = 129 Then
   Porta = &B11110011
   Elseif File = 130 Then
   Porta = &B11110101
   Elseif File = 131 Then
   Porta = &B11110001
   Elseif File = 132 Then
   Porta = &B11110110
   Elseif File = 133 Then
   Porta = &B11110010
   Elseif File = 134 Then
   Porta = &B11110100
   Elseif File = 135 Then
   Porta = &B11110000
   Elseif File = 136 Then
   Porta = &B01110111
   Elseif File = 137 Then
   Porta = &B01110011
   Elseif File = 138 Then
   Porta = &B01110101
   Elseif File = 139 Then
   Porta = &B01110001
   Elseif File = 140 Then
   Porta = &B01110110
   Elseif File = 141 Then
   Porta = &B01110010
   Elseif File = 142 Then
   Porta = &B01110100
   Elseif File = 143 Then
   Porta = &B01110000
   Elseif File = 144 Then
   Porta = &B10110111
   Elseif File = 145 Then
   Porta = &B10110011
   Elseif File = 146 Then
   Porta = &B10110101
   Elseif File = 147 Then
   Porta = &B10110001
   Elseif File = 148 Then
   Porta = &B10110110
   Elseif File = 149 Then
   Porta = &B10110010
   Elseif File = 150 Then
   Porta = &B10110100
   Elseif File = 151 Then
   Porta = &B10110000
   Elseif File = 152 Then
   Porta = &B00110111
   Elseif File = 153 Then
   Porta = &B00110011
   Elseif File = 154 Then
   Porta = &B00110101
   Elseif File = 155 Then
   Porta = &B00110001
   Elseif File = 156 Then
   Porta = &B00110110
   Elseif File = 157 Then
   Porta = &B00110010
   Elseif File = 158 Then
   Porta = &B00110100
   Elseif File = 159 Then
   Porta = &B00110000
   Elseif File = 160 Then
   Porta = &B11010111
   Elseif File = 161 Then
   Porta = &B11010011
   Elseif File = 162 Then
   Porta = &B11010101
   Elseif File = 163 Then
   Porta = &B11010001
   Elseif File = 164 Then
   Porta = &B11010110
   Elseif File = 165 Then
   Porta = &B11010010
   Elseif File = 166 Then
   Porta = &B11010100
   Elseif File = 167 Then
   Porta = &B11010000
   Elseif File = 168 Then
   Porta = &B01010111
   Elseif File = 169 Then
   Porta = &B01010011
   Elseif File = 170 Then
   Porta = &B01010101
   Elseif File = 171 Then
   Porta = &B01010001
   Elseif File = 172 Then
   Porta = &B01010110
   Elseif File = 173 Then
   Porta = &B01010010
   Elseif File = 174 Then
   Porta = &B01010100
   Elseif File = 175 Then
   Porta = &B01010000
   Elseif File = 176 Then
   Porta = &B10010111
   Elseif File = 177 Then
   Porta = &B10010011
   Elseif File = 178 Then
   Porta = &B10010101
   Elseif File = 179 Then
   Porta = &B10010001
   Elseif File = 180 Then
   Porta = &B10010110
   Elseif File = 181 Then
   Porta = &B10010010
   Elseif File = 182 Then
   Porta = &B10010100
   Elseif File = 183 Then
   Porta = &B10010000
   Elseif File = 184 Then
   Porta = &B00010111
   Elseif File = 185 Then
   Porta = &B00010011
   Elseif File = 186 Then
   Porta = &B00010101
   Elseif File = 187 Then
   Porta = &B00010001
   Elseif File = 188 Then
   Porta = &B00010110
   Elseif File = 189 Then
   Porta = &B00010010
   Elseif File = 190 Then
   Porta = &B00010100
   Elseif File = 191 Then
   Porta = &B00010000
   Elseif File = 192 Then
   Porta = &B11100111
   Elseif File = 193 Then
   Porta = &B11100011
   Elseif File = 194 Then
   Porta = &B11100101
   Elseif File = 195 Then
   Porta = &B11100001
   Elseif File = 196 Then
   Porta = &B11100110
   Elseif File = 197 Then
   Porta = &B11100010
   Elseif File = 198 Then
   Porta = &B11100100
   Elseif File = 199 Then
   Porta = &B11100000
   Elseif File = 200 Then
   Porta = &B01100111
   Elseif File = 201 Then
   Porta = &B01100011
   Elseif File = 202 Then
   Porta = &B01100101
   Elseif File = 203 Then
   Porta = &B01100001
   Elseif File = 204 Then
   Porta = &B01100110
   Elseif File = 205 Then
   Porta = &B01100010
   Elseif File = 206 Then
   Porta = &B01100100
   Elseif File = 207 Then
   Porta = &B01100000
   Elseif File = 208 Then
   Porta = &B10100111
   Elseif File = 209 Then
   Porta = &B10100011
   Elseif File = 210 Then
   Porta = &B10100101
   Elseif File = 211 Then
   Porta = &B10100001
   Elseif File = 212 Then
   Porta = &B10100110
   Elseif File = 213 Then
   Porta = &B10100010
   Elseif File = 214 Then
   Porta = &B10100100
   Elseif File = 215 Then
   Porta = &B10100000
   Elseif File = 216 Then
   Porta = &B00100111
   Elseif File = 217 Then
   Porta = &B00100011
   Elseif File = 218 Then
   Porta = &B00100101
   Elseif File = 219 Then
   Porta = &B00100001
   Elseif File = 220 Then
   Porta = &B00100110
   Elseif File = 221 Then
   Porta = &B00100010
   Elseif File = 222 Then
   Porta = &B00100100
   Elseif File = 223 Then
   Porta = &B00100000
   Elseif File = 224 Then
   Porta = &B11000111
   Elseif File = 225 Then
   Porta = &B11000011
   Elseif File = 226 Then
   Porta = &B11000101
   Elseif File = 227 Then
   Porta = &B11000001
   Elseif File = 228 Then
   Porta = &B11000110
   Elseif File = 229 Then
   Porta = &B11000010
   Elseif File = 230 Then
   Porta = &B11000100
   Elseif File = 231 Then
   Porta = &B11000000
   Elseif File = 232 Then
   Porta = &B01000111
   Elseif File = 233 Then
   Porta = &B01000011
   Elseif File = 234 Then
   Porta = &B01000101
   Elseif File = 235 Then
   Porta = &B01000001
   Elseif File = 236 Then
   Porta = &B01000110
   Elseif File = 237 Then
   Porta = &B01000010
   Elseif File = 238 Then
   Porta = &B01000100
   Elseif File = 239 Then
   Porta = &B01000000
   Elseif File = 240 Then
   Porta = &B10000111
   Elseif File = 241 Then
   Porta = &B10000011
   Elseif File = 242 Then
   Porta = &B10000101
   Elseif File = 243 Then
   Porta = &B10000001
   Elseif File = 244 Then
   Porta = &B10000110
   Elseif File = 245 Then
   Porta = &B10000010
   Elseif File = 246 Then
   Porta = &B10000100
   Elseif File = 247 Then
   Porta = &B10000000
   Elseif File = 248 Then
   Porta = &B00000111
   Elseif File = 249 Then
   Porta = &B00000011
   Elseif File = 250 Then
   Porta = &B00000101
   Elseif File = 251 Then
   Porta = &B00000001
   Elseif File = 252 Then
   Porta = &B00000110
   Elseif File = 253 Then
   Porta = &B00000010
   Elseif File = 254 Then
   Porta = &B00000100
   Elseif File = 255 Then
   Porta = &B00000000
   End If

   Waitms 100
   Porta = &B11111111
   File = 0
   Tempsek = 0
   Zeit1 = 30
   End Sub


   '==============================================================================
   '==============================================================================
   '==============================================================================
   '************************** Unterprogramm Urzeit ******************************
   'Uhrzeitinterupt
    Sekundeisr:
    Timer1 = Eichfaktor                                     '34285= Startwert für eine s je Überlauf      
    Incr Sekunde
    Incr Restsek
    Incr Tempsek
    If Restsek > 65529 Then Restsek = 0
    If Tempsek > 30 Then Tempsek = 30
    If Zeit1 > 0 Then Zeit1 = Unlocktime - Restsek Else Zeit1 = 0
    If Sekunde = 60 Then
      Sekunde = 0
      Minute = Minute + 1
    End If
    If Minute = 60 Then
      Minute = 0
      Stunde = Stunde + 1
    End If
    If Stunde = 24 Then
      Stunde = 0
      Sekunde = 0
      If Wochentag < 7 Then Wochentag = Wochentag + 1 Else Wochentag = 1
    End If

    Return
    End

 

Nach oben