Dim X As Byte
Dim Y As Word
Dim Z As Byte
Dim Ciag As String * 12
Dim R As Byte
Dim A As Byte

Ciag = ""
Clk Alias P1.6
Io Alias P1.5
Res Alias P1.7
Buz Alias P1.4
Czuj Alias P3.0
Lg Alias P1.3
Lr Alias P1.2

Bitwait Czuj , Reset                                          ' Czekaj na wlozenie karty
Waitms 200

Gosub Atr                                                     'Skocz do procedury odczytu

If Ciag = "XXXXXXXXXXX" Or Ciag = "YYYYYYYYYYY" Then          'Porownuje PESEL
'Dodanie OR zwieksza nam liczbe prawidlowych kart
'W tym przypadku sa dwa poprawne PESELe XXX... i YYY...
   P1.0 = 0 : P1.1 = 0                                        'Zalaczenie przekaznika
   Lg = 0                                                     'Zaswiecenie zielonej LED
   Buz = 0 : Waitms 50                                        'Wlaczenie buzzera jako "pip..pip"
   Buz = 1 : Waitms 100
   Buz = 0 : Waitms 50
   Buz = 1
   Wait 1
   Lg = 1                                                     'Wylaczenie zielonej LED
Else                                                          'A gdy kod jest bledny lub zla karta...
   Buz = 0                                                    'Wlaczenie buzzera
   Lr = 0                                                     'Wlaczenie czerwonej LED
   Wait 1
   Buz = 1                                                    'Wylaczenie buzzera
   Wait 1
   Lr = 1                                                     'Wylaczenie czerwonej LED
End If

Stop                                                          'Zatrzymanie programu

Atr:
Clk = 0 : Io = 1                                              'Pierwsze impulsy Answer To reset, patrz wykresy w pliku PDF
Res = 1 : Clk = 1 : Delay
Clk = 0 : Res = 0 : Delay
'Wpisanie ponizej innej liczby niz 1599 ustawi nam adres na innej pozycji
'Zasada jest taka:
'Jeden impuls z procedury powyzej (reset synchroniczny)
'1+inna liczba=(adres*8)+8
For Y = 1 To 1599                                             '1599 impulsow + 1 z linijek wyzej to 1600, czyli 200 bajtow
    Clk = 1 : Delay                                           'jeden trzeba odjac
    Clk = 0 : Delay                                           'wiec...
Next Y

For R = 1 To 6                                                '...zaczynamy od adresu C7h
   For X = 0 To 7
      Clk = 1 : Delay
      A.x = Io
      Clk = 0 : Delay
   Next X
   Ciag = Ciag + Hex(a)                                       'sumujemy znaki w ciag
Next R

Ciag = Mid(ciag , 2 , 11)                                     'wycinamy 0 z 0XXXXXXXXXXX
Return                                                        'Powrot

















