$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.2 = 1
Portd.3 = 1
Portd.6 = 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.4 = 0
Waitms 10
'Tastaturspeiseports alle setzen, damit geprüft werden kann, ob alle
'Tasten Losgelassen wurden.
Portb.4 = 0
Portd.0 = 0
Portd.1 = 0
'Prüfung losgelassen?
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
Offenhaltezeit:
Portc.6 = 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.4 = 0
Portd.0 = 1
Portd.1 = 1
Waitus 1
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd.2 = 0
Portb.4 = 1
Goto Nummer1
Elseif Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd.2 = 0
Portb.4 = 1
Goto Nummer4
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Portd.2 = 0
Portb.4 = 1
Goto Nummer7
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Portd.2 = 0
Portb.4 = 1
Goto Nummerstern
End If
'Zeile 2 mit Tasten 2-5-8-0
Portb.4 = 1
Portd.0 = 1
Portd.1 = 0
Waitus 1
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Goto Nummer2
Portd.2 = 0
Portd.1 = 1
Elseif Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd.2 = 0
Portd.1 = 1
Goto Nummer5
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Portd.2 = 0
Portd.1 = 1
Goto Nummer8
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Portd.2 = 0
Portd.1 = 1
Goto Nummer0
End If
'Zeile 3 mit Tasten 3-6-9-#
Portb.4 = 1
Portd.0 = 0
Portd.1 = 1
Waitus 1
If Pinb.0 = 0 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd.2 = 0
Portd.0 = 1
Goto Nummer3
Elseif Pinb.0 = 1 And Pinb.1 = 0 And Pinb.2 = 1 And Pinb.3 = 1 Then
Portd.2 = 0
Portd.0 = 1
Goto Nummer6
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 0 And Pinb.3 = 1 Then
Portd.2 = 0
Portd.0 = 1
Goto Nummer9
Elseif Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then
Portd.2 = 0
Portd.0 = 1
Goto Nummerraute
End If
'==============================================================================
'LEDs auf Tastenfeld ansteuern
'Dimmung Taster nach Zeit1 auf und abdimmen
If Mute = 1 Then Portd.6 = 1
'Für LED Stripe
Portd.3 = 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.6 = 0
End If
'Dimmung LED Stripe nach Zeit
If L > 100 Then
If Numsp = "" Then Portd.3 = 0
End If
Waitus 10
Next L
'rote LED Lebenszeichen
I = I + 1
If I = 500 And Numsp = "" Then
'LED lock rot
Portd.4 = 1
Elseif I = 505 And Unlocklong = 0 Then
Portd.4 = 0
Elseif I = 550 And Numsp = "" Then
Portd.4 = 1
Elseif I = 555 And Unlocklong = 0 Then
Portd.4 = 0
Elseif I = 600 And Numsp = "" Then
'LED unlock grün
Portd.5 = 1
Elseif I > 605 Then
If Richtig = 0 Then Portd.5 = 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.5 = 1 Then Tempsek = 0
If Tempsek = 29 Then Portd.2 = 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.5 = 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.4 = 1
'LED unlock grün
Portd.5 = 1
Waitms 300
Portd.4 = 0
Portd.5 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice9
Endevoice9:
If Pinc.5 = 1 Then Goto Endevoice9
Call Zeitansage
Anfangvoice10:
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice10
Endevoice10:
If Pinc.5 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice15
Endevoice15:
If Pinc.5 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice16
Endevoice16:
If Pinc.5 = 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 = 0
For I = 145 To 243
If I = 210 Then I = 211
File = I
Call Voice
Anfangvoice1:
'Vorspulen mit Taste 3
If Pinc.5 = 0 And Pinb.0 = 1 And Tempsek < 20 Then Goto Anfangvoice1
Endevoice1:
'Vorspulen mit Taste 3
If Pinc.5 = 1 And Pinb.0 = 1 Then Goto Endevoice1
'Abbruch durch Rautetaste
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Goto Abbruch1
Next I
Abbruch1:
Portd.0 = 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 = 0
Tempsek = 0
Zeit1 = 30
For I = 1 To 142
File = I
Call Voice
Anfangvoice2:
'Vorspulen mit Taste 3
If Pinc.5 = 0 And Pinb.0 = 1 And Tempsek < 20 Then Goto Anfangvoice2
Endevoice2:
'Vorspulen mit Taste 3
If Pinc.5 = 1 And Pinb.0 = 1 Then Goto Endevoice2
'Abbruch durch Rautetaste
If Pinb.0 = 1 And Pinb.1 = 1 And Pinb.2 = 1 And Pinb.3 = 0 Then Goto Abbruch2
Next I
Abbruch2:
Portd.0 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice7
Endevoice7:
If Pinc.5 = 1 Then Goto Endevoice7
Call Voice
Anfangvoice8:
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice8
Endevoice8:
If Pinc.5 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice3
Endevoice3:
If Pinc.5 = 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.5 = 0 And Tempsek < 10 Then Goto Anfangvoice4
Tempsek = 0
Zeit1 = 30
Endevoice4:
If Pinc.5 = 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.5 = 0 And Tempsek < 5 Then Goto Anfangvoice5
Endevoice5:
If Pinc.5 = 1 Then Goto Endevoice5
Next I
I = 0
Else
Volumestellen = 1
Zeit1 = 30
Tempsek = 0
Zeit1 = 30
File = 141
Call Voice
Anfangvoice6:
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice6
Endevoice6:
If Pinc.5 = 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.4 = 0
Portd.0 = 0
Portd.1 = 0
'Led Lock rot
Portd.4 = 0
'Magnetschlosss
Portc.6 = 1
'LED unlock grün
Portd.5 = 1
Zeit1 = 30
Zeichen = 0
Falsch = 0
Tempsek = 0
Zeit1 = 30
For I = 0 To 100
Waitms 30
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Offenhaltezeit
Next
Portc.6 = 0
Call Zeitansage
Mute = 1
Goto Anfang
'==============================================================================
'==============================================================================
'==============================================================================
'******************************* Verriegeln ***********************************
Lock:
Numsp = ""
Zeichen = 0
Richtig = 0
'Led Lock rot
Portd.4 = 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.6 = 1
'LED Stripe
Portd.3 = 0
Waitms 300
Portd.6 = 0
Waitms 300
I = I + 1
Next
'Klingel
Portc.7 = 1
Portd.3 = 1
Waitms 500
Portc.7 = 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.3 = 0
Waitms 300
Portd.3 = 1
Waitms 300
I = I + 1
Richtig = 0
Next
End If
I = 0
'Led Lock rot
Portd.4 = 0
'Taster LED
Portd.6 = 1
'LED Stripe
Portd.3 = 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 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
If Pinc.5 = 0 And Tempsek < 1 Then Goto Anfangvoice11
Endevoice11:
If Pinc.5 = 1 Then Goto Endevoice11
File = 145
Call Voice
Anfangvoice12:
'Tastenbetätigunng führt zu Abbruch Zeit
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice12 'es ist jetzt
Endevoice12:
If Pinc.5 = 1 Then Goto Endevoice12
File = Wochentag + 210 'Mo-So
Call Voice
Anfangvoice13:
'Tastenbetätigunng führt zu Abbruch Zeit
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice13
Endevoice13:
If Pinc.5 = 1 Then Goto Endevoice13
File = Stunde + 220 'Stunde + Uhr
Call Voice
Anfangvoice14:
'Tastenbetätigunng führt zu Abbruch Zeit
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
If Pinc.5 = 0 And Tempsek < 5 Then Goto Anfangvoice14
Endevoice14:
'Tastenbetätigunng führt zu Abbruch Zeit
If Pinb.0 = 0 Or Pinb.1 = 0 Or Pinb.2 = 0 Or Pinb.3 = 0 Then Goto Anfang
If Pinc.5 = 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.2 = 1 Then
Portd.2 = 0
Elseif Mute = 0 And Portd.2 = 0 Then
Portd.2 = 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
|