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

📄 main.c

📁 RC500的全部操作,读卡
💻 C
字号:
#include <REGX52.H>

#include <string.h>
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>

#include <RC500Err.h>
#include <RC500Reg.h>
#include <RC500.h>

void printchar(unsigned char ch)
{
	if(ch>=0&&ch<=9) ch=ch+'0';
	else if(ch>=10&&ch<=15) ch=ch+'A'-10;
	putchar(ch);
}
void printhex(unsigned char hex)//以十六进制格式输出1个字节
{
	unsigned char c;
	c=hex;
	c=c>>4;
	printchar(c);
	c=hex;
	c=c&0x0F;
	printchar(c);
}
void CardLoop()
{
	unsigned char p[4];
	unsigned char sn[4];
	unsigned char type;
	unsigned char i;

	if(M500PiccCommonRequest(PICC_REQIDL,p)!=0)	//寻卡
		return;			//无卡时退出
	if(p[0]==2)
		type=MifareProCard;     // Mifare Pro 卡
	else if(p[0]==4)
		type=MifareOneCard;       // Mifare One 卡
	else if(p[0]==16)
		type=MifareLightCard;   // Mifare Light 卡
	else
		return;			//未知
	if(M500PiccCascAnticoll(0,sn)!=0)		//卡防冲突
		return;
	if(M500PiccCascSelect(sn,p)!=0)	//选择卡
		return;
	M500PiccHalt();		//终止卡操作
	SPK=0;
	LED=0;
	printf("SN is 0x");
	for(i=0;i<4;i++)
		printhex(sn[i]);
	putchar('\n');
	delay_ms(200);
	SPK=1;
	LED=1;
	delay_ms(50);
}

void init(void)
{
	LED=0;
	SPK=0;

	TMOD=0x0F;
	TMOD=0x20;
	TH1=0xFD;
	SCON=0x50;
	PCON=0x00;
	TR1=1;
	TI=1;
	EA=1;

	printf("Start\n");

 	MfConfig();

	delay_ms(200);
	SPK=1;
	LED=1;
}

void main()
{
	init();
	for(;;)
		CardLoop();
}

⌨️ 快捷键说明

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