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

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

?? sl811.lst

?? USB接口程序
?? LST
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆91在线播放| 精品一区二区三区在线播放视频| 国产精品嫩草影院com| 精品国产1区二区| 欧美大片免费久久精品三p| 欧美日本视频在线| 91精品欧美一区二区三区综合在 | 欧美午夜一区二区三区| 95精品视频在线| 99久久伊人精品| 91久久精品午夜一区二区| 色综合久久久久综合99| 日本国产一区二区| 欧美探花视频资源| 日韩一区二区三区四区五区六区| 日韩欧美高清一区| 久久久久久99久久久精品网站| 国产日产欧产精品推荐色| 国产精品午夜久久| 亚洲免费在线电影| 午夜电影久久久| 久久草av在线| 波多野结衣在线一区| 91在线云播放| 欧美精品日韩精品| 欧美成人一区二区| 中文字幕第一区二区| 亚洲精品亚洲人成人网在线播放| 亚洲成人综合视频| 韩国精品久久久| 不卡视频免费播放| 欧美日本一区二区| 国产欧美日韩中文久久| 亚洲精品免费在线观看| 日本va欧美va瓶| 成人午夜av在线| 91福利在线观看| 日韩精品一区二区三区视频| 国产日韩亚洲欧美综合| 一区二区三区在线免费| 久久99久国产精品黄毛片色诱| 成人性生交大片免费看中文网站 | 亚洲欧美另类久久久精品2019| 亚洲va欧美va国产va天堂影院| 麻豆国产精品视频| 91在线小视频| 日韩一级免费观看| 中文字幕五月欧美| 蜜臂av日日欢夜夜爽一区| 成人av免费在线| 日韩无一区二区| 亚洲人成网站精品片在线观看| 免费看日韩a级影片| 99久久精品费精品国产一区二区| 7777精品伊人久久久大香线蕉最新版| 国产女主播视频一区二区| 亚洲国产欧美一区二区三区丁香婷| 精品一区二区三区免费观看 | 亚洲伦理在线免费看| 免费成人在线观看视频| 91亚洲国产成人精品一区二三 | 日日夜夜免费精品| 成人高清视频免费观看| 91精品国产高清一区二区三区| 国产精品二三区| 久久精品国产免费看久久精品| 色噜噜狠狠色综合中国| 国产日韩欧美精品一区| 天天色天天爱天天射综合| 91在线观看美女| 久久精子c满五个校花| 肉肉av福利一精品导航| 在线观看视频一区二区 | 裸体健美xxxx欧美裸体表演| 一本色道久久综合亚洲aⅴ蜜桃 | 91精品福利在线一区二区三区 | 国产99久久久国产精品潘金| 在线不卡的av| 亚洲精品国产精华液| 成人在线综合网站| 久久综合久久99| 视频一区免费在线观看| 在线看国产一区二区| 国产精品久久久久9999吃药| 久久成人综合网| 欧美一区二区三区在线| 亚洲福利国产精品| 在线观看精品一区| 有码一区二区三区| 99视频超级精品| 中文字幕欧美区| 国产成人综合在线播放| 久久久三级国产网站| 极品美女销魂一区二区三区免费| 欧美一区二区三区影视| 日本一区中文字幕 | 午夜精品久久久久久久| 色吧成人激情小说| 亚洲精品一二三四区| 日本高清视频一区二区| 亚洲永久免费av| 在线精品视频小说1| 亚洲一区二区三区自拍| 欧美在线观看你懂的| 亚洲午夜激情网站| 在线视频欧美区| 天天综合天天做天天综合| 欧美美女激情18p| 日本在线不卡视频| 精品国产亚洲一区二区三区在线观看| 精品一区二区三区免费毛片爱| 精品av久久707| 国产成a人亚洲精| 国产精品福利一区二区三区| 91最新地址在线播放| 亚洲丶国产丶欧美一区二区三区| 欧美色图片你懂的| 日韩精品免费专区| 欧美va亚洲va国产综合| 国产精品乡下勾搭老头1| 国产精品人妖ts系列视频| 91色|porny| 亚洲成人av一区二区三区| 欧美成人a在线| 盗摄精品av一区二区三区| 国产精品成人免费精品自在线观看| 99国产精品久久久久| 亚洲va欧美va人人爽| 久久综合色鬼综合色| 成人黄色av网站在线| 亚洲黄色免费电影| 日韩午夜av电影| 成人精品视频一区| 午夜伊人狠狠久久| 久久精品免视看| 精品毛片乱码1区2区3区| 国产一本一道久久香蕉| 国产精品国产自产拍高清av王其| 日本韩国精品在线| 久草这里只有精品视频| 国产精品免费av| 欧美日韩大陆在线| 国产资源在线一区| 亚洲精品中文在线影院| 日韩欧美另类在线| 99re成人在线| 蜜臀av一区二区三区| 国产精品久久久久桃色tv| 欧美精选一区二区| 成人一区在线看| 蜜桃一区二区三区四区| 国产精品理伦片| 欧美一级日韩免费不卡| 本田岬高潮一区二区三区| 日韩av不卡一区二区| 中文字幕在线一区免费| 欧美大片国产精品| 欧美无砖砖区免费| 丁香一区二区三区| 秋霞午夜鲁丝一区二区老狼| 国产精品久久久久久久午夜片| 欧美肥妇毛茸茸| 91啪在线观看| 国产专区欧美精品| 午夜在线电影亚洲一区| 中文字幕一区二区三区精华液 | 亚洲裸体在线观看| 2023国产精品自拍| 欧美美女喷水视频| 一本一道久久a久久精品| 国产激情视频一区二区三区欧美 | 蜜臀av性久久久久蜜臀av麻豆| 18欧美亚洲精品| 337p粉嫩大胆噜噜噜噜噜91av | 久久久不卡网国产精品二区| 欧美日韩一区二区三区在线看| 成人午夜电影网站| 韩国精品主播一区二区在线观看 | 欧美国产日韩亚洲一区| 欧美一三区三区四区免费在线看| 色菇凉天天综合网| 不卡电影免费在线播放一区| 精品一区二区三区久久久| 无码av中文一区二区三区桃花岛| 亚洲日本va在线观看| 国产精品视频一二三区| 337p日本欧洲亚洲大胆色噜噜| 91精品国产美女浴室洗澡无遮挡| 91在线一区二区| www国产精品av| 91精品国产综合久久久久| 91视频精品在这里| 99久久综合精品| 国产91色综合久久免费分享| 国产一区二区久久| 久久99久久99| 国产在线播精品第三| 捆绑调教美女网站视频一区| 日韩精品国产精品| 五月激情六月综合|