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

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

?? upsd3400_usb_app.c

?? uPSD34xx Disk driver
?? C
?? 第 1 頁 / 共 3 頁
字號:
     }


// Now the sector is ready for write

    i = PhysicalDataAddr;
    j =0;
    while (j<64)                             //now burn the data into flash
     {
      if (WriteToMainFlash(i,~USB_FIFO[j]) == TRUE)
       {
                                             // an error occured, try it again
        gbCSWStatus = FAIL;                //error during write operation occured!
        j = 255;
       }
      else
       {
        i++;
        j++;
       }
     }


    UCON |= EPFIFO_BSY;


    SpecificIncrementSectorAddress();
   }

  if (TransferLength == 0)
   {
    ReturnCSW();                             // return status
   }

  UPSD_xreg.DATAOUT_D = 255;                 // WRITE done, RED LED OFF !
 }

void ReadBufferFromFlash(void)
/******************************************************************************
 Function   : void ReadBufferFromFlash()
 Parameters : (none)
 Description: Reads (sends) TransferLength sectors with length of 512 bytes
 ******************************************************************************/
 {


  if (TransferLength == 0)
   {
    ReturnCSW();                             // return status
   }
  else
   {
#ifdef __RC51__                              //Compiler: Raisonance
      #pragma asm
        ;The following equates are also defined in usb.h
        ; and should be the same in both places.
		;The following EQUates are only needed when using RIDE. 
              USB_BASE_ADDR    EQU 7000H    ;USB FIFO mapped in XDATA space
              INDIR            EQU 0
              SELEP1           EQU 1
              UMSC_IN_ENDPOINT EQU SELEP1
      #pragma endasm
#endif
      #pragma asm
              mov    DPTM,#0
              mov    DPTC,#1
              mov    DPH,PhysicalDataAddr+0
              mov    DPL,PhysicalDataAddr+1
              mov    DPTM,#10
              mov    USEL,#INDIR+UMSC_IN_ENDPOINT
              mov    DPTC,#0
              mov    DPTR,#USB_BASE_ADDR
              mov    DPTC,#64+1
              mov    B,#64
              movx   A,@DPTR
              cpl    A
              movx   @DPTR,A
              djnz   B,$-3
              mov    USIZE,#64                                         ; FIRE!
              mov    DPTM,#0
              mov    DPTC,#0
      #pragma endasm
      SpecificIncrementSectorAddress();

/*gbCSWStatus = FAIL;*/
   }
 }

void DoReadWrite(void)
/*--------------------------------------------------------------------
  Function   : void DoReadWrite()
  Parameters : none
  Description: Handler for READ and WRITE command
  ---------------------------------------------------------------------*/
 {
  data unsigned long LogicalBlockAddr;

/* Decode the Command Descriptor Block (CDB)
  Byte 0 OPERATION CODE
  Byte 1 Reserved
  Byte 2,3,4,5 (MSB) LOGICAL BLOCK ADDRESS (LSB)
  Byte 6 Reserved
  Byte 7 (MSB)
  Byte 8 TRANSFER LENGTH (LSB)
  Byte 9 CONTROL = 00h
  The LOGICAL BLOCK ADDRESS field specifies the first logical block of the range
  of logical blocks that shall be read.
  The TRANSFER LENGTH field specifies the number of contiguous logical blocks of
  data that shall be transferred. A TRANSFER LENGTH of zero indicates that no logical
  blocks shall be transferred. This condition shall not be considered an error.
  Any other value indicates the number of logical blocks that shall be transferred.
  */
  LogicalBlockAddr  = *(unsigned long int *)&gbCBWCB[2];

  PhysicalDataAddr =  ((unsigned int )(LogicalBlockAddr << 9)) | 0x8000;
  UPSD_xreg.PAGE   =   (unsigned char)(LogicalBlockAddr >> 6);
  TransferLength   =  *(unsigned int *)&gbCBWCB[7];
  TransferLength   = TransferLength*8;

  gbBulkPipeStage  = BS_DATA_PHASE;

  if (gbCBWFlags & 0x80)                     // READ command
   {
    ReadBufferFromFlash();
   }
 }

void OnRequestSense(void)
/*--------------------------------------------------------------------
 Function   : void OnRequestSense()
 Parameters : none
 Description: Handler for RequestSense command
        The REQUEST SENSE command requests that the device server
              transfer sense data to the application client.
---------------------------------------------------------------------*/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN

  USB_FIFO[ 0] = 0x70;
  USB_FIFO[ 1] = 0x00;
  USB_FIFO[ 2] = 0x03;                       //sense key
  USB_FIFO[ 3] = 0x00;
  USB_FIFO[ 4] = 0x00;
  USB_FIFO[ 5] = 0x00;
  USB_FIFO[ 6] = 0x00;
  USB_FIFO[ 7] = 0x0A;                       //additional Length
  USB_FIFO[ 8] = 0x00;
  USB_FIFO[ 9] = 0x00;
  USB_FIFO[10] = 0x00;
  USB_FIFO[11] = 0x00;
  USB_FIFO[12] = 0x30;                       //ASC
  USB_FIFO[13] = 0x01;                       //ASCQ
  USB_FIFO[14] = 0x00;
  USB_FIFO[15] = 0x00;
  USB_FIFO[16] = 0x00;
  USB_FIFO[17] = 0x00;

  USIZE = 18;

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void OnInquiry(void)
/*--------------------------------------------------------------------
 Function   : void OnInquiry()
 Parameters : none
 Description: Handler for Inquiry command
---------------------------------------------------------------------*/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN
  USB_FIFO[ 0] = 0x00;
  USB_FIFO[ 1] = 0x80;                   //b7 = RMB = 1 if the medium is removable
  USB_FIFO[ 2] = 0x00;
  USB_FIFO[ 3] = 0x01;

  USB_FIFO[ 4] = 36-4;                       //additional Length (n-4)
  USB_FIFO[ 5] = 0x80;
  USB_FIFO[ 6] = 0x00;
  USB_FIFO[ 7] = 0x01;

#ifdef DK3400
  USB_FIFO[ 8] = 'S';                        //Vendor Information
  USB_FIFO[ 9] = 'T';
  USB_FIFO[10] = ' ';
  USB_FIFO[11] = ' ';
  USB_FIFO[12] = ' ';
  USB_FIFO[13] = ' ';
  USB_FIFO[14] = ' ';
  USB_FIFO[15] = ' ';

  USB_FIFO[16] = 'D';                        //Product Identification
  USB_FIFO[17] = 'K';
  USB_FIFO[18] = '3';
  USB_FIFO[19] = '4';
  USB_FIFO[20] = '0';
  USB_FIFO[21] = '0';
  USB_FIFO[22] = ' ';
  USB_FIFO[23] = 'D';
  USB_FIFO[24] = 'e';
  USB_FIFO[25] = 'm';
  USB_FIFO[26] = 'o';
  USB_FIFO[27] = ' ';
  USB_FIFO[28] = ' ';
  USB_FIFO[29] = ' ';
  USB_FIFO[30] = ' ';
  USB_FIFO[31] = ' ';

  USB_FIFO[32] = '1';                        //Product Revision Level
  USB_FIFO[33] = '0';
  USB_FIFO[34] = '0';
  USB_FIFO[35] = '1';

  USIZE = 36;

#else //DK3420
  USB_FIFO[ 8] = 'S';                        //Vendor Information
  USB_FIFO[ 9] = 'T';
  USB_FIFO[10] = ' ';
  USB_FIFO[11] = ' ';
  USB_FIFO[12] = ' ';
  USB_FIFO[13] = ' ';
  USB_FIFO[14] = ' ';
  USB_FIFO[15] = ' ';

  USB_FIFO[16] = 'D';                        //Product Identification
  USB_FIFO[17] = 'K';
  USB_FIFO[18] = '3';
  USB_FIFO[19] = '4';
  USB_FIFO[20] = '2';
  USB_FIFO[21] = '0';
  USB_FIFO[22] = ' ';
  USB_FIFO[23] = 'D';
  USB_FIFO[24] = 'e';
  USB_FIFO[25] = 'm';
  USB_FIFO[26] = 'o';
  USB_FIFO[27] = ' ';
  USB_FIFO[28] = ' ';
  USB_FIFO[29] = ' ';
  USB_FIFO[30] = ' ';
  USB_FIFO[31] = ' ';

  USB_FIFO[32] = '1';                        //Product Revision Level
  USB_FIFO[33] = '0';
  USB_FIFO[34] = '0';
  USB_FIFO[35] = '1';

  USIZE = 36;
#endif

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void OnModeSelect6(void)
/******************************************************************************
 Function   : void OnModeSelect6()
 Parameters : (void)
 Description: The MODE SELECT(6) command provides a means for
              an initiator to specify device parameters to a RBC device.
              RBC devices shall also implement the MODE SENSE(6) command.
 ******************************************************************************/
 {
  gbCSWStatus = FAIL;
  ReturnCSW();                               // return status
 }

void OnModeSense6(void)
/******************************************************************************
 Function   : void OnModeSense6()
 Parameters : none
 Description: Handler for ModeSense6 command
              The MODE SENSE(6) command provides a means for a device server
              to report parameters to an application client.
              It is a complementary command to the MODE SELECT(6) command.
              Device servers that implement the MODE SENSE(6) command
              shall also implement the MODE SELECT(6) command.
 ******************************************************************************/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN

  USB_FIFO[ 0] = 0x03;
  USB_FIFO[ 1] = 0x00;
  USB_FIFO[ 2] = 0x00;
  USB_FIFO[ 3] = 0x00;

  USIZE = 4;

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void OnModeSelect10(void)
/******************************************************************************
 Function   : void OnModeSelect10()
 Parameters : (void)
 Description: The MODE SELECT(10) command provides a means for
              the application client to specify medium,
              logical unit, or peripheral device parameters to the device server.
              Application clients should issue MODE SENSE(10) prior
              to each MODE SELECT(10) to determine supported mode pages,
              mode page lengths, and other parameters.
              Device servers that implement the MODE SELECT(10) command shall
              also implement the MODE SENSE(10) command.
 ******************************************************************************/
 {
  gbCSWStatus = FAIL;
  ReturnCSW();                               // return status
 }

void OnModeSense10(void)
/******************************************************************************
 Function   : void OnModeSense10()
 Parameters : none
 Description: Handler for ModeSense10 command
 ******************************************************************************/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN

  USB_FIFO[ 0] = 0x00;
  USB_FIFO[ 1] = 0x06;
  USB_FIFO[ 2] = 0x00;
  USB_FIFO[ 3] = 0x00;
  USB_FIFO[ 4] = 0x00;
  USB_FIFO[ 5] = 0x00;
  USB_FIFO[ 6] = 0x00;
  USB_FIFO[ 7] = 0x00;

  USIZE = 8;

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void DoReadCapacity(void)
/*--------------------------------------------------------------------
 Function   : void DoReadCapacity()
 Parameters : none
 Description: Handler for ReadCapacity command
              This routine returns real capacity of the device-1
---------------------------------------------------------------------*/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN

  USB_FIFO[ 0] = 0x00;                       //Last logical block
  USB_FIFO[ 1] = 0x00;
  USB_FIFO[ 2] = 0x01;
  USB_FIFO[ 3] = 0xBF;                       //7*32768B

  USB_FIFO[ 4] = 0x00;                       //block length
  USB_FIFO[ 5] = 0x00;
  USB_FIFO[ 6] = 0x02;                       //512B
  USB_FIFO[ 7] = 0x00;

  USIZE = 8;

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void DoReadFormatCapacity(void)
/*--------------------------------------------------------------------
 Function   : void DoReadFormatCapacity()
 Parameters : none
 Description: Handler for ReadFormatCapacity command
---------------------------------------------------------------------*/
 {
  USEL  = INDIR | UMSC_IN_ENDPOINT;          //Select EP1 IN

  USB_FIFO[ 0] = 0x00;
  USB_FIFO[ 1] = 0x00;
  USB_FIFO[ 2] = 0x00;
  USB_FIFO[ 3] = 0x08;                       //capacity list length

/* The following values are used during disk format */
  USB_FIFO[ 4] = 0x00;                       //block count
  USB_FIFO[ 5] = 0x00;
  USB_FIFO[ 6] = 0x01;
  USB_FIFO[ 7] = 0xBB;
  USB_FIFO[ 8] = 0x00;                       //block length
  USB_FIFO[ 9] = 0x00;
  USB_FIFO[10] = 0x02;                       //512B
  USB_FIFO[11] = 0x00;

  USIZE = 12;

  gbBulkPipeStage = BS_CSW_PHASE;
 }

void CheckReceiveCBW(void)
/******************************************************************************
  Function   : void CheckReceiveCBW()
  Parameters : none
  Description: Handle CBW package.
               Command Block Wrapper (CBW) shall start on a packet boundary
               and shall end as a short packet with exactly 31 (1Fh)
               bytes transferred. Fields appear aligned to byte offsets equal to
               a multiple of their byte size. All subsequent data and the CSW
               shall start at a new packet boundary.
               All CBW transfers shall be ordered with the LSB (byte 0) first
               (little endian). 
  ******************************************************************************/
 {
  data unsigned char i;                      // FOR variable

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久久精品一区二区| 色香蕉久久蜜桃| 91丨porny丨国产入口| 欧美亚洲动漫精品| 国产亚洲成av人在线观看导航| 亚洲色图视频网| 国产精品自拍av| 欧美顶级少妇做爰| 怡红院av一区二区三区| 国产美女在线精品| 555www色欧美视频| 一区二区三区在线视频免费观看 | 777欧美精品| 尤物av一区二区| 成人午夜碰碰视频| 国产亚洲欧洲997久久综合 | 日韩欧美在线1卡| 亚洲一区二区av电影| av电影天堂一区二区在线 | 在线播放欧美女士性生活| 亚洲丝袜精品丝袜在线| 成人性生交大合| 久久精品男人的天堂| 国精产品一区一区三区mba视频| 欧美日韩国产综合一区二区 | 国产成人午夜片在线观看高清观看| 欧美精品v日韩精品v韩国精品v| 亚洲伦理在线免费看| 成+人+亚洲+综合天堂| 国产亚洲福利社区一区| 国产精品一区二区久久不卡 | 一区二区三区四区精品在线视频| 国产精品一二三在| 久久久久9999亚洲精品| 国产成都精品91一区二区三| 久久久夜色精品亚洲| 国产成人在线看| 国产精品乱码久久久久久 | 精品亚洲国内自在自线福利| 777精品伊人久久久久大香线蕉| 亚洲午夜私人影院| 欧美精品18+| 免费人成精品欧美精品| 欧美大片一区二区三区| 激情综合网av| 国产精品久久久久aaaa樱花| 99热精品一区二区| 亚洲男人天堂一区| 欧美一区二区大片| 国产精品中文有码| 成人欧美一区二区三区1314| 91网站黄www| 午夜不卡av免费| 精品国产sm最大网站免费看| 国产成人免费视频一区| 亚洲老司机在线| 日韩视频123| 成人免费av网站| 一区二区三区免费看视频| 91精品一区二区三区久久久久久| 久久成人久久爱| 亚洲日本乱码在线观看| 欧美精品在线视频| 黄色日韩三级电影| 一区二区三区影院| 日韩一二三四区| 91天堂素人约啪| 久久国产日韩欧美精品| 国产精品初高中害羞小美女文| 91福利国产精品| 91污在线观看| 加勒比av一区二区| 伊人夜夜躁av伊人久久| 日韩欧美成人一区| 91猫先生在线| 国产精品伊人色| 亚洲国产精品久久久久婷婷884| 日韩精品专区在线影院观看| 欧美在线视频全部完| 国内精品久久久久影院色| 亚洲精品视频免费看| 日韩欧美另类在线| 在线视频欧美区| 国产成人在线视频网址| 日本一道高清亚洲日美韩| 国产精品久久久久毛片软件| 91精品国产美女浴室洗澡无遮挡| 不卡av在线免费观看| 国内成人免费视频| 偷拍日韩校园综合在线| 国产精品久久99| 欧美va在线播放| 欧美日韩国产不卡| 972aa.com艺术欧美| 国产久卡久卡久卡久卡视频精品| 亚洲成人1区2区| 亚洲最色的网站| 亚洲丝袜制服诱惑| 国产精品免费av| 国产婷婷色一区二区三区在线| 91麻豆精品久久久久蜜臀 | 日韩精品一区二区三区视频播放 | 精品久久久久久最新网址| 欧美中文字幕久久| 色婷婷久久一区二区三区麻豆| 成人性生交大片免费看中文 | 国产精品素人视频| 久久久精品国产免大香伊| 欧美变态凌虐bdsm| 91麻豆精品国产91久久久资源速度| 色婷婷av一区二区三区gif| av不卡免费在线观看| 成人免费va视频| 99久久国产综合精品女不卡| 成人国产精品视频| 成人av综合在线| 99精品视频中文字幕| 99久久精品免费观看| 91网站黄www| 欧美日韩综合不卡| 这里是久久伊人| 亚洲精品va在线观看| 亚洲视频香蕉人妖| 一区二区三区在线观看欧美| 亚洲va欧美va国产va天堂影院| 亚洲一区二区在线观看视频| 亚洲色图第一区| 亚洲国产精品久久艾草纯爱| 日韩一区欧美二区| 精品一区二区久久久| 成人一区二区三区中文字幕| av毛片久久久久**hd| 91成人在线精品| 欧美日韩日日摸| 日韩精品在线网站| 最新日韩av在线| 国产精品理论片在线观看| 久久久精品影视| 国产精品久久久久9999吃药| 亚洲人123区| 日产国产欧美视频一区精品| 精品午夜一区二区三区在线观看| 国产福利一区在线观看| 色婷婷综合久久久中文一区二区| 欧美色图一区二区三区| 精品久久久三级丝袜| 国产精品美女久久久久久久久久久 | 一区二区三区视频在线观看 | 国产精品卡一卡二| 亚洲人一二三区| 青青草97国产精品免费观看| 国产毛片精品视频| 在线观看日韩国产| 精品久久久久久久人人人人传媒| 中文字幕制服丝袜一区二区三区 | 亚洲综合色网站| 男男gaygay亚洲| 不卡的电影网站| 欧美电影免费观看高清完整版| 中文字幕一区在线观看视频| 日韩中文字幕一区二区三区| 成人精品国产一区二区4080| 欧美日韩精品系列| 欧美国产一区二区在线观看| 午夜电影网一区| 91在线免费视频观看| 日韩欧美精品在线| 亚洲精品美国一| 国产不卡一区视频| 91精品在线免费| 亚洲激情自拍偷拍| 处破女av一区二区| 精品卡一卡二卡三卡四在线| 偷拍一区二区三区四区| 色偷偷88欧美精品久久久| 久久久精品欧美丰满| 美女视频一区二区| 欧美日韩在线亚洲一区蜜芽| 亚洲欧美综合色| 国产成人午夜视频| 欧美精品一区二区三区在线| 日韩和欧美一区二区| 色www精品视频在线观看| 国产精品激情偷乱一区二区∴| 国产乱码精品1区2区3区| 欧美一级午夜免费电影| 亚洲18色成人| 欧美私人免费视频| 亚洲一区二区五区| 在线视频你懂得一区二区三区| 国产精品不卡一区二区三区| 成人av手机在线观看| 国产三级一区二区三区| 国产一区二区三区久久悠悠色av| 日韩色视频在线观看| 裸体歌舞表演一区二区| www激情久久| 国产福利一区在线观看| 亚洲国产岛国毛片在线| 高清国产一区二区三区|