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

📄 mcpu.c

📁 利用NXP的新一代高集成度的芯片RC500完成Mifare系列卡的读写
💻 C
字号:
#include "normal.h"
#include "mcpu.h"

unsigned char idata cddat[60];


void sound(bit Sond)			    //声音
{
  uchar i;
  SOUND = Sond;
  for(i=0;i<20;i++)
  {
  	delay_50us(2);
  }
  SOUND = 1;
  for(i=0;i<20;i++)
  {
  	delay_50us(2);
  }
}


void getmifmm(unsigned char *Nkey_a)		//设置密码
{
	Nkey_a[0]=0xff;
	Nkey_a[1]=0xff;
	Nkey_a[2]=0xff;
	Nkey_a[3]=0xff;
	Nkey_a[4]=0xff;
	Nkey_a[5]=0xff;
}





unsigned char FindCard(unsigned char *serial_num)	     //寻卡,得到卡号
{
	unsigned char st;
	st=mif_request2(0,&serial_num[0]);
	if(st!=0) st=mif_request2(1,&serial_num[0]);
	if(st!=0) return 1;
	st=mif_anticoll(0,&serial_num[0]);
	if(st!=0) return 2;
	st=mif_select(&serial_num[0]);
	if(st!=0) return 3;

	return 0;
}

unsigned char ChPwd(unsigned char Snr,unsigned char *serial_num)	  
{
	unsigned char st;
	unsigned char Nkey_a[6];
	getmifmm(&Nkey_a[0]);
	st=mif_load_key(&Nkey_a[0]);
	if(st!=0) return 5;
	st=mif_authentication(1,Snr,&serial_num[0]);
	if(st!=0) return 6;
	return 0;
}


void InitRC500(bit Sond)
{
	sound(Sond);
	RFRST=1;
	sound(Sond);
	RFRST=0;
	sound(Sond);
	mif_config();    //模块初始化
}




void main( )
{
	unsigned char idata st,s_num;							//返回值和扇区号
	unsigned char idata serial_num[5];				//有个校验字节


	InitRC500(0);

     while ( 1 )
   {


	s_num = 01;//读1号区数据
	st=FindCard(&serial_num[0x00]);
	if(st!=0) 
          {   
 
  sound(1);
  continue;
          }
	st=ChPwd(s_num,&serial_num[0x00]);
	if(st!=0) 
          {  
  sound(1);
  continue;
          }
	st=mif_Read((s_num * 4 + 1),&cddat[5]);
	if(st==0) 
          {    
  sound(0);
  continue;
          }
   }
 
}

⌨️ 快捷键说明

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