manniru
10/8/2013 - 7:45 AM

PIC Lesson: RDM6300 RFID Module

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);
}