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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sl811.lst

?? USB接口程序
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V7.06   SL811                                                                 08/10/2005 23:36:34 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SL811
OBJECT MODULE PLACED IN SL811.OBJ
COMPILER INVOKED BY: D:\Keil51\C51\BIN\C51.EXE SL811.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "common.h"
   2          #include "SL811.H"
   3          #include "HAL.H"
   4          
   5          extern FLAGS bdata bFlags;
   6          PKG usbstack;
   7          unsigned char xdata DBUF[BUFFER_LENGTH];
   8          pUSBDEV xdata uDev;     // Multiple USB devices attributes, Max 5 devices
   9          
  10          //*****************************************************************************************
  11          // SL811H variables initialization
  12          //*****************************************************************************************
  13          void USBReset(void)
  14          {
  15   1              unsigned char temp;
  16   1          temp=SL811Read(CtrlReg);   
  17   1              SL811Write(CtrlReg,temp|0x08);
  18   1              DelayMs(25);
  19   1              SL811Write(CtrlReg,temp);    
  20   1      }
  21          
  22          //*****************************************************************************************
  23          // usbXfer:
  24          // successful transfer = return TRUE
  25          // fail transfer = return FALSE
  26          //*****************************************************************************************
  27          unsigned char usbXfer(void)
  28          {  
  29   1              
  30   1              unsigned char xferLen, data0, data1,cmd;
  31   1              unsigned char intr,result,remainder,dataX,bufLen,addr,timeout;
  32   1              unsigned char out[8];
  33   1              //------------------------------------------------
  34   1              // Default setting for usb trasnfer
  35   1              //------------------------------------------------
  36   1              dataX=timeout=0;
  37   1              
  38   1              data0 = EP0_Buf;                                        // DATA0 buffer address
  39   1              data1 = data0 + (unsigned char)usbstack.wPayload;       // DATA1 buffer address
  40   1              bFlags.bits.DATA_STOP=FALSE;
  41   1              bFlags.bits.TIMEOUT_ERR=FALSE;
  42   1              //------------------------------------------------
  43   1              // Define data transfer payload
  44   1              //------------------------------------------------
  45   1              if (usbstack.wLen >= usbstack.wPayload)                 // select proper data payload
  46   1                      xferLen = usbstack.wPayload;                    // limit to wPayload size 
  47   1              else                                                    // else take < payload len
  48   1                      xferLen = usbstack.wLen;                        //      
  49   1              
  50   1              // For IN token
  51   1              if (usbstack.pid==PID_IN)                               // for current IN tokens
  52   1              {                                                                                               //
  53   2                      cmd = sDATA0_RD;                        // FS/FS on Hub, sync to sof
  54   2              }
  55   1              // For OUT token
C51 COMPILER V7.06   SL811                                                                 08/10/2005 23:36:34 PAGE 2   

  56   1              else if(usbstack.pid==PID_OUT)                          // for OUT tokens
  57   1              {       
  58   2                      if(xferLen)                                                                     // only when there are  
  59   2                              {
  60   3                              SL811BufWrite(data0,usbstack.buffer,xferLen);   // data to transfer on USB
  61   3                              }
  62   2                      cmd = sDATA0_WR;                                                // FS/FS on Hub, sync to sof
  63   2              // implement data toggle
  64   2                      bFlags.bits.bData1 = uDev.bData1[usbstack.endpoint];
  65   2                      uDev.bData1[usbstack.endpoint] = (uDev.bData1[usbstack.endpoint] ? 0 : 1); // DataToggle
  66   2                      
  67   2                      if(bFlags.bits.bData1)
  68   2                              cmd |= 0x40;                              // Set Data1 bit in command
  69   2              }
  70   1              //------------------------------------------------
  71   1              // For SETUP/OUT token
  72   1              //------------------------------------------------
  73   1              else                                                                                    // for current SETUP/OUT tokens
  74   1              {       
  75   2                      if(xferLen)                                                                     // only when there are  
  76   2                              {                                                                               // data to transfer on USB
  77   3                              intr=usbstack.setup.wLength;                    
  78   3                              out[0]=usbstack.setup.bmRequest;
  79   3                              out[1]=usbstack.setup.bRequest;
  80   3                              out[2]=(unsigned char)usbstack.setup.wValue;
  81   3                              out[3]=(unsigned char)(usbstack.setup.wValue>>8);
  82   3                              out[4]=(unsigned char)usbstack.setup.wIndex;
  83   3                              out[5]=(unsigned char)(usbstack.setup.wIndex>>8);
  84   3                              out[6]=(unsigned char)usbstack.setup.wLength;
  85   3                              out[7]=(unsigned char)(usbstack.setup.wLength>>8);
  86   3                              SL811BufWrite(data0,out,xferLen);
  87   3                              usbstack.setup.wLength=intr;
  88   3                              }
  89   2                      cmd = sDATA0_WR;                                                        // FS/FS on Hub, sync to sof
  90   2              }
  91   1              //------------------------------------------------
  92   1              // For EP0's IN/OUT token data, start with DATA1
  93   1              // Control Endpoint0's status stage.
  94   1              // For data endpoint, IN/OUT data, start ????
  95   1              //------------------------------------------------
  96   1              if (usbstack.endpoint == 0 && usbstack.pid != PID_SETUP)        // for Ep0's IN/OUT token
  97   1                      cmd |= 0x40;                                    // always set DATA1
  98   1              //------------------------------------------------
  99   1              // Arming of USB data transfer for the first pkt
 100   1              //------------------------------------------------
 101   1              SL811Write(EP0Status,((usbstack.endpoint&0x0F)|usbstack.pid));  // PID + EP address
 102   1              SL811Write(EP0Counter,usbstack.usbaddr);                                        // USB address
 103   1              SL811Write(EP0Address,data0);                                   // buffer address, start with "data0"
 104   1              SL811Write(EP0XferLen,xferLen);                                 // data transfer length
 105   1              SL811Write(IntStatus,INT_CLEAR);                                // clear interrupt status
 106   1              SL811Write(EP0Control,cmd);                                             // Enable ARM and USB transfer start here
 107   1              
 108   1              //------------------------------------------------
 109   1              // Main loop for completing a wLen data trasnfer
 110   1              //------------------------------------------------
 111   1              while(TRUE)
 112   1              {   
 113   2                      //---------------Wait for done interrupt------------------
 114   2                      while(TRUE)                                                                                             // always ensure requested device is
 115   2                      {                                                                                                               // inserted at all time, then you will
 116   3                              intr = SL811Read(IntStatus);    
 117   3                                                                              // wait for interrupt to be done, and 
C51 COMPILER V7.06   SL811                                                                 08/10/2005 23:36:34 PAGE 3   

 118   3                              if((intr & USB_RESET) || (intr & INSERT_REMOVE))        // proceed to parse result from slave 
 119   3                              {                                                                                                       // device.
 120   4                                      bFlags.bits.DATA_STOP = TRUE;                                                           // if device is removed, set DATA_STOP
 121   4                                      return FALSE;                                                                   // flag true, so that main loop will 
 122   4                              }                                                                                                       // know this condition and exit gracefully
 123   3                              if(intr & USB_A_DONE)                                                           
 124   3                                      break;                                                  // interrupt done !!!
 125   3                      }
 126   2      
 127   2                      SL811Write(IntStatus,INT_CLEAR); // clear interrupt status
 128   2                      result    = SL811Read(EP0Status);                                               // read EP0status register
 129   2                      remainder = SL811Read(EP0Counter);                                              // remainder value in last pkt xfer
 130   2      
 131   2                      //-------------------------ACK----------------------------
 132   2                      if (result & EP0_ACK)                                                                   // Transmission ACK
 133   2                      {       
 134   3      
 135   3                              // SETUP TOKEN
 136   3                              if(usbstack.pid == PID_SETUP)                                                           // do nothing for SETUP/OUT token 
 137   3                                      break;                                                                                  // exit while(1) immediately
 138   3      
 139   3                              // OUT TOKEN                            
 140   3                              else if(usbstack.pid == PID_OUT)
 141   3                                      break;
 142   3      
 143   3                              // IN TOKEN
 144   3                              else if(usbstack.pid == PID_IN)
 145   3                              {                                                                                                       // for IN token only
 146   4                                      usbstack.wLen  -= (WORD)xferLen;        // update remainding wLen value
 147   4                                      cmd   ^= 0x40;                          // toggle DATA0/DATA1
 148   4                                      dataX++;                                // point to next dataX
 149   4      
 150   4                                      //------------------------------------------------      
 151   4                                      // If host requested for more data than the slave 
 152   4                                      // have, and if the slave's data len is a multiple
 153   4                                      // of its endpoint payload size/last xferLen. Do 
 154   4                                      // not overwrite data in previous buffer.
 155   4                                      //------------------------------------------------      
 156   4                                      if(remainder==xferLen)                  // empty data detected
 157   4                                              bufLen = 0;                     // do not overwriten previous data
 158   4                                      else                                    // reset bufLen to zero
 159   4                                              bufLen = xferLen;               // update previous buffer length
 160   4                                      
 161   4                                      //------------------------------------------------      
 162   4                                      // Arm for next data transfer when requested data 
 163   4                                      // length have not reach zero, i.e. wLen!=0, and
 164   4                                      // last xferlen of data was completed, i.e.
 165   4                                      // remainder is equal to zero, not a short pkt
 166   4                                      //------------------------------------------------      
 167   4                                      if(!remainder && usbstack.wLen)                                                 // remainder==0 when last xferLen
 168   4                                      {                                                                                               // was all completed or wLen!=0
 169   5                                              addr    = (dataX & 1) ? data1:data0;            // select next address for data
 170   5                                              xferLen = (BYTE)(usbstack.wLen>=usbstack.wPayload) ? usbstack.wPayload:usbstack.wLen;   // get data len
             -gth required
 171   5                                                                      
 172   5                                              cmd |= 0x20;                                                    // always sync SOF when FS, regardless 
 173   5                                              SL811Write(EP0XferLen, xferLen);                        // select next xfer length
 174   5                                              SL811Write(EP0Address, addr);                   // data buffer addr 
 175   5                                              SL811Write(IntStatus,INT_CLEAR);                        // is a LS is on Hub.
 176   5                                              SL811Write(EP0Control,cmd);                                     // Enable USB transfer and re-arm
 177   5                                      }                               
 178   4      
C51 COMPILER V7.06   SL811                                                                 08/10/2005 23:36:34 PAGE 4   

 179   4                                      //------------------------------------------------
 180   4                                      // Copy last IN token data pkt from prev transfer

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线不卡| 日本伊人色综合网| 美女网站在线免费欧美精品| 在线观看一区日韩| 中文字幕一区二区三区蜜月 | 中文字幕av不卡| 国产精品综合在线视频| 欧美mv和日韩mv国产网站| 日韩国产在线观看一区| 91精品国产综合久久蜜臀| 亚洲国产欧美在线| 久久久综合视频| 欧美人动与zoxxxx乱| 成人免费毛片高清视频| 日本免费新一区视频| 久久午夜免费电影| 99久久国产综合色|国产精品| 亚洲乱码中文字幕综合| 91精品免费观看| 色久综合一二码| 午夜日韩在线观看| 欧美一区二区三区四区视频| 国产老妇另类xxxxx| 17c精品麻豆一区二区免费| 欧美美女一区二区在线观看| 亚洲高清中文字幕| 欧美二区在线观看| 国产91丝袜在线观看| 午夜精品在线看| 中文字幕亚洲一区二区va在线| 欧美另类变人与禽xxxxx| 国产不卡视频一区二区三区| 亚洲人成7777| 国产午夜精品一区二区| 欧美日韩一本到| 欧美日韩免费观看一区二区三区| 免费人成在线不卡| 亚洲激情自拍视频| 日韩一区在线看| 视频在线在亚洲| 国产乱码精品一区二区三区av| 成人h动漫精品一区二| 国产在线播放一区二区三区| 久久精品国产**网站演员| 亚洲国产精品麻豆| 亚洲一区二区av在线| 亚洲精选在线视频| 亚洲激情欧美激情| 亚洲激情第一区| 欧美一区二区三区免费大片 | 国产欧美一区视频| 欧美日韩在线播放一区| 91精品国产色综合久久不卡电影 | 日韩在线观看一区二区| 亚洲chinese男男1069| 欧美一区三区四区| 午夜精品久久久久久久99樱桃| 国产亚洲精品aa| 日韩欧美三级在线| 色偷偷久久一区二区三区| 国产一区二区精品久久91| 成人免费看片app下载| 3751色影院一区二区三区| 日韩中文字幕91| 日韩午夜av电影| 久久久一区二区| 亚洲欧洲精品一区二区三区不卡| 亚洲精品免费视频| 免费观看日韩电影| 国产91精品一区二区麻豆网站 | 欧美精品三级日韩久久| 欧美成人三级电影在线| 色狠狠一区二区三区香蕉| 日韩经典一区二区| 国产一区欧美日韩| 欧美最猛性xxxxx直播| 日韩一区二区电影在线| 日本一二三不卡| 亚洲第一电影网| 国产美女视频一区| 欧美综合亚洲图片综合区| 欧美xxxx在线观看| 亚洲图片欧美激情| 麻豆成人91精品二区三区| 成人avav影音| 日韩成人午夜电影| 国产一本一道久久香蕉| 国产成人av电影免费在线观看| 成人午夜看片网址| 欧美日韩情趣电影| 亚洲三级久久久| 蜜臀av性久久久久蜜臀av麻豆| 国产精品白丝jk黑袜喷水| 在线精品视频免费播放| 26uuuu精品一区二区| 国产女人18毛片水真多成人如厕 | 99精品视频一区二区三区| 99久精品国产| 精品国产一区二区三区四区四| 日韩一区中文字幕| 精品在线你懂的| 久久久99免费| 午夜精品久久久久久久久久| 色欧美片视频在线观看| 一区二区在线观看不卡| 精品中文字幕一区二区小辣椒| 日本一区中文字幕| 国产麻豆91精品| 九一九一国产精品| 99re成人在线| 日韩欧美高清一区| 日韩影院免费视频| 日韩视频在线观看一区二区| 国产iv一区二区三区| 国产成人福利片| 亚洲尤物视频在线| 欧美男女性生活在线直播观看| 日本一区免费视频| 久久国产婷婷国产香蕉| 欧美喷水一区二区| 一区二区在线观看视频| 91亚洲国产成人精品一区二三 | 美女视频黄 久久| 欧美三级电影在线看| 亚洲欧美色一区| 99re视频这里只有精品| 中文成人综合网| 成人av在线资源| 中文字幕高清一区| 国产成人无遮挡在线视频| 久久九九久久九九| 丁香婷婷综合五月| 国产欧美一区二区三区鸳鸯浴| 国产高清不卡一区二区| 2023国产精品视频| 国产在线精品一区二区不卡了| 精品久久久久久久人人人人传媒| 久久精品国内一区二区三区| 精品久久国产字幕高潮| 精品一区二区三区视频 | wwwwww.欧美系列| 国产乱子伦一区二区三区国色天香| 日韩欧美一级精品久久| 精品一区二区在线观看| 久久综合色婷婷| 9久草视频在线视频精品| 亚洲图片另类小说| 欧美日韩免费观看一区二区三区 | 国产一区二区免费视频| 久久久国产一区二区三区四区小说| 国产在线观看一区二区| 欧美经典三级视频一区二区三区| 成人美女视频在线观看| 1000精品久久久久久久久| 在线观看亚洲精品| 奇米777欧美一区二区| 精品福利在线导航| 成人网男人的天堂| 一区二区三区在线视频观看| 欧美午夜精品久久久| 久久精品久久久精品美女| 久久精品人人做人人爽人人| 成人激情视频网站| 一区二区三区毛片| 日韩色在线观看| 大桥未久av一区二区三区中文| 亚洲免费在线播放| 日韩欧美的一区二区| 成人午夜伦理影院| 亚洲国产精品欧美一二99| 精品福利一二区| 91女神在线视频| 日本麻豆一区二区三区视频| 久久久久久久久久久99999| 色香色香欲天天天影视综合网| 日韩国产精品久久久久久亚洲| 欧美激情一二三区| 欧美精品三级在线观看| 国产91露脸合集magnet| 午夜精品爽啪视频| 欧美激情一区二区三区在线| 欧美日韩国产影片| 国产精品99久久久久久似苏梦涵| 久久精子c满五个校花| 久热成人在线视频| 中文字幕一区二区日韩精品绯色 | 久久久精品tv| 欧美三级电影在线观看| 国产99久久精品| 五月婷婷激情综合网| 中文字幕制服丝袜成人av| 欧美一二三区精品| 色老汉av一区二区三区| 国产乱子轮精品视频| 亚洲成人黄色影院| 国产精品久久久久久久久图文区 | 丁香六月久久综合狠狠色| 午夜精品福利一区二区蜜股av| 天堂蜜桃一区二区三区| 大桥未久av一区二区三区中文|