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

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

?? main.c

?? 基于AT89C5131和K9F5608的U盤程序代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:

#include "UDISK_DEF.H"
#define io_port1 *(char xdata *)0x8011
unsigned char Device_Descriptor[18] = {
				    	 0x12,			   //0x12
						 0x01,             //設備描述符類型
						 0x10, 0x02,       //spec rev level (BCD) 1.0
						 0x0,              //設備類型代碼
						 0x0,              //設備子類型代碼
						 0x0,              //設備協議
						 0x20,             //max packet size
						 0x11, 0x11,       
						 0x22, 0x22,         
						 0x33, 0x33,        
						 0,                 
						 0,               
						 0,                 
						 0x01              //配置數量 	
						};

unsigned char Configuration_Descriptor_All[32] = {
                       /*配置描述符*/
		        	    9,                 //描述符長度
					    2,                 //配置描述符 (0x02)
					    0x20,              
						0x00,              
						1,                 //設備接口數量
						1,                 
					    0,                
						0x80,
						0xfa,
              		    /*接口描述符*/
					    9,                 //描述符長度
					    4,                  //接口描述符
					    0,                 
					    0,                 
						2,                 //設備中用到的端口數目
						8,                 //設備類代碼--海量存儲設備
						6,	               //6=SCSI
						0x50,              //bulk 0nly 傳輸
						0,                 
						/*端口描述符*/                 
						0x07,             //端口描述符長度.   
						0x05,             //描述符類型---端口
						0x81,             //IN端口
						0x02,             //BULK端口   
						0x20, 0x00,       //最大傳輸量 
						0x0,              
						                  
						0x07,             //端口描述符長度.   
						0x05,             //描述符類型---端口
						0x02,             //OUT端口
						0x02,             //BULK端口
						0x20, 0x00,       //最大傳輸量
						0x0               
					};

unsigned char B_InquiryData[] = {
							0x00,	                       //Direct Access Device
							0x80,	                       //RMB
							0x00,	                       //ISO/ECMA/ANSI
							0x01,	                       //Response Data Format
							0x1f,	                       //Additional Length
							0x00,	                       //Reserved
							0x00,	                       //Reserved
							0x00,	                       //Reserved 
							'X', 'I', 'N', 'Z', 'X', ' ', ' ', ' ',	       //Vendor Information
							'U', 'S', 'B', '-', 'M', 'A', 'S', 'S', 'S', 'T', 'O', 'R', 'A', 'G', 'E', ' ',//Product Identification
							0, 0, 0, 0					   
							};	               
/*SCSI-Read_Format_capacities命令的返回數據	*/
code unsigned char B_Read_Format_capacities[] = {0x00, 0x00, 0x00, 0x10,	        //capacity list header
									0x00, 0x00, 0x07, 0xf5,	0x01, 0x00, 0x02, 0x00,	//capacity descriptor
								    //Number of Blocks =2037,unformatted media,blocklength = 512Bytes
									0x00, 0x00, 0x07, 0xfd,	0x00, 0x00, 0x02, 0x00  //Formattable Capacity Descriptors
									};
//SCSI-Read_Capacity命令的返回數據
code unsigned char B_Read_Capacity[] = {
								0x00, 0x00, 0xfe, 0xa0,	   //Last  Logical Block Address for 32MB 
								0x00, 0x00, 0x02, 0x00	   //block length in bytes
								};
//SCSI-Mode_Sense命令的返回數據    	   		
code unsigned char B_Mode_Sense_ALL[] = {0x0b, 0x00,       //Mode Data Length
							0x00, 0x08, 0x00, 0x00,
							0x7d, 0, 0, 0, 0x02, 0x00
							};
//SCSI-Mode_Sense命令的返回數據			
code unsigned char B_Mode_Sense_TPP[] = {0xf0, 0x00,       //Mode Data Length
							05, 00, 00, 00, 00, 0x0b, 00, 00, 00, 00, 0x24, 00, 00, 00, 00, 00
							};
//SCSI-Mode_Sense命令的返回數據			
code unsigned char B_Mode_Sense_ZERO[] = {0x00, 0x06,      //Mode Data Length
							0x00,	                       //Medium Type Code
							0,                             //write enabled
							0, 0, 0, 0                     //reserved	
                            };


unsigned char data bulk_CSW[]={0x55,0x53,0x42,0x53,	//bytes 4 dCSWSignature
					      0x00,0x00,0x00,0x00,	    //bytes 4 dCSWTag
					      0x00,0x00,0x00,0x00,		//bytes 4 dDataResiduce
					      0x00};			        //bCSWStatus  00=good state.
struct_CBW data bulk_CBW;
void main()
{   
	Flash_Reset();											         									         
	USBInit();
	EpEnable();
	while(1)
	{
	if (UEPINT & EP0)   Ep0();//端口0中斷處理
	if (UEPINT & EP1)   Ep1();//端口1中斷處理			 
	if (UEPINT & EP2)   Ep2();//端口2中斷處理 
    }
}/////////////////////////////////////////////////////
void USBInit()
{
	int data i;	
	CKCON|=1;   //X2 Mode
	/*PLL配置*/
	PLLNDIV	=	0x04;
	PLLCON |=	(0x3&11)<<6;
	PLLRDIV	=	(0x3ff&11)>>2;
	USBCLK=0;
	PLLCON&=(~PLLRES);
	PLLCON|=PLLEN;
	USBCON&=(~USBE);
	for(i=0;i<1000;i++);//延時
	USBCON|=USBE;//USB控制器使能

}	
///////////////////////////////////////////////////
void EpEnable(void)
{
	UEPNUM=0x00;	UEPCONX=0x80;
	UEPNUM=0x01;	UEPCONX=0x86;
	UEPNUM=0x02;	UEPCONX=0x82;
	UEPRST=0x07;	UEPRST= 0x00;
	UEPIEN=0x07;	USBIEN|=EEOFINT;
	USBADDR=FEN;
}
///////////////////////////////////////////////////
unsigned char ReadEp(unsigned char EpNum,unsigned char *Data)//讀指定端口
{
	unsigned char data i=0;
	UEPNUM=EpNum;
	while(i<UBYCTLX)
	{
		Data[i++]=UEPDATX;
	}	
	UEPSTAX&=~(RXOUTB0|RXOUTB1|RXSETUP);
	return(i);
}
/////////////////////////////////////////////////////
void WriteEp(unsigned char EpNum,unsigned char nLength,unsigned char *Data)//寫指定端口
{
	unsigned char data i=0;
	UEPNUM=EpNum;
	UEPSTAX|=DIR;
	while(nLength--) UEPDATX=Data[i++];	
	UEPSTAX|=TXRDY;
	while(!(UEPSTAX&TXCMP)) ;
	UEPSTAX&=(~(TXCMP));
}
///////////////////////////////////////////////////
void Set_Address(unsigned char EpNum)//SET_address請求處理
{
	WriteEp(0,0,0);
	USBADDR|=EpNum;
	USBADDR|=FEN;
	USBCON|=FADDEN;
}
//////////////////////////////////////////////////////
void Get_Descriptor(unsigned char DesType,unsigned char nLength)//獲得設備的描述符請求處理函數
{
	if(DesType==0x01)//設備描述符
		WriteEp(0,18,Device_Descriptor);

	if((DesType==0x02)&&(nLength==0x09))//配置描述符
		WriteEp(0,9,Configuration_Descriptor_All);

	if((DesType==0x02)&&(nLength==0xff))//描述符集合
	{
	    WriteEp(0,32,Configuration_Descriptor_All);
	    WriteEp(0,2,&Device_Descriptor[4]);
	}

	if((DesType==0x02)&&(nLength==0x20)) //配置、接口、端口描述符集合
		WriteEp(0,32,Configuration_Descriptor_All);
}
//////////////////////////////////////////////////////////
void Set_Configuration(unsigned char wValue)//使能配置
{
  if(wValue == 0)
  {
		UEPNUM=0x00;	UEPCONX=0x80;
		UEPNUM=0x01;	UEPCONX=0x86;
		UEPNUM=0x02;	UEPCONX=0x82;
		USBCON&=(~CONFG);
		WriteEp(0,0,0);	
  }
  else if(wValue == 1) 
  {
		UEPNUM=0x00;	UEPCONX=0x80;
		UEPNUM=0x01;	UEPCONX=0x86;
		UEPNUM=0x02;	UEPCONX=0x82;
		USBCON|=CONFG;
		WriteEp(0,0,0);	
  }
}
///////////////////////////////////////////////////////////////
void Ep0()//端口0處理函數
{
  unsigned char data DT[32]={0,};
  unsigned char data i;
  i = ReadEp(0,DT);
  if (((DT[0] & 0x60)==0) && i)
  {
    switch (DT[1])
    {
      case set_address				:Set_Address(DT[2]);			break;
      case get_descriptor			:Get_Descriptor(DT[3],DT[6]);	break;
      case set_configuration	    :Set_Configuration(DT[2]);		break;
      default						:;					            break;
	}
  }
  else if(DT[0]==0xa1)
	{
		WriteEp(0,0,0);
	}							  						
}

/////////////////////////////////////////////////////////////////////////
void WriteEpBulk(unsigned char EpNum,unsigned char nLength,unsigned char *Data)//寫端口
{
	unsigned char data i;
	UEPNUM=EpNum;
	UEPSTAX|=DIR;
	for(i=0;i<nLength;i++) UEPDATX=Data[i];
	UEPSTAX|=TXRDY;
}
//////////////////////////////////////////////////////////////////////////
void TransmitCSW()//傳送狀態字
{
  WriteEpBulk(1, sizeof(bulk_CSW), bulk_CSW);
  while(!(UEPSTAX&TXCMP)) ;
  UEPSTAX&=(~(TXCMP));
}
///////////////////////////////////////////////////////////////////////////
void Ep1()//端口1處理函數
{
  UEPSTAX&=(~(TXCMP));
  TransmitCSW();
}
//////////////////////////////////////////////////////////////////////////
 void SCSI_Mode_Sense()
{
  if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_TPP)                 //Page Code=Timer and Potect Page
    {WriteEpBulk(1, sizeof(B_Mode_Sense_TPP), B_Mode_Sense_TPP);}
  else if(bulk_CBW.CBWCB[2] == SCSI_MSPGCD_RETALL)		   //Page Code=All
    {WriteEpBulk(1, sizeof(B_Mode_Sense_ALL), B_Mode_Sense_ALL);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频一区在线观看| 色先锋资源久久综合| 7777精品伊人久久久大香线蕉超级流畅| 国产精品网站在线观看| 黄一区二区三区| 欧美一区二区三区在线观看| 天堂资源在线中文精品| 91精品国产综合久久精品性色| 欧美一区二区视频在线观看2022 | 国产一区二区三区免费观看| 欧美高清视频一二三区 | 老司机精品视频导航| 欧美一区二区三区在| 性做久久久久久| 3d成人h动漫网站入口| 蜜臀av一区二区| 欧美精品一区二区三| 成人免费观看视频| 亚洲三级久久久| 欧美另类z0zxhd电影| 蜜臀a∨国产成人精品| 精品欧美久久久| 丁香婷婷综合色啪| 亚洲精品国产a| 欧美一区二区三区不卡| 国产精品伊人色| 亚洲欧美电影一区二区| 欧美日本国产一区| 国产精品一区二区在线观看不卡 | 国产乱子伦一区二区三区国色天香 | 亚洲图片激情小说| 91久久精品国产91性色tv| 五月天中文字幕一区二区| 日韩一级视频免费观看在线| 国产精品中文欧美| 亚洲视频香蕉人妖| 欧美一级日韩免费不卡| 成人一区在线观看| 亚洲成a人在线观看| 久久精品一区二区三区不卡| 一本大道久久a久久精二百| 强制捆绑调教一区二区| 亚洲国产高清在线观看视频| 欧美日韩国产小视频在线观看| 国产精品大尺度| 欧美日韩国产一区| 不卡在线观看av| 蜜臀精品久久久久久蜜臀| 中文字幕欧美日韩一区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精品一二三四| 成人免费视频视频在线观看免费| 制服丝袜亚洲精品中文字幕| 懂色av一区二区夜夜嗨| 丝袜国产日韩另类美女| 国产午夜精品一区二区三区四区| 91麻豆精品在线观看| 免费成人结看片| 亚洲免费在线观看| 国产午夜精品美女毛片视频| 欧美日韩一区二区在线观看| 成人黄色在线看| 六月丁香综合在线视频| 亚洲第一搞黄网站| 亚洲欧洲国产专区| 久久综合av免费| 日韩一区二区电影在线| 色婷婷久久久久swag精品| 国产乱子伦视频一区二区三区 | 一卡二卡欧美日韩| 国产精品沙发午睡系列990531| 成人高清在线视频| 国内精品免费在线观看| 亚洲一区二区3| 成人欧美一区二区三区白人 | 亚洲激情图片一区| 1024成人网| 久久精品网站免费观看| 欧美一卡二卡在线| 欧美嫩在线观看| 欧美在线观看你懂的| 一本到不卡精品视频在线观看| 亚洲成a人v欧美综合天堂下载| 欧美精品亚洲二区| 欧美最猛黑人xxxxx猛交| 91香蕉视频mp4| 成人97人人超碰人人99| fc2成人免费人成在线观看播放 | 国产精品传媒视频| 极品少妇xxxx精品少妇| 亚洲成av人片www| 一区二区三区成人| 一二三区精品视频| 亚洲伊人色欲综合网| 一区二区三区在线影院| 亚洲激情图片一区| 亚洲一区二区三区视频在线播放| 欧美成人一区二区| 欧美精品一区男女天堂| 精品国产一区二区亚洲人成毛片| 成人黄页在线观看| 一本大道综合伊人精品热热 | 国产亚洲一区二区三区在线观看 | 7777精品伊人久久久大香线蕉完整版| 国产精品一级片在线观看| 国产馆精品极品| 国产九色sp调教91| av不卡免费在线观看| 99久久久国产精品免费蜜臀| 在线观看不卡视频| 91精品国产免费| 精品日产卡一卡二卡麻豆| 久久亚洲综合色一区二区三区| 91福利小视频| 9191久久久久久久久久久| 欧美一卡二卡在线| 亚洲国产精品高清| 亚洲一区中文日韩| 久久电影网电视剧免费观看| 国产成都精品91一区二区三| 91免费版在线| 日韩限制级电影在线观看| 久久综合色之久久综合| 最新久久zyz资源站| 日本高清免费不卡视频| 91精品国产综合久久婷婷香蕉| 成人h动漫精品一区二区| 欧美在线观看视频在线| 欧美一区二区三区视频在线观看| 91成人在线观看喷潮| 日韩欧美资源站| 国产精品另类一区| 一区二区三区精品视频| 精品夜夜嗨av一区二区三区| 99久久免费视频.com| 日韩视频不卡中文| 亚洲欧美影音先锋| 免费高清在线一区| 一本大道久久精品懂色aⅴ| 欧美成人官网二区| 亚洲在线视频一区| 国产成都精品91一区二区三| 欧美精品1区2区3区| 蜜桃精品在线观看| 亚洲高清中文字幕| 日韩精品成人一区二区三区 | 欧美四级电影在线观看| 26uuu欧美| 视频一区中文字幕国产| 欧美精选午夜久久久乱码6080| 狠狠网亚洲精品| 国产剧情av麻豆香蕉精品| 成人中文字幕电影| 91女人视频在线观看| 欧美日韩美女一区二区| 日韩视频中午一区| 国产日韩v精品一区二区| 亚洲美女偷拍久久| 日韩福利视频导航| 成人性生交大片免费看视频在线 | 欧美性受xxxx黑人xyx| 欧美精品高清视频| 久久久久久久久久久久久久久99 | 成人午夜短视频| 91黄色免费观看| 精品乱人伦小说| 国产精品午夜久久| 午夜精品视频一区| 国产成人av电影免费在线观看| 日韩精品久久理论片| 国产成人av一区二区三区在线观看| 午夜精品久久一牛影视| 粉嫩蜜臀av国产精品网站| 欧美日韩五月天| 久久综合资源网| 亚洲成人免费视频| 成人一区二区三区视频在线观看 | 99在线热播精品免费| 欧美日韩视频在线第一区| 久久夜色精品国产欧美乱极品| 日韩视频国产视频| 亚洲乱码日产精品bd| 经典三级一区二区| 久久久另类综合| 肉色丝袜一区二区| 不卡的电视剧免费网站有什么| jizzjizzjizz欧美| 精品国产91九色蝌蚪| 爽好多水快深点欧美视频| 99久久精品久久久久久清纯| 日韩欧美中文字幕制服| 亚洲国产成人tv| 日本精品一区二区三区高清| 欧美激情在线一区二区三区| 七七婷婷婷婷精品国产| 欧美日韩视频在线一区二区| 日韩一区欧美小说| youjizz久久| 国产偷国产偷精品高清尤物 | 欧美日韩综合色|