Hi! Check that!
CHAR OpenRC(void) {
CHAR status = MI_OK;
MFRC_RST_IO = 0; // Set reset pin low
MFRC_RST_TRIS = 0; // Set reset pin as output
MFRC_INT_TRIS = 1; // Set interrupt input
MFRC_INT_EDGE = 1; // interrupt on raising edge
MFRC_INT_IP = 0; // low priority int.
CMCON = 0x07; // Turn comparators off
ADCON0 = 0x0F; // All digital IO
ADCON1 = 0x0F;
MFRC_NRD_IO = 1;
MFRC_NRD_TRIS = 0;
MFRC_NWR_IO = 1;
MFRC_NWR_TRIS = 0;
MFRC_ALE_IO = 0; // disable address select
MFRC_ALE_TRIS = 0; // Set ALE pin as an output
READER_INT_CLEAR;
return status;
}
///////////////////////////////////////////////////////////////////////////////
// Close Reader Communication
///////////////////////////////////////////////////////////////////////////////
void CloseRC(void) {
MFRC_NRD_IO = 1; // disable read
MFRC_NWR_IO = 1; //disable write
READER_INT_CLEAR; // clear interrupt
READER_INT_DISABLE; // disable interrupt
READER_RESET; // hold reader on reset
}
/* Select address */
void AddrSelRC(BYTE Address){
MFRC_LPT_IO = Address; // set address
MFRC_LPT_TRIS = 0x00; // set direction MFRC_LPT_IO as output
MFRC_ALE_IO = 1; // enable address select
Nop();
MFRC_ALE_IO = 0; // disable address select
}
/* Write one byte to the reader IC address space
* -o address (IN) reader ic register address
* -o value (IN) 8 bit value
* return: none
*
* This function determines the necessary page address of the
* reader module and writes the page number to the page
* register and the value to the specified address.
*/
void WriteRawRC(BYTE Address, BYTE value) {
AddrSelRC(Address); // Select address
MFRC_LPT_IO = value; // send data
MFRC_LPT_TRIS = 0x00; // set direction MFRC_LPT_IO as output
MFRC_NWR_IO = 0; // enable write
Nop();
MFRC_NWR_IO = 1; // disable write
}
/* Write one byte to the reader IC address space
* -o address (IN) reader IC register address
* return: value 8 bit data, read from the reader ic address space
*
* This function determines the necessary page address of the
* reader module and writes the page number to the page
* register and reads the value from the specified address.
*/
BYTE ReadRawRC(BYTE Address) { //RegPage=0x00
BYTE response;
AddrSelRC(Address); // Select address
MFRC_LPT_TRIS = 0xFF; // set input
MFRC_NRD_IO = 0; // set read
Nop();
response = MFRC_LPT_PORT;// get address file value
MFRC_NRD_IO = 1; // disable read
return response;
}