#include "../src/rc522.h" #include #include "../lib/usart/src/usart.h" #include "string.h" #define uchar unsigned char #define uint unsigned int #define MAX_LEN 16 const int chipSelectPin = 10; const int NRSTPD = 5; uchar serNum[5]; uchar writeDate[16] ={'T', 'e', 'n', 'g', ' ', 'B', 'o', 0, 0, 0, 0, 0, 0, 0, 0,0}; uchar sectorKeyA[16][16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, }; uchar sectorNewKeyA[16][16] = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, }; int main() { usart::init(1000000); printf("Hello"); MFRC522_Init(); while(1) { uchar i; uchar status; uchar str[MAX_LEN]; uchar RC_size; uchar blockAddr; //Select the address of the operation 0~63 // searching card, return card type status = MFRC522_Request(PICC_REQIDL, str); if (status == MI_OK) { } status = MFRC522_Anticoll(str); memcpy(serNum, str, 5); if (status == MI_OK) { printf("The card's number is : %x%x%x%x%x%x\n\r", serNum[0], serNum[1], serNum[2], serNum[3], serNum[4]); } // select card, return card capacity RC_size = MFRC522_SelectTag(serNum); if (RC_size != 0) {} // write data card blockAddr = 7; // data block 7 status = MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], serNum); // authentication if (status == MI_OK) { // write data status = MFRC522_Write(blockAddr, sectorNewKeyA[blockAddr/4]); printf("set the new card password, and can modify the data of the Sector: "); printf("%i", blockAddr/4); // write data blockAddr = blockAddr - 3 ; status = MFRC522_Write(blockAddr, writeDate); if(status == MI_OK) { printf("OK!\n\r"); } } // read card blockAddr = 7; // data block 7 status = MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], serNum); // authentication if (status == MI_OK) { // read data blockAddr = blockAddr - 3 ; status = MFRC522_Read(blockAddr, str); if (status == MI_OK) { printf("Read from the card ,the data is : \n\r"); for (i=0; i<16; i++) { printf("%c", str[i]); } printf("\n\r"); } } printf("\n\r"); MFRC522_Halt(); // command card into sleeping mode } }