$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., Db5 = Portc., Db6 = Portc., Db7 = Portc., E = Portc., 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"
= 2
Wait 3
Ucsra.= 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

= 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:
= 2
= 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