'***********************************************************************************************
' Program: RFID Tag Reader With Picaxe 20M2
' Created Date: 2/10/2012
'***********************************************************************************************
'***{PROGRAM SETTINGS}**************************************************************************
#PICAXE 20M2
#NO_DATA
'#TERMINAL 9600
SETFREQ m16
INIT:
PAUSE 500
HI2CSETUP I2CMASTER,$C6,I2CSLOW,I2CBYTE
GOSUB Dispreset
GOSUB Dispinitial
'***********************************************************************************************
'***{RFID VARIABLES}****************************************************************************
SYMBOL RFID=c.0
SYMBOL RFIDbaud=T9600_16
'***********************************************************************************************
'***{EEPROM DATA}*******************************************************************************
POKE 30,0,0,0,4,4,6,2,7,7,6 'TAG1
POKE 40,0,0,0,4,4,2,7,1,2,9 'TAG2
POKE 50,0,0,0,4,4,4,9,9,3,3 'TAG3
POKE 60,0,0,0,4,4,4,9,3,8,6 'TAG4
POKE 70,0,0,0,4,4,6,2,8,0,4 'TAG5
'***********************************************************************************************
'***{EEPROM VARIABLES/CONSTANTS}****************************************************************
SYMBOL LASTTAG = 7 'THERE ARE 5 TAGS IN TOTAL
SYMBOL TAG0 = B0
SYMBOL TAG1 = B1
SYMBOL TAG2 = B2
SYMBOL TAG3 = B3
SYMBOL TAG4 = B4
SYMBOL TAG5 = B5
SYMBOL TAG6 = B6
SYMBOL TAG7 = B7
SYMBOL TAG8 = B8
SYMBOL TAG9 = B9
SYMBOL TAGNUM = B10
SYMBOL PNTR = B11 'EEPROM POINTER
SYMBOL CHAR = B12
SYMBOL REALTAGNUM=B13
SYMBOL REALTAGNUMASCII=B14
'FIRST NUMBER IN TAG
'***********************************************************************************************
'***{MAIN PROGRAM}******************************************************************************
MAIN:
SERIN RFID,RFIDbaud,TAG0,TAG0,TAG0,TAG1,TAG2,TAG3,TAG4,TAG5,TAG5,TAG5,TAG5,TAG6,TAG7,TAG8,TAG9
TAG0=TAG0-29//10
TAG1=TAG1-29//10
TAG2=TAG2-29//10
TAG3=TAG3-29//10
TAG4=TAG4-29//10
TAG5=TAG5-29//10
TAG6=TAG6-29//10
TAG7=TAG7-29//10
TAG8=TAG8-29//10
TAG9=TAG9-29//10
'***********************************************************************************************
'***{EEPROM PROGRAM}****************************************************************************
CHECKLIST:
FOR TAGNUM = 3 TO LASTTAG
PNTR = TAGNUM * 10 + 0 : PEEK PNTR, CHAR
IF CHAR <> TAG0 THEN BADCHAR
PNTR = TAGNUM * 10 + 1 : PEEK PNTR, CHAR
IF CHAR <> TAG1 THEN BADCHAR
PNTR = TAGNUM * 10 + 2 : PEEK PNTR, CHAR
IF CHAR <> TAG2 THEN BADCHAR
PNTR = TAGNUM * 10 + 3 : PEEK PNTR, CHAR
IF CHAR <> TAG3 THEN BADCHAR
PNTR = TAGNUM * 10 + 4 : PEEK PNTR, CHAR
IF CHAR <> TAG4 THEN BADCHAR
PNTR = TAGNUM * 10 + 5 : PEEK PNTR, CHAR
IF CHAR <> TAG5 THEN BADCHAR
PNTR = TAGNUM * 10 + 6 : PEEK PNTR, CHAR
IF CHAR <> TAG6 THEN BADCHAR
PNTR = TAGNUM * 10 + 7 : PEEK PNTR, CHAR
IF CHAR <> TAG7 THEN BADCHAR
PNTR = TAGNUM * 10 + 8 : PEEK PNTR, CHAR
IF CHAR <> TAG8 THEN BADCHAR
PNTR = TAGNUM * 10 + 9 : PEEK PNTR, CHAR
IF CHAR <> TAG9 THEN BADCHAR
GOTO TAGFOUND
BADCHAR:
NEXT
BADTAG:
GOSUB Dispreset
GOSUB Dispscaned
WAIT 8
GOSUB Dispreset
GOSUB Dispbadtag
WAIT 8
GOSUB Dispreset
GOSUB Dispinitial
GOTO MAIN
TAGFOUND:
GOSUB Dispreset
GOSUB Dispscaned
WAIT 8
GOSUB Dispreset
GOSUB Dispgoodtag
WAIT 8
GOSUB Dispreset
GOSUB Dispinitial
GOTO MAIN
'***********************************************************************************************
'***{Display Subroutines}***********************************************************************
Dispreset:
HI2COUT 0,(254,1,255)
PAUSE 30
HI2COUT 0,(254,128,255)
PAUSE 30
RETURN
Dispgoodtag:
REALTAGNUM = TAGNUM-2
BINTOASCII REALTAGNUM,REALTAGNUMASCII,REALTAGNUMASCII,REALTAGNUMASCII
HI2COUT 0,("Welcome User: ",REALTAGNUMASCII,255)
PAUSE 500
RETURN
Dispbadtag:
HI2COUT 0,("Unknown Card",255)
PAUSE 500
RETURN
Dispinitial:
HI2COUT 0,("Scan Card",255)
PAUSE 500
RETURN
Dispscaned:
HI2COUT 0,("Scanning Card",255)
PAUSE 500
RETURN
'***********************************************************************************************