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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fm1715.c

?? 復(fù)旦FM1702源碼,完整資料,已經(jīng)編譯通過.復(fù)旦FM1702的資料幾乎就是RC500英文的翻譯版
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#include "FM1715_Reg.h"

uchar idata readdata[6];//	_at_ 0x0040;	//Read/write memory
 uchar idata value[4];  // _at_ 0x0050;	//Inc/Dec value
 uchar idata KeySet;							//password type
 uchar idata tagtype[2];//_at_ 0x0096;	//card indentify character

 uchar idata PRO_SendBuf[16];	//_at_ 0x0080;	//Send buffer
uchar idata PRO_RecvBuf[16];	//_at_ 0x0080;	//Receive buffer
 uchar idata buffer[24];	//_at_ 0x0060;	//FM1715 command send/receive buffer
 uchar idata UID[5];	//	_at_ 0x007a;	//User ID
 uchar idata Secnr;	//	_at_ 0x0090;	//sector number
 uchar idata keybuffer[6];					//key save buffer

uchar idata keybuffer[6]={0xff,0xff,0xff,0xff,0xff,0xff};		//定義

//**********************************************************
//Name: Check_UID
//function: check card UID
//input: N/A
//output:	TRUE  UID right
//		FALSE UID error
//**********************************************************'
uchar Check_UID(void)
{
	uchar temp;
	uchar i;
	
	temp=0x00;
	for(i=0;i<5;i++)
	{
		temp=temp^UID[i];
	}
	if(temp==0)
	{
		return TRUE;
	}
	return FALSE;
}

//*******************************************************************
//name:Save_UID
//function: This function sae card's serial number
//input:  row : coflict row
//	  col : coflict line
//	length: the length of received UID data
//output:  N/A
//*******************************************************************
void Save_UID(uchar row,uchar col,uchar length)
{
	uchar i;
	uchar temp;
	uchar temp1;

	if((row == 0x00)&&(col==0x00))
	{
		for(i=0;i<length;i++)
		{
			UID[i]=buffer[i];
		}
	}
	else
	{
		temp=buffer[0];
		temp1=UID[row-1];
		switch(col)
		{
			case 0:
			temp1=0x00;
			row=row+1;
			break;
			case 1:
			temp=temp&0xFE;
			temp1=temp1&0x01;
			break;
			case 2:
			temp=temp&0xFC;
			temp1=temp1&0x03;
			break;
			case 3:
			temp=temp&0xF8;
			temp1=temp1&0x07;
			break;
			case 4:
			temp=temp&0xF0;
			temp1=temp1&0x0F;
			break;
			case 5:
			temp=temp&0xE0;
			temp1=temp1&0x1F;
			break;
			case 6:
			temp=temp&0xC0;
			temp1=temp1&0x3F;
			break;
			case 7:
			temp=temp&0x80;
			temp1=temp1&0x7F;
			break;
			default:
			break;
		}
		buffer[0]=temp;
		UID[row-1]=temp1|temp;
		for(i=1;i<length;i++)
		{
			UID[row-1+i]=buffer[i];
		}
	}
}

//*************************************************************
//name: Set_BitFraming
//function: set the byte that ready to send
//input: row : conflict row
//	 col : conflict col
//ouput: N/A
//*************************************************************
void Set_BitFraming(uchar row,uchar col)
{
	switch(row)
	{
		case 0:
		buffer[1]=0x20;
		break;
		case 1:
		buffer[1]=0x30;
		break;
		case 2:
		buffer[1]=0x40;
		break;
		case 3:
		buffer[1]=0x50;
		case 4:
		buffer[1]=0x60;
		break;
		default:
		break;
	}
	
	switch(col)
	{
		case 0:
		Bit_Frame=0x00;
		break;
		case 1:
		Bit_Frame=0x11;
		buffer[1]=(buffer[1]|0x01);
		break;
		case 2:
		Bit_Frame=0x22;
		buffer[1]=(buffer[1]|0x02);
		break;
		case 3:
		Bit_Frame=0x33;
		buffer[1]=(buffer[1]|0x03);
		break;
		case 4:
		Bit_Frame=0x44;
		buffer[1]=(buffer[1]|0x04);		
		break;
		case 5:
		Bit_Frame=0x55;
		buffer[1]=(buffer[1]|0x05);		
		break;
		case 6:
		Bit_Frame=0x66;
		buffer[1]=(buffer[1]|0x06);		
		break;
		case 7:
		Bit_Frame=0x77;
		buffer[1]=(buffer[1]|0x057);		
		break;
		default:
		break;
	}
}

//************************************************************
//name: FM1715_Bus_Sel
//function: this function select FM1715 control bus?
//input: N/A
//output: TRUE, select bus succeed
//	 FALSE, select bus fail
//************************************************************
uchar FM1715_Bus_Sel(void)
{
	uchar i;
	Page_Sel=0x80;			
	
	for(i=0;i<RF_TimeOut;i++)
	{
		if(Command==0x00)
		{
			Page_Sel=0x00;
			return TRUE;
		}
	}
	return FALSE;
}

//********************************************************
//name: Init_FM1715
//function: Init FM1715
//input: mode: 	0 -->TYPEA mode
//	 	1 -->TYPEB mode
//		2 -->shanghai mode
//ouput: N/A
//*********************************************************
void Init_FM1715(uchar mode)
{
//	uchar idata temp;
	uint i;
	
	MFRST=1;		//Reset FM1715
	for(i=0;i<0x1fff;i++)
	{
		_nop_();
	}

	MFRST=0;
	for(i=0;i<0x1fff;i++)
	{
		_nop_();
	}
	
	while(Command!=0)		//waiting command=0, FM1715 Reset succeed
	{
		_nop_();
	}

	FM1715_Bus_Sel();		//Select FM1715 bus

	TimerClock=0x0b;		//151us/per
	TimerControl=0x02;		//發(fā)送結(jié)束開定時器,發(fā)送開始關(guān)定時器
	TimerReload=0x42;		//10ms interval
	InterruptEn=0x7f;		//Close all interrupt
//	temp=InterruptEn;		//	?????????????????????????????????????????????????
	Int_Req=0x7f;			//?????????????????????????????????????????????????
//	MFOUTSelect=0x02;		//for debug
	TxControl=0x5b;			//start TX1,TX2
	if(mode==SHANGHAI_MODE)		//shanghai mode
	{
		TypeSH=0x01;
	}
	else
	{
		TypeSH=0x00;
	}

	if(mode==TYPEB_MODE)
	{
		CoderControl=0x20;
		TypeBFraming=0x05;
		DecoderControl=0x19;
		ChannelRedundancy=0x24;
		TxControl=0x4b;
		CWConductance=0x3f;
		ModConductance=0x3f;			//??????這里是否有問題
	}
}

//********************************************************************
//name:Clear_FIFO
//function: Clear the data in FIFO
//input:N/A
//output: TRUE, FIFO has been cleared
//	 FALSE, FIFO hasn't beend cleared
//********************************************************************
uchar Clear_FIFO(void)
{
	uchar temp;
	uint i;
	
	temp=Control;			//Clear FIFO
	temp=(temp|0x01);
	Control=temp;
	for(i=0;i<RF_TimeOut;i++)   	//檢查FIFO是否為空
	{
		temp=FIFO_Length;
		if(temp==0)
		{
			return TRUE;
		}
	}
	return FALSE;
}

//******************************************************************
//name: Write_FIFO
//function: write n bytes to FM1715's FIFO
//input: count , the data's length
//       buff, point to the data that to be writen
//output: N/A
//******************************************************************
void Write_FIFO(uchar count,uchar idata *buff)
{
	uchar i;
	for(i=0;i<count;i++)
	{
		FIFO=*(buff+i);
	}
}

//*****************************************************************
//name: Read_FIFO
//function: read data from FM1715's FIFO
//input: buff, 指向讀出數(shù)據(jù)的指針
//output: N/A
//*****************************************************************
uchar Read_FIFO(uchar idata *buff)
{
	uchar temp;
	uchar i;
	
	temp=FIFO_Length;
	if(temp==0)
	{
		return 0;
	}
	if(temp>=24)			//temp=255,會進入死循環(huán),因此增加FIFO_length越界判斷
	{
		temp=24;
	}
	for(i=0;i<temp;i++)
	{
		*(buff+i)=FIFO;
	}
	return temp;
}


//******************************************************************
//name: Command_Send
//function: send command to FM1715
//input: count, the length of command
//	 buff, point to the data that ready to send
//	 Comm_Set, command code
//output: TRUE ,  running command succeed
//	  FALSE,  running command error
//******************************************************************
uchar Command_Send(uchar count,uchar idata *buff,uchar Comm_Set)
{
	uint j;
	uchar idata temp,temp1;
	Command=0x00;
	Clear_FIFO();
	Write_FIFO(count,buff);
//	temp=MFOUTSelect;
	Command=Comm_Set;		//running command
	for(j=0;j<RF_TimeOut;j++)
	{
//		temp=MFOUTSelect;
		temp=Command;
		temp1=Int_Req&0x80;
		if((temp==0x00)||(temp1==0x80))
		{
			Green=!Green;
			return TRUE;
		}
	}
	return FALSE;
}


//*****************************************************************
//name: MIF_Halt
//function: halt the mifare card
//input: N/A
//output: FM1715_OK : ack succeed
//	 FM1715_PARITYERR: parity verify error
//	 FM1715_CRCERR:	CRC verify error
//	 FM1715_NOTAGERR: na card
//*****************************************************************
uchar MIF_Halt(void)
{
	uchar temp;
	CRCPresetLSB=0x63;
	CWConductance=0x3f;
	ChannelRedundancy=0x03;
	*buffer=RF_CMD_HALT;
	*(buffer+1)=0x00;
	temp=Command_Send(2,buffer,Transceive);
	if(temp == FALSE)
	{
		return FM1715_OK;
	}
	else
	{
		temp = ErrorFlag;
		if((temp&0x02)==0x02)
		{
			return(FM1715_PARITYERR);
		}
		if((temp&0x04)==0x04)
		{
			return(FM1715_FRAMINGERR);
		}
		return(FM1715_NOTAGERR);
	}
}

//********************************************************************
//name: Load_key_CPY
//function: save E2's password to FM1715's keybuffer
//input: keybuffer: save key to this buffer
//output: TRUE: load key succeed
//	 FLASE: load key fail
//********************************************************************
uchar Load_key_CPY(void)
{
	uchar temp,i;
	uchar ln=0;
	uchar hn=0;
	
	for(i=0;i<6;i++)		//change the key to RC531 format
	{
		ln=keybuffer[i]&0x0f;	//low four bit
		hn=keybuffer[i]>>4;	//high four bit
		buffer[i*2+1]=(~ln<<4)|ln;
		buffer[i*2]=(~hn<<4)|hn;
	}
	temp=Command_Send(12,buffer,LoadKey);
	temp=ErrorFlag&0x40;
	if(temp==0x40)
	{
		return FALSE;
	}
	return TRUE;
}


//***********************************************************************
//name: delay
//function: 
void delay(uchar i)
{
	int j;
	while(i)
	{
		for(j=0x00;j<0x1000;j++);
		i--;
	}
}

//***********************************************************************
//name: Request
//function: response the card's request in FM1715's control range
//input: mode: ALL(monitor card in FM1715 control range)
//       STD:(monitor the halt card in FM1715's control range)
//output: FM1715_NOTAGERR: no card
//  	  FM1715_OK: ack succeed 
//	  FM1715_REQERR: ack error
//************************************************************************
uchar Request(uchar mode)
{
	uchar temp;
	TxControl=0x58;
	delay(1);
	TxControl=0x5b;
	CRCPresetLSB=0x63;
	CWConductance=0x3f;
	buffer[0]=mode;		//select Request mode
	Bit_Frame=0x07;		//send 7 bit
	ChannelRedundancy=0x03;	//closed CRC
	TxControl=0x5b;
	Control=0x01;		//mask CRYPT01 bit

	temp=Command_Send(1,buffer,Transceive);

	if(temp==FALSE)
	{
		return FM1715_NOTAGERR;
	}

	Read_FIFO(buffer);	//read ack information from FIFO
	tagtype[0]=buffer[0];
	tagtype[1]=buffer[1];
	
	return FM1715_OK;
}

//**************************************************************************
//name: AntiColl(void)
//function: anticollision for the card in FM1715's control range
//input: N/A
//output: FM1715_NOTAGERR: no card
//	  FM1715_BYTECOUNTERR: receive byte error
//	  FM1715_SERNRERR: card's serial ack error
//	  FM1715_OK: card ack succeed
//**************************************************************************
uchar AntiColl(void)
{
	uchar temp;
	uchar i;
	uchar row,col;
	uchar pre_row;
	
	row=0;
	col=0;
	pre_row=0;

	CRCPresetLSB=0x63;
	CWConductance=0x3f;
	ModConductance=0x3f;
//	ChannelRedundancy=0x03;				//closed CRC,start parity

	buffer[0]=RF_CMD_ANTICOL;
	buffer[1]=0x20;
	ChannelRedundancy=0x03;				//closed CRC,start parity
	temp=Command_Send(2,buffer,Transceive);

	while(1)
	{
		if(temp==FALSE)
		{
			return(FM1715_NOTAGERR);
		}
		temp = ErrorFlag;
		if((temp & 0x02)==0x02)
			return(FM1715_PARITYERR);
		if((temp & 0x04)==0x04)
			return(FM1715_FRAMINGERR);
		temp=FIFO_Length;
		if (temp==0)
		{
			return FM1715_BYTECOUNTERR;
		}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品123| 亚洲一区二区在线免费看| 日韩精品国产精品| 欧美日韩国产中文| 亚洲va在线va天堂| 粉嫩aⅴ一区二区三区四区| 国内久久婷婷综合| 国产亚洲一二三区| 成人精品视频一区二区三区| 中文字幕欧美激情| 国产日韩在线不卡| 成人免费在线视频| 人妖欧美一区二区| 国产乱子伦视频一区二区三区| 韩日欧美一区二区三区| 成人爽a毛片一区二区免费| 一本一道久久a久久精品| 一道本成人在线| 911精品国产一区二区在线| 日韩精品一区二区三区在线播放| 久久这里只有精品6| 91麻豆精品国产91久久久久久| 亚洲一二三四在线观看| 国内成人免费视频| 在线视频亚洲一区| 中文字幕不卡三区| 亚欧色一区w666天堂| 国产不卡视频一区二区三区| 欧美四级电影在线观看| 中文在线免费一区三区高中清不卡| 一区二区三区日韩在线观看| 国产91露脸合集magnet| 日韩你懂的在线播放| 日本中文一区二区三区| 国产在线精品一区二区不卡了| 欧美视频三区在线播放| 欧美色手机在线观看| 欧美日韩你懂得| 91免费国产在线观看| 日韩欧美一区电影| 日韩va亚洲va欧美va久久| 欧美本精品男人aⅴ天堂| 在线视频观看一区| 成人免费高清在线观看| 爽好久久久欧美精品| 欧美日韩精品一区二区三区 | 色综合久久久久综合体| 日韩av一级电影| 国产精品国模大尺度视频| 国产成人综合网站| 欧美一区二区免费| 免费人成精品欧美精品| 日韩一卡二卡三卡| 麻豆精品视频在线观看视频| 日本不卡高清视频| 7777精品伊人久久久大香线蕉经典版下载 | 日韩专区欧美专区| 91网站最新网址| 亚洲精品乱码久久久久久黑人| aaa亚洲精品| 亚洲一区二区欧美日韩| 欧美日韩成人高清| 激情综合亚洲精品| 久久久电影一区二区三区| 99在线精品视频| 午夜久久久久久久久久一区二区| 国产精品毛片大码女人| 国产一区视频导航| 久久综合色鬼综合色| 成人福利电影精品一区二区在线观看| 欧美一卡2卡3卡4卡| 亚洲6080在线| 懂色av中文一区二区三区| 中文字幕一区二区三区在线观看| 欧美在线视频你懂得| 在线观看欧美黄色| 久久综合九色综合欧美98| 99久久婷婷国产综合精品| 亚洲高清免费一级二级三级| 亚洲日本乱码在线观看| 亚洲女人的天堂| 亚洲综合一区二区三区| 一区二区三区美女视频| 亚洲精品视频免费观看| 亚洲综合久久av| 午夜国产精品一区| 日本亚洲电影天堂| 日韩欧美在线网站| 99麻豆久久久国产精品免费优播| 国产精品99久久久久| 蜜臀91精品一区二区三区 | 欧美精品一二三四| 色婷婷综合久久久中文一区二区 | 国产欧美一区二区精品性色 | 极品少妇xxxx偷拍精品少妇| 国产欧美一区二区三区鸳鸯浴| 国产资源精品在线观看| 亚洲成av人影院| 亚洲图片有声小说| 亚洲成人在线网站| 五月天中文字幕一区二区| 亚洲人成精品久久久久久| 综合色天天鬼久久鬼色| 中文字幕亚洲一区二区va在线| 欧美激情资源网| 亚洲图片有声小说| 亚洲黄色尤物视频| 久久一区二区视频| 欧美日韩国产一区二区三区地区| 国产白丝精品91爽爽久久| 91色综合久久久久婷婷| 欧美中文字幕不卡| 久久久久久久久久美女| 亚洲女厕所小便bbb| 日韩福利视频网| 成人性生交大合| 色综合天天综合网天天狠天天| 亚洲一二三专区| 国产日韩精品久久久| 亚洲麻豆国产自偷在线| 亚洲成人av中文| 黄色日韩三级电影| 在线视频中文字幕一区二区| 精品免费一区二区三区| 亚洲乱码国产乱码精品精小说| 日本女人一区二区三区| 久久se这里有精品| 欧美视频一区二区三区在线观看| 欧美亚洲一区二区在线| 日韩欧美二区三区| 亚洲欧美在线aaa| 免费精品视频在线| 91视视频在线观看入口直接观看www| 欧美日韩mp4| 亚洲精品视频免费看| 成人免费高清视频| 26uuu精品一区二区在线观看| 秋霞影院一区二区| 97国产一区二区| 国产精品天干天干在线综合| 久久成人免费日本黄色| 欧美日本精品一区二区三区| 一区二区三区美女视频| 成人免费av网站| 国产精品三级视频| 福利一区在线观看| 国产精品乱码人人做人人爱| 国产一区二区在线影院| 精品999在线播放| 久久99热国产| 欧美成人性战久久| 精品一区二区在线播放| 日韩一区二区精品在线观看| 美女免费视频一区| 在线视频欧美精品| 国产精品正在播放| 国产精品久久久久久久久搜平片 | 日韩国产高清影视| 成人app在线观看| 日日骚欧美日韩| 激情五月婷婷综合网| av中文字幕亚洲| 精品久久久久一区| 丝袜美腿成人在线| 欧美亚洲国产一卡| 亚洲乱码日产精品bd | 国产激情一区二区三区四区| 欧美一级午夜免费电影| 成人国产精品免费观看动漫| 国产视频一区二区三区在线观看| 国产精品资源网站| 亚洲高清免费观看高清完整版在线观看 | 国产乱码精品一品二品| 久久亚洲精品小早川怜子| 成人精品鲁一区一区二区| 亚洲免费观看高清在线观看| 日韩精品专区在线影院观看| 成人午夜激情在线| 日韩av电影免费观看高清完整版 | 波多野结衣一区二区三区 | 欧美一区二区在线播放| 91色在线porny| 夜夜嗨av一区二区三区网页| 久久中文字幕电影| 欧美日韩一区二区三区不卡| 不卡大黄网站免费看| 久久精品国产一区二区三| 国产欧美精品在线观看| 在线成人午夜影院| 欧美亚洲日本国产| 91老师片黄在线观看| 久久久久久久综合日本| 国产精品自拍网站| 欧美色爱综合网| 日韩一区二区三区免费观看| 日韩电影免费在线观看网站| 久久夜色精品国产噜噜av| 成人福利在线看| 日韩成人伦理电影在线观看| 久久久噜噜噜久噜久久综合|