hola a todos, primero que todo quiero agradecer a este foro por dar la posibilidad de aprender y asi mismo mostrar nuestras dudas.
Les cuento: lo que estoy intentando hacer es comunicar el lector rfid id-20 de innovations con el pic 16f628a, los datos que recibo del lector rfid es en formato ascii TTL Data (inverted),los datos que recibo corresponden al id (identificacion) del Tag. Una ves recibido el dato (id tag en formato ascii) lo quiero almacenar en la eeprom del pic, para posteriormente cuando vuelva a ingresar el tag el pic me compare si es el mismo id que almacene en la eeprom y si es igual,que el programa ejecute otra accion, en este caso enviar una palabra por otro pin del pic hacia el puerto serie del pc para poder visualizar.
Estoy ocupando la instruccion SERIN para poder registrar el id en formato ascii en el microcontrolador en la memoria eeprom,pero no obtengo resultado ya que en el programa al visualizar en el pc me aparece solo AUTO1 independiente del tag que registre.
Alomejor tengo que ocupar serin2 pero no lo tengo muy claro. por favor si me pueden ayudar a poder recibir estos datos ascii.
desde ya muchs gracias por su tiempo y disposicion al que comente el tema.
Esta es la forma de salida del lector en formato ascii.
Output Data Structure – ASCII
STX (02h) - DATA (10 ASCII) - CHECK SUM (2 ASCII) - CR - LF - ETX (03h)
[The 1byte (2 ASCII characters) Check sum is the “Exclusive OR” of the 5 hex bytes (10 ASCII) Data characters.]
El programa que hice es el siguiente y esta en basic.
include "modedefs.bas"
auto1 var byte
auto2 var byte
auto11 var byte
auto12 var byte
id var byte
led var portb.2
inicio:
serin portb.0,N9600,auto1
pause 500
WRITE 10,auto1 ;guardar en la EEPROM0 el valor de auto1
read 10,auto11
if auto1=0 then inicio
inicios:
serin portb.0,N9600,auto2
pause 500
WRITE 11,auto2 ;guardar en la EEPROM1 el valor de auto2
read 11,auto12
if auto2=0 then inicios
interrupcion:
ON INTERRUPT GOTO envia
INTCON=%10010000
prog:
high led
pause 200
low led
pause 200
goto prog
disable
envia:
serin portb.0,N9600,id
pause 500
if id=auto11 then
serout portb.1,N2400,["AUTO1"]
else
serout portb.1,N2400,["auto1no"]
if id=auto12 then
serout portb.1,N2400,["AUTO2"]
else
serout portb.1,N2400,["auto2no"]
endif
endif
id=0
INTCON=%10010000
RESUME
ENABLE
goto interrupcion
END