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

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

?? dataflash.c

?? RC522完整程序無需修改可放心使用
?? C
?? 第 1 頁 / 共 2 頁
字號:


#include "my_head.h"
#include "mem_addr.h"
#include "DataFlash.H"

//#define _DEBUG
#ifdef _DEBUG
#include "Debug.H"
#endif

#define  THE_BUFFER_ONE            0
#define  THE_BUFFER_TWO            1

//卡狀態宏定義
#define BLACKLIST_MAIN			0x12	//黑名單主表
#define BLACKLIST_TEMP			0x02	//黑名單臨時表
#define RESUME_LIST				0x00	//卡恢復列表 

extern unsigned char pdata Rf_Buffer[];//RF模塊通訊接收緩沖
extern sttOtherTableInfo xdata stOtherTableInfo;
extern unsigned char xdata gcDateTime[7];		//全局時鐘
extern unsigned char  Write_To_Buffer(void *ptr,int length,bit buffer,unsigned int byteaddr);
extern unsigned char  Buffer_To_Mem(bit buffer,unsigned int pageaddr);
extern unsigned char  Mem_To_Buffer(bit buffer,unsigned int pageaddr);
extern unsigned char  Read_From_Buffer(void *ptr,int length,bit buffer,unsigned int byteaddr);
extern unsigned char  Memory_ArrayRead(void *ptr,int length,unsigned int pageaddr,unsigned int byteaddr);
extern unsigned char  Read_From_Buffer(void *ptr,int length,bit buffer,unsigned int BYTEaddr);
//extern unsigned char xdata UART_SendBuffer[150];//發送緩沖
#ifdef _DEBUG
unsigned char TempCount=0;
#endif

//=======================卡狀態操作函數=========================
//讀卡狀態表
unsigned char ReadCardStatusTable(unsigned int PageIndex,//頁序號 主表為0-939,其它只有1和2值
								  unsigned char *Buffer,//具體卡系列號
								  unsigned char Count,	//個數,1-33,最多一次33個
								  unsigned char Status)	//狀態(0:解掛 2:掛失  12:主表掛失)
{
	unsigned int iPage;	//頁地址
	unsigned int iAddr;	//頁內地址

#ifdef _DEBUG
	DebugString("PageIndex=");DebugData(2,2,(unsigned char *)&PageIndex);    
	DebugString("Count=");DebugData(1,1,&Count);    
	DebugString("Status=");DebugData(1,1,&Status);    
#endif

	if(Count > 33) return FORMAT_ERR;	//參數錯誤
	switch(Status)
	{
	case RESUME_LIST:	//解掛
		iPage = RESUMECARD_TEMP_PAGEADDR;	//給頁地址
		if(PageIndex == 0) 
			iAddr = 0;
		else if(PageIndex == 1)
			iAddr = 132;
		else
			return MEMADDR_ERR; //地址頁超界
		break;
	case BLACKLIST_TEMP:	//掛失臨時表
		iPage = CARDSTATE_TEMP_PAGEADDR;	//給頁地址
		if(PageIndex == 0) 
			iAddr = 0;
		else if(PageIndex == 1)
			iAddr = 132;
		else
			return MEMADDR_ERR; //地址頁超界
		break;
	case BLACKLIST_MAIN://主表掛失
		iPage = PageIndex / 2 + CARDSTATE_START_PAGEADDR;	//計算頁地址
		if(iPage > CARDSTATE_END_PAGEADDR) return MEMADDR_ERR; //地址頁超界
		if(PageIndex % 2) iAddr = 132; else iAddr = 0;		//計算開始地址
		break;
	default: return FORMAT_ERR; //參數錯誤
	}

#ifdef _DEBUG
	DebugString("iPage=");DebugData(2,2,(unsigned char *)&iPage);    
	DebugString("iAddr=");DebugData(2,2,(unsigned char *)&iAddr); 
#endif
  
	return Memory_ArrayRead(Buffer,Count*4,iPage,iAddr);
}


unsigned char SaveCardStatusTable(unsigned int  PageIndex,//序號 主表為0-939,其它只有1和2值
								  unsigned char *Buffer,	//具體卡系列號
								  unsigned char Count,	//個數,最多一次33個
							  	  unsigned char Status)	//狀態(0:解掛 2:掛失  12:主表掛失)
{
	unsigned int iPage;	//頁地址
	unsigned int iAddr;	//頁內地址
	unsigned char rst;		//函數返回值

	if(Count > 33) return FORMAT_ERR;	//參數錯誤
	switch(Status)
	{
	case RESUME_LIST:	//解掛
		iPage = RESUMECARD_TEMP_PAGEADDR;	//給頁地址
		if(PageIndex == 0) 
			iAddr = 0;
		else if(PageIndex == 1)
			iAddr = 132;
		else
			return MEMADDR_ERR; //地址頁超界
		break;
	case BLACKLIST_TEMP:	//掛失臨時表
		iPage = CARDSTATE_TEMP_PAGEADDR;	//給頁地址
		if(PageIndex == 0) 
			iAddr = 0;
		else if(PageIndex == 1)
			iAddr = 132;
		else
			return MEMADDR_ERR; //地址頁超界
		break;
	case BLACKLIST_MAIN://主表掛失
		iPage = PageIndex / 2 + CARDSTATE_START_PAGEADDR;	//計算頁地址
		if(iPage > CARDSTATE_END_PAGEADDR) return MEMADDR_ERR; //地址頁超界
		if(PageIndex % 2) iAddr = 132; else iAddr = 0;		//計算開始地址
		break;
	default: return FORMAT_ERR; //參數錯誤
	}
	if(iAddr) //地址大于0時,必須先讀出原Flash內數據
	{
		rst = Mem_To_Buffer(THE_BUFFER_ONE,iPage);
		if(rst != SUCCESS) return rst;
	}
	//寫數據到Flash緩沖區
	rst = Write_To_Buffer(Buffer,Count * 4,THE_BUFFER_ONE,iAddr);
	if(rst != SUCCESS) return rst;
	//把Flash的緩沖區數據存到Flash的存貯區上
	rst = Buffer_To_Mem(THE_BUFFER_ONE,iPage);
	switch(Status)
	{
	case RESUME_LIST:	//解掛
		stOtherTableInfo.iResumeCardTempTableRecordCount = PageIndex * 33;
		if(rst == SUCCESS) 
			stOtherTableInfo.iResumeCardTempTableRecordCount += Count;
		break;
	case BLACKLIST_TEMP:	//掛失臨時表
		stOtherTableInfo.iCardStatusTempTableRecordCount = PageIndex * 33;
		if(rst == SUCCESS) 
			stOtherTableInfo.iCardStatusTempTableRecordCount += Count;
		break;
	case BLACKLIST_MAIN://主表掛失
		stOtherTableInfo.iCardStatusMainTableRecordCount = PageIndex * 33;
		if(rst == SUCCESS) 
			stOtherTableInfo.iCardStatusMainTableRecordCount += Count;
		break;
	default: return FORMAT_ERR; //參數錯誤
	}
	return rst;
}


unsigned char ReadCardStatusList(unsigned long *plCardSerialNo,	//返回的卡系列號
								 unsigned int Offset,	//位置偏移量
								 unsigned char Status)	//狀態(0:解掛 2:掛失  12:主表掛失)
{
	unsigned int iPage;	//頁地址
	unsigned int iAddr;	//頁內地址
	unsigned char rst;

#ifdef _DEBUG
	DebugString("Offset=");DebugData(2,2,(unsigned char *)&Offset);    
	DebugString("Status=");DebugData(1,1,&Status);    
#endif
	switch(Status)
	{
	case RESUME_LIST:	//解掛
		if(Offset > 65) return MEMADDR_ERR;
		iPage = RESUMECARD_TEMP_PAGEADDR;
		break;
	case BLACKLIST_TEMP:	//掛失臨時表
		if(Offset > 65) return MEMADDR_ERR;
		iPage = CARDSTATE_TEMP_PAGEADDR;
		break;
	case BLACKLIST_MAIN://主表掛失
		iPage = CARDSTATE_START_PAGEADDR;
#ifdef _DEBUG
		DebugString("Init iPage=");
		DebugData(2,2,(unsigned char *)&iPage);    
#endif
		iPage += Offset / 66;	//計算具體頁地址
		if(iPage > CARDSTATE_END_PAGEADDR)
			return MEMADDR_ERR;
		break;
	default: return FORMAT_ERR; //參數錯誤
	}
	iAddr = Offset % 66 * 4;//計算具體頁內地址
#ifdef _DEBUG
	DebugString("iPage=");DebugData(2,2,(unsigned char *)&iPage);    
	DebugString("iAddr=");DebugData(2,2,(unsigned char *)&iAddr); 
#endif

	rst = Memory_ArrayRead(plCardSerialNo,4,iPage,iAddr);
#ifdef _DEBUG
	DebugString("Read DataFlash Result:");DebugData(1,1,&rst);
#endif
	return rst;
}


unsigned char IsInCardStatusList(unsigned long lCardSerialNo, 
								 unsigned char Status)
{
	unsigned long lSerialNo;
	short    iMin,iMax; //此處必須用符號數
	unsigned int iMid;
	unsigned char rst;
	
#ifdef _DEBUG
	DebugString("lCardSerialNo=");
	DebugData(4,4,(unsigned char *)&lCardSerialNo);    
	DebugString("Status=");
	DebugData(1,1,&Status);    
#endif
	//取得列表里記錄數
	switch(Status)
	{
	case RESUME_LIST:	//解掛
		iMax = stOtherTableInfo.iResumeCardTempTableRecordCount;
		break;
	case BLACKLIST_TEMP:	//掛失臨時表
		iMax = stOtherTableInfo.iCardStatusTempTableRecordCount;
		break;
	case BLACKLIST_MAIN://主表掛失
		iMax = stOtherTableInfo.iCardStatusMainTableRecordCount;
		break;
	default: return FORMAT_ERR; //參數錯誤
	}
#ifdef _DEBUG
	DebugString("Record Count=");DebugData(4,4,(unsigned char *)&iMax);    
#endif
	iMin=0;
	while(iMin < iMax)  //判斷終止條件
	{
		iMid = ((unsigned int)iMin + (unsigned int)iMax) / 2;	//中折
#ifdef _DEBUG
		DebugString("iMax=");DebugData(2,2,(unsigned char *)&iMax);    
		DebugString("iMin=");DebugData(2,2,(unsigned char *)&iMin);    
		DebugString("iMid=");DebugData(2,2,(unsigned char *)&iMid);    
#endif
		rst = ReadCardStatusList(&lSerialNo,iMid,Status);
#ifdef _DEBUG
		DebugString("Current lSerialNo=");
		DebugData(4,4,(unsigned char *)&lSerialNo);    
#endif
		if(rst != SUCCESS) return rst;//返回出錯
		if(lSerialNo == lCardSerialNo) //找到當前卡號
			return SUCCESS;	
		else if(lSerialNo < lCardSerialNo) //當前卡列號比黑名單表里的小
			iMin = iMid + 1;	//繼續找后面的數據
		else iMax = iMid;	//繼續找前面的數據
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产视频a| 欧美电影免费提供在线观看| 亚洲精品国产一区二区三区四区在线| 一本久久a久久精品亚洲| 免费一级欧美片在线观看| 中文字幕日本不卡| 久久亚洲一区二区三区明星换脸| 欧美日韩精品久久久| 在线亚洲免费视频| 国产乱码精品一品二品| 久久国产福利国产秒拍| 婷婷夜色潮精品综合在线| 亚洲蜜臀av乱码久久精品| 国产日韩精品一区二区浪潮av| 欧美大片在线观看一区二区| 欧美日韩五月天| 欧美丝袜丝交足nylons图片| 99re热视频这里只精品| 91在线免费看| 91福利视频久久久久| 色拍拍在线精品视频8848| 99re视频精品| 99久久99久久综合| 99久久精品国产一区二区三区| 国产91丝袜在线播放| 99久久免费精品高清特色大片| 成人自拍视频在线观看| 一本色道a无线码一区v| 日本韩国一区二区| 欧美体内she精视频| 欧美性大战久久久久久久蜜臀| 欧美日韩一级视频| 精品欧美黑人一区二区三区| 久久久久国产一区二区三区四区| 欧美丰满一区二区免费视频| 欧美成人性战久久| 欧美精品一区二区久久婷婷| 欧美精品一区二区久久久| 国产精品美女视频| 亚洲一区二区欧美日韩| 美国十次了思思久久精品导航| 久久福利资源站| 春色校园综合激情亚洲| 91福利在线导航| 日韩一二在线观看| 国产午夜亚洲精品不卡| 亚洲女同一区二区| 精品写真视频在线观看| 99精品一区二区三区| 欧美系列亚洲系列| 久久综合色婷婷| 亚洲免费看黄网站| 麻豆91精品视频| 欧美三级在线视频| 亚洲少妇最新在线视频| 国产精品一区一区| 91麻豆精品国产91久久久资源速度| 国产精品国产馆在线真实露脸| 久久国产精品色婷婷| 在线电影院国产精品| 亚洲三级免费电影| 成人精品电影在线观看| 久久亚区不卡日本| 另类小说综合欧美亚洲| 91麻豆精品国产91久久久资源速度 | 久久精品水蜜桃av综合天堂| 亚洲综合网站在线观看| 波多野结衣一区二区三区| 精品国产a毛片| 久久精品国产亚洲高清剧情介绍| 欧美男女性生活在线直播观看| 亚洲免费在线观看| 在线这里只有精品| 亚洲午夜精品网| 欧美色区777第一页| 天天色综合成人网| 国产欧美精品一区二区色综合朱莉| 久久精品国产成人一区二区三区 | 欧美日韩一卡二卡三卡| 麻豆精品新av中文字幕| 欧美日韩成人在线一区| 久久午夜色播影院免费高清| 日韩一区二区电影在线| 国产一区二区三区免费看| 欧美亚洲高清一区二区三区不卡| 亚洲精品乱码久久久久久久久 | 日欧美一区二区| 成人午夜免费av| 亚洲成av人片观看| 久久久影视传媒| 美女脱光内衣内裤视频久久网站| 国产精品国产自产拍在线| 综合亚洲深深色噜噜狠狠网站| 亚洲在线一区二区三区| 麻豆高清免费国产一区| 精品一区在线看| 日日摸夜夜添夜夜添精品视频| 国产福利精品一区| 波多野结衣中文一区| a在线欧美一区| 91在线高清观看| 欧美在线不卡视频| 欧美另类videos死尸| 亚洲精品在线免费播放| 久久美女艺术照精彩视频福利播放 | 蜜臀av一区二区三区| 亚洲成人免费av| 偷拍一区二区三区四区| 亚洲成人在线网站| 9色porny自拍视频一区二区| 久久九九影视网| 青青国产91久久久久久| 国产成人夜色高潮福利影视| 欧美性感一类影片在线播放| 亚洲色图丝袜美腿| 日本欧美一区二区| 色94色欧美sute亚洲13| 日本一区二区视频在线| 中文字幕免费不卡在线| 久久久久久久综合日本| 欧美r级电影在线观看| 欧美日韩国产在线观看| 久久久久高清精品| 国产精品综合一区二区| 亚洲精品在线观看网站| 午夜不卡av在线| 久久奇米777| 欧美性做爰猛烈叫床潮| 国产成人精品综合在线观看 | 在线观看国产日韩| 高清在线不卡av| 免费精品视频在线| 一区二区欧美在线观看| 国产精品国产三级国产三级人妇| 69p69国产精品| 欧美性大战xxxxx久久久| 波多野结衣视频一区| 国产精品亚洲第一| 久久国产精品99精品国产| 水蜜桃久久夜色精品一区的特点| 亚洲人午夜精品天堂一二香蕉| 久久精品夜色噜噜亚洲aⅴ| 欧美一区二区在线免费播放| 在线观看日产精品| 在线免费观看一区| 欧美主播一区二区三区美女| 成人精品国产免费网站| 国产成人免费视频网站| 国产一区不卡精品| 国产成人自拍网| 成人午夜视频福利| 国产99久久久精品| 懂色av一区二区三区蜜臀 | a4yy欧美一区二区三区| 不卡av在线免费观看| 成人深夜福利app| 国产.欧美.日韩| 不卡高清视频专区| 色综合久久天天综合网| 91麻豆福利精品推荐| 91女人视频在线观看| 91麻豆免费观看| 欧美三级午夜理伦三级中视频| 精品视频免费在线| 91麻豆精品国产91久久久久久久久 | 久久精品国产99国产| 国内精品免费**视频| 国产成人免费视频一区| 91偷拍与自偷拍精品| 一本大道久久精品懂色aⅴ| 欧美色视频在线| 日韩视频免费观看高清在线视频| 精品久久久影院| 国产区在线观看成人精品| 国产精品国产三级国产三级人妇 | 国产人成一区二区三区影院| 国产精品人成在线观看免费| 欧美激情资源网| 亚洲一区在线观看免费| 麻豆精品视频在线观看视频| 国产精品美女久久福利网站 | 精品99999| 日日噜噜夜夜狠狠视频欧美人| 奇米色777欧美一区二区| 国产在线一区二区| 欧美色倩网站大全免费| 亚洲午夜一二三区视频| 欧美三级日韩三级| 1区2区3区国产精品| 日韩精品三区四区| 欧美剧情片在线观看| 国产精品天干天干在线综合| 欧美96一区二区免费视频| 欧美日韩精品专区| 久久久亚洲午夜电影| 日韩在线一区二区三区| 欧美午夜精品久久久久久孕妇| 欧美精品一区二区精品网| 亚洲午夜久久久久久久久电影网 | 久久综合久久久久88|