PIC Lesson: RDM6300 RFID Module
/*
Project: RDM6300 RFID Module
Programmer: Shahrulnizam Mat Rejab
PIC: PIC18F46K22
Crystal Frequency: Internal 16MHz
Compiler: HI-TECH C for PIC18 V9.80
Last Modified: 31 December 2013
Website: http://shahrulnizam.com
*/
#define TIMER0
#define UART
#define UART_BUFFER 50
#define COUNT 500
#define SHAHRULNIZAM
#include "LibraryHardware.h"
#include "LibraryPeripheral.h"
#include "LibraryUniversalDisplay.h"
unsigned char data1[UART_BUFFER],data2[UART_BUFFER],z[2],temp[20];
unsigned int counter[2],available[2];
static void interrupt isr(void)
{
if(RCIF==1){
counter[0]=0;
data1[z[0]]=uart1_read();
if(z[0]<UART_BUFFER-2) z[0]++;
available[0]=z[0];}
if(RC2IF==1){
counter[1]=0;
data2[z[1]]=uart2_read();
if(z[1]<UART_BUFFER-2) z[1]++;
available[1]=z[1];}
if(TMR0IF==1){
TMR0IF=0;
if(counter[0]<COUNT) counter[0]++;
else z[0]=0;
if(counter[1]<COUNT) counter[1]++;
else z[1]=0;}
}
void setup()
{
int i;
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b10000000;
TRISD=0b10000000;
TRISE=0b00000000;
timer0(0);
enable_tmr0();
enable_rc1();
enable_rc2();
BUZZER=1;
uart1_init(9600);
uart2_init(9600);
z[0]=0;
z[1]=0;
data1[0]=0;
data2[0]=0;
counter[0]=0;
counter[1]=0;
for(i=0;i<20;i++) temp[i]=0;
while(1) loop();
}
void loop()
{
int i=0,j=0;
if((data1[0]!=0)&&(counter[0]==COUNT)){
j=0;
for(i=1;i<available[0]-1;i++){
if(temp[i]!=data1[i]) j=1;}
if(j==1){
BUZZER=0;
delay(100);
for(i=1;i<available[0]-1;i++){
uart2_write(data1[i]);
temp[i]=data1[i];}
uart2_string("\r");
BUZZER=1;}
data1[0]=0;}
if((data2[0]!=0)&&(counter[1]==COUNT)){
for(i=0;i<available[0];i++) uart1_write(data2[i]);
data2[0]=0;}
delay(100);
}