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

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

?? mifare.c

?? lpc2368 source files
?? C
字號:
 /*************************************************************
 Mifare serial reader communication sequence 

 Date : 28\08\2007
 Ver  : 

 		COMMAND SEQUENCE
 
 Host                  Reader
 
 STX       -------->
           <--------    DLE     WHen there is no response try again
 INFO[0]   -------->         
 INFO[1]   -------->         
   :
   :
 INFO[N-1] -------->
 DLE       -------->
 ETX       -------->
		   <--------    DLE/NAK   If NAK try again
					   
           RESPONSE SEQUENCE
 
 Host                  Reader

		  <--------    STX
 DLE      -------->    DLE   If host does not respond comm fail
          <--------    INFO[0]
 		  <--------    INFO[1]
		                 :
						 :
		  <--------    INFO[N-1]
		  <---------   DLE
		  <---------   ETX
 DLE	  --------->  		

the time out for communicatiois 0.55 sec
if there is error in communication or BCC mismatch then receiver responds with NAK		   

Format of transmit block 
 --------------------------------------------------------------
| SEQ No | CMD  | LEN  |DATA[0]|DATA[1]|---------DATA[N]| BCC  | 
 --------------------------------------------------------------
 INFO[0] INFO[1]                               INFO[N-1]
 
 BCC = INFO[0] ^ INFO[1]...................... INFO[N-1]
 
 receive block
 --------------------------------------------------------------
 |SEQ NO | RES  | LEN  |DATA[0]|DATA[1]|---------DATA[N]| BCC  |
 --------------------------------------------------------------
 *************************************************************/
#include "LPC23xx.H"   /* LPC23xx/24xx definitions */
#include "type.h"
#include "uart.h"
#include "display.h"
/***************************************************/
//			RFID Functions
/**************************************************/
unsigned char serial_rx_timeout(void);
unsigned char mif_send_block(unsigned char *, unsigned char *);
unsigned char mif_request(void);
unsigned char mif_anti_col(void);
unsigned char mif_select(void);
unsigned char mif_auth(unsigned char , unsigned char );
unsigned char mif_load_key(unsigned char , unsigned char , unsigned char *);
unsigned char mif_halt(void);
void rfid_init(void);
//void rfid_close();
unsigned char mif_write_card(unsigned char *, unsigned char );
unsigned char mif_read_card(unsigned char *, unsigned char );
  
unsigned char  mif_seq_no;
unsigned char  mif_ser_no[4];
//unsigned char const mif_req_seq[] = {0x03, 0x41, 0x01, 0x01};
unsigned char const mif_transport_key[] = 
{
  0xBD,0xDE,0x6F,0x37,0x83,0x83,0x14,0x8A,0xC5,0xE2,0x28,0x28,0x7D,0x3E,0x9F,0x4F,0x95,0x95,0xAD,0xD6,0x6B,0x35,0xC8,0xC8,
  0xDF,0xEF,0x77,0xBB,0xE4,0xE4,0x09,0x84,0x42,0x21,0xBC,0xBC,0x5F,0xAF,0xD7,0xEB,0xA5,0xA5,0x29,0x14,0x8A,0xC5,0x9F,0x9F,
  0xFA,0xFD,0xFE,0x7F,0xFF,0xFF,0x73,0x39,0x9C,0xCE,0xBE,0xBE,0xFC,0x7E,0xBF,0xDF,0xBF,0xBF,0xCF,0xE7,0x73,0x39,0x51,0x51,
  0xF7,0xFB,0x7D,0x3E,0x5A,0x5A,0xF2,0x79,0x3C,0x1E,0x8D,0x8D,0xCF,0xE7,0x73,0x39,0x45,0x45,0xB7,0xDB,0x6D,0xB6,0x7D,0x7D
};  

void rfid_init(void)
{
	FIO4SET = 0x01 << 29;//B
	FIO4CLR = 0x01 << 28;//A
	FIO2SET = 0x01 << 12;//rfid power on
}

/***************************************************************
function waits for fixed timeout and returns stautus of
communications 0x00 indicates timeout

***************************************************************/ 
unsigned char serial_rx_timeout(void)
{
 
	unsigned long  mif_timeout;
    unsigned char ret_val = 0x00;
	
	mif_timeout = 1000000;
	while(mif_timeout > 0)
	{
	 	if(U2LSR & 0X01)
		{
			ret_val = U2RBR; 
			break;
		}
		else
			mif_timeout--;
	}
	return ret_val;
}

/****************************************************************
 function to transmit given packet of data after calculating BCC
 returns the status of communicaion and data if any
 1 -------> successful communication
 0 -------> no response
 
no bytes to be transmitted is passed in  first byte of an array
****************************************************************/


unsigned char mif_send_block(unsigned char *mif_send_data, unsigned char *mif_cmd_res)
{
	unsigned char  mif_temp_cnt;
	unsigned char  mif_bcc, mif_com_status, mif_temp_buf = 0x00;
	unsigned long  mif_rx_timeout;
	
	mif_com_status = 0x00;
	mif_bcc = 0x00;
	
	for(mif_temp_cnt=1; mif_temp_cnt <=mif_send_data[0]; mif_temp_cnt++)
		mif_bcc ^= mif_send_data[mif_temp_cnt];								//calculate BCC include sequence number
	mif_bcc ^= mif_seq_no;

	for(mif_temp_cnt = 0; mif_temp_cnt < 3; mif_temp_cnt++)
	{
		serial_send(2,0x02);
		if(serial_rx_timeout() == 0x10)
		{
		 	mif_com_status = 0x01;
		 	break;
		}
	}

	if(mif_com_status)
    {
		mif_com_status = 0x00;
		serial_send(2,mif_seq_no);											//send packet
		if(mif_seq_no == 0x10)
			serial_send(2,mif_seq_no);
		for(mif_temp_cnt=1; mif_temp_cnt <= mif_send_data[0]; mif_temp_cnt++)
		{
			serial_send(2,mif_send_data[mif_temp_cnt]);
			if(mif_send_data[mif_temp_cnt] == 0x10)
				serial_send(2,mif_send_data[mif_temp_cnt]);
		}
		serial_send(2,mif_bcc);
		if(mif_bcc == 0x10)
			serial_send(2,0x10);
		serial_send(2,0x10);														// DLE and ETX
		serial_send(2,0x03);
		
		mif_temp_cnt = 0;
		if(serial_rx_timeout() == 0x10)										//if DLE and STX are received proceed further
        {
			if(serial_rx_timeout() == 0x02)
			{
				serial_send(2,0x10);
				mif_rx_timeout = 1000000;
				while(1)
				{	
					if(U2LSR & 0X01)
					{	
						mif_rx_timeout = 1000000;
						if(mif_temp_buf == 0x10)        						//check if last character is 0x10
						{
							mif_temp_buf = U2RBR;
							//RI = 0;
							if(mif_temp_buf == 0X10)							//if present char is 0x10 do nothing
							{
								mif_cmd_res[++mif_temp_cnt] = mif_temp_buf;
								mif_temp_buf = 0x00;
							}
							else if(mif_temp_buf == 0x03)						//if present char is 0x03 end of text mark as successful com
							{
								mif_com_status = 0x01;
								serial_send(2,0x10);
								break;
							}
							else
								break;						            		//if any other character is received after 0x10 error
						}
						else
						{
							mif_temp_buf = U2RBR;						   	
							//RI = 0;
							if(mif_temp_buf!= 0X10)
							{
							  mif_cmd_res[++mif_temp_cnt] = mif_temp_buf;
							}
							if(mif_temp_cnt > 25)							  
								break;
						}	
					}
					else
					{
						 mif_rx_timeout--;
						 if(!mif_rx_timeout)
							break;
					}
				}
				
			}
        }
		
	}
	
	if((mif_com_status) && (mif_seq_no == mif_cmd_res[1]))					  // if communication and seq no are ok,check bcc
	{
		mif_bcc = 0x00;
		mif_cmd_res[0] = mif_temp_cnt;
		for(mif_temp_cnt = 1; mif_temp_cnt < mif_cmd_res[0]; mif_temp_cnt++)
			mif_bcc ^= mif_cmd_res[mif_temp_cnt];
		if(mif_bcc != mif_cmd_res[mif_temp_cnt])
			mif_com_status = 0x00;
		
		return
          mif_com_status;	
	}
	else
     return 0x00; 
}


/*mifare request function checks for the presence of the card in the
  feild and returns satus of card the status of the card is returned
  by the send_blk function*/
  

unsigned char mif_request(void)
{
	unsigned char  mif_req_data[10], mif_req_res[30];
	unsigned char  mif_req_status, mif_req_cnt;

	mif_seq_no = 0x01;
	mif_req_data[0] = 0x03; 
	mif_req_data[1] = 0x41; 
	mif_req_data[2] = 0x01;
	mif_req_data[3] = 0x01;
	
	for(mif_req_cnt = 0; mif_req_cnt<3; mif_req_cnt++)
	{
		mif_req_status = mif_send_block(mif_req_data, mif_req_res);
		if(mif_req_status)
		{
			mif_req_status = 0x00;
			mif_seq_no++;
			if(mif_req_res[2] == 0x00)
			{
				mif_req_status = 0x01;
				break;
			}
		}

	}

	return mif_req_status;
  
}


unsigned char mif_anti_col(void)
{
	unsigned char  mif_ant_data[10], mif_ant_res[30];
	unsigned char  mif_ant_sts;
    
	mif_ant_data[0] = 0x07;
	mif_ant_data[1] = 0x42;
	mif_ant_data[2] = 0x05;
	mif_ant_data[3] = 0x00;
	mif_ant_data[4] = 0x00;
	mif_ant_data[5] = 0x00;
	mif_ant_data[6] = 0x00;
	mif_ant_data[7] = 0x00;
	
	mif_ant_sts = mif_send_block(mif_ant_data, mif_ant_res);
	if(mif_ant_sts)
	{
		mif_seq_no++;
		if((mif_ant_res[2] == 0x00)&&(mif_ant_res[3]==4))
		{
			mif_ser_no[0] = mif_ant_res[4];
			mif_ser_no[1] = mif_ant_res[5];
			mif_ser_no[2] = mif_ant_res[6];
			mif_ser_no[3] = mif_ant_res[7];
		}
		else
			mif_ant_sts = 0x00;
	}
	
	return mif_ant_sts;
}


unsigned char mif_select(void)
{

	unsigned char  mif_sel_data[10], mif_sel_res[30];
	unsigned char  mif_sel_sts;
	
	mif_sel_data[0] = 0x06;
	mif_sel_data[1] = 0x43;
	mif_sel_data[2] = 0x04;
	mif_sel_data[3] = mif_ser_no[0];
	mif_sel_data[4] = mif_ser_no[1];
	mif_sel_data[5] = mif_ser_no[2];
    mif_sel_data[6] = mif_ser_no[3];
	
	mif_sel_sts = mif_send_block(mif_sel_data, mif_sel_res);
	if(mif_sel_sts)
	{
		mif_seq_no++;
		if(mif_sel_res[2] != 0x00)
			mif_sel_sts = 0x00;
	}
	
	return mif_sel_sts;
}


unsigned char mif_auth(unsigned char mif_auth_mode, unsigned char mif_auth_sec)
{
	unsigned char  mif_auth_data[10], mif_auth_res[30];
	unsigned char  mif_auth_sts;
	
	mif_auth_data[0] = 0x04;
	mif_auth_data[1] = 0x44;
	mif_auth_data[2] = 0x02;
	mif_auth_data[3] = mif_auth_mode;
	mif_auth_data[4] = mif_auth_sec;
	
	mif_auth_sts = mif_send_block(mif_auth_data, mif_auth_res);
	if(mif_auth_sts)
	{
		mif_seq_no++;
		if(mif_auth_res[2] != 0x00)
			mif_auth_sts = 0x00;
	}
	
	return mif_auth_sts;
}

unsigned char mif_load_key(unsigned char mif_lk_mode, unsigned char mif_lk_sec, unsigned char *mif_lk_key)
{
 
	unsigned char  mif_lk_data[25],mif_lk_res[30];
	unsigned char  mif_lk_sts, mif_lk_cnt ;
	
	mif_lk_data[0] = 0x14;
	mif_lk_data[1] = 0x4c;
	mif_lk_data[2] = 0x12;
	mif_lk_data[3] = mif_lk_mode;
	mif_lk_data[4] = mif_lk_sec;
	
	for(mif_lk_cnt=0; mif_lk_cnt<6; mif_lk_cnt++)
		mif_lk_data[mif_lk_cnt + 5] = mif_transport_key[(mif_lk_sec * 6) + mif_lk_cnt]; 
	
	mif_lk_data[11] = 0x00;
	mif_lk_data[12] = 0x00;
	
	for(mif_lk_cnt=0; mif_lk_cnt<6; mif_lk_cnt++)
		mif_lk_data[mif_lk_cnt + 13] = mif_lk_key[ mif_lk_cnt]; 
	mif_lk_data[19] = 0x00;
	mif_lk_data[20] = 0x00;
	
//	clrscr();
//	for(mif_lk_sts=0;mif_lk_sts<21;mif_lk_sts++)
//		printf("%02x ",((unsigned int) mif_lk_data[mif_lk_sts])&0x00ff);
//	get_key();
//	mif_lk_sts = 0x00;

	mif_lk_sts = mif_send_block(mif_lk_data, mif_lk_res);
	if(mif_lk_sts)
	{
		mif_seq_no++;
		if(mif_lk_res[2] != 0x00)
			mif_lk_sts = 0x00;
	}
	
	return mif_lk_sts;
}

unsigned char mif_halt(void)
{
	unsigned char  mif_halt_data[10], mif_halt_res[30];
	unsigned char  mif_halt_status;

	mif_halt_data[0] = 0x02; 
	mif_halt_data[1] = 0x45; 
	mif_halt_data[2] = 0x00;
	
	mif_halt_status = mif_send_block(mif_halt_data, mif_halt_res);
	if(mif_halt_status)
	{
		mif_seq_no++;
		if(mif_halt_res[2] != 0x00)
			mif_halt_status = 0x00;
	}

	return mif_halt_status;

}

//void rfid_init(void)
//{
//	DATAOUT_C = DATAOUT_C | 0x08; //rfid power enable 
//}
/*
void rfid_close()
{
	DATAOUT_C = DATAOUT_C & 0xf7; //rfid power disable 
}
*/

unsigned char mif_write_card(unsigned char *mif_write_data, unsigned char mif_write_add)
{
	unsigned char  mif_wrcd_data[25],mif_wrcd_res[30];
	unsigned char  mif_wrcd_sts, mif_wrcd_cnt ;
	
	if((mif_write_add%4) == 3)
		return 0x00;
	//setport(0);
	for(mif_wrcd_cnt = 0; mif_wrcd_cnt < 4; mif_wrcd_cnt++)
		mif_ser_no[mif_wrcd_cnt] = 0x00;
	
	//rfid_init();
 	mif_wrcd_sts = mif_request();
	if(mif_wrcd_sts)
	{
		mif_wrcd_sts = mif_anti_col();
	}
	if(	mif_wrcd_sts)
	{
		mif_wrcd_sts = mif_select();
	}
	if(mif_wrcd_sts)
	{
		mif_wrcd_sts = mif_auth(0x00, (mif_write_add/4));
	}
	if(mif_wrcd_sts)
	{
		mif_wrcd_data[0] = 0x13;
		mif_wrcd_data[1] = 0x47;
		mif_wrcd_data[2] = 0x11;
		mif_wrcd_data[3] = mif_write_add;
		for(mif_wrcd_cnt = 0; mif_wrcd_cnt < 16; mif_wrcd_cnt++)
			mif_wrcd_data[mif_wrcd_cnt + 4] = mif_write_data[mif_wrcd_cnt];
		
		mif_wrcd_sts = mif_send_block(mif_wrcd_data, mif_wrcd_res);
		if(mif_wrcd_sts)
		{
			mif_seq_no++;
			if(mif_wrcd_res[2] != 0x00)
				mif_wrcd_sts = 0x00;
		}
		mif_halt();
	}
	//rfid_close();
	return mif_wrcd_sts;	
	
}

unsigned char mif_read_card(unsigned char *mif_read_data, unsigned char mif_read_add)
{
	unsigned char  mif_rd_data[10],mif_rd_res[30];
	unsigned char  mif_rd_sts, mif_rd_cnt ;
	
	if((mif_read_add%4) == 3)
		return 0x00;
	//setport(0);
	//rfid_init();
    for(mif_rd_cnt = 0; mif_rd_cnt < 4; mif_rd_cnt++)
		mif_ser_no[mif_rd_cnt] = 0x00;
	mif_rd_sts = mif_request();
	if(mif_rd_sts)
		mif_rd_sts = mif_anti_col();
	if(	mif_rd_sts)
		mif_rd_sts = mif_select();
	if(mif_rd_sts)
		mif_rd_sts = mif_auth(0x00, (mif_read_add/4));
	
	if(mif_rd_sts)
	{
		mif_rd_data[0] = 0x03;
		mif_rd_data[1] = 0x46;
		mif_rd_data[2] = 0x01;
		mif_rd_data[3] = mif_read_add;
		
		mif_rd_sts = mif_send_block(mif_rd_data, mif_rd_res);
		if(mif_rd_sts)
		{
			mif_seq_no++;
			if(mif_rd_res[2] == 0x00)
			{
				for(mif_rd_cnt=0; mif_rd_cnt<16; mif_rd_cnt++)
					mif_read_data[mif_rd_cnt] = mif_rd_res[mif_rd_cnt + 4];
				mif_rd_sts = 0x01;	
			}
			else
				mif_rd_sts = 0x00;
		}
		mif_halt();
	}
	//rfid_close();

	return mif_rd_sts;	
	
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲日本国产| 成人h精品动漫一区二区三区| 欧美性高清videossexo| 亚洲男同1069视频| 欧美性高清videossexo| 日韩不卡一区二区| 日韩免费成人网| 粉嫩一区二区三区在线看| 综合激情成人伊人| 欧美色老头old∨ideo| 久久精品国产一区二区三| 久久一留热品黄| 一本一本大道香蕉久在线精品| 亚洲自拍另类综合| 日韩欧美国产一二三区| 成人国产精品免费观看动漫| 亚洲一区二区三区在线看| 日韩一区二区三区免费观看| 国产精品88888| 亚洲一区二区五区| 久久综合中文字幕| 日本久久电影网| 久久精品国产亚洲一区二区三区| 中文字幕欧美国产| 欧美撒尿777hd撒尿| 黄网站免费久久| 综合自拍亚洲综合图不卡区| 5月丁香婷婷综合| 成人a区在线观看| 秋霞电影一区二区| 亚洲欧洲性图库| 欧美一区二区免费视频| 99精品欧美一区二区三区小说| 丝袜美腿亚洲一区二区图片| 国产欧美精品一区二区色综合 | 国产白丝网站精品污在线入口| 国产精品久久久久久户外露出| 欧美精品在线一区二区三区| 国产成人精品三级麻豆| 日韩精品成人一区二区三区| 亚洲视频电影在线| 2023国产精品| 在线综合视频播放| 日本韩国视频一区二区| 高清shemale亚洲人妖| 婷婷久久综合九色国产成人| 国产精品亲子乱子伦xxxx裸| 日韩精品最新网址| 欧美女孩性生活视频| 色综合天天狠狠| 国产成人av一区二区三区在线| 日韩二区三区四区| 亚洲一区二区黄色| 亚洲日本va在线观看| 久久久噜噜噜久噜久久综合| 欧美一区二区三区不卡| 欧美调教femdomvk| 热久久免费视频| 午夜精品久久久久久久蜜桃app | 亚洲国产日韩综合久久精品| 欧美国产精品一区二区三区| 精品久久久久久久久久久久久久久 | 日韩午夜精品电影| 欧美老年两性高潮| 欧美性感一类影片在线播放| 99久久精品99国产精品| 成人v精品蜜桃久久一区| 国产精品一区二区三区乱码| 韩国三级电影一区二区| 免费三级欧美电影| 免费的成人av| 美女视频网站黄色亚洲| 日韩高清在线观看| 蜜臀av性久久久久av蜜臀妖精| 丝袜a∨在线一区二区三区不卡| 一级精品视频在线观看宜春院 | 99精品国产视频| aaa欧美色吧激情视频| 福利一区二区在线| 国产传媒日韩欧美成人| 国产成人av电影在线观看| 国产99久久久久久免费看农村| 国产精品一区二区果冻传媒| 国产91精品在线观看| 成人晚上爱看视频| 91麻豆免费在线观看| 91蜜桃视频在线| 欧美在线视频日韩| 777午夜精品免费视频| 日韩免费成人网| 国产亚洲精品7777| 亚洲欧美色图小说| 午夜av电影一区| 麻豆精品一区二区av白丝在线 | 国产jizzjizz一区二区| av影院午夜一区| 在线免费亚洲电影| 日韩欧美aaaaaa| 国产精品久久777777| 亚洲精品欧美激情| 蜜乳av一区二区三区| 国产一区视频导航| 色老汉一区二区三区| 欧美人妇做爰xxxⅹ性高电影 | 99久久婷婷国产精品综合| 91精品1区2区| 日韩精品一区二区三区中文精品| 国产欧美一区二区精品性色超碰 | 久久久综合网站| 亚洲欧洲国产日韩| 婷婷中文字幕一区三区| 国产精品综合一区二区| 色妹子一区二区| 日韩一区二区精品| 中文字幕五月欧美| 午夜天堂影视香蕉久久| 国产成人亚洲综合a∨婷婷图片 | 日日夜夜免费精品| 国产精品一区二区三区网站| 欧美亚洲国产怡红院影院| 日韩精品一区二区三区视频 | 亚洲欧美一区二区久久| 久久精品国产久精国产爱| 99久久久久久99| 精品av综合导航| 一区二区三国产精华液| 国产真实乱对白精彩久久| 在线观看国产日韩| 国产日韩欧美不卡| 日韩不卡一二三区| 日本黄色一区二区| 国产免费成人在线视频| 日韩成人精品在线观看| 色综合久久综合网| 久久精品一区二区三区av| 丝袜a∨在线一区二区三区不卡| 成人精品鲁一区一区二区| 日韩亚洲欧美在线| 亚洲激情中文1区| 福利视频网站一区二区三区| 欧美zozo另类异族| 午夜电影久久久| 欧美视频精品在线| 自拍偷拍亚洲欧美日韩| 国产久卡久卡久卡久卡视频精品| 欧美日韩亚洲不卡| 国产精品久久久久精k8| 国产二区国产一区在线观看| 制服丝袜亚洲播放| 亚洲va国产天堂va久久en| 91美女精品福利| 亚洲色图清纯唯美| a美女胸又www黄视频久久| 久久久国际精品| 经典三级视频一区| 日韩一区二区三区免费观看| 亚洲一区二区av在线| 在线中文字幕一区| 亚洲三级电影网站| 91免费看片在线观看| 国产精品理伦片| 北岛玲一区二区三区四区| 国产精品免费视频网站| 丰满亚洲少妇av| 国产精品久久国产精麻豆99网站| 国产v综合v亚洲欧| 欧美激情一区二区三区在线| 成人在线视频一区二区| 中文字幕精品在线不卡| 高清av一区二区| 国产精品久久久久久久久图文区 | 成人一道本在线| 国产精品久久看| 91麻豆文化传媒在线观看| 一区二区三区欧美日韩| 欧美日韩亚洲国产综合| 日本午夜一本久久久综合| 日韩免费一区二区| 国产一区二区免费看| 国产亚洲1区2区3区| 成人午夜视频在线观看| 亚洲色图一区二区三区| 欧美丝袜丝交足nylons图片| 婷婷久久综合九色综合绿巨人| 日韩午夜精品电影| 国产99久久久国产精品潘金| 国产精品欧美一区喷水| 色吧成人激情小说| 丝袜亚洲另类欧美| 国产亚洲人成网站| 99久久国产综合精品女不卡| 亚洲午夜激情av| 欧美va在线播放| gogo大胆日本视频一区| 亚洲成a人片在线观看中文| 欧美va日韩va| 不卡的电影网站| 日韩av不卡在线观看| 久久久久久久久久久电影| 91在线观看美女|