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

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

?? fx2hid.lst

?? FX2-HID--KeyBoard 對于FX2系列實現HID鍵盤的控制
?? LST
?? 第 1 頁 / 共 2 頁
字號:
C51 COMPILER V7.50   FX2HID                                                                05/27/2006 13:40:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FX2HID
OBJECT MODULE PLACED IN fx2hid.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fx2hid.c NOAREGS DEBUG OBJECTEXTEND

line level    source

   1          #pragma NOIV               // Do not generate interrupt vectors
   2          /*
   3          -----------------------------------------------------------------------------
   4             File:      usbhidio_fx2.c
   5             Contents:   Hooks required to implement USB peripheral function.
   6          
   7             This is an adaptation of the Cypress example FX2_Hid_Keyboard.c,
   8             which was in turn adapted from Cypress's bulkloop.c 
   9             (and is available on request from Cypress).
  10          
  11             The application communicates with the usbhdio host applications available from:
  12           
  13             www.Lvr.com/hidpage.htm
  14          
  15             This code requires the full (not evaluation) version of the Keil compiler.
  16             Additions to the keyboard code are labeled with "usbhidio start" and "usbhidio end"
  17             Unneeded keyboard code is commented out.
  18            
  19             Copyright (c) 2000 Cypress Semiconductor All rights reserved
  20             with some changes by Jan Axelson (jan@Lvr.com) 
  21          -----------------------------------------------------------------------------
  22          */
  23          
  24          #include "fx2.h"
  25          #include "fx2regs.h"
  26          #include "fx2sdly.h"            // SYNCDELAY macro
  27          
  28          extern BOOL GotSUD;             // Received setup data flag
  29          extern BOOL Sleep;
  30          extern BOOL Rwuen;
  31          extern BOOL Selfpwr;
  32          
  33          #define min(a,b) (((a)<(b))?(a):(b))
  34          
  35          #define GD_HID  0x21
  36          #define GD_REPORT       0x22
  37          #define CR_SET_REPORT 0x09
  38          #define HID_OUTPUT_REPORT 2
  39          
  40          #define BTN_ADDR                0x71
  41          #define LED_ADDR                0x72
  42          
  43          #define PF_IDLE                 0
  44          #define PF_GETKEYS              1
  45          
  46          #define KEY_WAKEUP              0
  47          #define KEY_F1                  1
  48          #define KEY_F2                  2
  49          #define KEY_F3                  3
  50          
  51          WORD    pHIDDscr;
  52          WORD    pReportDscr;
  53          WORD    pReportDscrEnd;
  54          extern code HIDDscr;
  55          extern code  ReportDscr; 
C51 COMPILER V7.50   FX2HID                                                                05/27/2006 13:40:49 PAGE 2   

  56          extern code ReportDscrEnd;
  57          
  58          BYTE Configuration;             // Current configuration
  59          BYTE AlternateSetting;          // Alternate settings
  60          
  61          BYTE    Configuration;          // Current configuration
  62          BYTE    AlternateSetting;       // Alternate settings
  63          
  64          BYTE buttons;
  65          BYTE oldbuttons;
  66          BYTE leds = 0xFF;
  67          
  68          BYTE read_buttons (void);
  69          void write_leds (BYTE d);
  70          
  71          #define VR_NAKALL_ON    0xD0
  72          #define VR_NAKALL_OFF   0xD1
  73          //-----------------------------------------------------------------------------
  74          // Task Dispatcher hooks
  75          //   The following hooks are called by the task dispatcher.
  76          //-----------------------------------------------------------------------------
  77          
  78          // read_buttons and write_leds are unused by usbhidio
  79          
  80          BYTE read_buttons (void)
  81          {
  82   1              BYTE d;
  83   1      
  84   1              while (I2CS & 0x40);    //Wait for stop to be done
  85   1              I2CS = 0x80;                    //Set start condition
  86   1              I2DAT = BTN_ADDR;               //Write button address
  87   1              while (!(I2CS & 0x01)); //Wait for done
  88   1              I2CS = 0x20;                    //Set last read
  89   1              d = I2DAT;                              //Dummy read
  90   1              while (!(I2CS & 0x01)); //Wait for done
  91   1              I2CS = 0x40;                    //Set stop bit
  92   1              return(I2DAT);                  //Read the data
  93   1      }
  94          
  95          /*
  96          void write_leds (BYTE d)
  97          {
  98                  while (I2CS & 0x40);    //Wait for stop to be done
  99                  I2CS = 0x80;                    //Set start condition
 100                  I2DAT = LED_ADDR;               //Write led address
 101                  while (!(I2CS & 0x01)); //Wait for done
 102                  I2DAT = d;                              //Write data
 103                  while (!(I2CS & 0x01)); //Wait for done
 104                  I2CS = 0x40;                    //Set stop bit
 105          }
 106          
 107          */
 108          
 109          void TD_Init(void)             // Called once at startup
 110          {
 111   1         // set the CPU clock to 48MHz
 112   1         CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;
 113   1      
 114   1         // set the slave FIFO interface to 48MHz
 115   1         IFCONFIG |= 0x40;
 116   1      
 117   1        // Registers which require a synchronization delay, see section 15.14
C51 COMPILER V7.50   FX2HID                                                                05/27/2006 13:40:49 PAGE 3   

 118   1        // FIFORESET        FIFOPINPOLAR
 119   1        // INPKTEND         OUTPKTEND
 120   1        // EPxBCH:L         REVCTL
 121   1        // GPIFTCB3         GPIFTCB2
 122   1        // GPIFTCB1         GPIFTCB0
 123   1        // EPxFIFOPFH:L     EPxAUTOINLENH:L
 124   1        // EPxFIFOCFG       EPxGPIFFLGSEL
 125   1        // PINFLAGSxx       EPxFIFOIRQ
 126   1        // EPxFIFOIE        GPIFIRQ
 127   1        // GPIFIE           GPIFADRH:L
 128   1        // UDMACRCH:L       EPxGPIFTRIG
 129   1        // GPIFTRIG
 130   1        
 131   1        // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
 132   1        //      ...these have been replaced by GPIFTC[B3:B0] registers
 133   1      
 134   1        // default: all endpoints have their VALID bit set
 135   1        // default: TYPE1 = 1 and TYPE0 = 0 --> BULK  
 136   1        // default: EP2 and EP4 DIR bits are 0 (OUT direction)
 137   1        // default: EP6 and EP8 DIR bits are 1 (IN direction)
 138   1        // default: EP2, EP4, EP6, and EP8 are double buffered
 139   1      
 140   1        // we are just using the default values, yes this is not necessary...
 141   1        EP1OUTCFG = 0xA0;
 142   1        EP1INCFG = 0xA0;
 143   1        SYNCDELAY;                    // see TRM section 15.14
 144   1        EP2CFG = 0xA2;
 145   1        SYNCDELAY;                    
 146   1        EP4CFG = 0xA0;
 147   1        SYNCDELAY;                    
 148   1        EP6CFG = 0xE2;
 149   1        SYNCDELAY;                    
 150   1        EP8CFG = 0xE0;
 151   1      
 152   1        // out endpoints do not come up armed
 153   1        
 154   1        // since the defaults are double buffered we must write dummy byte counts twice
 155   1        SYNCDELAY;                    
 156   1        EP2BCL = 0x80;                // arm EP2OUT by writing byte count w/skip.
 157   1        SYNCDELAY;                    
 158   1        EP2BCL = 0x80;
 159   1        SYNCDELAY;                    
 160   1        EP4BCL = 0x80;                // arm EP4OUT by writing byte count w/skip.
 161   1        SYNCDELAY;                    
 162   1        EP4BCL = 0x80;    
 163   1      
 164   1        // enable dual autopointer feature
 165   1        AUTOPTRSETUP |= 0x01;
 166   1      
 167   1        Rwuen = TRUE;                 // Enable remote-wakeup
 168   1      
 169   1      }
 170          
 171          
 172          void TD_Poll(void)              // Called repeatedly while the device is idle
 173          {
 174   1              if( !(EP1INCS & 0x02) ) // Is the EP1INBUF available,
 175   1              {
 176   2      
 177   2      //              This keyboard code is unneeded
 178   2              
 179   2              buttons = read_buttons();
C51 COMPILER V7.50   FX2HID                                                                05/27/2006 13:40:49 PAGE 4   

 180   2                      if (buttons == read_buttons())  //Debounce
 181   2                      {
 182   3                              buttons &= 0x0F;
 183   3                              if ((oldbuttons - buttons) != 0)        //Change in button state
 184   3                              {
 185   4                                      if (buttons & 1)        //Shift
 186   4                                              EP1INBUF[0] = 0;
 187   4                                      else
 188   4                                              EP1INBUF[0] = 2;
 189   4                                      if (buttons & 2)        //a
 190   4                                              EP1INBUF[2] = 0;
 191   4                                      else
 192   4                                              EP1INBUF[2] = 4;
 193   4                                      if (buttons & 4)        //b
 194   4                                              EP1INBUF[3] = 0;
 195   4                                      else
 196   4                                              EP1INBUF[3] = 5;
 197   4                                      if (buttons & 8)        //c
 198   4                                              EP1INBUF[4] = 0;
 199   4                                      else
 200   4                                              EP1INBUF[4] = 6;
 201   4                                      EP1INBUF[1] = 0;
 202   4                                      EP1INBC = 5;
 203   4                              }
 204   3                              oldbuttons = buttons;
 205   3                      }
 206   2      
 207   2              }
 208   1      /*      if( !(EP1OUTCS & 0x02) )        // Is there something available in EP1OUTBUF
 209   1              {
 210   1      
 211   1      //              This keyboard code is unneeded by usbhidio
 212   1      
 213   1                      leds = 0xFF;    //Turn all off
 214   1                      if (EP1OUTBUF[0] & 0x02)        //Caps
 215   1                              leds &= 0xBF;
 216   1                      if (EP1OUTBUF[0] & 0x01)        //Scroll
 217   1                              leds &= 0xF7;
 218   1                      if (EP1OUTBUF[0] & 0x04)        //Num
 219   1                              leds &= 0xFE;
 220   1                      write_leds (leds);
 221   1      
 222   1      
 223   1      // usbhidio code start
 224   1      
 225   1      // Copy bytes received on the OUT endpoint to the IN endpoint. 
 226   1      //              EP1INBUF[0] = EP1OUTBUF[0];
 227   1      //              EP1INBUF[1] = EP1OUTBUF[1];
 228   1      
 229   1      // Rearm the IN endpoint buffer to enable sending a report.
 230   1      // The value equals the report size.
 231   1      //              EP1INBC = 2;                    
 232   1      
 233   1      // usbhidiocode end
 234   1      
 235   1      //              EP1OUTBC = 0;                           //Rearm the OUT endpoint buffer to enable receiving a report.
 236   1      
 237   1              } */
 238   1      }
 239          
 240          BOOL TD_Suspend(void)          // Called before the device goes into suspend mode
 241          {
C51 COMPILER V7.50   FX2HID                                                                05/27/2006 13:40:49 PAGE 5   

 242   1         return(TRUE);
 243   1      }
 244          
 245          BOOL TD_Resume(void)          // Called after the device resumes
 246          {
 247   1         return(TRUE);
 248   1      }
 249          
 250          //-----------------------------------------------------------------------------
 251          // Device Request hooks
 252          //   The following hooks are called by the end point 0 device request parser.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久777精品电影网影网 | 日日嗨av一区二区三区四区| 乱一区二区av| 色婷婷国产精品| 精品免费一区二区三区| 亚洲资源在线观看| 国产精品亚洲专一区二区三区 | 亚洲综合区在线| 国产成人欧美日韩在线电影| 欧美一区二区黄色| 一级精品视频在线观看宜春院 | 国产在线视视频有精品| 欧美精品免费视频| 久久久www成人免费毛片麻豆| 午夜精品视频在线观看| 91影视在线播放| 久久精品一区二区三区不卡 | 精品少妇一区二区三区视频免付费 | 欧美日韩高清一区二区三区| 自拍av一区二区三区| 国产宾馆实践打屁股91| 欧美精品一区二区三区蜜臀| 日韩va欧美va亚洲va久久| 色国产精品一区在线观看| 国产精品麻豆一区二区| 丁香六月综合激情| 国产亚洲精品福利| 国产精品一区二区久久精品爱涩| 日韩三级精品电影久久久| 日韩影院免费视频| 在线成人午夜影院| 丝袜国产日韩另类美女| 欧美一区日韩一区| 日韩精品亚洲一区二区三区免费| 在线不卡欧美精品一区二区三区| 亚洲大片精品永久免费| 欧美日韩免费不卡视频一区二区三区 | 成人免费视频视频在线观看免费| 国产欧美一区二区精品性色| 国产河南妇女毛片精品久久久| 国产视频一区二区在线观看| 国产成人午夜精品影院观看视频 | 亚洲男人天堂av网| 色国产精品一区在线观看| 一级做a爱片久久| 欧美区在线观看| 精品中文字幕一区二区小辣椒| 亚洲精品在线一区二区| 国产激情一区二区三区桃花岛亚洲| 国产调教视频一区| 色综合久久综合中文综合网| 亚洲成人tv网| 精品福利在线导航| 国产毛片精品国产一区二区三区| 国产日韩精品久久久| 99久久精品免费观看| 亚洲va欧美va人人爽午夜| 欧美一二三在线| 国产精品伊人色| 亚洲激情自拍偷拍| 91精品国产综合久久久久久漫画| 经典一区二区三区| 中文字幕亚洲区| 欧美理论片在线| 国产精品一线二线三线精华| 亚洲卡通动漫在线| 制服丝袜亚洲精品中文字幕| 国产河南妇女毛片精品久久久| 亚洲精品中文字幕在线观看| 日韩欧美一卡二卡| 99亚偷拍自图区亚洲| 日韩激情视频网站| 欧美激情一区在线观看| 欧美日韩高清不卡| 成人白浆超碰人人人人| 三级在线观看一区二区| 国产精品美女久久福利网站| 337p亚洲精品色噜噜| av在线综合网| 精品一区中文字幕| 一区二区三区久久| 国产日韩欧美综合一区| 欧美精品国产精品| 99久久精品免费看| 国产一区二区美女诱惑| 天天av天天翘天天综合网色鬼国产| 国产日韩精品一区| 日韩一区二区三区高清免费看看| 菠萝蜜视频在线观看一区| 久久精品99久久久| 香蕉久久夜色精品国产使用方法| 国产精品麻豆一区二区| 久久九九国产精品| 日韩视频免费直播| 欧美日韩一区二区三区在线看 | 国产精品不卡在线| 精品国产成人在线影院| 欧美日韩亚洲丝袜制服| 色综合久久精品| 风间由美一区二区三区在线观看 | a亚洲天堂av| 国产一区二区伦理片| 麻豆成人综合网| 亚洲成av人影院| 一区二区久久久久久| 中文字幕视频一区| 亚洲国产成人一区二区三区| 久久综合狠狠综合久久综合88| 日韩一区二区三区观看| 91精品国产福利| 欧美久久一二区| 欧美伦理电影网| 在线播放欧美女士性生活| 欧美性色综合网| 欧美在线一区二区三区| 欧美日韩一区视频| 欧美日韩国产成人在线免费| 欧美电影在线免费观看| 欧美一区二区三区精品| 日韩欧美一二三四区| 日韩欧美国产午夜精品| 日韩欧美成人激情| 欧美精品一区二区久久久| 久久色在线视频| 国产日韩欧美精品综合| 中文字幕一区免费在线观看| 亚洲女与黑人做爰| 亚洲第一综合色| 麻豆免费看一区二区三区| 国产伦精品一区二区三区免费迷| 国产成人综合亚洲网站| 日韩欧美国产一区二区在线播放| 久久精品人人爽人人爽| 国产性天天综合网| 欧美极品aⅴ影院| 专区另类欧美日韩| 亚洲成av人片一区二区三区 | 欧美午夜电影一区| 91麻豆精品国产自产在线| 精品国产乱码久久久久久久久| 久久精品人人做人人爽人人| 尤物在线观看一区| 麻豆久久久久久| 不卡在线观看av| 欧美在线色视频| 日韩美女视频在线| 中文字幕在线不卡| 日本不卡一区二区| 国产91精品免费| 欧美亚洲国产一区在线观看网站| 91精品免费在线观看| 国产欧美日韩综合| 亚洲不卡一区二区三区| 国产成人精品综合在线观看| 欧美在线|欧美| 久久美女高清视频| 精品成人免费观看| 一区二区中文字幕在线| 日本v片在线高清不卡在线观看| 成人一区二区三区中文字幕| 欧美日韩国产在线观看| 国产人伦精品一区二区| 日韩av中文在线观看| 裸体一区二区三区| 日本道精品一区二区三区| 精品国产91久久久久久久妲己| 亚洲乱码中文字幕| 久久99在线观看| 欧美日韩一区二区电影| 久久久国产精品午夜一区ai换脸| 午夜亚洲国产au精品一区二区 | 日本伊人色综合网| 成人av资源在线| 欧美电影免费观看高清完整版在 | 免费观看一级特黄欧美大片| 97精品久久久久中文字幕| 亚洲免费观看高清在线观看| 亚洲免费成人av| 国产精品一区免费在线观看| 欧美精品在线观看播放| 日韩理论片一区二区| 国产一区二区三区不卡在线观看 | 国产亚洲婷婷免费| 日韩成人精品视频| 在线一区二区三区四区五区| 国产精品国产a| 国产一区二区三区久久悠悠色av| 欧美日韩精品是欧美日韩精品| 亚洲欧美乱综合| 9l国产精品久久久久麻豆| 国产情人综合久久777777| 国产专区综合网| 欧美岛国在线观看| 日韩精品一二区| 欧美人牲a欧美精品| 亚洲在线成人精品| 91国内精品野花午夜精品| 亚洲靠逼com| 91官网在线观看| 亚洲综合激情网|