'------------------------------------------------------------------------------- ' Beispielprogramm für den Pollin-Electronic RFID-Bausatz, ArtNr:810059 ' Es dient zum Auslesen einer HITAG RFID-Karte mittels eines Atmel U2270B. ' Âusschnitte des Codes wurden von der Beispielsoftware für den Em4095 von ' www.mcselec.de übernommen und für den U2270B abgeändert ' Als Controller wird ein AT-Tiny 2313 verwendet. '------------------------------------------------------------------------------------------------------------------ $regfile = "2313def.dat" ' Controller : Tiny 2313 $baud = 9600 ' Übertragungsrate der UART-Schnittstelle $crystal = 8000000 ' Taktfrequenz des Controllers Dim Tags(5) As Byte ' "Tags" als Array mit 5 Bytes definieren bytes Dim Zaehler As Byte ' "Zähler" als Byte definieren Dim Wert As String * 5 ' "Wert" als String mit 5 Hexwerten definieren Config Portb = Output ' Port B als Ausgang definieren Config Hitag = 64 , Type = Em4095 , Demod = Pind.3 , Int = @int1 ' konfiguriert den Timer und die Variablen für HITAG Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 ' konfiguriert die LCD-Belegung Config Lcd = 16 * 2 ' konfiguriert die Displaygröße _cfe Alias Portd.2 ' _cfe wird dem Portd.2 zugewiesen Config _cfe = Output ' _cfe wird als Ausgand definiert _cfe = 1 ' _cfe wird high Config Debounce = 30 ' Tastenentprellung = 30ms On Int1 Checkints Nosave ' Int1 wird als Eingang für HITAG verwendet Mcucr.isc10 = 1 ' entspricht: config INT1 = changing ( der Befehl wird vom MC unterstützt, Mcucr.isc11 = 0 ' beim 2313 aber nicht von Bascom) Enable Interrupts ' Enable all interrupts Locate 1 , 1 ' Cursor am Display in Zeile 1, ganz links Lcd "RFID-Modul" ' Text schreiben Locate 2 , 1 ' Cursor am Display in Zeile 1, ganz links Lcd "with U2270B" ' Text schreiben Set Portb.6 ' Led 1 einschalten Set Portb.7 ' Led 2 einschalten Wait 2 ' Warte 2 Sekunden Reset Portb.6 ' Led 1 ausschalten Reset Portb.7 ' Led 2 ausschalten Main: ' ab hier beginnt das Hauptprogramm Do ' Do-Schleife Cls ' Display löschen Lcd "Check..." ' Text schreiben If Readhitag(tags(1)) = 1 Then ' INT1 wird enabled For Zaehler = 5 To 1 Step -1 ' For-Schleife beginnend von 5 nach 1; rückwärts zählend Wert = Wert + Hex(tags(zaehler)) ' "Wert" = bestehender inhalt in der Variable + gerade gelesenen ' Tag an Position vom Zähler Next ' Ende For-Schleife Toggle Portb.6 ' Led 1 Zustand wechseln Gosub Senden ' gehe zu Unterroutine Toggle Portb.6 ' Led 1 Zustand wechseln End If ' Ende der If-Abfrage Waitms 500 ' Warte 500 ms Loop ' Sprunganweisung zum Anfang Do-Schleife Checkints: ' Unterroutine "Checkints:" Call _checkhitag ' Eine ausgelagerte Unterroutine aufrufen Return ' Sprunganweisung in die Hauptschleife Senden: ' Unterroutine "Senden" Cls ' Display löschen Locate 1 , 1 ' Cursor in Zeile 1, Position 1 Lcd "send..." ' Text schreiben Locate 2 , 1 ' Cursor in Zeile 2, Position1 Lcd Wert ' Variable "Wert" schreiben Print Wert ' Variable "Wert" über Uart ausgeben Wert = "" ' Inhalt von Variable "Wert" = "" Return ' Sprunganweisung in die Hauptschleife End ' Programmende