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

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

?? usb.c

?? D12 的一些 開發資料 對開發D12相當有用
?? C
?? 第 1 頁 / 共 3 頁
字號:
union                                    //端點最后處理狀態
{
 unsigned char Register;
 struct
 {
  unsigned char successful          :1;
  unsigned char error_code          :4;
  unsigned char setup_packet        :1;
  unsigned char data_1              :1;
  unsigned char prestatus_not_read  :1;
 }Status;
}Last_Status;


//*****************   延時x毫秒函數 ***********
void delay(unsigned int x)                
{
 unsigned int i;
 unsigned int j;
 for(i=0;i<x;i++)
 for(j=0;j<230;j++);
}
//********************************************


void write_usb_command(unsigned char usb_command)       //寫USB命令
{
 USB_A0=USB_COMMAND_ADD;
 USB_DATA=usb_command;
 USB_WR=0;
 USB_WR=1;
 USB_DATA=0xFF;
}

void write_a_usb_data(unsigned char usb_data)        //寫一字節USB數據
{
 USB_A0=USB_DATA_ADD;
 USB_DATA=usb_data;
 USB_WR=0;
 USB_WR=1;
 USB_DATA=0XFF;
}

unsigned char read_a_usb_data(void)                  //讀一字節USB數據
{
 unsigned char temp;
 USB_A0=USB_DATA_ADD;
 USB_RD=0;
 temp=USB_DATA;
 USB_RD=1;
 return temp;
}


void read_interrupt_register(void)             //讀USB中斷寄存器
{
 write_usb_command(Read_Interrupt_Register);
 Interrupt_Register.Register[0]=read_a_usb_data();
 Interrupt_Register.Register[1]=read_a_usb_data();
}

void set_usb_addr(unsigned char addr)          //設置USB地址
{
 write_usb_command(Set_Address);
 write_a_usb_data(0x80|addr);
}

void set_endpoint_enable(void)                  //端點使能
{
 write_usb_command(Set_Endpoint_Enable);
 write_a_usb_data(0x01);
}

unsigned char select_endpoint(unsigned char endp)   //選擇終端點
{
 write_usb_command(Select_EndPoint+endp);
 return read_a_usb_data();
}

unsigned char  read_last_status(unsigned char endp)   //讀端點最后狀態
{
 write_usb_command(Read_Last_Status+endp);
 return read_a_usb_data();
}

void set_endpoint_status(unsigned char endp,unsigned char status)  //設置端點狀態
{
 write_usb_command(0x40+endp);
 write_a_usb_data(!status);
}

unsigned char read_endpoint_status(unsigned char endp)           //讀端點狀態
{
 write_usb_command(0x80+endp);
 return read_a_usb_data();
}

void clear_buffer(void)                        //清緩沖,在讀取緩沖數據后調用
{
 write_usb_command(Clear_Buffer);
}

void validate_buffer(void)                    //緩沖區數據有效,在寫緩沖后調用
{
 write_usb_command(Validate_Buffer);
}

void ack_setup(unsigned char endp)            //應答建立包
{
 select_endpoint(endp);
 write_usb_command(Ack_Setup);
}

void error(unsigned char number)             //出錯處理
{
// unsigned char Error[]={"ERROR: "};
// prints(Error);
// printc(number);
 number=0;
}

unsigned char read_endpoint_buff(unsigned char endp,unsigned char len,unsigned char * buff)   //讀終端點緩沖
{
 unsigned char i,j;
 read_last_status(endp);
 if(!(select_endpoint(endp))&0x01){error(0); return 0;}
 read_endpoint_status(endp);
 write_usb_command(Read_Buffer);
 read_a_usb_data();
 j=read_a_usb_data();
 if(j>len)
  j=len;
 for(i=0;i<j;i++)
  {
   USB_RD=0;
   *(buff+i)=USB_DATA;
   USB_RD=1;
  }
 clear_buffer();
 return j;
}

unsigned char write_endpoint_buff(unsigned char endp,unsigned char len,unsigned char * buff)    //寫終端點緩沖
{
 unsigned char i;
 read_last_status(endp);
 select_endpoint(endp);
 write_usb_command(Write_Buffer);
 write_a_usb_data(0);
 write_a_usb_data(len);
 for(i=0;i<len;i++)
  {
   USB_DATA=*(buff+i);
   USB_WR=0;
   USB_WR=1;
  }
 USB_DATA=0XFF;
 validate_buffer();
 return len;
}

void disconnect_usb(void)
{
 write_usb_command(0xf3);
 write_a_usb_data(0x0e);
 write_a_usb_data(0x47);
 delay(100);
}

void connect_usb(void)                            //連接USB
{
 write_usb_command(0xf3);                         //初始化USBD12
 write_a_usb_data(0x1e);                          //連接USB
 write_a_usb_data(0x47);                          //設置頻率
}

void init_usb(void)                              //初始化USB
{
 set_usb_addr(0);
 set_endpoint_enable();
}

void usb_bus_reset(void)                         //USB總線復位處理
{
// code unsigned char Usb_Bus_Reset[]={"USB BUS RESET"};
// prints(Usb_Bus_Reset);
 usb_flags.Register=0;
 set_endpoint_enable();
 SCSI.Status.Command=1;
 SCSI.Status.Data=0;
 csw.dCSWSignature=0x55534253;

}

void usb_bus_suspend(void)                       //USB總線掛起處理
{
// code unsigned char Usb_Bus_Suspend[]={"USB BUS SUSPEND"};
// prints(Usb_Bus_Suspend);
// send_to_comport(10);
}

void set_usb_address(void)                       //設置地址
{
 usb_flags.flags.set_addr=1;
 while(select_endpoint(1)&0x01);
 write_endpoint_buff(1,0,0);
 set_usb_addr(Control_Data.DeviceRequest.wValue);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void get_status(unsigned char receiver)           //獲取狀態響應
{
 unsigned char status[2];
 switch (receiver)
  {
   case 0:                        //獲取設備狀態
    status[0]=0x00;
    status[1]=0x00;
    break;
   case 1:                        //獲取接口狀態
    status[0]=0x00;
    status[0]=0x00;
    break;
   case 2:                        //獲取端點狀態
    status[0]=0x00;
    status[1]=0x00;
    break;
   }
  write_endpoint_buff(1,2,status);
  usb_flags.flags.usb_endp0_in=0;
}

void clear_feature(unsigned char receiver)    
{
 receiver=0;
 write_endpoint_buff(1,0,0);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void set_feature(unsigned char receiver)
{
 receiver=0;
 write_endpoint_buff(1,0,0);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void set_descriptor(void)
{
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void set_configuration(void)
{
 write_endpoint_buff(1,0,0);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void get_configuration(void)               //獲取配置狀態
{
 unsigned char value=0x01;
 write_endpoint_buff(1,1,&value);
 usb_flags.flags.usb_endp0_in=0;
}

void set_interface(void)                   //設置接口
{
 write_endpoint_buff(1,0,0);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
}

void get_interface(void)                  //獲取接口狀態
{
 unsigned char value=0x01;
 write_endpoint_buff(1,1,&value);
 usb_flags.flags.usb_endp0_in=0;
}

void get_max_LUN(void)                   //獲取磁盤最大邏輯單元號
{
 unsigned char max_LUN=MAX_LUN;          //只有一個邏輯單元
 write_endpoint_buff(1,1,&(max_LUN));
 usb_flags.flags.usb_endp0_in=0; 
}

void mass_storage_reset(void)            //USB大容量存儲設備復位
{
 write_endpoint_buff(1,0,0);
 usb_flags.flags.usb_endp0_in=0;
 usb_flags.flags.setup_packet_out=0;
 SCSI.Status.Command=1;
 SCSI.Status.Data=0;
}


void get_descriptor(void)                    //獲取描述符
{
    if(!usb_flags.flags.not_end)
     {
      switch(MSB(Control_Data.DeviceRequest.wValue))
	   {
        case DEVICE_DESCRIPTOR:
	         Control_Data.wCount=sizeof(DEVICE_DESCRIPTOR_STRUCT);
 	         Control_Data.pData=(unsigned char *)(&device_descriptor);
             break;
        case CONFIGURATION_DESCRIPTOR:
             Control_Data.wCount=SWAP(con_int_endp_descriptor.configuration_descriptor.wTotalLength);
			 Control_Data.pData=(unsigned char *)(&con_int_endp_descriptor);
             if(Control_Data.wLength<Control_Data.wCount)Control_Data.wCount=Control_Data.wLength;
             break;
		case STRING_DESCRIPTOR:
		     if(LSB(Control_Data.DeviceRequest.wValue)==0)
			  {
			   Control_Data.wCount=LANGUAGE_ID[0];
               Control_Data.pData=LANGUAGE_ID;
			  }
		     if(LSB(Control_Data.DeviceRequest.wValue)==2)
			  {
			   Control_Data.wCount=device_serial_number[0];
			   Control_Data.pData=device_serial_number;
			  }
			 break;
	   	}
      if(Control_Data.wLength<Control_Data.wCount)Control_Data.wCount=Control_Data.wLength;
	 }

    if(Control_Data.wCount>=MAX_CONTROL_DATA_SIZE)
     {
	  write_endpoint_buff(1,MAX_CONTROL_DATA_SIZE,Control_Data.pData);
	  Control_Data.pData+=MAX_CONTROL_DATA_SIZE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃免费观看视频| 中文成人av在线| 久久人人爽爽爽人久久久| 亚洲日本一区二区| 久久er99热精品一区二区| 91麻豆福利精品推荐| 337p日本欧洲亚洲大胆色噜噜| 夜夜嗨av一区二区三区中文字幕| 国产伦理精品不卡| 精品视频999| 伊人色综合久久天天人手人婷| 成人一区二区视频| 久久综合久久综合亚洲| 日韩国产欧美三级| 欧日韩精品视频| 亚洲色图在线视频| 国产suv精品一区二区883| 欧美不卡123| 丝袜a∨在线一区二区三区不卡| 97se狠狠狠综合亚洲狠狠| 欧美国产一区视频在线观看| 国精品**一区二区三区在线蜜桃| 91精品午夜视频| 偷窥少妇高潮呻吟av久久免费| 色综合久久久久综合体| 国产精品色在线观看| 国产成+人+日韩+欧美+亚洲| 久久女同性恋中文字幕| 国产一区视频导航| 日韩精品中文字幕在线不卡尤物| 亚洲高清视频中文字幕| 色欧美片视频在线观看在线视频| 国产精品成人免费| 91在线精品一区二区| 亚洲日本va在线观看| 91国产成人在线| 亚洲图片欧美视频| 91麻豆精品国产91久久久使用方法 | 国内精品伊人久久久久av一坑| 日韩一区二区三区四区| 麻豆成人久久精品二区三区红| 日韩欧美一卡二卡| 国产精品99久久久久久似苏梦涵| 国产亚洲成年网址在线观看| 成人久久18免费网站麻豆 | 成人深夜在线观看| 中文字幕一区二区在线播放| a级高清视频欧美日韩| 1024成人网| 欧美性受xxxx| 久久精品二区亚洲w码| 久久亚洲一区二区三区四区| 成人综合婷婷国产精品久久免费| 亚洲国产成人午夜在线一区| 99re这里都是精品| 亚洲国产精品久久人人爱蜜臀| 69久久夜色精品国产69蝌蚪网| 久久精品国产99国产精品| 国产精品美女久久福利网站| 欧美无砖砖区免费| 激情综合网激情| 亚洲色图欧美偷拍| 在线不卡免费欧美| 国产成人无遮挡在线视频| 亚洲精品日产精品乱码不卡| 欧美二区在线观看| 国产成人a级片| 亚洲狠狠爱一区二区三区| 欧美v国产在线一区二区三区| 成人激情av网| 免费成人深夜小野草| 国产精品久久久久久久久免费桃花| 在线视频综合导航| 精品亚洲aⅴ乱码一区二区三区| 最新国产成人在线观看| 日韩三级在线观看| 欧美日韩国产首页| 国产福利一区二区三区视频| 亚洲综合色区另类av| 精品乱人伦一区二区三区| 97久久超碰国产精品电影| 日本不卡在线视频| 亚洲女女做受ⅹxx高潮| 久久精品视频网| 91精品国产综合久久精品性色 | 日本一区二区三区四区| 欧美麻豆精品久久久久久| 99精品久久免费看蜜臀剧情介绍| 欧美aaaaa成人免费观看视频| 亚洲人成精品久久久久久| 久久日一线二线三线suv| 欧美日韩国产综合一区二区 | 欧美系列日韩一区| 国产成a人亚洲精品| 另类专区欧美蜜桃臀第一页| 亚洲精品中文在线| 中文字幕中文字幕一区| 久久久一区二区三区捆绑**| 在线免费观看日本一区| av在线不卡免费看| 国产成人综合自拍| 国产在线视频一区二区三区| 亚洲成人一区二区在线观看| 国产精品短视频| 国产欧美日韩在线| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲国产中文字幕在线视频综合| 国产日韩影视精品| 精品国精品自拍自在线| 欧美精品日韩一区| 欧美久久一二区| 欧美日韩精品综合在线| 欧美性生活久久| 欧美性三三影院| 91免费精品国自产拍在线不卡| 国产传媒久久文化传媒| 久久精品国产一区二区三| 日本午夜精品一区二区三区电影| 亚洲成人一区在线| 首页国产丝袜综合| 日本不卡在线视频| 国产91富婆露脸刺激对白| 久久成人羞羞网站| 国产99一区视频免费| 99久久精品国产一区| 日本高清免费不卡视频| 在线观看91精品国产入口| 欧美撒尿777hd撒尿| 欧美一区二区在线播放| 欧美草草影院在线视频| 国产亚洲福利社区一区| 亚洲欧美日韩一区二区| 亚洲一区二区三区四区在线 | 久久99国产精品尤物| 韩国v欧美v日本v亚洲v| 国产激情精品久久久第一区二区 | 成人精品免费视频| a4yy欧美一区二区三区| 欧美日韩精品是欧美日韩精品| 91精品国产全国免费观看| 久久影院午夜片一区| 国产日韩欧美不卡在线| 亚洲精品va在线观看| 蜜桃视频在线一区| av一二三不卡影片| 欧美日韩国产高清一区二区三区 | 色哟哟亚洲精品| 在线播放欧美女士性生活| 精品成人在线观看| 国产精品超碰97尤物18| 免费黄网站欧美| 北岛玲一区二区三区四区| 欧美日韩一区久久| 国产欧美日韩精品一区| 午夜欧美视频在线观看 | 99精品国产一区二区三区不卡| 欧洲精品一区二区三区在线观看| 精品电影一区二区| 亚洲一区在线播放| 风间由美一区二区三区在线观看| 在线观看视频欧美| 国产精品入口麻豆原神| 天天影视涩香欲综合网| 99国产一区二区三精品乱码| 91精品国产品国语在线不卡| 国产精品私人影院| 精品在线观看免费| 欧美视频一区在线| 国产精品久久久久毛片软件| 日韩精品国产欧美| 99精品1区2区| 国产亚洲综合在线| 奇米精品一区二区三区在线观看 | 91丨porny丨户外露出| 欧美精品一区二区三区高清aⅴ| 一区二区三区在线观看欧美| 国产一区视频网站| 日韩欧美一区二区免费| 亚洲高清久久久| 99精品国产视频| 欧美激情一区三区| 国产精品一区免费在线观看| 欧美一区二区福利在线| 亚洲国产成人porn| 成人av资源在线观看| 国产亚洲人成网站| 精品一区二区免费看| 欧美日韩精品欧美日韩精品| 有码一区二区三区| 91丝袜国产在线播放| 中文字幕二三区不卡| 成人激情电影免费在线观看| 久久免费的精品国产v∧| 捆绑调教美女网站视频一区| 日韩久久久久久| 久久精品久久久精品美女| 欧美日韩aaaaaa| 免费xxxx性欧美18vr| 日韩欧美中文字幕公布| 男女男精品网站|