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

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

?? fw.c

?? CY7C68033芯片 USB DEVICE 代碼;標(biāo)準(zhǔn)c代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#pragma NOIV
//-----------------------------------------------------------------------------
// File:     fw.c
// Contents: Firmware frameworks task dispatcher and device request parser
//           source.
// indent 3.  NO TABS!
//
// Copyright (c) 2005 Cypress Semiconductor
//
// $Workfile: fw.c $
// $Date: 8/08/05 10:49a $
// $Revision: 1 $
//-----------------------------------------------------------------------------
//
// Copyright 2005, Cypress Semiconductor Corporation.
//
// This software is owned by Cypress Semiconductor Corporation (Cypress)
// and is protected by and subject to worldwide patent protection (United
// States and foreign), United States copyright laws and international 
// treaty provisions. Cypress hereby grants to licensee a personal, 
// non-exclusive, non-transferable license to copy, use, modify, create 
// derivative works of, and compile the Cypress Source Code and derivative 
// works for the sole purpose of creating custom software in support of 
// licensee product to be used only in conjunction with a Cypress integrated 
// circuit as specified in the applicable agreement. Any reproduction, 
// modification, translation, compilation, or representation of this 
// software except as specified above is prohibited without the express 
// written permission of Cypress.
//
// Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, 
// WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// Cypress reserves the right to make changes without further notice to the
// materials described herein. Cypress does not assume any liability arising
// out of the application or use of any product or circuit described herein.
// Cypress does not authorize its products for use as critical components in
// life-support systems where a malfunction or failure may reasonably be
// expected to result in significant injury to the user. The inclusion of
// Cypress' product in a life-support systems application implies that the
// manufacturer assumes all risk of such use and in doing so indemnifies
// Cypress against all charges.
//
// Use may be limited by and subject to the applicable Cypress software
// license agreement.
//
//--------------------------------------------------------------------------

#include "globals.h"

//-----------------------------------------------------------------------------
// Code
// Task dispatcher
//-----------------------------------------------------------------------------
void main(void)
{

   TD_Init();                     // HW/SW initialization

   EZUSB_IRQ_ENABLE();            // Enable USB interrupt (INT2)
   EZUSB_ENABLE_RSMIRQ();         // Wake-up interrupt
   INTSETUP |= (bmAV2EN);         // Enable INT 2 autovectoring

   USBIE = bmSUDAV | bmSUSP | bmURES | bmHSGRANT;   // Enable selected interrupts

   //////////////////////////////////////////////////////////////////////////////
   //
   // How we got here         Renum Bit Discon Bit  Desired Action
   // ---------------         --------- ----------  --------------------
   // LI Boot-Loader Good_FW     0          1       Set the renum bit and connect
   // LI Boot-Loader !Good_FW    0          0       renumerate
   // USB Reset                  1          0       do nothing
   // Debug Mode (no bootloader) 0          0       renumerate
   // I2C Boot-Loader Good_FW    1          0       do nothing
   // I2C Boot-Loader !Good_FW   0          0       renumerate
   //
   if(!(USBCS & (bmRENUM | bmDISCON)))
   {
      EA = 0;
      // disconnect from USB and set the renumerate bit
      USBCS |= (bmDISCON | bmRENUM);        
      EZUSB_Delay(2500);      // Wait 2500 ms  
      USBIRQ = 0xff;          // Clear any pending USB interrupt requests.  
      EPIRQ = 0xff;
      EZUSB_IRQ_CLEAR();
   }

   EA = 1;                  // Enable 8051 interrupts
   TR0 = 1;                 // Make sure that the timer ISR runs at once.  

   // unconditionally re-connect.  If we loaded from eeprom we are
   // disconnected and need to connect.  If we just renumerated this
   // is not necessary but doesn't hurt anything
   USBCS = (bmRENUM|bmNOSYNSOF);

   // complete the handshake phase of any pending SETUP transfer.
   // The only time this should happen is after a MSC Reset.  We want
   // to go through all of the EP init code before handshaking the status
   // phase of the MSC Reset.
   EP0CS |= bmHSNAK;
   Sleep = 0;                     // sleep is off

   // Task Dispatcher
   while(TRUE)                     // Main Loop
   {
      // Suspend code -- Turn off LEDs, chip enables and put CPU into suspend.
      // We don't support remote wakeup.  Only wake on SOFs.
      if (Sleep)
      {
         Sleep = FALSE;
         WAKEUPCS = bmWU2 | bmWU | bmDPEN;      
         EZUSB_Susp();         // Place processor in idle mode.
      }  // endif (sleep)
      TD_Poll();
   }  // End while-forever loop
}

//-----------------------------------------------------------------------------
// Standard requests are 
// Device request parser
//-----------------------------------------------------------------------------
void SetupCommand(void)
{
   WORD Tmp;
   BYTE setupdat0 = SETUPDAT[0];
   BYTE setupdat2 = SETUPDAT[2];
   BYTE setupdat4 = SETUPDAT[4];
   EP0BCH = 0;                                     // Default to MSB of the length is 0
   SUDPTRH = MSB(halfKBuffer);                     // Default to descriptor table

   if ((setupdat0 & SETUP_MASK) == SETUP_STANDARD_REQUEST)
      {
      switch(SETUPDAT[1])
         {
         case SC_GET_DESCRIPTOR:                       // *** Get Descriptor
            switch(SETUPDAT[3])         
               {
                  case GD_DEVICE:                      // Device
                     SUDPTRL = pLSB(DeviceDscrOffset); //sendDescriptor(LSB(pDeviceDscr), 0);
                     break;
                  case GD_DEVICE_QUALIFIER:            // Device Qualifier
                     // if high-speed is disabled, we are supposed to STALL this request
                     if (!CT1)
                     {
                        // high-speed is enabled, return the device qualifier
                        // sendDescriptor(LSB(pDeviceQualDscr), 0);
                        SUDPTRL = pLSB(DeviceQualDscrOffset);
                     }
                     else
                     {
                        // high-speed is disabled, STALL this request
                        EZUSB_STALL_EP0();
                     }
                     break;
                  case GD_CONFIGURATION:              // Configuration
                     ((CONFIGDSCR xdata *) pHighSpeedConfigDscr)->type = CONFIG_DSCR;
                     Tmp = wPacketSize;
                     goto gd_cases;

                  case GD_OTHER_SPEED_CONFIGURATION:  // Other Speed Configuration
                     ((CONFIGDSCR xdata *) pHighSpeedConfigDscr)->type = OTHERSPEED_DSCR;
                     if (EZUSB_HIGHSPEED()) Tmp = 64; else Tmp = 512;
                     gd_cases:
                     ((BYTE xdata *) pHighSpeedConfigDscr)[9+9+4] =       
                     ((BYTE xdata *) pHighSpeedConfigDscr)[9+9+7+4] = ((BYTE*)&Tmp)[1];      
                     ((BYTE xdata *) pHighSpeedConfigDscr)[9+9+5] =       
                     ((BYTE xdata *) pHighSpeedConfigDscr)[9+9+7+5] = ((BYTE*)&Tmp)[0];      
                     sendDescriptor(LSB(pHighSpeedConfigDscr), (BYTE)&HighSpeedConfigLen);
                     break;

                  case GD_STRING:            // String
                     SUDPTRH = MSB(halfKBuffer+cHALF_BUFF_OFFSET);
                     SUDPTRL = cINQUIRY_LENGTH + (setupdat2 * 48);
                     break;
#ifdef HID
                  case GD_REPORT: 	 // Get-Descriptor: Report
                     if (halfKBuffer[(WORD)&HIDIntrfcDscrOffset+3] == setupdat4)
                     {  
                        sendDescriptor(pLSB(HIDReportDscrOffset), (BYTE)&HIDReportDscrLen);
                        break;
                     }
				     else EZUSB_STALL_EP0();      // Stall End Point 0
                     break;
                  case GD_HID:					  // Get-Descriptor: HID
                     SUDPTRL = pLSB(HIDDscrOffset);
                     break;
#endif
                  default:                   // Invalid request
                     EZUSB_STALL_EP0();      // Stall End Point 0
               }  // switch
            break;
         case SC_GET_INTERFACE:              // *** Get Interface
            EP0BUF[0] = AlternateSetting;
            EP0BCL = 1;
            break;
         case SC_SET_INTERFACE:                  // *** Set Interface
            TOGCTL = 0x2;     // Reset data toggle for EP2
            TOGCTL = 0x22;
            TOGCTL = 0x14;    // Reset data toggle for EP4
            TOGCTL = 0x34;
            AlternateSetting = setupdat2;
            break;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品影视av免费| 亚洲无人区一区| 精品国产一区二区三区不卡 | 韩国欧美国产一区| 日韩黄色免费电影| 婷婷丁香久久五月婷婷| 夜夜爽夜夜爽精品视频| 亚洲欧美二区三区| 亚洲午夜av在线| 亚洲chinese男男1069| 亚洲国产一区在线观看| 日韩电影在线观看一区| 久久国产精品区| 国产不卡免费视频| bt7086福利一区国产| 日本道免费精品一区二区三区| 色伊人久久综合中文字幕| 欧美三级资源在线| 欧美人与z0zoxxxx视频| 欧美一区二区视频网站| 精品国产凹凸成av人导航| 精品国产乱码久久久久久浪潮| 国产日产欧美一区| 亚洲欧洲在线观看av| 亚洲高清中文字幕| 另类调教123区| 成人性视频网站| 欧美亚日韩国产aⅴ精品中极品| 欧美日韩日本视频| 久久久久久日产精品| 自拍偷拍国产亚洲| 蜜桃视频免费观看一区| 国产福利91精品| 在线精品国精品国产尤物884a | 五月婷婷久久丁香| 国产一区二区免费视频| 色乱码一区二区三区88| 日韩午夜av电影| 国产精品美女久久久久久久久久久| 亚洲精品水蜜桃| 久久激情五月激情| 91老师国产黑色丝袜在线| 欧美精品欧美精品系列| 国产精品麻豆欧美日韩ww| 午夜精品免费在线观看| 不卡一区二区在线| 精品国产一区二区精华| 一区二区三区在线视频观看| 精彩视频一区二区三区| 色八戒一区二区三区| 久久综合成人精品亚洲另类欧美| 亚洲视频在线观看三级| 国产精品一区二区三区乱码| 欧美色大人视频| 国产精品毛片大码女人| 精品一区二区三区在线观看 | 欧美一区二区高清| 免费在线一区观看| 91免费视频网| 中文字幕一区二区三区在线播放| 日韩av高清在线观看| 欧美性感一区二区三区| 国产精品你懂的| 国产不卡视频一区| 欧美精品一区男女天堂| 日本视频免费一区| 欧美日韩国产首页在线观看| 国产精品久久久久久久久免费桃花 | 91精品国产高清一区二区三区蜜臀| 欧美国产日韩在线观看| 国产一区二区导航在线播放| 欧美高清视频不卡网| 亚洲综合免费观看高清完整版在线| 成人激情黄色小说| 国产日产欧美一区| 国产一区二区福利| 国产亚洲精品7777| 国产主播一区二区三区| 精品日韩欧美在线| 久久精品国产亚洲a| 日韩丝袜情趣美女图片| 麻豆精品在线观看| 久久婷婷久久一区二区三区| 精品在线观看视频| 国产视频亚洲色图| av色综合久久天堂av综合| 最新不卡av在线| 欧美主播一区二区三区| 五月天精品一区二区三区| 欧美三级视频在线播放| 日韩精品久久理论片| 日韩欧美国产电影| 国产精品一区二区久久不卡 | 日韩一二在线观看| 国内国产精品久久| 国产精品视频你懂的| 91美女蜜桃在线| 亚洲国产精品欧美一二99| 欧美日产国产精品| 国产精品自产自拍| 亚洲人成网站在线| 91.com在线观看| 国产一区二区伦理片| ㊣最新国产の精品bt伙计久久| 在线观看成人小视频| 日本女人一区二区三区| 国产片一区二区| 在线观看一区二区视频| 玖玖九九国产精品| 亚洲品质自拍视频| 日韩一级完整毛片| 91麻豆.com| 国产一区二区在线看| 亚洲视频一二三| 777午夜精品视频在线播放| 国产毛片精品视频| 亚洲国产日韩精品| 国产人久久人人人人爽| 欧美视频自拍偷拍| 风间由美一区二区三区在线观看 | 麻豆专区一区二区三区四区五区| 欧美国产丝袜视频| 日韩欧美在线网站| 91久久免费观看| 国产jizzjizz一区二区| 三级亚洲高清视频| 玉米视频成人免费看| 中文字幕免费不卡| 精品少妇一区二区三区日产乱码 | 日韩欧美一二区| 91官网在线观看| 国产精品一区二区三区网站| 亚洲国产人成综合网站| 综合久久国产九一剧情麻豆| 久久久综合网站| 日韩一区二区中文字幕| 99re亚洲国产精品| 狠狠色2019综合网| 免费成人结看片| 丝袜亚洲另类丝袜在线| 亚洲女人的天堂| 亚洲欧美日韩国产综合在线| 国产精品免费av| 中文字幕精品一区二区精品绿巨人 | 三级欧美在线一区| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲国产精品成人综合色在线婷婷 | 国产精品视频九色porn| 久久久精品欧美丰满| 欧美三级视频在线观看| 在线观看视频一区二区| 色狠狠桃花综合| 91久久精品一区二区| 色狠狠色狠狠综合| 欧美日韩国产一级片| 欧美猛男gaygay网站| 5月丁香婷婷综合| 欧美精品 日韩| 欧美精品色综合| 日韩美女天天操| 精品国产一区久久| 精品国产乱码久久久久久久久 | 久久美女高清视频| 久久精品一区二区三区av| 久久久高清一区二区三区| 久久久精品欧美丰满| 中文字幕成人网| 综合婷婷亚洲小说| 亚洲一级不卡视频| 秋霞电影网一区二区| 久久国产精品露脸对白| 国产91色综合久久免费分享| 粉嫩久久99精品久久久久久夜 | 青娱乐精品视频在线| 欧美aa在线视频| 国产98色在线|日韩| 91国偷自产一区二区三区观看| 欧美猛男超大videosgay| 精品国产乱码久久久久久浪潮| 中文字幕乱码日本亚洲一区二区| 亚洲日本va午夜在线电影| 亚洲一区二区在线免费观看视频| 日韩不卡手机在线v区| 国产精品一级片| 在线亚洲免费视频| 日韩色在线观看| 亚洲丝袜精品丝袜在线| 久久综合综合久久综合| av网站一区二区三区| 91精品欧美福利在线观看| 欧美国产激情二区三区| 亚洲午夜免费视频| 国产精品一区二区久激情瑜伽| 欧美在线视频你懂得| 国产日韩一级二级三级| 丝袜亚洲另类丝袜在线| 91在线你懂得| 欧美精品一区二区久久久| 亚洲影院免费观看| 成人午夜免费视频|