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

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

?? ctrlrequest.lst

?? 增強型51單片機fs7821sd卡、mmc卡讀寫程序
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V7.02b   CTRLREQUEST                                                          02/01/2007 10:35:43 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE CTRLREQUEST
OBJECT MODULE PLACED IN .\Output\CtrlRequest.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CtrlRequest.c OPTIMIZE(9,SPEED) BROWSE INCDIR(Include) DEFINE(READER) DEBUG
                    - OBJECTEXTEND PRINT(.\Output\CtrlRequest.lst) OBJECT(.\Output\CtrlRequest.obj)

stmt level    source

   1          /*
   2          **********************************************************************************************
   3          * Project:      TK7821
   4          * File:         CtrlRequest.c
   5          * Contents: 
   6          *           
   7          *
   8          * $Date: 02/25/05    Jason    v0.1
   9          *        05/12/05    Mingo    v0.2   www.fameg.com
  10          *
  11          * Copyright (c) 2005 Fameg, Inc. All rights reserved
  12          ***********************************************************************************************
  13          */
  14          
  15          #include <reg51.h>
  16          #include <stdio.h>
  17          #include <string.h>
  18          #include "sotatype.h"
  19          #include "usbdisk.h"
  20          #include "device.h"
  21          #include "CtrlRequest.h"
  22          #include "ScsiCmd.h"
  23          
  24          void InitBulkPipe();
  25          
  26          /*************************************************
  27             Global Variables
  28          *************************************************/
  29          BYTE xdata UsbBuf[USB_BUFFER_SIZE];
  30          xdata PSOTA_USB_REQUEST pSotaUsbRequest;
  31          xdata BYTE CtrlPktSize;
  32          
  33          /*************************************************
  34             Local Variables
  35          *************************************************/
  36          static xdata SOTA_USB_REQUEST SotaUsbRequest;
  37          static xdata BYTE UsbAddr = 0;
  38          static xdata BYTE TestModeParam;
  39          
  40          /* H/W b1 only support ep0~2 so we add this variable to pass chapter9 */
  41          static bit EP3Halt = 0;
  42          
  43          //----------------------------------------------------------------------------
  44          // EP Index to Register Offset 
  45          //  Note: Return value 0xff = Invalid EP Index
  46          //                     0x00 = EP0 
  47          //----------------------------------------------------------------------------
  48          BYTE CtrlEPIndex2RegOffset(BYTE Index)
  49          {
  50   1        BYTE Offset = 0xff;
  51   1          
  52   1        if ( (Index == 0) || (Index==0x80) )
  53   1          Offset = 0;  
  54   1        switch(Index)  
C51 COMPILER V7.02b   CTRLREQUEST                                                          02/01/2007 10:35:43 PAGE 2   

  55   1        {
  56   2          case EP1IN_NUMBER:
  57   2               Offset = EP1_TXCSR;
  58   2               break; 
  59   2       
  60   2          case EP2OUT_NUMBER:
  61   2               Offset = EP2_RXCSR;  
  62   2               break;   
  63   2       
  64   2          default:
  65   2               break;  
  66   2        }    
  67   1        return Offset;       
  68   1      }  
  69          
  70          //----------------------------------------------------------------------------
  71          // Clear Halt Feature
  72          //----------------------------------------------------------------------------
  73          void CtrlClearHaltFeature()
  74          {
  75   1        // EP0
  76   1        pSotaUsbRequest->HaltStatus = false;  
  77   1        // EP1
  78   1        ClearRegBit(USB_BASE + EP1_TXCSR, ~EN_TX1_STL);
  79   1        // EP2
  80   1        ClearRegBit(USB_BASE + EP2_RXCSR, BulkStallMask);
  81   1      }  
  82          
  83          //----------------------------------------------------------------------------
  84          // Prepare status report data
  85          //   Note: Unexpected condition, return false
  86          //----------------------------------------------------------------------------
  87          bool CtrlStatusReport(BYTE Recipient, BYTE Index, PBYTE Data)
  88          {
  89   1        bit Rc = true;
  90   1        Data[1] = 0; // Reserved  
  91   1        
  92   1        switch(Recipient)
  93   1        {
  94   2          case 0x80:    // Device
  95   2          case 0x81:    // Interface
  96   2               Data[0] = 0;
  97   2               break;
  98   2               
  99   2          case 0x82:    // Endpoint
 100   2               {
 101   3                 BYTE Offset = CtrlEPIndex2RegOffset(Index); 
 102   3                 Data[0] = 0;
 103   3                 
 104   3                 if (Offset != 0xff)
 105   3                 {
 106   4                   if (Offset)
 107   4                   {
 108   5                     if (CSRRead(USB_BASE + Offset) &  0x02) 
 109   5                       Data[0] = 0x01;
 110   5                   } 
 111   4                   else
 112   4                   { 
 113   5                     if (pSotaUsbRequest->HaltStatus)
 114   5                       Data[0] = 0x01; 
 115   5                   }    
 116   4                 }
C51 COMPILER V7.02b   CTRLREQUEST                                                          02/01/2007 10:35:43 PAGE 3   

 117   3                 break;
 118   3              }   
 119   2               
 120   2          default:
 121   2               Rc = false;
 122   2               break;          
 123   2        }  
 124   1      
 125   1        return Rc; 
 126   1      }  
 127          
 128          //----------------------------------------------------------------------------
 129          // Get Status Request 
 130          //----------------------------------------------------------------------------
 131          void CtrlReqGetStatus()
 132          {
 133   1        BYTE Token = pSotaUsbRequest->Token;
 134   1            
 135   1        switch(Token)
 136   1        {
 137   2          case SETUP_TOKEN:
 138   2               pSotaUsbRequest->LoadInDataOk = true;
 139   2               CSRWrite(USB_BASE + EP0_RXCSR, EN_RX0_STL);
 140   2               break;
 141   2      
 142   2          case IN_TOKEN:
 143   2               {
 144   3                 PUSB_REQUEST pReq = &(pSotaUsbRequest->Request);
 145   3                 BYTE i;
 146   3                 BYTE Len = (BYTE)(pReq->wLength);
 147   3                 BYTE Data[2];
 148   3                 BYTE Index = ((TDataCast *)&(pReq->wIndex))->ucByte[0];
 149   3      
 150   3                 BYTE Recipient = pReq->bmRequestType;
 151   3                 
 152   3                 if (pSotaUsbRequest->LoadInDataOk)
 153   3                 {
 154   4                   if (Len > 2)
 155   4                     Len = 2;
 156   4                   if (!CtrlStatusReport(Recipient, Index, Data))  
 157   4                     Len = 0;                  
 158   4                   CSRWrite(USB_BASE + EP0_TXCNT, Len);
 159   4                   for (i = 0; i < Len; i++)
 160   4                     CSRWrite(USB_BASE + EP0_TXDATA, Data[i]);
 161   4                   CSRWrite(USB_BASE + EP0_TXCSR, EN_TX0);    
 162   4                   pSotaUsbRequest->LoadInDataOk = false;
 163   4                 }  
 164   3                 CSRWrite(USB_BASE + EP0_RXCSR, EN_RX0);    
 165   3                 break;   
 166   3               }
 167   2      
 168   2          case IN_OK_TOKEN:
 169   2               CSRWrite(USB_BASE + EP0_RXCSR, EN_RX0);    
 170   2               CSRWrite(USB_BASE + EP0_TXCSR, EN_TX0_STL); 
 171   2               break;
 172   2      
 173   2          case OUT_TOKEN:
 174   2          default:
 175   2               // Ctrl Read End
 176   2               pSotaUsbRequest->InProgress = false;
 177   2               break;          
 178   2        }  
C51 COMPILER V7.02b   CTRLREQUEST                                                          02/01/2007 10:35:43 PAGE 4   

 179   1      }
 180          
 181          //--------------------------------------------------------------------
 182          // Clear Feature Request
 183          //--------------------------------------------------------------------
 184          static bit FeatureCleared = 0;
 185          
 186          void ClrFeatureEP()
 187          {
 188   1          PUSB_REQUEST pReq = &(pSotaUsbRequest->Request);
 189   1          BYTE RegValue;
 190   1          BYTE wValue = (BYTE)ConvertEndian16(pReq->wValue);
 191   1          bit ReqAccept = true;
 192   1          bit ClrEP0 = false;
 193   1          bit ClrEP1 = false;
 194   1          bit ClrEP2 = false;
 195   1                                                  
 196   1          if(wValue == ENDPOINT_HALT)
 197   1          {
 198   2              if((pReq->bmRequestType == 0x00)|| // Recipient = Device
 199   2                 (pReq->bmRequestType == 0x01) ) // Recipient = Interface
 200   2              {
 201   3                  RegValue = CSRRead(USB_BASE + EP0_RXCSR);
 202   3                  if(RegValue & EN_RX0_STL)
 203   3                      ClrEP0 = true;
 204   3      
 205   3                  RegValue = CSRRead(USB_BASE + EP0_TXCSR);
 206   3                  if(RegValue & EN_TX0_STL)
 207   3                      ClrEP0 = true;
 208   3      
 209   3                  RegValue = CSRRead(USB_BASE + EP1_TXCSR);
 210   3                  if(RegValue & EN_TX1_STL)
 211   3                      ClrEP1 = true;
 212   3      
 213   3                  RegValue = CSRRead(USB_BASE + EP2_RXCSR);
 214   3                  if(RegValue & EN_RX2_STL)
 215   3                      ClrEP2 = true;
 216   3              }
 217   2              else if(pReq->bmRequestType == 0x02) // Recipient = EndPoint
 218   2              {
 219   3                  BYTE Index = ((TDataCast *)&(pReq->wIndex))->ucByte[0];
 220   3      
 221   3                  if((Index == 0)||(Index == 0x80)) // Clear EP0
 222   3                      ClrEP0 = true;
 223   3      
 224   3                  else if(Index == EP1IN_NUMBER)
 225   3                      ClrEP1 = true;
 226   3      
 227   3                  else if(Index == EP2OUT_NUMBER)
 228   3                      ClrEP2 = true;
 229   3      
 230   3                  else
 231   3                      ReqAccept = false;
 232   3              }
 233   2              else
 234   2                  ReqAccept = false;
 235   2      
 236   2              // Clear Endpoint Toggle Feature 
 237   2              RegValue = CSRRead(USB_BASE + EPCTL);
 238   2              if(ClrEP0)  RegValue |= CLR_EP0_TOG;
 239   2              if(ClrEP1)  RegValue |= CLR_EP1_TOG;
 240   2              if(ClrEP2)  RegValue |= CLR_EP2_TOG;
C51 COMPILER V7.02b   CTRLREQUEST                                                          02/01/2007 10:35:43 PAGE 5   

 241   2              CSRWrite(USB_BASE + EPCTL, RegValue);
 242   2      
 243   2              if(ClrEP0)
 244   2              {
 245   3                  pSotaUsbRequest->HaltStatus = false;
 246   3      
 247   3                  RegValue = CSRRead(USB_BASE + EP0_RXCSR); 
 248   3                  RegValue &= ~EN_RX0_STL; 
 249   3                  CSRWrite(USB_BASE + EP0_RXCSR, RegValue);
 250   3      
 251   3                  RegValue = CSRRead(USB_BASE + EP0_TXCSR); 
 252   3                  RegValue &= ~EN_TX0_STL; 
 253   3                  CSRWrite(USB_BASE + EP0_TXCSR, RegValue);
 254   3              }
 255   2      
 256   2              if(ClrEP1 | ClrEP2)
 257   2              {
 258   3                  RegValue = CSRRead(USB_BASE + EP1_TXCSR);
 259   3                  RegValue &= ~EN_TX1_STL;
 260   3                  CSRWrite(USB_BASE + EP1_TXCSR, RegValue);
 261   3      
 262   3                  RegValue = CSRRead(USB_BASE + EP2_RXCSR);
 263   3                  RegValue &= ~(EN_RX2_STL | EN_RX2);
 264   3                  CSRWrite(USB_BASE + EP2_RXCSR, RegValue);
 265   3              }
 266   2      
 267   2              FeatureCleared = 1;
 268   2          }
 269   1          
 270   1          if(ReqAccept)
 271   1          {
 272   2              CSRWrite(USB_BASE + EP0_TXCNT, 0);
 273   2              CSRWrite(USB_BASE + EP0_TXCSR, EN_TX0);
 274   2          }
 275   1          else
 276   1              CSRWrite(USB_BASE + EP0_TXCSR, EN_TX0_STL);
 277   1      }
 278          
 279          void BulkReportHandle();
 280          
 281          void CtrlReqClearFeature()
 282          {
 283   1          BYTE Token = pSotaUsbRequest->Token;
 284   1          
 285   1          switch(Token)
 286   1          {
 287   2              case SETUP_TOKEN:
 288   2                  FeatureCleared = 0;
 289   2                  CSRWrite(USB_BASE + EP0_RXCSR, EN_RX0_STL);
 290   2                  break;
 291   2                        
 292   2              case IN_TOKEN:
 293   2                  ClrFeatureEP();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线不卡视频一二三区| av电影一区二区| 国产精品18久久久久| 欧美影院一区二区| 国产日韩欧美亚洲| 免费在线看成人av| 91国内精品野花午夜精品| 国产人成亚洲第一网站在线播放| 日韩在线一区二区三区| 色吧成人激情小说| 国产精品伦理在线| 精品亚洲国产成人av制服丝袜| 在线视频你懂得一区| 欧美国产成人在线| 国产风韵犹存在线视精品| 日韩欧美久久一区| 视频一区二区三区中文字幕| 欧美综合在线视频| 亚洲欧美韩国综合色| caoporm超碰国产精品| 久久久www免费人成精品| 麻豆高清免费国产一区| 69堂成人精品免费视频| 偷拍亚洲欧洲综合| 欧美三级日韩三级国产三级| 亚洲一二三区在线观看| 一本一道久久a久久精品| 亚洲视频图片小说| 91在线视频在线| 亚洲欧洲一区二区三区| 99久久久久免费精品国产| 欧美国产综合一区二区| 丰满亚洲少妇av| 中文字幕成人网| av不卡在线播放| 亚洲男帅同性gay1069| 日本电影欧美片| 亚洲国产日日夜夜| 制服丝袜亚洲精品中文字幕| 日韩高清电影一区| 欧美精品一区二区三区蜜桃视频 | 欧美成人精品1314www| 免费高清视频精品| 久久免费的精品国产v∧| 国产麻豆欧美日韩一区| 国产精品久久久久一区二区三区| 成人高清在线视频| 亚洲精品国久久99热| 欧美色图12p| 久久精品国产一区二区| 久久久精品综合| 97se狠狠狠综合亚洲狠狠| 一区二区三区在线播放| 欧美日韩aaaaaa| 国产综合成人久久大片91| 中文字幕日韩欧美一区二区三区| 欧美午夜寂寞影院| 精品亚洲aⅴ乱码一区二区三区| 国产日产亚洲精品系列| 色系网站成人免费| 精品一区免费av| 中文字幕一区在线观看| 7777精品久久久大香线蕉 | 午夜精品123| 久久青草国产手机看片福利盒子| aaa亚洲精品| 日韩vs国产vs欧美| 中文字幕一区日韩精品欧美| 欧美精品亚洲一区二区在线播放| 国产精品自拍网站| 亚洲国产精品视频| 中文字幕第一区综合| 777精品伊人久久久久大香线蕉| 国产麻豆成人传媒免费观看| 一区二区三区免费网站| 精品蜜桃在线看| 在线视频综合导航| 国产美女视频一区| 无码av免费一区二区三区试看| 中文一区二区完整视频在线观看 | 亚洲成人av电影| 久久综合久久99| 欧美日韩一区二区三区免费看| 国产电影精品久久禁18| 轻轻草成人在线| 亚洲一区视频在线| 亚洲欧洲av色图| 久久久久久久久一| 日韩免费成人网| 精品视频一区二区三区免费| 成人性生交大片| 国产在线麻豆精品观看| 偷拍一区二区三区四区| 一区二区三区四区在线| 国产精品乱码一区二三区小蝌蚪| 日韩精品综合一本久道在线视频| 色激情天天射综合网| 91免费国产在线| 懂色一区二区三区免费观看| 精彩视频一区二区| 麻豆精品在线观看| 日韩电影在线观看网站| 亚洲福利视频一区二区| 一区二区三区资源| 亚洲人xxxx| 亚洲免费观看高清完整版在线观看 | 成人免费一区二区三区视频| 久久久亚洲精品一区二区三区| 9191久久久久久久久久久| 欧美色综合网站| 欧美日韩综合色| 欧洲生活片亚洲生活在线观看| 91亚洲国产成人精品一区二区三| 国产91丝袜在线播放0| 国产专区综合网| 国产精品一区二区三区99| 国产一区二区不卡在线| 成人综合婷婷国产精品久久免费| 国产一区二区精品久久91| 国产高清亚洲一区| 粉嫩一区二区三区在线看| 国产成a人亚洲精| 不卡一区二区在线| 99精品偷自拍| 欧洲av在线精品| 欧美日韩精品欧美日韩精品一| 欧美精品aⅴ在线视频| 日韩一区二区免费在线电影| 精品免费99久久| 中文字幕+乱码+中文字幕一区| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品乱子久久久久| 一区二区三区不卡在线观看| 偷拍与自拍一区| 国产一区二区三区黄视频| www.视频一区| 欧美美女bb生活片| 精品国产乱码久久久久久蜜臀| 亚洲国产激情av| 亚洲一区二区三区中文字幕在线| 奇米亚洲午夜久久精品| 国产成人在线影院| 色欧美88888久久久久久影院| 欧美日韩视频在线观看一区二区三区 | 天天色天天爱天天射综合| 九九国产精品视频| av在线播放不卡| 日韩视频免费观看高清完整版在线观看 | 亚洲大片免费看| 国产一区视频网站| 一本一道久久a久久精品| 日韩一区二区三区免费看| 久久精品欧美一区二区三区麻豆| 亚洲欧美国产77777| 久久国产精品一区二区| 91在线观看视频| 欧美一区二区视频在线观看| 国产欧美一区在线| 日本成人在线不卡视频| 91原创在线视频| 欧美成人乱码一区二区三区| 中文字幕中文乱码欧美一区二区| 日韩成人午夜电影| 91视频在线观看| 久久老女人爱爱| 日韩av中文字幕一区二区三区| 成人app在线| 久久嫩草精品久久久精品| 亚洲成人综合视频| 91影院在线免费观看| 久久久久久久久99精品| 日本vs亚洲vs韩国一区三区| 91片黄在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 男女男精品视频网| 欧美久久久久久久久中文字幕| 综合欧美一区二区三区| 国产精品白丝jk白祙喷水网站| 欧美一级片在线观看| 亚洲一区二区三区四区不卡| 成人福利在线看| 久久久精品黄色| 极品少妇一区二区| 日韩欧美卡一卡二| 免费视频最近日韩| 3atv一区二区三区| 午夜国产精品影院在线观看| 91久久精品网| 亚洲尤物视频在线| 在线观看日韩精品| 亚洲欧美偷拍另类a∨色屁股| 成人精品一区二区三区中文字幕| 国产亚洲精品bt天堂精选| 久久国产麻豆精品| www成人在线观看| 国产自产高清不卡| 国产午夜久久久久| 春色校园综合激情亚洲| 国产欧美综合色| av中文字幕不卡|