亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rfmodulefunc.c

?? RC522完整程序無需修改可放心使用
?? C
字號:


#include <Reg52.H>
#include <string.h>
#include <INTRINS.H>
#include "RfModuleFunc.H"


//各延時定義
#define DELAY_TIME0					100
#define DELAY_TIME1					2500
#define DELAY_TIME2					3000
#define DELAY_TIME3					55000

#define	SPI_CMD_GET_VERSION			0x32	//讀機內版本號
#define SPI_CMD_GET_INFO			0x34	//讀取RF模塊固件信息序列號
#define SPI_CMD_SET_CONTROL_BIT		0x50	//設置RC500中的控制位
#define SPI_CMD_CLR_CONTROL_BIT		0x51	//清除RC500中的控制位
#define SPI_CMD_BUZZER				0x60	//輸出驅動無源蜂鳴器信號
//Mifare模塊基本命令部分
#define SPI_CMD_MIFARE_CONFIG		0x52	//復位且配置RC500
#define SPI_CMD_MIFARE_CLOSE		0x3F	//關閉RC500,使讀寫模塊進入掉電模式
#define SPI_CMD_MIFARE_REQUEST		0x41	//尋卡
#define SPI_CMD_MIFARE_ANTICOLL		0x42	//防沖突
#define SPI_CMD_MIFARE_ANTICOLL2	0x71	//防沖突2,允許多張卡進入
#define SPI_CMD_MIFARE_SELECT		0x43	//選擇卡
#define SPI_CMD_MIFARE_AUTH			0x44	//開始校驗密鑰
#define SPI_CMD_MIFARE_AUTH2		0x72	//可選擇密鑰區驗證
#define SPI_CMD_MIFARE_AUTHKEY		0x73	//直接校驗密鑰
#define SPI_CMD_MIFARE_HALT_CARD	0x45	//停止當前卡
#define SPI_CMD_MIFARE_READ			0x46	//讀卡
#define SPI_CMD_MIFARE_WRITE		0x47	//寫卡
#define SPI_CMD_MIFARE_INC			0x48	//增值操作
#define SPI_CMD_MIFARE_DEC			0x49	//減值操作
#define SPI_CMD_MIFARE_RESORE		0x4A	//將所訪問單元塊的字節數保存在卡的內部寄存器中
#define SPI_CMD_MIFARE_TRANS		0x4B	//將卡內部寄存器的內容轉輸到訪問快的字節數
#define SPI_CMD_MIFARE_VALUE		0x70	//增減值操作
#define	SPI_CMD_MIFARE_LOADKEY		0x4C	//改變存貯在EEPROM 中的密鑰
#define SPI_CMD_MIFARE_RESET_CARD	0x4E	//關閉天線輸出數ms 使卡復位
#define SPI_CMD_MIFARE_AUTHE2KEY	0x56	//從Mifare模塊的E2校驗密鑰
#define SPI_CMD_MIFARE_CHECK_WRITE	0x53	//將所傳送的數據和上一次所寫的數據進行比較
#define SPI_CMD_MIFARE_READ_E2		0x61	//讀RC500 內EEPROM 的內容
#define SPI_CMD_MIFARE_WRITE_E2		0x62	//寫數據到RC500 內EEPROM
//卡操作命令部分
#define SPI_CMD_SET_CARD_APP_SECTOR		0x80	//設置卡扇區應用參數
#define SPI_CMD_GET_CARD_APP_SECTOR		0x81	//讀取卡扇區應用參數
#define SPI_CMD_SET_BASE_KEY			0x82	//設置基密鑰
#define SPI_CMD_GET_BASE_KEY			0x83	//讀取基密鑰
#define SPI_CMD_GET_CARD_KEY			0x84	//取得卡密鑰
#define SPI_CMD_IS_CARD_IN				0x85	//是否有卡進入讀卡區
#define SPI_CMD_READ_COMPANY_INFO		0x86	//讀卡上公司信息
#define SPI_CMD_READ_CARDHOLDER_INFO	0x87	//讀卡上持卡人信息
#define SPI_CMD_READ_BUSINESS_INFO		0x88	//讀卡上交易數據(含卡恢復流程)
#define SPI_CMD_CONSUME					0x89	//消費
#define SPI_CMD_FILL					0x8A	//充值
#define SPI_CMD_READ_ORDER_DINNER_INFO	0x8B	//讀卡上訂餐信息
#define SPI_CMD_WRITE_ORDER_DINNER_INFO	0x8C	//寫訂餐信息到卡上
#define SPI_CMD_READ_TIME_COUNT_INFO	0x8D	//讀卡上計時消費信息
#define SPI_CMD_WRITE_TIME_COUNT_INFO	0x8E	//寫計時消費信息到卡上
#define SPI_CMD_SET_CARD_STATE			0x8F	//設置卡狀態
//============================管腳定義====================================
sbit   RF_RST   =  P2^6;
sbit   RF_CS    =  P3^2;       //INT0
sbit   RF_SCLK  =  P3^5;
sbit   RF_SDAT  =  P3^4;
#define   RF_OPEN()	 IE0=0;EX0=1;
#define	  RF_CLOSE() EX0=0;
//============================常量定義================================
#define RF_BUFFER_MAX_ZIAE		64		//不能超255,否則需加長度字節數
unsigned char pdata  Rf_Buffer[RF_BUFFER_MAX_ZIAE];
bit  newdata  = 0;

//BCC校驗計算
unsigned char GetBCC(unsigned char *Buffer, unsigned char Len)
{
	unsigned char value=0;
	while(Len--)
	{
		value ^= *Buffer;
		Buffer++;
	}
	return ~value;
}

//外部提供延時1ms的子程序
//extern Delay1ms(unsigned char _1ms);

extern void  do_nop(unsigned char Count);

void  Rf_Int0(void) interrupt 0 using 1  //rf_rcv(Rf_Buffer);
{
   unsigned char  Rf_count;
   unsigned char  i,j,ch;
   RF_SCLK = 0;
   RF_SDAT = 1;
   for(i=10;i--;);//delay;
   Rf_count= 0;
   while(!RF_CS)
   {
    for(i=0;i<8;i++)
      {
	   RF_SCLK = 1;ch <<=1;
	   ch |= RF_SDAT;for(j=2;j--;);//delay;
	   RF_SCLK = 0;for(j=2;j--;);//delay;
	  }
	Rf_Buffer[Rf_count]= ch;
	if(++Rf_count>=RF_BUFFER_MAX_ZIAE)break;
   }
   RF_SDAT = 0;
   newdata = 1;
}


void  Rf_Init(void)
{
	EA  =  0;

	IP  &= ~0X01;     //X0優先級0
	//IPH &= ~0X01;
	IT0 = 1;        //INT1 is falling edg trig

	EA  =  1;

	RF_CS   = 1;
	RF_SCLK = 0;
	RF_SDAT = 0;
//	模塊復位(模塊已由外部阻容電路復位)
//	RF_RST = 0; Delay1ms(45);
//	RF_RST = 1; Delay1ms(45);
}


unsigned char  Rf_Send(unsigned char *buf,unsigned char Count)
{
    unsigned char  i,j,ch;

	RF_CLOSE();

	RF_SDAT  = 1;
	RF_SCLK  = 0;

    i=200;
    while(RF_SDAT) i--;
	if(!i) return(RF_ERR);

	RF_CS  = 0;

    i=200;
    while(!RF_SDAT) i--;
	if(!i) return(RF_ERR);

	for(i=0;i<Count;i++)
    {
	 ch=buf[i];
	 for(j=0;j<8;j++)
	  {
	   RF_SDAT = (bit)(ch&0x80);do_nop(1);
	   RF_SCLK = 1;do_nop(3);
	   RF_SCLK = 0;ch<<=1;do_nop(1);
	  }
	}

	RF_CS    = 1;
	RF_SDAT  = 0;
	//TR1    = 0;
    return(MI_OK);
}

unsigned char Rf_Command(unsigned int DelayTime)
{
	unsigned char Len,BCC_Value;

	Len = Rf_Buffer[LENGTH] + 3;	//計算總長度
	Rf_Buffer[Len]=GetBCC(Rf_Buffer,Len);	//計算BCC
	if(Rf_Send(Rf_Buffer,Len+1)!=MI_OK) return RF_ERR;   
	RF_OPEN();
	while(!newdata && DelayTime)  DelayTime--;
	RF_CLOSE();
	if(newdata==0)  return RF_ERR;  //接收超時判斷
	newdata=0;
	Len = Rf_Buffer[LENGTH] + 3;	//計算總長度(不含BCC)
	BCC_Value=GetBCC(Rf_Buffer,Len);	//計算BCC
    if(BCC_Value == Rf_Buffer[Len])
		return RF_OK;
	return MI_CRCERR;
}



//=========================卡操作基本函數=================================
unsigned char mifs_request(unsigned char _Mode,unsigned char *_TagType)
{
	Rf_Buffer[SEQNR]=1;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_REQUEST;
	Rf_Buffer[LENGTH]=0x01;
	Rf_Buffer[MODE]=_Mode;
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
	
	if(Rf_Buffer[STATUS]==MI_OK)
	{
	  _TagType[0]=Rf_Buffer[TAGTYPE];
	  _TagType[1]=Rf_Buffer[TAGTYPE+1];
	}
	return Rf_Buffer[STATUS];
}


unsigned char mifs_anticoll(unsigned char _Bcnt,unsigned char *_SNR)
{
	Rf_Buffer[SEQNR]=1;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_ANTICOLL;
	Rf_Buffer[LENGTH]=0x01;
	Rf_Buffer[MODE]=_Bcnt;
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;

	if(Rf_Buffer[STATUS]==MI_OK)
	{
		memcpy(_SNR,&Rf_Buffer[SERNR],4);
	}
	return Rf_Buffer[STATUS];
}


unsigned char mifs_select(unsigned char *_SNR,unsigned char *_Size)
{
	Rf_Buffer[SEQNR]=1;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_SELECT;
	Rf_Buffer[LENGTH]=0x04;
	memcpy(&Rf_Buffer[SERNR],_SNR,4);
		
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
		
	if(Rf_Buffer[STATUS]==MI_OK)
	{
		*_Size=Rf_Buffer[SIZE];
	}
	return Rf_Buffer[STATUS];
}

unsigned char mifs_authentication(unsigned char _Mode,unsigned char _SecNr)
{
	Rf_Buffer[SEQNR]=1;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_AUTH;
	Rf_Buffer[LENGTH]=0x02;
	Rf_Buffer[MODE]=_Mode;
	Rf_Buffer[SECNR]=_SecNr;
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
	
	return Rf_Buffer[STATUS];	
}


unsigned char mifs_halt(void)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_HALT_CARD;
	Rf_Buffer[LENGTH]=0x00;
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
	
	return Rf_Buffer[STATUS];
}

unsigned char mifs_read(unsigned char _Adr,unsigned char *_Data)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_READ;
	Rf_Buffer[LENGTH]=0x01;
	Rf_Buffer[ADR]=_Adr;
		
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
		
	if(Rf_Buffer[STATUS]==MI_OK)
		memcpy(_Data,&Rf_Buffer[DATABYTES-1],16);
	return Rf_Buffer[STATUS];		
}

unsigned char mifs_load_key(unsigned char _Mode,unsigned char _SecNr,unsigned char *_Nkey)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_LOADKEY;
	Rf_Buffer[LENGTH]=0x08;
	Rf_Buffer[MODE]=_Mode;
	Rf_Buffer[SECNR]=_SecNr;
	memcpy(&Rf_Buffer[NKEY],_Nkey,6);
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
	
	return Rf_Buffer[STATUS];
}

unsigned char mifs_reset(unsigned char _Msec)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_MIFARE_RESET_CARD;
	Rf_Buffer[LENGTH]=1;
	Rf_Buffer[TIME]=_Msec;
	
	if(Rf_Command(DELAY_TIME1)!=MI_OK) return RF_ERR;
	
	return Rf_Buffer[STATUS];
}


char SetCardApplicationSector(sttCardStruct *pstCardStruct)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_SET_CARD_APP_SECTOR;
	Rf_Buffer[LENGTH]=16;
	memcpy(&Rf_Buffer[DATA],pstCardStruct,16);
	if(Rf_Command(DELAY_TIME0)!=MI_OK)return RF_ERR;
	return Rf_Buffer[STATUS];
}


char ReadCardholderInfo(unsigned char CardSerialNo[],
						unsigned char AuthMode,
						unsigned char Key[],
					    sttCardholderInfo *pstCardholderInfo)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_READ_CARDHOLDER_INFO;
	Rf_Buffer[LENGTH]=11;
	memcpy(&Rf_Buffer[DATA],CardSerialNo,4);
	Rf_Buffer[DATA+4] = AuthMode;
	memcpy(&Rf_Buffer[DATA+5],Key,6);
	if(Rf_Command(DELAY_TIME2)!=MI_OK) return RF_ERR;
	if(Rf_Buffer[STATUS]==MI_OK)
		memcpy(pstCardholderInfo,&Rf_Buffer[DATA],41);
	return Rf_Buffer[STATUS];
}


char ReadBusinessInfo(unsigned char CardSerialNo[],
					  unsigned char AuthMode,
					  unsigned char Key[],
					  sttBusinessInfo *pstBusinessInfo)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_READ_BUSINESS_INFO;
	Rf_Buffer[LENGTH]=23;
	memcpy(&Rf_Buffer[DATA],CardSerialNo,4);
	Rf_Buffer[DATA+4] = AuthMode;
	memcpy(&Rf_Buffer[DATA+5],Key,18);
	if(Rf_Command(DELAY_TIME3)!=MI_OK) return RF_ERR;
	if(Rf_Buffer[STATUS]==MI_OK)
		memcpy(pstBusinessInfo,&Rf_Buffer[DATA],44);
	return Rf_Buffer[STATUS];
}


char SetCardState(unsigned char CardSerialNo[],
				  unsigned char AuthMode,
			      unsigned char Key[],
				  unsigned char State)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_SET_CARD_STATE;
	Rf_Buffer[LENGTH]=12;
	memcpy(&Rf_Buffer[DATA],CardSerialNo,4);
	Rf_Buffer[DATA+4] = AuthMode;
	memcpy(&Rf_Buffer[DATA+5],Key,6);
	Rf_Buffer[DATA+11] = State;
	if(Rf_Command(DELAY_TIME2)!=MI_OK) return RF_ERR;
	return Rf_Buffer[STATUS];
}


char Fill(unsigned char CardSerialNo[], 
		  sttBusinessInfo *pstBusinessInfo)
{
	Rf_Buffer[SEQNR]=0;
	Rf_Buffer[COMMAND]=SPI_CMD_FILL;
	Rf_Buffer[LENGTH]=20;
	memcpy(&Rf_Buffer[DATA],CardSerialNo,4);
	memcpy(&Rf_Buffer[DATA+4],&pstBusinessInfo->stFillInfo,18);
	if(Rf_Command(DELAY_TIME3)!=MI_OK) return RF_ERR;
	if(Rf_Buffer[STATUS]==MI_OK)
		memcpy(pstBusinessInfo,&Rf_Buffer[DATA],22);
	return Rf_Buffer[STATUS];
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲短视频| 精品第一国产综合精品aⅴ| 国产伦理精品不卡| 国产在线视视频有精品| 蜜臀av性久久久久av蜜臀妖精 | 国产精品天天摸av网| 26uuu久久天堂性欧美| 精品剧情v国产在线观看在线| 在线播放91灌醉迷j高跟美女 | 国产在线播放一区| 黄色小说综合网站| 国产一二三精品| 懂色av一区二区三区免费看| 国产精品系列在线播放| 成人免费视频免费观看| 成人手机电影网| 在线亚洲人成电影网站色www| 在线精品观看国产| 日韩欧美卡一卡二| 久久久久久久久久久久久女国产乱| 久久精品亚洲精品国产欧美kt∨| 亚洲国产精品99久久久久久久久| 国产精品国产精品国产专区不蜜| 亚洲精品午夜久久久| 亚洲动漫第一页| 麻豆精品一二三| 成人黄色免费短视频| 欧美午夜在线观看| 精品国产乱码久久久久久图片| 久久久五月婷婷| 亚洲久草在线视频| 九色|91porny| 91色婷婷久久久久合中文| 欧美日韩aaa| 欧美韩国日本不卡| 日本女人一区二区三区| 成人一区在线观看| 91精选在线观看| 国产精品美女www爽爽爽| 五月激情综合色| 国产一区二区三区四区在线观看| 色综合一个色综合亚洲| 日韩一区二区视频| 亚洲免费av网站| 国产美女精品在线| 欧美巨大另类极品videosbest | 国产麻豆精品在线| 欧美日韩高清一区二区不卡| 久久久国际精品| 亚洲国产另类av| 99re这里只有精品首页| 久久综合九色综合97婷婷| 亚洲成人免费影院| 日本高清不卡视频| 国产欧美日韩三级| 国产在线播精品第三| 91麻豆精品91久久久久同性| 一区二区三区中文字幕| 成人精品鲁一区一区二区| 欧美一级二级三级乱码| 亚洲一区二区在线观看视频| av电影在线观看一区| 欧美国产一区二区| 韩国精品主播一区二区在线观看| 欧美喷潮久久久xxxxx| 一区二区不卡在线视频 午夜欧美不卡在| 国产一区二区电影| 久久影音资源网| 国产精品中文字幕日韩精品| 日韩色在线观看| 美女视频网站黄色亚洲| 51久久夜色精品国产麻豆| 午夜精品福利一区二区蜜股av | 亚洲一区在线观看视频| 在线看不卡av| 亚洲国产一区二区视频| 欧美日韩一区二区三区不卡| 亚洲va国产va欧美va观看| 在线观看亚洲成人| 亚洲成a人片综合在线| 欧美日韩亚洲另类| 热久久免费视频| 欧美成人一区二区三区在线观看| 免费的成人av| 中文av一区特黄| 成人黄色一级视频| 亚洲精品国产精华液| 日本乱码高清不卡字幕| 亚洲成人一区二区| 欧美一区二区三区成人| 日本sm残虐另类| 国产三区在线成人av| aaa亚洲精品| 亚洲一区二区三区小说| 91精品国产91综合久久蜜臀| jizz一区二区| 亚洲综合偷拍欧美一区色| 欧美色网一区二区| 久久精品国产一区二区三区免费看| 精品99999| av综合在线播放| 石原莉奈一区二区三区在线观看| 日韩一级片在线播放| 成人av影院在线| 亚洲gay无套男同| 26uuuu精品一区二区| a4yy欧美一区二区三区| 日韩电影免费在线看| 久久久91精品国产一区二区精品| av一二三不卡影片| 日韩av一区二区在线影视| 欧美国产精品中文字幕| 欧美三级乱人伦电影| 国产精品一级在线| 亚洲一卡二卡三卡四卡五卡| 欧美xxxxx裸体时装秀| av亚洲精华国产精华| 精品一区二区三区视频在线观看| 中文字幕一区三区| 欧美电影影音先锋| 99久久久精品| 久久99精品国产| 亚洲精品午夜久久久| 精品国产欧美一区二区| 欧美在线看片a免费观看| 国产一区二区三区| 日本人妖一区二区| 亚洲精品日产精品乱码不卡| 久久久影视传媒| 欧美一区二区视频免费观看| 99re免费视频精品全部| 国产一区二区三区黄视频| 免费欧美在线视频| 一区二区三区中文免费| 欧美激情一区二区三区在线| 精品国精品自拍自在线| 欧美性猛交xxxxxx富婆| 91在线国内视频| 国产成人精品免费看| 久久91精品国产91久久小草| 爽好多水快深点欧美视频| 亚洲美女免费视频| 日韩一区日韩二区| 中文无字幕一区二区三区| 精品欧美乱码久久久久久1区2区| 欧美日韩一区在线| 欧美一a一片一级一片| 91亚洲精品久久久蜜桃| 高清日韩电视剧大全免费| 国产美女在线精品| 黑人巨大精品欧美一区| 麻豆久久久久久久| 精品中文字幕一区二区| 韩国一区二区三区| 国产一区二区三区高清播放| 国产揄拍国内精品对白| 国产一区二区三区四| 国产黄色91视频| 成人在线一区二区三区| 99久久婷婷国产综合精品电影| 从欧美一区二区三区| eeuss鲁一区二区三区| av亚洲精华国产精华| 色狠狠桃花综合| 欧美日韩国产高清一区二区三区 | 日韩中文字幕不卡| 五月婷婷激情综合| 久久成人综合网| 国产精品综合在线视频| av电影在线观看一区| 在线观看欧美日本| 日韩欧美在线123| 久久久精品tv| 亚洲欧美福利一区二区| 天天操天天综合网| 狠狠网亚洲精品| 95精品视频在线| 在线不卡欧美精品一区二区三区| 日韩一区二区精品| 国产精品你懂的在线| 一区二区三区不卡视频| 日本系列欧美系列| 国产成人在线电影| 欧美三级中文字幕| 26uuu精品一区二区在线观看| 日韩一区欧美小说| 久久国产剧场电影| av一区二区三区在线| 欧美一区二区三区在线视频| 欧美国产欧美综合| 丝瓜av网站精品一区二区| 成人免费观看男女羞羞视频| 在线国产亚洲欧美| 欧美国产综合一区二区| 三级欧美在线一区| 9久草视频在线视频精品| 欧美一级一级性生活免费录像| 亚洲国产精品黑人久久久| 日韩av不卡一区二区| 91社区在线播放|