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

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

?? ctrlreq.lst

?? FS7805 使用APLIF的demoFS7805 使用APLIF的demo
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CTRLREQ
OBJECT MODULE PLACED IN .\Output\CtrlReq.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CtrlReq.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Output\CtrlReq.lst) OBJEC
                    -T(.\Output\CtrlReq.obj)

line level    source

   1          /*
   2          *********************************************************************************************************
   3          * File:     CtrlReq.C
   4          * Contents: Firmware frameworks task dispatcher and device request parser source
   5          *
   6          * $Date:    04/06/06    Kimi    v0.1
   7          * $Date:    04/25/06    Kimi    v0.2
   8          * $Date:    04/30/06    Kimi    v0.3
   9          * $Date:    01/23/07    Kevin   v0.4
  10          * Copyright (c) 2006 Fameg, Inc. All rights reserved
  11          *********************************************************************************************************
  12          */
  13          
  14          #include "fs7805.h"
  15          #include "fs7805regs.h"
  16          #include "dscr.h"
  17          
  18          #define USB_STALL_EP0() EP0RXCS = EP0RXCS | bmRX0_SESTALL;  \
  19                                  EP0TXCS = EP0TXCS | bmTX0_SESTALL
  20          
  21          /*
  22          *********************************************************************************************************
  23          *                                       VARIABLE PROTOTYPES
  24          *********************************************************************************************************
  25          */
  26          static  INT8U SetupData[8], PacketSize;
  27          static  INT8U AlternateSetting;
  28          static  BOOLEAN HighSpeed;
  29          static  INT8U EnterSuspend = 0;
  30          /*
  31          *********************************************************************************************************
  32          *                                       FUNCTION PROTOTYPES
  33          *********************************************************************************************************
  34          */
  35          static  void  DR_ClearFeature (void);
  36          static  void  DR_GetConfiguration (void);
  37          static  void  DR_GetDescriptor (void);
  38          static  void  DR_GetInterface (void);
  39          static  void  DR_GetStatus (void);
  40          static  void  DR_SetAddress (void);
  41          static  void  DR_SetConfiguration (void);
  42          static  void  DR_SetFeature (void);
  43          static  void  DR_SetInterface (void);
  44          static  void  GD_DeviceDscr (void);
  45          static  void  GD_DeviceQualDscr (void);
  46          static  void  GD_ConfigDscr (void);
  47          static  void  GD_OtherConfigDscr (void);
  48          static  void  GD_String (void);
  49          static  void  SetupCommand (void);
  50          
  51          /*
  52          *********************************************************************************************************
  53          *                                             USB_INT_ISR
  54          *
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 2   

  55          * Description: Interrupt Service Routine
  56          *
  57          * Arguments  : none
  58          *
  59          * Returns    : none
  60          *********************************************************************************************************
  61          */
  62          void  USB_INT_ISR (void) interrupt 5
  63          {
  64   1          if (STINT & bmIDLE3MSINT)                          // idle interrupt
  65   1          {
  66   2              if (EnterSuspend++)
  67   2              {
  68   3                  USBGCTRL        = USBGCTRL | bmSUSPEND;
  69   3              }
  70   2              STINT           = STINT & (~bmIDLE3MSINT);
  71   2          }
  72   1      
  73   1          if (STINT & bmRESUMEIE)                            // resume interrupt
  74   1          {
  75   2              STINT           = STINT & (~bmRESUMEIE);
  76   2          }
  77   1      
  78   1          if (STINT & bmUSBRSTINT)                           // reset interrupt
  79   1          {
  80   2              while (!(USBGCTRL & bmHS_DETECTED));           // detect USB speed
  81   2              HighSpeed       = USBGCTRL & bmSPEED;
  82   2              if (HighSpeed)                                 // High speed
  83   2              {
  84   3                  PacketSize  = 64;
  85   3              }
  86   2              else                                           // Full speed
  87   2              {
  88   3                  PacketSize  = 64;
  89   3              }
  90   2              STINT           = STINT & (~bmUSBRSTINT);
  91   2          }
  92   1      
  93   1          if ((EPINT & bmRX0INT) && ((EP0RXTKN & bmEP0_SETUP) | (EP0RXTKN & bmEP0_SETUPOW)))
  94   1          {                                                  // enquire the EP0 RX setup interrupt
  95   2              EP0RXTKN        = EP0RXTKN & (~bmEP0_SETUP) & (~bmEP0_SETUPOW);
  96   2              SetupCommand();                                // Parse command
  97   2          }
  98   1      
  99   1          if ((EPINT & bmRX0INT) && (EP0RXTKN & bmEP0_OUT))  // out packet
 100   1          {
 101   2              EP0RXTKN        = EP0RXTKN & (~bmEP0_OUT);
 102   2          }
 103   1      
 104   1      #ifndef ISOCHRONOUS
 105   1          if ((EPINT & bmEP2INT) && (EP2CS & bmEP_ACK))
 106   1          {
 107   2              EPINT   = EPINT & (~bmEP2INT);                 // Clear EP2 interrupt
 108   2              OutData = TRUE;
 109   2          }
 110   1          else
 111   1          {
 112   2              EPINT   = EPINT & (~bmEP2INT);                 // Clear EP2 interrupt
 113   2          }
 114   1      #else
                  if (EPINT & bmEP2INT)
                  {
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 3   

                      EPINT   = EPINT & (~bmEP2INT);                 // Clear EP2 interrupt
                      OutData = TRUE;
                  }
              #endif
 121   1      
 122   1      #ifndef ISOCHRONOUS
 123   1          if ((EPINT & bmEP1INT) && (EP1CS & bmEP_ACK))
 124   1          {
 125   2              EPINT   = EPINT & (~bmEP1INT);                 // Clear EP1 interrupt
 126   2              InData  = TRUE;
 127   2          }
 128   1          else
 129   1          {
 130   2              EPINT   = EPINT & (~bmEP1INT);                 // Clear EP1 interrupt
 131   2          }
 132   1      #else
                  if (EPINT & bmEP1INT)
                  {
                      EPINT   = EPINT & (~bmEP1INT);                 // Clear EP1 interrupt
                      InData  = TRUE;
                  }
              #endif
 139   1      }
 140          
 141          
 142          /*
 143          *********************************************************************************************************
 144          *                                             SETUPCOMMAND
 145          *
 146          * Description: Parse command function
 147          *
 148          * Arguments  : none
 149          *
 150          * Returns    : none
 151          *********************************************************************************************************
 152          */
 153          void  SetupCommand (void)
 154          {
 155   1          INT8U   i, count;
 156   1      
 157   1          count   = EP0RXCNT;
 158   1          if (count == 8)
 159   1          {
 160   2              for (i = 0; i < 8; i++)                        // Receive data
 161   2              {
 162   3                  SetupData[i]    = EP0RXDAT;
 163   3              }
 164   2      
 165   2              switch (SetupData[1])                          // Parse
 166   2              {
 167   3                  case SC_GET_STATUS:
 168   3                      DR_GetStatus();
 169   3                      break;
 170   3                  case SC_CLEAR_FEATURE:
 171   3                      DR_ClearFeature();
 172   3                      break;
 173   3                  case SC_SET_FEATURE:
 174   3                      DR_SetFeature();
 175   3                      break;
 176   3                  case SC_SET_ADDRESS:
 177   3                      DR_SetAddress();
 178   3                      break;
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 4   

 179   3                  case SC_GET_DESCRIPTOR:
 180   3                      DR_GetDescriptor();
 181   3                      break;
 182   3                  case SC_GET_CONFIGURATION:
 183   3                      DR_GetConfiguration();
 184   3                      break;
 185   3                  case SC_SET_CONFIGURATION:
 186   3                      DR_SetConfiguration();
 187   3                      break;
 188   3                  case SC_GET_INTERFACE:
 189   3                      DR_GetInterface();
 190   3                      break;
 191   3                  case SC_SET_INTERFACE:
 192   3                      DR_SetInterface();
 193   3                      break;
 194   3                  default:
 195   3                      USB_STALL_EP0();                       // Send STALL
 196   3                      break;
 197   3              }
 198   2          }
 199   1          EP0RXCS     = EP0RXCS | bmRX0_EN;
 200   1      }
 201          /*$PAGE*/
 202          
 203          /*
 204          *********************************************************************************************************
 205          *                                             DR_GETSTATUS
 206          *
 207          * Description: Get status command
 208          *
 209          * Arguments  : none
 210          *
 211          * Returns    : none
 212          *********************************************************************************************************
 213          */
 214          void  DR_GetStatus (void)
 215          {
 216   1          switch (SetupData[0])
 217   1          {
 218   2              case GS_DEVICE:
 219   2                  EP0TXDAT    = (Rwuen << 1) | Selfpwr;
 220   2                  break;
 221   2              case GS_INTERFACE:
 222   2                  EP0TXDAT    = 0;
 223   2                  break;
 224   2              case GS_ENDPOINT:
 225   2                  switch (SetupData[4] & 0x0F)
 226   2                  {
 227   3                      case bmEP1MAP:
 228   3                          EP0TXDAT    = (EP1CS & bmEP_SESTALL) >> 1;
 229   3                          break;
 230   3                      case bmEP2MAP:
 231   3                          EP0TXDAT    = (EP2CS & bmEP_SESTALL) >> 1;
 232   3                          break;
 233   3                      default:
 234   3                          USB_STALL_EP0();                   // Send STALL
 235   3                          return;
 236   3                  }
 237   2                  break;
 238   2              default:
 239   2                  USB_STALL_EP0();                           // Send STALL
 240   2                  return;
C51 COMPILER V7.50   CTRLREQ                                                               04/17/2007 10:42:46 PAGE 5   

 241   2          }
 242   1          EP0TXDAT    = 0;
 243   1          EP0TXCNT    = 2;
 244   1          EP0TXCS     = EP0TXCS | bmTX0_EN;
 245   1          while (EP0TXCS & bmTX0_EN);
 246   1      }
 247          /*$PAGE*/
 248          
 249          /*
 250          *********************************************************************************************************
 251          *                                             DR_CLEARFEATURE
 252          *
 253          * Description: Clear feature
 254          *
 255          * Arguments  : none
 256          *
 257          * Returns    : none
 258          *********************************************************************************************************
 259          */
 260          void  DR_ClearFeature (void)
 261          {
 262   1          switch (SetupData[0])
 263   1          {
 264   2              case FT_DEVICE:
 265   2                  if (SetupData[2] == 1)
 266   2                  {
 267   3                      Rwuen       = FALSE;
 268   3                  }
 269   2                  else
 270   2                  {
 271   3                      USB_STALL_EP0();
 272   3                      return;
 273   3                  }
 274   2                  break;
 275   2              case FT_ENDPOINT:
 276   2                  if (SetupData[2] == 0)
 277   2                  {
 278   3                      switch (SetupData[4] & 0x0F)
 279   3                      {
 280   4                          case bmEP1MAP:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色美美综合视频| 国产精品天干天干在观线| 一区二区三区视频在线看| 成人在线一区二区三区| 久久精品日产第一区二区三区高清版 | 成人性色生活片| 国产精品福利一区| 久久99精品久久久久久国产越南| www.66久久| 精品国产精品网麻豆系列| 在线观看亚洲一区| 国产精品久久久久一区二区三区共 | 久久亚洲精品小早川怜子| 丁香天五香天堂综合| 亚洲精品久久7777| 国产色婷婷亚洲99精品小说| 99视频有精品| 国产综合久久久久久久久久久久| 国产精品不卡一区二区三区| 欧美乱妇一区二区三区不卡视频| 美女国产一区二区三区| 亚洲国产精品激情在线观看 | 777午夜精品视频在线播放| 丁香婷婷综合激情五月色| 日韩二区三区四区| 一区二区三区成人| 亚洲丝袜自拍清纯另类| 国产日韩欧美综合在线| 日韩欧美中文字幕制服| 在线影院国内精品| 色综合久久久久| 成人动漫视频在线| 成人永久免费视频| 国产老女人精品毛片久久| 寂寞少妇一区二区三区| 另类小说视频一区二区| 麻豆国产一区二区| 美女被吸乳得到大胸91| 国模一区二区三区白浆| 看电影不卡的网站| 国产成人亚洲综合a∨猫咪| 久久www免费人成看片高清| 精东粉嫩av免费一区二区三区| 免费精品视频在线| 韩国v欧美v亚洲v日本v| 狠狠狠色丁香婷婷综合激情 | 久久精品国产成人一区二区三区| 另类调教123区| www.性欧美| 69堂亚洲精品首页| 国产喂奶挤奶一区二区三区| 悠悠色在线精品| 国产一区在线观看麻豆| 一本到一区二区三区| 日韩视频在线永久播放| 久久久久久**毛片大全| 一区二区三区在线影院| 国产高清久久久久| 欧美专区日韩专区| 国产免费成人在线视频| 日日欢夜夜爽一区| 92精品国产成人观看免费| 精品国产乱码久久久久久久久 | 色哟哟在线观看一区二区三区| 欧美嫩在线观看| 亚洲欧美怡红院| 欧美高清视频一二三区| 精品日韩成人av| 亚洲女女做受ⅹxx高潮| 久久精品国产成人一区二区三区| 97精品视频在线观看自产线路二| 日韩午夜激情电影| 日本不卡视频一二三区| 色综合色狠狠综合色| 国产精品国产自产拍高清av王其| 国产在线精品免费av| 欧美日韩精品高清| 日韩在线a电影| 欧美精品自拍偷拍动漫精品| 亚洲福中文字幕伊人影院| 在线免费观看成人短视频| 亚洲精品高清在线| 成人av资源在线观看| 国产精品精品国产色婷婷| a在线播放不卡| 亚洲午夜电影网| 欧美成人性战久久| 成人a免费在线看| 亚洲第一狼人社区| 精品av综合导航| av网站免费线看精品| 亚洲国产精品久久不卡毛片| 欧美日韩国产综合视频在线观看 | 亚洲欧美综合另类在线卡通| 白白色 亚洲乱淫| 日本欧美肥老太交大片| 日本一区二区高清| 91精品欧美综合在线观看最新| 久久99国产精品成人| 亚洲激情图片小说视频| 成人网男人的天堂| 亚洲欧洲制服丝袜| 国产精品视频线看| 久久99久国产精品黄毛片色诱| 大美女一区二区三区| 国产精品久久久久久久久动漫| 欧美精品久久99| 91一区二区在线观看| 精品中文字幕一区二区| 图片区小说区国产精品视频| 国产精品二三区| 国产欧美日韩另类一区| 91精品国产综合久久精品图片| 91在线观看地址| 99热99精品| 成人高清免费观看| 成人精品视频一区| 国产91在线|亚洲| 国产剧情一区在线| 成人av在线一区二区| 国产成人超碰人人澡人人澡| 国产精品亚洲а∨天堂免在线| 久久99国内精品| 国产成人精品三级| 94-欧美-setu| 欧美日本国产视频| 欧美成人a视频| 中文字幕一区二区三区乱码在线 | 亚洲天堂av老司机| 亚洲精品va在线观看| 日韩av电影一区| 国产激情偷乱视频一区二区三区| 国产成人av一区二区三区在线| 成人97人人超碰人人99| 欧美系列亚洲系列| 精品国产制服丝袜高跟| 综合婷婷亚洲小说| 久久精品99久久久| 成人av集中营| 91精品国产全国免费观看 | 国产女主播一区| 亚洲成av人**亚洲成av**| 国产suv精品一区二区三区| 色婷婷精品大视频在线蜜桃视频| 欧美午夜精品久久久久久孕妇| 精品国产污污免费网站入口 | 久久精品国产亚洲a| 色女孩综合影院| 国产精品久久久久9999吃药| 蜜臀久久久99精品久久久久久| 99精品国产一区二区三区不卡| 久久综合色婷婷| 免费av网站大全久久| 欧美专区日韩专区| 一区二区三区在线播| eeuss鲁一区二区三区| 国产视频视频一区| 国产一区二区精品久久99 | 久久伊人中文字幕| 男男视频亚洲欧美| 日韩欧美卡一卡二| 狠狠狠色丁香婷婷综合久久五月| 欧美日本在线视频| 美女免费视频一区二区| 欧美videossexotv100| 精品一区二区三区在线观看| 精品日韩欧美在线| 福利91精品一区二区三区| 亚洲国产精华液网站w| 99v久久综合狠狠综合久久| 国产精品电影一区二区| 91麻豆国产福利在线观看| 综合激情成人伊人| 7777精品伊人久久久大香线蕉最新版| 免费精品视频在线| 中文字幕精品一区二区三区精品| 99vv1com这只有精品| 视频一区国产视频| 久久久久久久综合| 欧美视频在线播放| 国产精品自在欧美一区| 亚洲人精品一区| 久久女同精品一区二区| 在线观看视频一区二区欧美日韩| 日韩av在线免费观看不卡| 中文字幕一区二| 久久中文娱乐网| 日韩一区二区中文字幕| 色婷婷综合视频在线观看| 国产麻豆午夜三级精品| 日韩av一二三| 亚洲一区二区视频在线观看| 精品国产亚洲一区二区三区在线观看| 色欧美乱欧美15图片| 91在线观看下载| 色偷偷成人一区二区三区91 | 精品一区二区综合| 日本亚洲天堂网| 午夜av一区二区| 亚洲成人av免费|