Sistema RFID Pic 18f4550

sistema RFID Pic 18f4550. Almacena tags en EEPROM de pic . Utiliza Lector RF ID GP8f-r2. ###CODIGO### #define lcdport

Views 148 Downloads 29 File size 198KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

sistema RFID Pic 18f4550. Almacena tags en EEPROM de pic . Utiliza Lector RF ID GP8f-r2.

###CODIGO###

#define lcdport LATD

//bits del puerto D seran los bits de LCD

#define rs LATA.F0

//bit 0 de puerto A sera RS

#define rw LATA.F1

//bit 1 de puerto A sera RV

#define en LATA.F2

//bit 2 de puerto A sera EN

#define enable_int_global INTCON.GIE=1 #define disable_int_global INTCON.GIE=0 #define enable_int_externa INTCON.INT0IE=1

//habilita interrupcion global //deshabilita interrupcion global //Habilita interrupcion externa por RB0

#define enable_int_externa1 INTCON3.INT1IE=1 //Habilita interrupcion externa por RB1 #define disable_int_externa1 INTCON3.INT1IE=1 //Deshabilita interrupcion externa por RB1 #define disable_int_externa INTCON.INT0IE=0

//Deshabilita interrupcion externa por RB0

#define bandera_int_externa INTCON.INT0IF //bandera interrupcion externa en RB0 #define bandera_int_externa1 INTCON3.INT1IF //bandera interrupcion externa en RB1 #define Pin_Led_Lectura PORTE.F0 //Led de lectura en RE0 #define Pin_Led_Borrar PORTE.F1 //Led de lectura en RE1 #define Pin_Led_Nuevo PORTE.F2 //Led de lectura en RE2 #define Pin_Led_Prueba PORTA.F3 //Led de Prueba en RB7

void lcd_ini();

//inicializa LCD

void lcdcmd(unsigned char); void lcddata(unsigned char); void modoLectura(); void msj_modoBorrar(); void msj_modoNuevo(); void msj_TagBorrado(); void msj_TagGuardado(); void msj_TagNoExistente(); void msj_TagExistente(); void msj_AccesoHabilitado(); void msj_AccesoNoHabilitado(); void iniciarEEPROM();

void nuevoTag(char tagID[12]); void leerpuertoserie (); void borraTag(char tagID[12], int pos); void buscarTag(char tagID[12]); bit Led_Lectura; bit Led_Borrar; bit Led_Nuevo; bit Led_Prueba; int m = 0; int i=0; int j=0; int ii=0; int corte=0; int direccion; int tagencontrado=0; int posEncontrada=0; int nuevo=0; int borrar=0; char tagID[12]; unsigned char msj1[]="Modo Lectura"; unsigned char msj2[]="Ingrese TAG"; unsigned char msj3[]="Acceso Habilitado"; unsigned char msj4[]="Acceso No habilitado"; unsigned char msj5[]="Tag Guardado"; unsigned char msj6[]="Nuevo Tag"; unsigned char msj7[]="Ingrese TAG a borrar"; unsigned char msj8[]="Tag Existente"; unsigned char msj9[]="Tag Borrado"; unsigned char msj10[]="Tag No Existente";

void interrupt(){

//Vector de interrupciones

if(bandera_int_externa == 1){ bandera_int_externa = 0; Pin_Led_Nuevo = ~Led_Nuevo;

// Si ocurrio una interrupcion externa que viene del puerto RB0 (Tag_Nuevo)

Pin_Led_Borrar = 0; Pin_Led_Lectura = 0; Delay_10ms(); nuevo=1;

//Habilito bandera para nuevo registro

borrar=0; }

if(bandera_int_externa1 == 1){ /// Si ocurrio una interrupcion externa que viene del puerto RB1 (Borrar Tag) bandera_int_externa1 = 0; Pin_Led_Nuevo = 0; Pin_Led_Borrar = ~Led_Borrar; Pin_Led_Lectura = 0; Delay_10ms(); borrar=1;

//Habilito bandera para borrar registro

nuevo=0; } }

void config(){ OSCCON=0b01110111; ADCON1 |= 0x0F; CMCON |= 7;

enable_int_externa; enable_int_externa1; enable_int_global; TRISE = 0x00; TRISD=0; LATD=0; TRISA=0; LATA=0; PORTB = 0x00; //TMR0 activado, prescaler 1:2 // T0CON = 0b10000000;

UART1_Init(9600); Delay_ms(100);

// Inicializo Modulo UART a 9600 bps // Espero estabilizacion de UART

}

void main() { config(); modoLectura(); // iniciarEEPROM(); //esta funcion limpia eeprom while(1) { if (borrar==1) { msj_modoBorrar(); while (borrar==1) { leerpuertoserie(); //lee puerto serie y almacena en arreglo tagID if (i==12) { //Si recolecto los 12 digitos del tag ID, Intenta borrrar tag buscarTag(tagID); if (tagencontrado==1){ borraTag(tagID, posencontrada); //paso ID a borrar y posicion msj_TagBorrado(); } else { msj_TagNoExistente(); //no se puede borrar porque el tag no existe } i=0; borrar=0; } } Delay_1sec(); modoLectura(); }

if (nuevo==1) { msj_modoNuevo();

while (nuevo==1) { leerpuertoserie(); //lee puerto serie y almacena en arreglo tagID if (i==12) { //Recolecto los 12 d