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

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

?? iccard.c

?? IC卡的操作(包括讀寫器以及IC卡的操作)
?? C
?? 第 1 頁 / 共 2 頁
字號:

//*對IC卡的讀寫操作在IC卡的讀寫器上完成,此時用戶需要讀寫器進行交互式處理。首先*/
//*系統核對IC卡的廠商代碼和卡型,如果正確,則在空白卡上寫入發行商的代碼,并確定*/
//*次卡有效。然后應用系統應該提供交互界面,讓用戶從鍵盤輸入自己的用戶密碼。在密*/
//*碼寫入后,系統在提供用戶對密碼核實和再修改的機會。確認無誤后,軟件發出熔斷命*/
//*令,熔斷熔絲,完成IC卡的個人進程。隨后,系統再對IC卡的數據區寫入初始化數據。*/  
/*  有AT90LS8535單片機構成的IC卡讀寫器如圖所示
	  //***********************************************************************/
    /*  
	AT90LS8535               IC卡接口
	      PA0 ------------> sCLK
		  PA1 <------------ sDO
		  PA2 ------------> sDI
		  PA3 ------------> sCS

    //*圖中單片機通過PA1將數據按按位送出至sDO口,通過PA2口將數據按位從sDI輸入,*/
    //*其中的sCLK和sCS分別接PA0和PA3 。                                        */
	/*ICcard.c 
    日期:2004-09-16  
	單元作者:張志華
	權限:四川華訊
	功能:IC卡模塊接口的實現
    avr-gcc -mmcu=at90s8535 -mint8 -Os -fno-reorder-blocks -o ICcard.elf ICcard.c
	avr-objcopy -O ihex ICcard.elf ICcard.hex
*/

#include <avr/io.h>#include <avr/io8535.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define BIT BV
/*********************************************************************************/
//定義的子函數
uchar FileExists(uchar *FileName);
uchar FileCreate(uchar *FileName);//創建文件
uchar FileOpen(uchar *FileName);//打開文件
void FileClose(uchar *Handle);//關閉文件
int FileRead(uchar Handle,uchar *Buffer,int Start,int Count);
int FlieWrite(uchar Handle ,char *Buffer, int Start ,int Count);//寫文件
uchar FileDelete(uchar *FileName);//刪除文件
uchar ICFormat();//格式化IC卡
uchar ICDeleteAll();//清除IC卡數據
ulong ICFreeSize();//獲取可用空間字節數
ulong ICUsedSize();//獲取已用空間字節數
ulong ICTotalSize();//獲取總空間字節數
void ICReadDirInfo(uchar IndexOfDir,ICDirInfo *DirInfo);//讀取目錄信息
uchar ICWriteDirInfo(uchar IndexOfDir,ICDirInfo *DirInfo);//寫入目錄信息
void ICReadSysInfo(_ICSysInfo *ICInfo,uint SysPage);//讀取IC卡系統信息
uchar ICWriteSysInfo(_ICSysinfo *ICInfo,uint SysPage);//寫入IC卡系統信息
uint ICReadPageSign(uint Page);//讀頁標記
uchar ICWritePageSign(uint Page,uint Sign);//寫頁標記
uint ICFirstFreePage();//尋找第一個空閑的頁
uint ICNextFreePage(uint StartPage);//尋找下一個空閑的頁
void ICDirIndexToPageByteAddr(uchar DirIndex,uint *Page ,uint *ByteAddr);
uchar ICWriteToPage(uchar *p ,uchar Count ,uint Page ,uint ByteAddr);
uchar ICReadPageByte(uint Page ,uint ByteAddr);
void ICWriteBuf1Byte(uint ByteAddr,uchar b);
void ICWriteBuf2Byte(uint ByteAddr,uchar b);
uchar ICReadBuf1Byte(uint ByteAddr);//讀緩存1數據
uchar ICReadBuf2Byte(uint ByteAddr);//讀緩存2數據
uchar ICBuf1CmpPage(uint Page);//頁與緩存1比較
uchar ICBuf2CmpPage(uint Page);//頁與緩存2比較
void ICBuf1ToPage(uint Page);//緩存1寫入頁
void ICBuf2ToPage(uint Page);//緩存2寫入頁
void ICPageToBuf1(uint Page);//頁寫入緩存1
void ICPageToBuf2(uint Page);//頁寫入緩存2
void ICWaitReady();//等待IC卡準備好
uchar ICStatus();//讀IC卡狀態
unsigned char ICCommand(OpCode cmd,uint Page,uint ByteAddr);//IC卡命令選擇執行
void ICWriteNextByte(uchar b);//連續寫下一個字節
uchar ICReadNextByte();//連續讀下一個字節
void ICOutOpCode(OpCode cmd);//發送命令字
void ICOutPage(uint Page);//發送頁面地址
void ICOutByteAddr(uint ByteAddr);//發送字節地址
void ICOutXBits(uchar x);//發送X個任意字符
/*********************************************************************************/

//文件目錄
typedef struct  
{
	uchar FileName[8];   //文件名稱
	uchar FileExt[3];    //文件擴展名
	uchar FileAttr;      //文件屬性
	uchar a[10];         
	uchar UpdateTime;    //文件更新時間
	uchar FirstPage;     //文件首頁號
	uchar FileSize;      //文件字節數
}ICDirInfo;
//信息結構
typedef struct  
{
	uchar VersionName[8];  //版本名稱
    uchar Version[3];      //版本號
	uchar ICName[8];       
	uchar ICPages;         
	uchar PageBytes;      
	uchar DirStart;        //根文件目錄開始頁
	uchar DirLength;       //根文件目錄表頁長度
	uchar FatStart;        
	uchar FatLength;       
	uchar DataStart;       
	uchar DataLength;      
}ICSysInfo;
//文件分配表中頁標記含義
	const uint code csFree=0x0000;       //未用的頁
	const uint code csReserved=0xfff0;   //系統保留的頁
	const uint code csError=0xfff7;      //壞頁的標記
	const uint code csFileEnd=0xfff8;    //文件中最后的頁
	const uint code csNextMin=0x0003;    //下一標記中最小值
	const uint code csNextMax=0xffef;    //下一標記中最大值
	const uint code csEnd=0xffff;        //文件分配表結束
	const uint code SysInfoPage=0;       //保存系統信息的頁
	const uint code DirStartPage=2;      //文件目錄區首頁
	//ICSysInfo _ICSysinfo;
	
//At45D041卡的操作
typedef enum
{
	PageRead=0x52,                       //直接讀頁,緩存不變
	Buf1Read=0x54,                       //緩存1讀
	Buf2Read=0x56,                       //緩存2讀
	PageToBuf1=0x53,                     //頁讀緩存至存1
	PageToBuf2=0x55,                     //頁讀緩存至存2
	PageCmpBuf1=0x60,                    //頁與緩存1比較,結果在狀態寄存器地6位
	PageCmpBuf2=0x61,                    //頁與緩存2比較,結果在狀態寄存器地6位
	Buf1Write=0x84,                      //緩存1寫
	Buf2Write=0x87,                      //緩存2寫
	Buf1ToPageWithErase=0x83,            //將緩存1寫入頁
	Buf2ToPageWithErase=0x86,            //將緩存2寫入頁
	Buf1ToPagewithoutErase=0x88,         //將緩存1寫入頁
	Buf2ToPagewithoutErase=0x89,         //將緩存2寫入頁
	PageWriteThrougthBuf1=0x82,          //數據先寫入緩存1,再寫入頁
	PageWriteThrougthBuf2=0x85,          //數據先寫入緩存2,再寫入頁
	PageRewriteThrougthBuf1=0x58,        //頁讀入緩存1,然后緩存1寫入頁
	PageRewriteThrougthBuf2=0x59,        //頁讀入緩存2,然后緩存2寫入頁
	StatusRead=0x57,                     //讀狀態寄存器
}OpCode;

uchar FileExists(uchar *FileName)
{
	uchar i=1;
	uchar c;
	ICDirInfo tempDir;
	uchar *p=(uchar*)(&tempDir);
	do 
	{
		ICReadDirinfo(i,&tempDir);
		c=strncmp(p,FileName,sizeof(tempDir,FileName));
		if (c==0)
			return(i);
		else
			i++;
	} 
	while(i<128);
	return (0);
}//創建文件
uchar FileCreate(uchar *FileName)
{
	uchar i;
	ICDirInfo tempDir;
	uchar *p=(uchar*)(&tempDir);
	i=FileExists(FileName);
	if (i=0)
	{
		FileDelete(FileName);
	}
	do 
	{
		ICReadDirInfo(i,&tempDir);
		if (*p==0x00)
		{
			ICWriteDirInfo(i,&tempDir);
			return(i);
		}
	} 
	while(i<128);
	return (0);
}
//打開文件
uchar FileOpen(uchar *FileName)
{
	return(FileExists(FileName));
}
//關閉文件
void FileClose(uchar *Handle)
{
	*Handle=0x00;
}
//讀文件
int FileRead(uchar Handle,uchar *Buffer,int Start,int Count)
{
	int iResult=0;
	uint iTemp,curPage,oldPage=0,numPage=0;
	ulong FileLen;
	ICDirInfo tempDir;
	if (Handle==0x00)
		return(-1);
	ICReadDirInfo(Handle,&tempDir);
	FileLen=tempDir.FileSize;
	curPage=tempDir.FirstPage;
	while (Count>0 && Start<FileLen)
	{
		do 
		{
			iTemp=(numPage+1)*ICSysInfo.PageBytes;
			if (Start>iTemp)
			{
				curPage=ICReadPageSign(curPage);
				numPage++;
			}
		} 
		while(1);
		if (oldPage!=curPage)   //判斷是否在同一頁
		{
			*Buffer++=ICReadPageByte(curPage,(Start&ICSysinfo.PageBytes));
			oldPage=curPage;
		}
		else
		{
			*Buffer++=ICReadNextByte();
		}
		Start++;
		Count--;
		iResult++;// 讀取字節數加1
	}
	return(iResult);
}
//寫文件
int FlieWrite(uchar Handle ,char *Buffer, int Start ,int Count)
{
	int iResult=0;
	uint iTemp,currPage,oldPage=0,numPage=0;
	ulong FileLen;
	ICDirInfo tempDir;
	if (Handle==0x00)    //判斷文件句柄是否有效
		return(-1);
	ICReadDirInfo(Handle,&tempDir);//讀取文件目錄信息
	FileLen=tempDir.FileSize;
	currPage=tempDir.FirstPage;
	while(Count>0) //讀取文件字節數
	{
		do 
		{
			iTemp=(numPage+1)*ICSysInfo.PageBytes;
			if (Start>iTemp) 
			{
				currPage=ICReadPageSign(currPage);
				numPage++;
			}
			else
			{
				break;
			}
		} 
		while(1);
	}
	if (oldPage!=currPage)//判斷是否在同一頁
	{
		if (oldPage!=0)
		{
			ICBuf1ToPage(oldPage);
		}
		ICPageToBuf1(oldPage);
		ICWriteBuf1Byte(Start&ICSysinfo.PageBytes,*Buffer++);
		oldPage=currPage;
	}
	else
	{
		ICWriteNextByte(*Buffer++);
	}
	Start++;
	Count--;
	iResult++;     //讀取字節數+1
	return (iResult);
}
//刪除文件
uchar FileDelete(uchar *FileName)
{
	uchar i;
	ICDirInfo tempDir;
	uchar *p=(uchar *)(&tempDir);
	uint w,w1;
	i=FileExists(FileName);
	if (i!=0)
	{
		ICReadDirInfo(i,&tempDir);
		w=tempDir.FirstPage;
		w1=ICReadPageSign(w);
		while (w1!=csFileEnd)
		{
			ICWritePageSign(w,csFree);
			w=w1;
			w1=ICWritePageSign(w);
		}
		ICWritePageSign(w,csFree);
		ICWritePageSign(w1,csFree);
		*p=0x00;
		ICWriteDirInfo(i,&tempDir);
	}
	return (1);
}
//格式化IC卡
uchar ICFormat()
{
	uchar b;
	ICWriteSysInfo(*ICSysInfo,SysInfoPage);   //寫入系統信息
	ICDeleteAll();
	return(b);
}
//清除IC卡數據
uchar ICDeleteAll()
{
	uchar b=1;
	uint i,j;
	//初始化寫入文件目錄
	for (i=ICSysInfo.DirStart;i<=ICSysInfo.FatLength;i++)
	{
		ICWriteBuf1Byte(i,0);
		for (j=1;j<ICSysInfo.PageBytes;j++)
			ICWriteNextByte(0);
		ICBuf1ToPage(i);
		ICWaitReady();
		if (!ICBuf1CmpPage(i))
		{
			b=0;
			break;
		}
	}
	return(b);//if (!b) return(b);
	//初始化寫入文件分配表
	for (i=ICSysInfo.FatStart;i<=ICSysInfo.FatLength;i++)
	{
		ICWriteBuf1Byte(i,0);
		for (j=1;j<ICSysInfo.PageBytes;j++)
			ICWriteNextByte(0);
		ICBuf1ToPage(i);
		ICWaitReady();
		if (!ICBuf1CmpPage(i))
		{
			b=0;
			break;
		}
	}
	return(b);
}
//獲取可用空間字節數
ulong ICFreeSize()
{
	uint curPage=0;
	ulong lResult=0;
	do 
	{
		curPage=ICNextFreePage(curPage);
		if (curPage>0)
			lResult++;
		else
			break;
	} 
	while(1);
	lResult*=ICSysInfo.PageBytes;
	return(lResult);
}
//獲取已使用空間字節數
ulong ICUsedSize()
{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情久久五月天| 欧美精品久久天天躁| 欧美色图在线观看| 欧美精品一区二| 亚洲高清在线视频| 白白色亚洲国产精品| 日韩一卡二卡三卡| 亚洲一区二区三区激情| 亚洲激情六月丁香| 五月天一区二区| 99re这里都是精品| 欧美激情在线一区二区三区| 免费成人在线网站| 欧美日韩精品二区第二页| 国产无遮挡一区二区三区毛片日本| 亚洲国产精品人人做人人爽| 91首页免费视频| 国产精品福利一区| 粉嫩高潮美女一区二区三区| 在线不卡一区二区| 亚洲一区国产视频| 91影院在线免费观看| 日本一区二区三区四区在线视频| 美女性感视频久久| 欧美日韩成人在线| 一区二区高清免费观看影视大全| 岛国av在线一区| xnxx国产精品| 国产很黄免费观看久久| 欧美一级日韩一级| 天天操天天色综合| 7777精品伊人久久久大香线蕉经典版下载 | 成人毛片视频在线观看| 久久久精品免费免费| 久久99国产乱子伦精品免费| 欧美一区二区三级| 久久狠狠亚洲综合| 精品对白一区国产伦| 韩国精品在线观看| 国产日韩精品一区二区三区| 成人午夜在线视频| 中文字幕一区二区视频| 91在线码无精品| 亚洲精品欧美二区三区中文字幕| 91丝袜国产在线播放| 亚洲免费观看高清完整版在线| 91片黄在线观看| 亚洲超碰精品一区二区| 日韩欧美中文字幕公布| 精品一二三四在线| 国产亚洲精品超碰| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产福利视频一区二区三区| 国产亚洲精品免费| 色哟哟欧美精品| 日本欧美加勒比视频| 国产欧美一区二区三区沐欲| 成人激情小说乱人伦| 亚洲电影一区二区| 欧美岛国在线观看| 99精品视频在线观看| 婷婷国产v国产偷v亚洲高清| 久久久精品综合| 欧美性一区二区| 国产在线一区观看| 一区二区三区影院| 精品久久久久久最新网址| 不卡av在线免费观看| 天堂在线亚洲视频| 国产精品视频麻豆| 欧美一区二区三区不卡| 99久久99久久综合| 美女视频免费一区| 成人欧美一区二区三区视频网页| 欧美精品1区2区| 成人成人成人在线视频| 麻豆91精品视频| 亚洲精品视频免费看| 久久综合九色欧美综合狠狠| 91免费在线视频观看| 九九精品视频在线看| 亚洲午夜精品久久久久久久久| 久久久久久久免费视频了| 欧美在线观看一区| 成人黄色小视频| 久久精品国产亚洲高清剧情介绍| 亚洲色图在线播放| 欧美激情综合五月色丁香小说| 欧美精品精品一区| 日本韩国精品一区二区在线观看| 国产一区二区三区蝌蚪| 五月综合激情网| 亚洲精品亚洲人成人网在线播放| 国产人久久人人人人爽| 欧美成人性战久久| 日韩三级视频在线看| 欧美日韩国产成人在线91| 91美女精品福利| 成人免费视频网站在线观看| 国产一区日韩二区欧美三区| 日韩国产欧美在线视频| 亚洲第一精品在线| 亚洲大片免费看| 亚洲在线免费播放| 亚洲精品久久嫩草网站秘色| 国产精品成人在线观看| 国产欧美一区二区精品性| 2022国产精品视频| 26uuu国产一区二区三区| 久久中文娱乐网| 日韩精品中文字幕在线一区| 欧美肥妇bbw| 欧美一区午夜视频在线观看| 91精品国产手机| 日韩免费高清av| 久久新电视剧免费观看| 久久色.com| 久久伊人中文字幕| 国产女人aaa级久久久级| 国产亚洲欧洲997久久综合| 国产欧美一区二区精品久导航| 久久精品亚洲麻豆av一区二区| 国产亚洲精品中文字幕| 亚洲欧洲成人精品av97| 亚洲精品视频一区| 日韩国产欧美在线观看| 老鸭窝一区二区久久精品| 黄色资源网久久资源365| 国产精品亚洲成人| 91影视在线播放| 欧美三级电影一区| 日韩欧美不卡在线观看视频| 久久精品在线免费观看| 国产精品久久久久久久裸模| 亚洲男人天堂av网| 蜜桃视频免费观看一区| 国产成人午夜99999| 色悠悠亚洲一区二区| 欧美另类久久久品| 久久蜜桃香蕉精品一区二区三区| 国产精品福利在线播放| 亚洲va欧美va天堂v国产综合| 蜜桃av一区二区三区电影| 国产成人午夜电影网| 欧美在线999| 久久婷婷色综合| 亚洲一区二区三区小说| 黄网站免费久久| 91成人免费电影| 26uuu久久综合| 亚洲综合色网站| 经典一区二区三区| 欧美性xxxxxxxx| 久久精品一区二区三区不卡| 亚洲精品videosex极品| 麻豆久久久久久| 在线欧美一区二区| 久久免费美女视频| 天天免费综合色| fc2成人免费人成在线观看播放| 3atv一区二区三区| 亚洲精品免费播放| 粉嫩久久99精品久久久久久夜| 678五月天丁香亚洲综合网| 亚洲丶国产丶欧美一区二区三区| 亚洲午夜在线视频| 成人少妇影院yyyy| 欧美一区午夜精品| 一区二区三区欧美日| 国产成人自拍高清视频在线免费播放| 91成人国产精品| 亚洲三级小视频| 国产91精品在线观看| 日韩视频不卡中文| 亚洲成人一区在线| 91视视频在线观看入口直接观看www| 26uuu国产一区二区三区| 男男gaygay亚洲| 欧美日韩国产一二三| 亚洲卡通欧美制服中文| 99久久综合国产精品| 日本一区二区视频在线| 国产毛片精品视频| 欧美成人一区二区三区在线观看| 亚洲午夜久久久久| 一本高清dvd不卡在线观看| 欧美高清在线一区| 国产不卡在线播放| 久久久久国产精品人| 精品在线免费观看| 精品嫩草影院久久| 精品在线免费观看| 久久久久久99久久久精品网站| 久久精品免费看| 日韩欧美视频在线| 激情综合网激情| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 蜜芽一区二区三区| 日韩欧美中文字幕制服| 青青草91视频|