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

📄 main.c

📁 此程序为13.56MHz的RFID底层读写卡程序
💻 C
字号:
                                                                                                                                                                                                                                                                                    #include "Hardware.h"
#include "RcComm.h"
#include "PcdShare.h"
#include "PcdUtils.h"
#include "MfReg.h"
#include "MfRc500.h"
#include "MfErrNo.h"
#include "cardhead.h"
#include <intrins.h>
#include <string.h>
#include "X5045.h"
#include "newcard.h"
/*********************************************/
  extern unsigned char ResetAllCard(void);
  extern unsigned char RfSwitchOff(void);
  extern unsigned char InitPcd(void);
  extern char OpenRC(void);
  extern void CloseRC(void);
  extern char PcdReadE2(unsigned short startaddr,
               unsigned char length,
               unsigned char * DataBuffer);

/*******************************************/




extern void CommTransact(void);
extern void TestLoop(void) ;   //2002.9.11   老化测试


int_0()  interrupt 0 //using 3
{

	SingleResponseIsr();
}

/////////////////////////////////////////////////////////////////////////////

extern uchar xdata ComBuffer[MAXLEN];
uchar  idata  ComCount;



main()
{

         uchar RDataTemp;
         uchar flag=0;

        if(flag)
        {

                ResetAllCard();
                RfSwitchOff();
                InitPcd();
                OpenRC();
                CloseRC();
                PcdReadE2(00,10,ComBuffer);
                PcdClose();
        }



       AUXR=0X00;
       //PMR=0X01;
       init_X5045(0X00);
       SetBaud(Baud115200);
       PcdOpen();
       Beep(3,100);
       SleepMs(50);
       W_DOG();
       Mf500PcdConfig();
       Reset1();
       TestLoop();
       SleepMs(50);

       while(1)
        {
	  W_DOG();
	  ComCount++;
	  if(ComCount>MAXLEN)
	  {
	    ComCount=1;
	    memset(ComBuffer,0x00,4);
	  }

         while(RI==0)
          {
	    W_DOG();
	  }

	  RI=0;

	  RDataTemp=SBUF;
	  if((ComCount==1) && (RDataTemp==STX))
	  { /* Check STX */
	    ComBuffer[ComCount-1]=STX;

	    continue;
	  }

	  if((ComCount==1) && (RDataTemp!=STX))
	  {
	    ComCount=MAXLEN;
	    continue;
	  }

	  if(ComCount==2)
	  {
	    if(RDataTemp>(MAXLEN-3))
	    {         /*len error*/
	       ComCount=MAXLEN;              /*Set ComCount>Maxlen*/
	       SleepMs(2);                   /*上位机发送的数据长度过大,整个数据包长度大于MAXLEN*/
	       SendMsError();
	    }
	    else
	    {
	      ComBuffer[1]=RDataTemp;
	    }
	    continue;
	  }

	  if((ComCount>2)&&(ComCount<=(ComBuffer[1]+3)))
	  {  /*get command */
	      ComBuffer[ComCount-1]=RDataTemp;
	      continue;
	  }

	  if(ComCount==(ComBuffer[1]+4))
	  {
	     if(RDataTemp==ETX)
	     {
                ComBuffer[ComCount-1]=RDataTemp;     //结束字节送入ComBuffer[]
	     	if((CheckCRC())!=CrcOK)
	     	{

	     	  SendMsError();
	     	}
	     	else
	     	{    
	     	  CommTransact();
	        }
	     }
	     else SendMsError();

	     ComCount=MAXLEN;
	  }
       }
}






⌨️ 快捷键说明

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