$regfile = "m32def.dat"
$crystal = 3686400
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 9600 'Baudrate der UART: 9600 Baud
'Variable zum reseten
Dim A As Byte
' Dim X As Byte
A = 0
' X = Inkey()
Ddrd = &HFE
Config Sda = Portc.1 '' I2C Bus konfigurieren
Config Scl = Portc.0
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Lcd = 16 * 2
Cursor Off Noblink
Cls 'Lösche LCD Anzeige
'Diese Variable dient dazu !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Dim Zahl As Byte
'Diese Variable deint dazu sicher zu gehen,dass die Peron nur einmal begrüst
'wird und dass Fehlfunktionen aus kompensieret werden.
Dim I As Byte
'In dieser Textreihe wird zu Begrüsende Person gespeichert.Sie darf wegen
'Platzmangel jedoch maximal nur 10 Zeichen beanspruchen.
Dim Person As String * 10
'In dieser Textreihe wird die Anrede gespeichert, d.h. Herr oder Frau, sollte
'jedoch ein nicht identifizierbarer Transpondercode erfasst werden dient die
'Textreihe zum Anzeigen eines Fehlers in Form von "ERROR".
Dim Anrede As String * 5
'In dieser Textreihe befindet sich nach einer Datenverpackung der Komplette
'gelesene Transpondercode.
Dim S As String * 11
'In dieser Variablen wird ein Wert gespeichert der Angibt ob der gelesene
'Tranpondercode identifiziert wurde oder ob es sich um einen Unbekannten Code
'handelt.
Dim Exist As Byte
'Interruptanzahl
Dim Intanzahl As Byte
'Zu beginn wird der Inhalt der Textreihe gelöscht somit können keine
'Fehlfunktionen auftreten.
S = ""
'Der USART,Rx complete Interrupt wird gesperrt
Disable Interrupts
If A = 0 Then
Locate 1 , 1 : Lcd "INITIALISIEREN"
A = 2
Wait 3
Ucsra.7 = 0
'Ucsrb.7 = 0 'interrupt Bit???werde nicht ganz schlau aus dem Datenblatt
Locate 1 , 1 : Lcd "Herzlich "
Locate 2 , 1 : Lcd "Willkommen "
Wait 2
Cls
End If
A = 2
'Interrupts global einschalten.
Enable Interrupts
'Hier wird die Subroutine angegeben die im Falle eines Urxc (Serial recive)
'Interrupts angesprungen wird.
On Urxc On_urxc
'Der USART,Rx complete Interrupt wird Freigeschaltet
Enable Urxc
Do
B:
A = 2
I = 0
Locate 1 , 1 : Lcd "UHRZEIT " 'ist nur zum Testen... hier kommt später was anderes rein
'Locate 2 , 1 : Lcd Intanzahl
Loop
On_urxc:
'If Ucsra.7 = 1 Then Incr Int_anzahl 'wird der Interrupt gesetzt, erhöhe die Valiable Int_Anzahl um 1
'Int_anzahl = Int_anzahl + Ucsra.7 'Andere Methode
'Locate 2 , 1 : Lcd Int_anzahl ' Test anzeige um das programm nachzuvollziehen
'ASCII-Code einlesen
Zahl = Inkey()
If Zahl = 2 Then Else Return
While Zahl <> 4 'While schleife so lange wie Zahl verschieden von 4 ist
Zahl = Inkey() '
If Zahl <> 4 Then S = S + Chr(zahl) 'Nachkontrolle <> 4,wenn ja dann erhält S ein weiteres Zeichen
Wend 'Ende der While schleife (endet wenn Zahl = 4)
I = I + 1
Anzeige:
'If Intanzahl < 2 Then Return 'hier sollte das erste interrupt vermieden werden, geht jedoch nicht
If I <> 1 Then Return
Exist = 0
If S = "R029980AD46" Then 'Wenn die Zahlenreihe gleich "R029980AD46" ist, dann...
Person = "Dupont "
Anrede = "Herr "
Exist = 1
End If
If S = "R83D9A08DD5" Then 'Wenn die Zahlenreihe gleich "R83D9A08DD5" ist, dann...
Person = "Willems "
Anrede = "Frau "
Exist = 1
End If
If S = "R0A88A02DDB" Then 'Wenn Die Zahlenreihe gleich "R0A88A02DDB" ist, dann...
Person = "Krause "
Anrede = "Herr "
Exist = 1
End If
If Exist = 0 Then
Person = " Unbekannt"
Anrede = "ERROR"
End If
Cls 'Lösche LCD Anzeige
Locate 1 , 1 'Setze LCD Cursor auf Position 1,1
Lcd "Willkommen" 'Schreibe "Willkommen" auf die LCD Anzeige
Locate 2 , 1 'Setze LCD Cursor auf Position 2,1
Lcd Anrede ; Person 'Schreibe "Herr" Name auf die Lcd-Anzeige
Wait 4 'Warte 4 Sekunden
Cls
S = "" 'Inhalt der Textreihe (S) ist leer
Return