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

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

?? hwaccess.c

?? 經過測試好用的讀卡器源程序
?? C
字號:
#include <ansi_c.h>
#include <userint.h>
#include "SMCanalyzer.h"
#include <utility.h>
#include <cvirte.h>		/* Needed if linking in external compiler; harmless otherwise */
#include "hwcfg.h"
#include "HwAccess.h"
#include "common.h"
extern struct ADDRESS Media;

void HwInitial(void)
{
	outp (ECRPORT,0x00);        // Configure Parallel to SPP mode
	outp (CONTROLPORT,0x04);	// Initialize control line
	outp (ECRPORT,0x80);        // Configure Parallel to EPP mode
	Hw_VccOff();
	Hw_chip_disable();
	Hw_write_disable();
}

unsigned char CheckReader(void)
{
	int i;
	outp (CONTROLPORT,0x04);	// output High level
	for (i=500;i;i--);
	if (!(inp (STATUSPORT) & READER_STATUS)) return 0;
	outp (CONTROLPORT,0x00);	// output Low level
	for (i=500;i;i--);
	if (inp (STATUSPORT) & READER_STATUS) return 0;
    outp (CONTROLPORT,0x04);	// output High level
    return 1;
}

void SoftReset_Smc(void)                              //Reset Flash
{
	short int i;
	Hw_cmd_latch_enable();
	Hw_OutData(Reset_cmd );          /*Reset command (ffh)*/
	Hw_cmd_latch_disable();
	for(i=0; i<1000; i++);		     /* Waiting for tRST */
}
/* Physical Page Read
   PageRead()
   Read 528 bytes from SmartMedia
*/
void PageRead(unsigned char *page_data, unsigned int page_add)
{
    unsigned char Adr1, Adr2, Adr3, Adr4;    // Startaddress pieces
	short int i;
    
    Adr1 = 0x00;
    Adr2 = (unsigned char)((page_add >> 9) & 0xFF);  	// Adr2 = A9-A16
    Adr3 = (unsigned char)((page_add >> 17) & 0xFF);  	// Adr3 = A24-A17
    if (info_flash[1] == 16) Adr3 &= 0x7F;            // set A24 to 0 if 16MB
    Adr4 = (unsigned char)((page_add >> 25) & 0x01);  	// Adr3 = A25
    SoftReset_Smc();
    Hw_chip_enable();
	Hw_cmd_latch_enable();
	Hw_OutData(Read1_cmd);   				/* Read Mode1 command (00h) */
	Hw_cmd_latch_disable();
	Hw_add_latch_enable();
	Hw_OutData(Adr1);
	Hw_OutData(Adr2);
	Hw_OutData(Adr3);
	if(info_flash[1]>=64)   Hw_OutData(Adr4);
	Hw_add_latch_disable();
	for(i=0; i<2000; i++);
	for(i=0;i<info_flash[4];i++) page_data[i]= Hw_InData();    /*Page data Read*/
	Hw_chip_disable();
}

short int StatusCheck(void)                              //status check
{
	short int i;
	unsigned char status;

	for(i=0; i<30000; i++){
		Hw_cmd_latch_enable();
		Hw_OutData(Read_Status1_cmd);    // 0x70
		Hw_cmd_latch_disable();
		status= Hw_InData();
		if (status == 0xc0) break;
	}
	if (status == 0xc0)      return  PASS;
	else 			 return  FAIL;
}


short int BlockErase(unsigned int page_add) 		// Erasing single block
{
    unsigned char Adr2, Adr3, Adr4;    // Startaddress pieces
	short int i;

    Adr2 = (unsigned char)((page_add >> 9) & 0xFF);  	// Adr2 = A9-A16
    Adr3 = (unsigned char)((page_add >> 17) & 0xFF);  	// Adr3 = A24-A17
    if (info_flash[1] == 16) Adr3 &= 0x7F;            // set A24 to 0 if 16MB
    Adr4 = (unsigned char)((page_add >> 25) & 0x01);  	// Adr3 = A25

    Hw_chip_enable();
    Hw_write_enable();
	Hw_cmd_latch_enable();
	Hw_OutData(Block_Erase_cmd);  			//Block Erase command (60h)
	Hw_cmd_latch_disable();
	Hw_add_latch_enable();
	Hw_OutData(Adr2);
	Hw_OutData(Adr3);
	if(info_flash[1]>=64)   Hw_OutData(Adr4);
	Hw_add_latch_disable();
	Hw_cmd_latch_enable();
	Hw_OutData(Block_Erase_Confirm_cmd);	/* Block Erase Confirm command (D0h) */
	Hw_cmd_latch_disable();
	if(StatusCheck()!=FAIL)	return PASS;
	else	                return FAIL;
}

/* Physical Page Write
   PageWrite()
   Write 528 bytes to SmartMedia from DataBuffer
*/
short int PageWrite(unsigned char *write_data,unsigned int page_add)
{
    unsigned char Adr1, Adr2, Adr3, Adr4;    // Startaddress pieces
	short int i;

    Adr1 = 0x00;
    Adr2 = (unsigned char)((page_add >> 9) & 0xFF);  	// Adr2 = A9-A16
    Adr3 = (unsigned char)((page_add >> 17) & 0xFF);  	// Adr3 = A24-A17
    if (info_flash[1] == 16) Adr3 &= 0x7F;            // set A24 to 0 if 16MB
    Adr4 = (unsigned char)((page_add >> 25) & 0x01);  	// Adr3 = A25
    SoftReset_Smc();
    Hw_chip_enable();
    Hw_write_enable();
	Hw_cmd_latch_enable();
	Hw_OutData(Serial_Data_Input_cmd);  			//Sequential Data Input command (80h)
	Hw_cmd_latch_disable();
	Hw_add_latch_enable();
	Hw_OutData(Adr1);
	Hw_OutData(Adr2);
	Hw_OutData(Adr3);
	if(info_flash[1]>=64)   Hw_OutData(Adr4);
	Hw_add_latch_disable();
	for(i=0; i<2000; i++);
	for(i=0;i<info_flash[4];i++) Hw_OutData(write_data[i]);   //Page data write
	Hw_cmd_latch_enable();
	Hw_OutData(Page_Program_True_cmd);	    //Page Program command (10h)
	Hw_cmd_latch_disable();

	if (StatusCheck() !=PASS)
	  {
	  printf("Invalid Blocks are detected");
      Hw_chip_disable();
	  Hw_write_enable();
	  return FAIL;
	  }
	Hw_chip_disable();
	Hw_write_enable();
	return PASS;

} 

unsigned int ReadID(void)		// Read ID
{
	unsigned int i,dent_bit;
	unsigned char m_code,d_code;

	Hw_chip_enable();
	Hw_cmd_latch_enable();
	Hw_OutData(ReadID1_cmd);   	/*Read ID command*/
	Hw_cmd_latch_disable();
	Hw_add_latch_enable();
	Hw_OutData(0x00);	    	/*1st address cycle*/
	Hw_add_latch_disable();
	m_code = Hw_InData();    /* Reading 2 byte data */
	d_code = Hw_InData();

	if(d_code==0xa4)	 				 dent_bit=4;
	else if(d_code==0x6e||d_code==0xec)	 dent_bit=8;
	else if(d_code==0xea||d_code==0x64)	 dent_bit=16;
	else if(d_code==0xe3||d_code==0xe5||d_code==0x6b)	 dent_bit=32;
	else if(d_code==0xe6||d_code==0x6d||d_code==0x70)	 dent_bit=64;
	else if(d_code==0x73||d_code==0xf2)	 dent_bit=128;
	else if(d_code==0xf4||d_code==0x75)	 dent_bit=256;
	else if(d_code==0xf7||d_code==0x76)	 dent_bit=512;
	else if(d_code==0xf8||d_code==0x79)	 dent_bit=1024;

	info_flash[0]= m_code;               //0xec;samsung,0x98:toshiba
	switch (dent_bit){
        case 8:
			info_flash[1]=1;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=256;     // blocks_disk		value: blocks in a disk
			info_flash[3]=16;      // pages_block		value: pages in a block
			info_flash[4]=264;      // page_size		value: page_size in bytes
			info_flash[5]=256;      // data_size		value: data_size in bytes
			info_flash[6]=8;        // spare_size		value: spare_size in bytes
			info_flash[7]=8;        // sector count		value: sectors per block
			info_flash[8]=0x0f;     // Max Address          value: ADD3 value
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 16:
			info_flash[1]=2;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=512;     // blocks_disk		value: blocks in a disk
			info_flash[3]=16;      // pages_block		value: pages in a block
			info_flash[4]=264;      // page_size		value: page_size in bytes
			info_flash[5]=256;      // data_size		value: data_size in bytes
			info_flash[6]=8;        // spare_size		value: spare_size in bytes
			info_flash[7]=8;        // sector count		value: sectors per block
			info_flash[8]=0x1f;     // Max Address          value: ADD3 value
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 32:
			info_flash[1]=4;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=512;     // blocks_disk		value: blocks in a disk
			info_flash[3]=16;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=16;        // sector count	value: sectors per block
			info_flash[8]=0x1f;     // Max Address          value: ADD3 value
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 64:
			info_flash[1]=8;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=1024;     // blocks_disk		value: blocks in a disk
			info_flash[3]=16;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=16;        // sector count	value: sectors per block
			info_flash[8]=0x3f;
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 128:
			info_flash[1]=16;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=1024;     // blocks_disk		value: blocks in a disk
			info_flash[3]=32;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=32;        // sector count	value: sectors per block
			info_flash[8]=0x7f;     // Max Address          value: ADD3 value
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 256:
			info_flash[1]=32;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=2048;     // blocks_disk		value: blocks in a disk
			info_flash[3]=32;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=32;        // sector count	value: sectors per block
			info_flash[8]=0xff;     // Max Address          value: ADD3 value
			info_flash[9]=0x00;     // Max Address          value: ADD4 value
			break;
		case 512:
			info_flash[1]=64;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=4096;     // blocks_disk		value: blocks in a disk
			info_flash[3]=32;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=32;        // sector count	value: sectors per block
			info_flash[8]=0xff;     // Max Address(UNKNOWN) value: ADD3 value
			info_flash[9]=0x01;     // Max Address          value: ADD4 value
			break;
		case 1024:
			info_flash[1]=128;       // device_type		1:1M, 2:2M, 4:4M, 8:8M, 16:16M, 32:32M ...bytes
			info_flash[2]=8192;     // blocks_disk		value: blocks in a disk
			info_flash[3]=32;      // pages_block		value: pages in a block
			info_flash[4]=528;      // page_size		value: page_size in bytes
			info_flash[5]=512;      // data_size		value: data_size in bytes
			info_flash[6]=16;        // spare_size		value: spare_size in bytes
			info_flash[7]=32;        // sector count	value: sectors per block
			info_flash[8]=0xff;     // Max Address(UNKNOWN) value: ADD3 value
			info_flash[9]=0x03;     // Max Address          value: ADD4 value
			break;
		default:
			for(i=0;i<10;i++) 	info_flash[i]=0x00; //Unknown device type and density
			dent_bit=0xff;
	}
	return (dent_bit);               // Returning to device density
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美情侣在线播放| 久久久久久久久97黄色工厂| 久久国内精品视频| 成人免费一区二区三区视频| 日韩一区二区三区三四区视频在线观看 | jizzjizzjizz欧美| 日韩福利视频导航| 亚洲三级在线免费| 久久久亚洲精品石原莉奈| 在线一区二区视频| 从欧美一区二区三区| 日韩电影一二三区| 亚洲综合精品久久| 国产精品久久久久桃色tv| 日韩欧美的一区| 欧美人与z0zoxxxx视频| 色综合av在线| 成人三级伦理片| 国产一区二区美女| 免费在线观看一区| 婷婷丁香久久五月婷婷| 综合久久久久久久| 国产欧美精品一区| 精品国产乱子伦一区| 制服丝袜亚洲精品中文字幕| 在线免费视频一区二区| av爱爱亚洲一区| 成人一级视频在线观看| 极品美女销魂一区二区三区免费| 亚洲成av人影院在线观看网| 亚洲一区二区三区四区不卡| 欧美国产1区2区| 中文字幕乱码日本亚洲一区二区| 久久久99精品久久| 久久久国产一区二区三区四区小说| 日韩一区二区三区精品视频| 欧美久久久久久久久中文字幕| 91黄色小视频| 欧美视频一区二区三区在线观看| 91年精品国产| 91片黄在线观看| 色呦呦网站一区| 在线精品视频免费观看| 色噜噜狠狠成人中文综合| 不卡的av网站| 一本到不卡精品视频在线观看| 91美女精品福利| 欧美在线观看视频在线| 欧美精选在线播放| 欧美大片一区二区三区| 欧美不卡一二三| 久久久久久久久97黄色工厂| 欧美激情一二三区| 亚洲色图在线播放| 一区二区三区高清| 日欧美一区二区| 国产专区综合网| 国产·精品毛片| 一本到不卡精品视频在线观看| 欧美日韩精品是欧美日韩精品| 91精品国产全国免费观看| 精品剧情v国产在线观看在线| 久久久久国产精品厨房| 亚洲欧美另类图片小说| 亚洲va中文字幕| 国内精品在线播放| aaa欧美大片| 67194成人在线观看| 久久久久久久久久久久久女国产乱 | 久久99精品一区二区三区| 国产一区不卡精品| 91亚洲永久精品| 欧美男人的天堂一二区| 精品国产91久久久久久久妲己| 国产日韩av一区二区| 亚洲欧美日韩成人高清在线一区| 日本欧美加勒比视频| 成人午夜伦理影院| 欧美丰满美乳xxx高潮www| 久久久久久麻豆| 亚洲成年人影院| 国产毛片一区二区| 欧美亚洲综合久久| 久久久久久**毛片大全| 亚洲女子a中天字幕| 久久er99精品| 99久久国产综合精品麻豆| 欧美精品黑人性xxxx| 国产精品日产欧美久久久久| 亚洲午夜久久久久中文字幕久| 国产一区视频导航| 欧美男生操女生| 国产精品国产三级国产有无不卡| 爽好多水快深点欧美视频| 成人午夜免费视频| 亚洲电影一区二区| 国内精品伊人久久久久影院对白| 欧美怡红院视频| 国产精品乱码久久久久久| 免费观看一级欧美片| 99久久国产综合精品女不卡| 精品噜噜噜噜久久久久久久久试看| 亚洲人成精品久久久久| 国产精品综合视频| 91精品国产一区二区| 悠悠色在线精品| 国产99精品国产| 欧美va在线播放| 亚洲成av人**亚洲成av**| 99精品在线观看视频| 久久久久久97三级| 男人的天堂久久精品| 日本韩国精品在线| 国产精品美女久久久久久久久| 久久国内精品自在自线400部| 欧美日韩精品欧美日韩精品一综合| 亚洲人成在线观看一区二区| 国产精品123区| 26uuu亚洲| 久久精品国产亚洲高清剧情介绍| 欧美日韩综合不卡| 亚洲中国最大av网站| 波多野结衣在线aⅴ中文字幕不卡| 亚洲精品一区二区三区福利| 青青草精品视频| 欧美肥妇free| 男女视频一区二区| 欧美一区二区福利视频| 日韩电影一二三区| 欧美一区日韩一区| 日韩av中文在线观看| 欧美精品免费视频| 午夜电影一区二区三区| 欧美军同video69gay| 日韩精品成人一区二区三区| 欧美日韩精品欧美日韩精品 | 亚洲高清免费视频| 在线视频综合导航| 亚洲一区二区三区视频在线| 91福利在线播放| 亚洲一区av在线| 欧美高清视频在线高清观看mv色露露十八 | 国产精品每日更新| 不卡一区在线观看| 亚洲图片欧美激情| 在线观看不卡视频| 三级成人在线视频| 精品少妇一区二区三区| 国产a区久久久| 国产精品国产馆在线真实露脸| av色综合久久天堂av综合| 亚洲男人的天堂在线aⅴ视频| 91成人网在线| 免费看日韩a级影片| 久久噜噜亚洲综合| 99久久777色| 午夜亚洲福利老司机| 日韩欧美一二三区| 成人激情免费视频| 亚洲一级二级三级| 欧美电影免费提供在线观看| 国产精品99久久久久久久女警| 成人免费小视频| 欧美一区二区日韩| 国产精品18久久久久久vr| 国产精品国产三级国产aⅴ中文| 色一情一乱一乱一91av| 日本在线播放一区二区三区| www日韩大片| 91在线云播放| 日本欧美韩国一区三区| 中文幕一区二区三区久久蜜桃| 在线免费不卡电影| 国产一区二区主播在线| 亚洲欧美韩国综合色| 欧美肥妇free| 99精品国产91久久久久久| 五月婷婷另类国产| 欧美国产一区视频在线观看| 欧美日韩一区二区欧美激情| 久久99国产乱子伦精品免费| 亚洲素人一区二区| 欧美大片拔萝卜| 91丨九色丨尤物| 精品中文字幕一区二区| 中文字幕制服丝袜成人av | 欧美国产一区视频在线观看| 欧美综合在线视频| 国产乱码字幕精品高清av | 国产精品中文字幕日韩精品 | 国内精品免费**视频| 亚洲欧美日韩综合aⅴ视频| 精品国产亚洲一区二区三区在线观看| 91亚洲精品一区二区乱码| 久久av资源站| 亚洲mv在线观看| 亚洲视频免费观看| 久久影视一区二区| 欧美美女直播网站| 91免费国产在线|