#include <16f676.h>
#include <stdio.h>
#include <string.h>
#use delay (internal=4000000)
#fuses PROTECT,NOWDT,nobrownout,nomclr
#use rs232(baud=9600,rcv=PIN_C2,bits=8,parity=N,stream=RF2,errors)
#use rs232(baud=9600,rcv=PIN_C3,bits=8,parity=N,stream=RF1,errors)
#USE fast_io (A) // Optimizamos E/S del PORTB ( muy importante para ahorrar memoria )
#USE fast_io (C)
#BYTE porta= 0X05
#BYTE portc= 0X07
#define rele1 PIN_A1
#define rele2 PIN_C0
#define rele3 PIN_C1
#define acc PIN_C4
#define led PIN_A0
int32 Password1=9462401;
int32 Password2=9477245;
int32 Password3=9476881;
int32 Password4=9476831;
///////////////////////////////////////
// RAM
///////////////////////////////////////
//***********************************
// ******* funciones ********
//*****************************************
// INTERRUPCIONES :
// ***************************************
void main()
{
setup_adc_ports(NO_ANALOGS); // todos digitales
set_tris_A(0b00001000);
set_tris_C(0b00011100);
portc=(0x00);
porta=(0x00);
//printf("transmito");
int32 Num=0;
char caracter=0;;
char cadena[14];
int index = 0;
int flag =0;
int bascula=0;
output_LOW(rele1);
output_LOW(rele2);
output_LOW(rele3);
output_low(led);
delay_ms(100);
while(true)
{
//cadena=0;
if (flag==0)
{
caracter=0;
if (kbhit(RF1))
{
if(caracter == 0x02) //inicio de tag
{
index = 0;
flag=0;
}
else if(caracter == 0x03) // fin del tag
{
cadena[index] = '\0'; // finalizo la cadena
flag =1;
//fprintf(bt, "%s",&cadena);
}
else
{
cadena[index++]=caracter;
}
}
}
if (flag==1)
{
for(int i=4;i<10;i++)//
{
Num<<=4; //
if(cadena[i]>64)
{
Num+=((cadena[i])-55);//
}
else
{
Num+=((cadena[i])-48);//
}
//printf("%lu\r\n",Num);
}
// printf("%lu\r\n",Num);
if ((Num==Password1)||(Num==Password2)||(Num==Password3)||(Num==Password4))// 4 TARJETAS
{
if (INPUT(acc)) // SI ACCESORIOS =1
{
bascula++;
if(bascula==1)
{
output_high(rele2);// ABRE
//output_high(led);
delay_ms(1000);
output_low(rele2);
}
if(bascula==2) // CIERRA
{
output_high(rele1);
//output_low(led);
delay_ms(1000);
output_low(rele1);
bascula=0;
}
}
}
else
{
Num=0;
for (i=0;i<15;i++ ) // vaciar el buffer
{
cadena[i]=0x00;
}
}
Num=0;
flag=0;
}
} // while true
} //void main