⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是一个单片机与MFRC522通信的程序
💻 C
字号:
#include "lpcreg.h"
#include "main.h"
#include "mfrc522.h"

unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反 
unsigned char code data2[4]  = {0x12,0,0,0};
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 

unsigned char g_ucTempbuf[20];                        

void main( )
{    
     unsigned char status;
     InitializeSystem( );
//         LED_GREEN = 0;
 //    while(1){}
     PcdReset();
     PcdAntennaOff(); 
     PcdAntennaOn();  
	      M500PcdConfigISOType( 'A' );
     while ( 1 )
     {   
   //    PcdAntennaOff();
 	//    status = 23 ;
         status = PcdRequest(PICC_REQALL, g_ucTempbuf);
         if (status != MI_OK)
         {    
//		      LED_GREEN = 1; //!LED_GREEN;
			  continue;
         }
//         LED_GREEN = 0;
         
         status = PcdAnticoll(g_ucTempbuf);
         if (status != MI_OK)
         {    continue;    }

         status = PcdSelect(g_ucTempbuf);
         if (status != MI_OK)
         {    continue;    }
         
         status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);
         if (status != MI_OK)
         {    continue;    }
         
         status = PcdWrite(1, data1);
         if (status != MI_OK)
         {    continue;    }
         
         status = PcdValue(PICC_DECREMENT,1,data2);
         if (status != MI_OK)
         {    continue;    }
         
         status = PcdBakValue(1, 2);
         if (status != MI_OK)
         {    continue;    }
         
         status = PcdRead(2, g_ucTempbuf);
         if (status != MI_OK)
         {    continue;    }
         
		 PcdHalt();
  //            PcdAntennaOff(); 

    }
}


/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
    P0M1 = 0x0; P0M2 = 0x0;
    P1M1 = 0x0;	P1M2 = 0x0;                      
    P3M1 = 0x0; P3M2 = 0xFF; 
    P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;
}

/////////////////////////////////////////////////////////////////////
//用T2做延时子程序
/////////////////////////////////////////////////////////////////////
void DelayMs(unsigned int _MS)
{
    TH1 = (unsigned char)(RCAP2_1ms>>8);
    TL1 = (unsigned char)(RCAP2_1ms);

    ET1     = 0; 	                                   // Disable timer2 interrupt
    TR1     = 1;
    while (_MS--)
    {  
        while (!TF1);
		TF1 = 0;
        TH1 = (unsigned char)(RCAP2_1ms>>8);
        TL1 = (unsigned char)(RCAP2_1ms);
	}
    TR1 = 0;
}

   
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -