RFID okuma ve kimlik kontrollü giriş sistemi

Başlatan kaganayanoglu, 17 Haziran 2014, 11:17:40

kaganayanoglu

Merhaba,

Örneğe baktım inceledim. Hatta kodda bazı düzeltmeler yaptım. Fakat 16f628a da RCSTA registeri diye bir register var bununla ilgili bir ayar yapılıp yapılamayacağını bilemiyorum. Bu şekilde çalışmıyor. yardım edermisiniz.

@ __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF & _CP_OFF
CMCON = 7  
DEFINE OSC 4	'Set oscillator in 4 MHz

TRISA=%00000000
TRISB=%00000010
PORTA=0:PORTB=0



DEFINE LCD_DREG PORTB  'define port to LCD
DEFINE LCD_DBIT 4      'RB4 RB5 RB6 RB7 to D4 D5 D6 D7 display
DEFINE LCD_RSREG PORTA 'RS BACAĞI porta
DEFINE LCD_RSBIT 0     'RS BACAĞI porta.0
DEFINE LCD_EREG PORTA  'Enable on porta
DEFINE LCD_EBIT 1      'Numero Enable  porta.1
DEFINE LCD_BITS 4      ' 
DEFINE LCD_LINES 2     '2 SATIR 
PAUSE 200              '200ms BEKLE
LCDOUT $FE,1           'LCD TEMİZLE
Lcdout $FE,1,4
lcdout $FE, 1,"  Copyright 2014"
lcdout $FE, $C0,"***********"
pause 2000
lcdout $FE,1
' -----[ Variables ]-------------------------------------------------------

buf	    VAR	byte [12]' RFID bytes buffer
tagNum	VAR	Byte	 ' from EEPROM table
idx	    VAR	Byte	 ' tag byte index
char	VAR	Byte	 ' character from table

' -----[ EEPROM Data ]-----------------------------------------------------

Tag1	DATA  "450052B6BC1D"
Tag2	DATA  "450052F2EB0E"
 
' -----[ BAŞLATMA ]--------------------------------------------------

high portb.1	' turn off RFID reader portb.1 is the reciever port
LOW portb.2	    ' lock the door!
Low portb.3	    ' Turn off LED

' -----[ PROGRAM KODU ]----------------------------------------------------


lcdout $FE,1," LUTFEN KARTINIZI"
lcdout $FE, $C0,"  OKUTUNUZ   "
pause 500 

Main:
high portb.3
low portb.1					    ' activate the reader

serin2 PORTB.1, 84, [WAIT($02), str buf\10] ' Read 10 byte from ECO-125 
high portb.1					' deactivate reader
pause 500  
'-------------------------------------------------
                                
Check_List:
  FOR tagNum = 1 to 2       ' BİLİNEN KARTLARDAN BİRİNİ ARA
    FOR idx = 0 TO 11		' KARTIN BYTELARINI TARA
    READ (((tagNum-1)*12 ) + idx), char	' TABLODAN VERİLERİ AL
    IF (char <> buf(idx)) THEN Bad_Char		' VERİLERİ KARŞILAŞTIR
    NEXT
    GOTO Tag_Found			' TUM BAYTLARI EŞLEŞTİR!

Bad_Char:					' DİĞER KARTI DENE
  NEXT
'-------------------------------------------------------------  
Bad_Tag:
  tagNum = 0
  FREQOUT porta.3, 1000 */ $100, 115 */ $100	' BUZZER SESİ
  lcdout $FE, 1,"YANLIS ANAHTAR"
  lcdout $FE, $C0,"TEKRAR DENEYIN"
  pause 1000
  lcdout $FE,1
  GOTO Main

Tag_Found:

IF tagNum = 1 then displayName1

IF tagNum = 2 then displayName2

GOTO Main

displayName1:
lcdout $FE, 1,"  name_1"    
lcdout $FE, $C0, "GIRIS BASARILI"
pause 1000       'BEKLE, 5 SN SONRA EKRANI TEMİZLE
goto open_door

displayName2:
lcdout $FE, 1,"  name_2"   	
LCDout $FE, $C0," GIRIS BASARILI"
pause    1000    'BEKLE, 5 SN SONRA EKRANI TEMİZLE
goto open_door   ' ETIKETE GİT

open_door:
  HIGH portb.2      ' KİLİDİ AÇ
  pause 500         ' 500 MS BEKLE
  LOW portb.2		' KİLİDİ KAPAT
  Low portb.3		' LEDİ SÖNDÜR
  GOTO Main

mur@t

serin2 komutu RCSTA registerini set ediyordur zaten.

Kullandığınız modül nedir? çıkışı RS232 mi? TTL mi?



OG

Alıntı yapılan: mur@t - 17 Haziran 2014, 11:24:47
serin2 komutu RCSTA registerini set ediyordur zaten.
Emin değilim, etmiyor olabilir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

mur@t

Açıkcası picbasic kullanmayalı çok uzun zaman oldu, ama uart için başka bir komut yok diye hatırlıyorum.

@kaganayanoglu
RFID'nin datasında datanın invert olduğu yazıyor, serin2'de 84 yerine 16468 yazıp dener misiniz?