$regfile = "m8adef.dat"
$crystal = 8000000
$hwstack = 128
$swstack = 128
$framesize = 120
'=========================================================
'Ein. und Ausgänge bestimmen
' PD.0 =
' PD.1 =
' PD.2 = INT0 (Matrixtastatur)
' PD.3 =
' PD.4 =
' PD.5 =Töff
' PD.6 = Rfid-In
' PD.7 = Rfid-LED
Ddrd = &B_1010_0000 '1 ist Ausgang 0 ist Eingang
Portd = &B0101_1111 'auf Hi oder Low setzen
'PC.0 = Taster-Sperre
'PC.1 = Taster-Auf
'PC.2 = LED-gn-AUF
'PC.3 = LED-rt_Sperre
'PC.4 = SDA
'PC.5 = SCL
Ddrc = &B_11_1100 '1 ist Ausgang 0 ist Eingang Ddrc = &B_11_1100
Portc = &B00_0011 'auf Hi oder Low setzen Portc = &B00_0011
'PB.0 = Töff-Kontakt
'PB.1 = LED-ws_NAchtlicht
'PB.2 = Taster_Nachtlicht
'PB.3 = _MOSI
'PB.4 = _MISO
'PB.5 = _ SCK
'PB.6 = _XTAL1 (8MHz, Resonator)
'PB.7 = _XTAL2 (8MHz, Resonator)
Ddrb = &B_010 '1 ist Ausgang 0 ist Eingang
Portb = &B101 'auf Hi oder Low setzen
'####################################################
' Aliasnamen:
Tuer Alias Pinb.0
T_sperre Alias Pinc.0
T_auf Alias Pinc.1
Licht Alias Pinb.2
Toeff Alias Portd.5
Led_rfid Alias Portd.7
Led_gn Alias Portc.2
Led_rt Alias Portc.3
Led_ws Alias Portb.1
'##############################################
'Bestimme die Variablen
Dim Timer_zaehler As Byte 'Zähler für Lich-Verzögerung
Dim Kb As String * 1 'Keyboard-Wert
Dim Kba As Byte At Kb Overlay 'ASCII-Nummer des Strings
Dim Kbn As Byte 'Nummerischer Wert des Keyboards
Dim I As Word 'Indexzähler
Dim Ie As Byte 'index_EEprom Zähler
Dim Temp As Byte 'Temp.-Variable
'-----------------Rfid-Array & Overlays_-------------
'+---------+--------+----.....__
Dim Rfid(16) As Byte 'Rfid-Rohdaten= "2 DDDDDDDDDD SS D A 3"
Dim Rfid0(12) As Byte At Rfid(2) Overlay
Dim Rfids As String * 12 At Rfid0(1) Overlay
Dim Srfid(9) As String * 16
Dim Srfid_pos As Byte
Dim Rfid_gruppe As Byte
Dim Key_nummer As Byte
Dim Rfid_schluessel As Byte
Dim Rfid_add As Byte
Dim Tab_nr As Word
Dim Lrfid(12) As Byte
Dim Lrfids As String * 12 At Lrfid(1) Overlay
Dim Finder As Byte
Dim Speicher_voll As Bit
Dim Finder_pos As Word
Dim Old_fund As Byte
Dim Zutritt As Byte
Zutritt = &H00
'Zutritt.0= ---frei__
'Zutritt.1= wenn HIGH, dann Zutritt
'Zutritt.2= wenn HIGH, dann besteht die Gruppen-Sperre
'Zutritt.3= wenn HIGH, dann Tür Dauer-auf
'Zutritt.4= wenn HIGH, dann Nachtlicht ein
'Zutritt.5= ---frei----
'Zutritt.6= wenn HIGH, dann RFID-Key der Gruppe 2-4 gefunden
'Zutritt.7= wenn HIGH, dann RFID-Key der Gruppe 1 gefunden
Dim Toeffzeit As Byte
Toeffzeit = 2
'Globale Interrupts einschalten
Enable Interrupts
'======================================================
'config für INT0 (I2C -Matrix)
'======================================================
Enable Int0
On Int0 Matrix_scan 'Überwache INT0
Enable Int0
'======================================================
'Config Timer1 für Nachtlicht-Verzögerung
Config Timer1 = Timer , Prescale = 256 '3036 bei Prescale 256 = 2 Sekunden
On Timer1 Timer_isr
Enable Timer1
Const Timer_ladewert = 3036 '3036 bei Prescale 256 = 2 Sekunden
'=====================================================
'Software I2C Variante-------------
'Bus-Takt
Config Scl = Portc.5 'I2C SCL
Config Sda = Portc.4 'I2C SDA
I2cinit
'I2C Matrixtastur (Kent Andersson) __________________
$lib "key_i2c.lib"
$external _key_code ' Externe Routine 'LIB für I2C-Matrixtastatur
Const Pcf8574_kbd = &H72 'I2C-Adresse des PCF8574A
!RCALL _key_Init 'Initialisierung aufrufen
Dim _key_scan As Byte 'Variable für Tastenausgabe
'=========I2C LCD (Kent Anderson)=====================
$lib "Lcd_i2c.lib "
Const Pcf8574_lcd = &H74
'=== _LCD_e Variable für LCD-Zeilen
Dim _lcd_e As Byte
_lcd_e = 128
!RCALL _init_lcd
Waitms 100
'Soft_Uart Einstellung------------------------
Open "COMD.6:9600,8,N,1" For Input As #1 'Rfid-Scanner Input
'Open"COMC .3.9600.8.N.1" For Output As #2
Led_ws = 1
Waitms 200
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'##########################################################
'##________System start ___________________________---_####
'##########################################################
Cls
Locate 1 , 1 : Lcd "Systemstart"
Stop Timer1
Led_rt = 1
Waitms 500
Led_rt = 0
Led_gn = 1
Led_ws = 0 ' PNP Transistor, invertiertes Signal
Locate 1 , 1
Lcd "RFID-Oeffner"
Locate 2 , 1
Lcd "System A1"
Wait 1
Led_gn = 0 ' PNP Transistor, invertiertes Signal
Led_ws = 1
Srfid_pos = 1 '* Startposition 'Für Last_visit
'#################################################
'-------------Arbeitsschleife---------------------
'#################################################
Do
'Nachtlicht____________________
If Licht = 0 Then 'Nachtlicht Ein / Aus Schalten
Toggle Zutritt.4
If Zutritt.4 = 1 Then 'PNP Transistor, invertiertes Signal
Led_ws = 1
Else
Led_ws = 0 'PNP Transistor, invertiertes Signal
End If
Waitms 250
'ab hier bleib erstehn????????????????????????????
Bitwait Licht , Set
Else
End If
Cls
Locate 1 , 1 : Lcd "Nachtlicht!"
'Nachtlicht____________________'
'Matrix-Tastatur_________________________________________
'***> Taste D veranlasst ein INIT des Displays ( in der ISR Matrix_Scan)
If _key_scan = 13 Then '*=Service
Gosub Service 'Keys Speichern oder löschen (alle Löschen)
Elseif _key_scan = 4 Then 'A= RFID-Key Anzeige
Gosub Rfid_info 'einen Rfid-Tag zur Info NUR Anzeigen
Elseif _key_scan = 15 Then '#=Start-LCD anzeigen
Gosub Sys_start
While _key_scan > 0
NOP
Wend
Elseif Kbn = 3 Then '3= Rfid_Tag der Gewählten Schlüsselnummer anzeigen
Gosub Speicheranzeige
Elseif Kbn = 2 Then
Gosub Last_visit
'Elseif Kbn = 9 Then '9 = gesamten EEPROM-Speicher via RS232 ausgeben
' Gosub Rs232
Else
End If
' Matrix-Tastatur_________________________________________________
If T_auf = 0 Then 'Tür Dauer-Auf Ein / Aus schalten
Toggle Zutritt.3
If Zutritt.3 = 1 Then
Cls
Locate 1 , 1 : Lcd "Dauer_Auf aktiv!"
Led_gn = 1
Led_rfid = 1
Toeff = 0
Gosub Sys_start
End If
Waitms 250
Bitwait T_auf , Set
Else
End If
'*****************************************************
If Zutritt.3 = 0 Then 'Dauer_Auf inaktiv
If T_sperre = 0 Then 'Gruppen-Sperre EIN / Aus schalten
Toggle Zutritt.2
If Zutritt.2 = 1 Then ' Gruppenb-Sperre Ein
Led_rt = 1
Cls
Locate 1 , 1 : Lcd "Gruppen-Sperre!! "
Else
Led_rt = 0
Gosub Sys_start
End If
Waitms 250
Bitwait T_sperre , Set
Else
End If
'_________________________________________________
If Tuer = 0 Then 'Wenn Tür geschlossen ist , dann...
Led_rfid = 0
Led_gn = 0
Rfid(1) = Inkey(#1) 'Erstes Byte einlesen
If Rfid(1) = 2 Then 'Prüfe, ob 1.Byte = &H02 ist
Gosub Read_rfid
Gosub Reverse_key 'gesamten RFID-Tag von 2 bis 16 einlesen
Gosub Gefunden
Gosub Zutritt_pruefen
Else
End If
If Zutritt.1 = 1 Then
Led_rfid = 1
Led_gn = 1
Toeff = 1
Wait Toeffzeit
Zutritt.1 = 0
Toeff = 0
Led_rfid = 0
Led_gn = 0
Gosub Sys_start
Else
End If
Else
' Else
' Led_rfid = 1
'Led_gn = 1
End If
'_________________________________
'*********************************
Else
End If
Loop
'***********************************************************
'18.10.2012
Sys_start:
Cls
If Zutritt.2 = 0 Then
Locate 1 , 1 : Lcd "Rfid-System A1"
Locate 2 , 1 : Lcd "Scan / Menue"
Speicher_voll = 0
End If
Return
'---------------Read Rfid----------------------------------
Read_rfid:
For I = 2 To 16
Rfid(i) = Waitkey(#1)
Next I
'------------Rfid-Array & Overlays--------------
Rfid(1) = 0
Rfid(14) = 0
Rfid(15) = 0
Rfid(16) = 0
Rfid_schluessel = 0
Gosub Reverse_key
If Srfid_pos < 10 Then
Srfid(srfid_pos) = Str(rfid_schluessel)
Srfid(srfid_pos) = Srfid(srfid_pos) + "="
Srfid(srfid_pos) = Srfid(srfid_pos) + Rfids
Incr Srfid_pos
Else
Srfid_pos = 1
Srfid(srfid_pos) = Str(rfid_schluessel)
Srfid(srfid_pos) = Srfid(srfid_pos) + "="
Srfid(srfid_pos) = Srfid(srfid_pos) + Rfids
End If
Return
Service:
Cls
Locate 1 , 1 : Lcd "Servicemenue"
Locate 2 , 1 : Lcd "System A1"
Wait 1
While _key_scan > 0
NoP
Wend
Locate 1 , 1 : Lcd " 1= Key speicher"
Locate 2 , 1 : Lcd "2 = key loeschen"
While _key_scan = 0
Nop
Wend
'--------------------------
Select Case _key_scan
Case 9 : Gosub Key_add
Case 10 : Gosub Key_del
Case 3 : Gosub Key_del_all
Case Else
Cls
Locate 1 , 1 : Lcd "Servicemenue"
Locate 2 , 1 : Lcd "abgebrochen"
Wait 1
While _key_scan > 0
NOP
Wend
End Select
Gosub Sys_start
Return
'###########################################
Key_add:
Gosub Gruppe
Gosub Nummer
Rfid_schluessel = Rfid_gruppe * 10
Rfid_schluessel = Rfid_schluessel + Key_nummer
Gosub Speicher_pruefen
Rfid_add = Rfid_schluessel
Rfid_schluessel = 0
If Speicher_voll = 0 Then
Locate 1 , 1 : Lcd "Key" ; Rfid_add ; " einlesen:"
Locate 2 , 1 : Lcd "Warten auf Key . . . "
Wait 1
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
NOP
Wend
While Rfid(1) < 2
Rfid(1) = Inkey(#1)
If _key_scan = 14 Then Exit While
Wend 'Null gedrückt?
If _key_scan = 0 Then 'KEINE Matrix-Taste gedrückt
Gosub Read_rfid
Gosub Doppel_pruefung 'Key schon einmal vorhanden?
Rfid_schluessel = Rfid_add
Gosub Tab_platz
If Speicher_voll = 0 Then
Locate 1 , 1 : Lcd "key"
Locate 1 , 5 : Lcd Rfids
Locate 2 , 1 : Lcd " "
Waitms 250
Gosub Key_speicher
Locate 2 , 1 : Lcd "Gespeichert ! "
Led_rfid = 1
Wait 1
Else
Locate 1 , 1 : Lcd " Speichern "
Locate 2 , 1 : Lcd " abgebrochen! "
Wait 1
End If
Else
Locate 1 , 1 : Lcd " Key Einlesen "
Locate 2 , 1 : Lcd " abgebrochen! "
Wait 1
End If
Else
End If
Return
'#################Key_del#############################
Key_del:
Gosub Gruppe
Gosub Nummer
Rfid_schluessel = Rfid_gruppe * 10
Rfid_schluessel = Rfid_schluessel + Key_nummer
Gosub Tab_platz
For Ie = 1 To 12
Readeeprom Lrfid(ie) , Tab_nr
Incr Tab_nr
Next Ie
Locate 1 , 1 : Lcd "Key " ; Rfid_schluessel ; "loeschen?"
Locate 2 , 1 : Lcd " 1=Ja / 0 = Nein"
Waitms 250
While _key_scan > 0
NOP
Wend
'------------------------------------- 'Keine Taste mehr gedrückt? Sonst warten
While _key_scan = 0 'Warten Bis Eine Taste Gedrückt Wurde
NOP
Wend 'weil zur Anzeige schon Incr 12 erfolgt
Select Case Kbn
Case 1
Temp = &H00
Tab_nr = Tab_nr - 12
For Ie = 1 To 12
Writeeeprom Temp , Tab_nr
Incr Tab_nr
Next Ie
Locate 1 , 1 : Lcd "Key:" ; Lrfids
Locate 2 , 1 : Lcd " GELOESCHT ! "
Wait 1
While _key_scan > 0
NOP
Wend
Case 0
Locate 1 , 1 : Lcd "Key: " ; Lrfids
Locate 2 , 1 : Lcd "NICHT geloescht ! "
Wait 1
While _key_scan > 0
NOP
Wend
End Select
Return
'--------------Key_del_all-----------------------
Key_del_all:
Locate 1 , 1 : Lcd "ALLE LOESCHEN ??"
Locate 2 , 1 : Lcd " 7=ja 0=NEIN "
Waitms 250
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
NOP
Wend
Waitms 100
'------------------------------
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
NOP
Wend
Select Case Kbn
Case 7
Temp = &H00
For Tab_nr = 0 To 512
Writeeeprom Temp , Tab_nr
Next Tab_nr
Locate 1 , 1 : Lcd "ALLE Keys wurden"
Locate 2 , 1 : Lcd " GELOESCHT ! "
Wait 3
While _key_scan > 0 'keine Teste mehr gedrücskt? sonst warten!
NOP
Wend
Case 0
Locate 1 , 1 : Lcd "Vorgang wurde "
Locate 2 , 1 : Lcd " abgebrochen !"
Wait 3
While _key_scan > 0 'Keine Teste mehr gedrückt? Sonst warten!
NOP
Wend
End Select
Gosub Sys_start
Return
'---------------Gruppe------------------------------
Gruppe:
Locate 1 , 1 : Lcd "Gruppe (1-4): "
Locate 2 , 1 : Lcd " "
Waitms 250
While _key_scan > 0 'Warten bis eine Taste gedrückt wurde
NOP
Wend
Waitms 100
'-----------------------------------------
While _key_scan = 0 'Keine Teste mehr gedrückt? sonst warten!
NOP
Wend
Rfid_gruppe = Kbn
Select Case Rfid_gruppe
Case 1 To 4
Locate 2 , 1 : Lcd Rfid_gruppe
Locate 2 , 2 : Lcd " Gruppe,OK!"
Waitms 500
While _key_scan > 0 'Warten bis eine Taste gedrückt wurde
NOP
Wend
Case Else
Locate 2 , 1 : Lcd " ----FEHLER---"
Waitms 500
Goto Gruppe
End Select
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Return
'----------------Nummer------------------------------
Nummer:
Locate 1 , 1 : Lcd " Key-Nummer (1-9)"
Locate 2 , 1 : Lcd " "
Waitms 250
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Waitms 100
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
NOP
Wend
Key_nummer = Kbn
Select Case Key_nummer
Case 1 To 9
Locate 2 , 1 : Lcd Key_nummer
Locate 2 , 2 : Lcd " Key-Nummer,OK!"
Waitms 500
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Case Else
Locate 2 , 1 : Lcd " ----FEHLER---"
Waitms 500
Goto Nummer
End Select
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Return
'-----------------Tab_platz--------------------------------
Tab_platz:
Tab_nr = Rfid_schluessel - 11
Tab_nr = Tab_nr * 12
Return
'---------------Speicher_pruefen---------------------------------
Speicher_pruefen:
Gosub Tab_platz
Readeeprom Lrfid(1) , Tab_nr
If Lrfid(1) > 0 Then
Locate 1 , 1 : Lcd "Speicher " ; Rfid_schluessel ; "voll"
Locate 2 , 2 : Lcd " 1=Weiter 0=Abbr."
While _key_scan = 0
NOP
Wend
If Kbn = 0 Then
Locate 1 , 1 : Lcd " Speichern "
Locate 2 , 1 : Lcd " abgebrochen! "
Else
End If
Else
Speicher_voll = 0
End If
Return
'----------------Doppel_pruefung---------------------------
Doppel_pruefung:
Gosub Reverse_key
Select Case Rfid_schluessel
Case 11 To 49
Locate 1 , 1 : Lcd " Key vorhanden in "
Locate 2 , 1 : Lcd " Speicher: " ; Rfid_schluessel ; "!!!"
While _key_scan = 0
NOP
Wend
Speicher_voll = 1
Case Else
Speicher_voll = 0
End Select
Return
'-----------Reverse_key----------------------------------
Reverse_key:
Finder = 0
Finder_pos = 0
Ie = 1
Tab_nr = 0
Old_fund = 0
While Tab_nr < 468
Readeeprom Lrfid(ie) , Tab_nr
If Lrfid(ie) = Rfid0(ie) Then
Finder_pos = Tab_nr
Incr Ie
Incr Finder
Incr Tab_nr
Old_fund = 1
Else
If Old_fund = 1 Then
Tab_nr = Finder_pos
Tab_nr = Tab_nr - Finder
Tab_nr = Tab_nr + 13
Old_fund = 0
Finder = 0
Ie = 1
Else
Tab_nr = Tab_nr + 12
End If
End If
If Finder = 12 Then
Finder_pos = Finder_pos - 11
Finder_pos = Finder_pos / 12
Rfid_schluessel = Finder_pos + 11
Exit While
End If
Wend
Return
Gefunden:
If Finder = 12 Then
If Rfid_schluessel > 20 Then
Zutritt.6 = 1 'key der Gruppe 1 Key gefunden
Else
Zutritt.7 = 1 'key der Gruppe 2-4 gefunden
End If
Else
Zutritt.1 = 0 'Keine Freigabe
Cls
Locate 1 , 1 : Lcd "Keinen RFID-Key"
Locate 2 , 1 : Lcd " gefunden"
End If
Return
'-------------Key_speicher---------------------------
Key_speicher:
For Ie = 1 To 12
Writeeeprom Rfid0(ie) , Tab_nr
Incr Tab_nr
Next Ie
Return
'----------------Zutritt_pruefen-----------------------------------
Zutritt_pruefen:
If Zutritt.7 = 1 Then
Zutritt.1 = 1
Locate 1 , 1 : Lcd "Key gefund " ; Rfid_schluessel
Locate 2 , 1 : Lcd " Zutritt erlaubt!"
Led_ws = 0
Timer1 = Timer_ladewert : Start Timer1
Elseif Zutritt.6 = 1 Then
If Zutritt.2 = 0 Then
Zutritt.1 = 1
Locate 1 , 1 : Lcd "Key gefund " ; Rfid_schluessel
Locate 2 , 1 : Lcd " Zutritt erlaubt!"
Led_ws = 0
Timer1 = Timer_ladewert : Start Timer1
Else
Zutritt.1 = 0
Locate 1 , 1 : Lcd "Key gefund " ; Rfid_schluessel
Locate 2 , 1 : Lcd "KEIN Zutritt!!!"
End If
Else
End If
Zutritt.7 = 0
Zutritt.6 = 0
Return
'-------------------------------------
Last_visit:
Locate 1 , 1 : Lcd "Letzten 9 RFIDs "
Locate 2 , 1 : Lcd "# waehlen 0=Abbr"
Wait 1
While _key_scan > 0
NOP
Wend
Do
While _key_scan = 0
NOP
Wend
If Kbn = 0 Then
Locate 1 , 1 : Lcd "Funktion beendet "
Locate 2 , 1 : Lcd "zurueck zum Scan "
Wait 1
Elseif Kbn = Srfid_pos Then
Temp = 9
Elseif Kbn > Srfid_pos Then
Temp = Srfid_pos - Kbn
Temp = Temp - 247
Else
Temp = Srfid_pos - Kbn
End If
If Kbn > 0 Then
Locate 1 , 1 : Lcd "RFID-TAG vor: " ; Kbn ; " "
Locate 2 , 1 : Lcd " "
Locate 2 , 1 : Lcd Srfid(temp) ; " "
Else
End If
Waitms 500
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Loop Until Kbn = 0
Gosub Sys_start
Return
'-------------------------------------------------
Speicheranzeige:
Locate 1 , 1 : Lcd "Speicheranzeige "
Locate 2 , 1 : Lcd "Nummer ? "
Wait 1
While _key_scan > 0 'Keine Taste mehr gedrückt? sonst warten!
NOP
Wend
Gosub Gruppe
Gosub Nummer
Rfid_schluessel = Rfid_gruppe * 10
Rfid_schluessel = Rfid_schluessel + Key_nummer
Locate 2 , 1 : Lcd "Nummer " ; Rfid_schluessel ; " "
Waitms 500
Gosub Tab_platz
For Ie = 1 To 12
Readeeprom Lrfid(ie) , Tab_nr
Incr Tab_nr
Next Ie
Locate 1 , 1 : Lcd "Speicher " ; Rfid_schluessel ; " "
Locate 2 , 1 : Lcd "Key "
Locate 2 , 4 : Lcd Lrfids
Waitms 100
While _key_scan = 0
NOP 'Warten bis eine Taste gedrückt wurde
Wend
Gosub Sys_start
Return
'____________________________________________
Rfid_info:
Cls
Do
Locate 1 , 1 : Lcd "RFID-Key Anzeige "
Locate 2 , 1 : Lcd "Warte.... "
Wait 1
While Rfid(1) < 2
Rfid(1) = Inkey(#1)
If _key_scan = 14 Then Exit While
Wend
If _key_scan = 0 Then 'Keine Taste mehr gedrückt? sonst warten!
Gosub Read_rfid
Locate 1 , 1 : Lcd "Der RFID-Key ist "
Locate 2 , 1 : Lcd "---> " ; Rfids
Else
Exit Do
End If
Set Led_rfid
While _key_scan = 0 'Warten bis eine Taste gedrückt wurde
NOP
Wend
Reset Led_rfid
Loop
Locate 1 , 1 : Lcd "RFID-Key Anzeige "
Locate 2 , 1 : Lcd "beendet! "
Wait 1
While _key_scan > 0
NOP
Wend
Gosub Sys_start
Return
'---------------Timer_isr-----------------------------------
Timer_isr:
'7 x 2s = 14s + 2s bis zum ersten Interrupt = 16 Sekunden insgesamt !
If Timer_zaehler < 7 Then
Incr Timer_zaehler
Timer1 = Timer_ladewert
Else
If Zutritt.4 = 0 Then Led_ws = 1
Timer_zaehler = 0
Stop Timer1
End If
Return
'-----------------Matrix_scan--------------------------------
Matrix_scan:
!Rcall _key_code
If _key_scan > 0 Then 'externe Routine aufrufen
Kb = Lookupstr(_key_scan , Matrix_wert)
Kbn = Kba - 48 'Wert von Keyscan der Tastur anpassen
Else
End If
If _key_scan = 16 Then
!RCALL _init_lcd
Waitms 250
Locate 2 , 1 : Lcd "INIT...... OK"
Else
End If
Return
'_____________Matrix_wert__________________________________________________
Matrix_wert:
Data "Z" , "7" , "8" , "9" , "A" , "4" , "5" , "6" , "B" , "1" , "2" , "3" , "C" , "F" , "0" , "E" , "D"
Return
'*******************************************************************************************
'Rfid_data:
$eeprom