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

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

?? tcxmaster.c

?? 用Keil C語言編寫的EZ-USB CyC768013芯片 slave FIFO模式的固件程序
?? C
字號:
#pragma NOIV                    // Do not generate interrupt vectors
//-----------------------------------------------------------------------------
//   File:      tcxmaster.c
//   Contents:  Hooks required to implement USB peripheral function.
//              Code written for FX2 56-pin REVD...
//              This firmware is used to test the FX ext. master CY3682 DK
//   Copyright (c) 2001 Cypress Semiconductor All rights reserved
//-----------------------------------------------------------------------------
#include "fx2.h"
#include "fx2regs.h"
#include "fx2sdly.h"            // SYNCDELAY macro

extern BOOL GotSUD;             // Received setup data flag
extern BOOL Sleep;
extern BOOL Rwuen;
extern BOOL Selfpwr;

BYTE Configuration;             // Current configuration
BYTE AlternateSetting;          // Alternate settings

// EZUSB FX2 PORTA = slave fifo enable(s), when IFCFG[1:0]=11
sbit PA0 = IOA ^ 0;             // alt. func., INT0#
sbit PA1 = IOA ^ 1;             // alt. func., INT1#
// sbit PA2 = IOA ^ 2;          // is SLOE
sbit PA3 = IOA ^ 3;             // alt. func., WU2
// sbit PA4 = IOA ^ 4;          // is FIFOADR0
// sbit PA5 = IOA ^ 5;          // is FIFOADR1
// sbit PA6 = IOA ^ 6;          // is PKTEND
// sbit PA7 = IOA ^ 7;          // is FLAGD

// EZUSB FX2 PORTC i/o...       port NA for 56-pin FX2
// sbit PC0 = IOC ^ 0;
// sbit PC1 = IOC ^ 1;
// sbit PC2 = IOC ^ 2;
// sbit PC3 = IOC ^ 3;
// sbit PC4 = IOC ^ 4;
// sbit PC5 = IOC ^ 5;
// sbit PC6 = IOC ^ 6;
// sbit PC7 = IOC ^ 7;

// EZUSB FX2 PORTB = FD[7:0], when IFCFG[1:0]=11
// sbit PB0 = IOB ^ 0;
// sbit PB1 = IOB ^ 1;
// sbit PB2 = IOB ^ 2;
// sbit PB3 = IOB ^ 3;
// sbit PB4 = IOB ^ 4;
// sbit PB5 = IOB ^ 5;
// sbit PB6 = IOB ^ 6;
// sbit PB7 = IOB ^ 7;

// EZUSB FX2 PORTD = FD[15:8], when IFCFG[1:0]=11 and WORDWIDE=1
sbit PD0 = IOD ^ 0;
sbit PD1 = IOD ^ 1;
sbit PD2 = IOD ^ 2;
sbit PD3 = IOD ^ 3;
sbit PD4 = IOD ^ 4;
sbit PD5 = IOD ^ 5;
sbit PD6 = IOD ^ 6;
sbit PD7 = IOD ^ 7;

// EZUSB FX2 PORTE is not bit-addressable...

//-----------------------------------------------------------------------------
// Task Dispatcher hooks
//   The following hooks are called by the task dispatcher.
//-----------------------------------------------------------------------------
void TD_Init( void )
{ // Called once at startup
  OEA=0xff;
  IOA=0x00;

  CPUCS = 0x10;                 // CLKSPD[1:0]=10, for 48MHz operation

  IFCONFIG = 0xCB;
  // IFCLKSRC=1   , FIFOs executes on internal clk source
  // xMHz=1       , 48MHz internal clk rate
  // IFCLKOE=0    , Don't drive IFCLK pin signal at 48MHz
  // IFCLKPOL=0   , Don't invert IFCLK pin signal from internal clk
  // ASYNC=1      , master samples asynchronous
  // GSTATE=0     , Don't drive GPIF states out on PORTE[2:0], debug WF
  // IFCFG[1:0]=11, FX2 in slave FIFO mode


  // Registers which require a synchronization delay, see section 15.14
  // FIFORESET        FIFOPINPOLAR
  // INPKTEND         OUTPKTEND
  // EPxBCH:L         REVCTL
  // GPIFTCB3         GPIFTCB2
  // GPIFTCB1         GPIFTCB0
  // EPxFIFOPFH:L     EPxAUTOINLENH:L
  // EPxFIFOCFG       EPxGPIFFLGSEL
  // PINFLAGSxx       EPxFIFOIRQ
  // EPxFIFOIE        GPIFIRQ
  // GPIFIE           GPIFADRH:L
  // UDMACRCH:L       EPxGPIFTRIG
  // GPIFTRIG
  
  // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
  //      ...these have been replaced by GPIFTC[B3:B0] registers

  SYNCDELAY;
  FIFORESET = 0x80;             // activate NAK-ALL to avoid race conditions
  SYNCDELAY;                    // see TRM section 15.14
  FIFORESET = 0x02;             // reset, FIFO 2
  SYNCDELAY;                    // 
  FIFORESET = 0x04;             // reset, FIFO 4
  SYNCDELAY;                    // 
  FIFORESET = 0x06;             // reset, FIFO 6
  SYNCDELAY;                    // 
  FIFORESET = 0x08;             // reset, FIFO 8
  SYNCDELAY;                    // 
  FIFORESET = 0x00;             // deactivate NAK-ALL

  SYNCDELAY;
  PINFLAGSAB = 0x98;            // FLAGA - fixed EP2EF, FLAGB - fixed EP4EF
  SYNCDELAY;
  PINFLAGSCD = 0xFE;            // FLAGC - fixed EP6FF, FLAGD - fixed EP8FF
  SYNCDELAY;
  PORTACFG |= 0x80;             // FLAGD, set alt. func. of PA7 pin
  SYNCDELAY;
  FIFOPINPOLAR = 0x00;          // all signals active low
  SYNCDELAY;
  
  // handle the case where we were already in AUTO mode...
  EP2FIFOCFG = 0x01;            // AUTOOUT=0, WORDWIDE=0
  SYNCDELAY;
  
  EP2FIFOCFG = 0x11;            // AUTOOUT=1, WORDWIDE=0
  SYNCDELAY;
  
  // handle the case where we were already in AUTO mode...
  EP4FIFOCFG = 0x00;            // AUTOOUT=0, WORDWIDE=0
  SYNCDELAY;
  
  EP4FIFOCFG = 0x10;            // AUTOOUT=1, WORDWIDE=0
  SYNCDELAY;
  
  EP6FIFOCFG = 0x0C;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE=0
  SYNCDELAY;
  EP8FIFOCFG = 0x0C;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE=0
}

void TD_Poll( void )
{ // Called repeatedly while the device is idle

  // ...nothing to do... slave fifo's are in AUTO mode...

}

BOOL TD_Suspend( void )          
{ // Called before the device goes into suspend mode
   return( TRUE );
}

BOOL TD_Resume( void )          
{ // Called after the device resumes
   return( TRUE );
}

//-----------------------------------------------------------------------------
// Device Request hooks
//   The following hooks are called by the end point 0 device request parser.
//-----------------------------------------------------------------------------
BOOL DR_GetDescriptor( void )
{
   return( TRUE );
}

BOOL DR_SetConfiguration( void )   
{ // Called when a Set Configuration command is received
  
  if( EZUSB_HIGHSPEED( ) )
  { // ...FX2 in high speed mode
    EP6AUTOINLENH = 0x02;
    SYNCDELAY;
    EP8AUTOINLENH = 0x02;   // set core AUTO commit len = 512 bytes
    SYNCDELAY;
    EP6AUTOINLENL = 0x00;
    SYNCDELAY;
    EP8AUTOINLENL = 0x00;
  }
  else
  { // ...FX2 in full speed mode
    EP6AUTOINLENH = 0x00;
    SYNCDELAY;
    EP8AUTOINLENH = 0x00;   // set core AUTO commit len = 64 bytes
    SYNCDELAY;
    EP6AUTOINLENL = 0x40;
    SYNCDELAY;
    EP8AUTOINLENL = 0x40;
  }
      
  Configuration = SETUPDAT[ 2 ];
  return( TRUE );        // Handled by user code
}

BOOL DR_GetConfiguration( void )   
{ // Called when a Get Configuration command is received
   EP0BUF[ 0 ] = Configuration;
   EP0BCH = 0;
   EP0BCL = 1;
   return(TRUE);          // Handled by user code
}

BOOL DR_SetInterface( void )       
{ // Called when a Set Interface command is received
   AlternateSetting = SETUPDAT[ 2 ];
   return( TRUE );        // Handled by user code
}

BOOL DR_GetInterface( void )       
{ // Called when a Set Interface command is received
   EP0BUF[ 0 ] = AlternateSetting;
   EP0BCH = 0;
   EP0BCL = 1;
   return( TRUE );        // Handled by user code
}

BOOL DR_GetStatus( void )
{
   return( TRUE );
}

BOOL DR_ClearFeature( void )
{
   return( TRUE );
}

BOOL DR_SetFeature( void )
{
   return( TRUE );
}

BOOL DR_VendorCmnd( void )
{
  return( TRUE );
}

//-----------------------------------------------------------------------------
// USB Interrupt Handlers
//   The following functions are called by the USB interrupt jump table.
//-----------------------------------------------------------------------------

// Setup Data Available Interrupt Handler
void ISR_Sudav( void ) interrupt 0
{
   GotSUD = TRUE;         // Set flag
   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmSUDAV;      // Clear SUDAV IRQ
}

// Setup Token Interrupt Handler
void ISR_Sutok( void ) interrupt 0
{
   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmSUTOK;      // Clear SUTOK IRQ
}

void ISR_Sof( void ) interrupt 0
{
   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmSOF;        // Clear SOF IRQ
}

void ISR_Ures( void ) interrupt 0
{
   if ( EZUSB_HIGHSPEED( ) )
   {
      pConfigDscr = pHighSpeedConfigDscr;
      pOtherConfigDscr = pFullSpeedConfigDscr;
   }
   else
   {
      pConfigDscr = pFullSpeedConfigDscr;
      pOtherConfigDscr = pHighSpeedConfigDscr;
   }
   
   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmURES;       // Clear URES IRQ
}

void ISR_Susp( void ) interrupt 0
{
   Sleep = TRUE;
   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmSUSP;
}

void ISR_Highspeed( void ) interrupt 0
{
   if ( EZUSB_HIGHSPEED( ) )
   {
      pConfigDscr = pHighSpeedConfigDscr;
      pOtherConfigDscr = pFullSpeedConfigDscr;
   }
   else
   {
      pConfigDscr = pFullSpeedConfigDscr;
      pOtherConfigDscr = pHighSpeedConfigDscr;
   }

   EZUSB_IRQ_CLEAR( );
   USBIRQ = bmHSGRANT;
}
void ISR_Ep0ack( void ) interrupt 0
{
}
void ISR_Stub( void ) interrupt 0
{
}
void ISR_Ep0in( void ) interrupt 0
{
}
void ISR_Ep0out( void ) interrupt 0
{
}
void ISR_Ep1in( void ) interrupt 0
{
}
void ISR_Ep1out( void ) interrupt 0
{
}
void ISR_Ep2inout( void ) interrupt 0
{
}
void ISR_Ep4inout( void ) interrupt 0
{
}
void ISR_Ep6inout( void ) interrupt 0
{
}
void ISR_Ep8inout( void ) interrupt 0
{
}
void ISR_Ibn( void ) interrupt 0
{
}
void ISR_Ep0pingnak( void ) interrupt 0
{
}
void ISR_Ep1pingnak( void ) interrupt 0
{
}
void ISR_Ep2pingnak( void ) interrupt 0
{
}
void ISR_Ep4pingnak( void ) interrupt 0
{
}
void ISR_Ep6pingnak( void ) interrupt 0
{
}
void ISR_Ep8pingnak( void ) interrupt 0
{
}
void ISR_Errorlimit( void ) interrupt 0
{
}
void ISR_Ep2piderror( void ) interrupt 0
{
}
void ISR_Ep4piderror( void ) interrupt 0
{
}
void ISR_Ep6piderror( void ) interrupt 0
{
}
void ISR_Ep8piderror( void ) interrupt 0
{
}
void ISR_Ep2pflag( void ) interrupt 0
{
}
void ISR_Ep4pflag( void ) interrupt 0
{
}
void ISR_Ep6pflag( void ) interrupt 0
{
}
void ISR_Ep8pflag( void ) interrupt 0
{
}
void ISR_Ep2eflag( void ) interrupt 0
{
}
void ISR_Ep4eflag( void ) interrupt 0
{
}
void ISR_Ep6eflag( void ) interrupt 0
{
}
void ISR_Ep8eflag( void ) interrupt 0
{
}
void ISR_Ep2fflag( void ) interrupt 0
{
}
void ISR_Ep4fflag( void ) interrupt 0
{
}
void ISR_Ep6fflag( void ) interrupt 0
{
}
void ISR_Ep8fflag( void ) interrupt 0
{
}
void ISR_GpifComplete( void ) interrupt 0
{
}
void ISR_GpifWaveform( void ) interrupt 0
{
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久中文综合久久牛| 91视频一区二区三区| 亚洲伊人色欲综合网| 综合久久国产九一剧情麻豆| 国产女人18毛片水真多成人如厕| 26uuu国产在线精品一区二区| 欧美电影精品一区二区| 精品免费日韩av| 欧美精品一区二区三区四区| 久久久一区二区三区捆绑**| 久久久亚洲精华液精华液精华液| 久久色在线观看| 国产无一区二区| 国产精品卡一卡二| 国产精品国产a| 亚洲一区二区精品视频| 日韩精品一级中文字幕精品视频免费观看 | 精品久久久久99| 精品88久久久久88久久久| 26uuu精品一区二区三区四区在线| 久久综合99re88久久爱| 国产精品三级在线观看| 一区二区三区电影在线播| 亚洲免费观看高清完整版在线 | 亚洲欧洲精品成人久久奇米网| 综合激情网...| 午夜久久久影院| 久久99国产精品免费网站| 国产伦精品一区二区三区免费迷| 成人网男人的天堂| 欧美美女直播网站| 2021国产精品久久精品| 亚洲理论在线观看| 免播放器亚洲一区| 成人av综合一区| 欧美喷水一区二区| 国产精品久久久久一区| 香蕉久久夜色精品国产使用方法| 国产精品亚洲视频| 欧美卡1卡2卡| 中文字幕一区二区三区乱码在线 | 久久久亚洲欧洲日产国码αv| 亚洲视频综合在线| 免费在线观看视频一区| 丁香一区二区三区| 777色狠狠一区二区三区| 国产精品婷婷午夜在线观看| 偷拍日韩校园综合在线| 92精品国产成人观看免费| 日韩免费视频一区二区| 亚洲一级片在线观看| 丁香亚洲综合激情啪啪综合| 日韩亚洲欧美高清| 亚洲一区二区三区爽爽爽爽爽| 国产精品综合一区二区三区| 欧美人妖巨大在线| 一区二区成人在线| 国产xxx精品视频大全| 日韩欧美在线观看一区二区三区| 一区二区三区在线免费播放| 成人免费黄色大片| 欧美精品一区二区三区在线播放 | 日韩av午夜在线观看| 一本久久a久久精品亚洲| 中文字幕av一区二区三区免费看| 日韩国产高清在线| 欧美日韩国产美女| 亚洲国产精品久久一线不卡| 色哟哟亚洲精品| 亚洲婷婷综合色高清在线| 国产精品一区二区不卡| 26uuu成人网一区二区三区| 久久国产精品露脸对白| 日韩亚洲欧美高清| 精品系列免费在线观看| 欧美mv日韩mv国产| 久久国产精品99精品国产| 精品人伦一区二区色婷婷| 久久超碰97中文字幕| 欧美大片在线观看| 久草这里只有精品视频| 一区av在线播放| 一本到不卡精品视频在线观看| 国产精品久久毛片av大全日韩| 成人丝袜高跟foot| 一区二区在线看| 欧美久久久久久久久| 日日嗨av一区二区三区四区| 欧美精品日日鲁夜夜添| 裸体在线国模精品偷拍| 久久色视频免费观看| 成人激情免费电影网址| ●精品国产综合乱码久久久久| 91香蕉视频污在线| 亚洲h精品动漫在线观看| 日韩视频一区二区在线观看| 精品亚洲aⅴ乱码一区二区三区| 久久综合九色综合久久久精品综合| 精品一区二区免费在线观看| 国产精品欧美一区二区三区| 91久久一区二区| 人妖欧美一区二区| 国产精品剧情在线亚洲| 欧美日韩性生活| 国产乱码精品1区2区3区| 亚洲欧美一区二区久久| 91精品综合久久久久久| 国产成人在线看| 一区二区三区资源| 精品成人一区二区| 色94色欧美sute亚洲线路一久| 天天爽夜夜爽夜夜爽精品视频| 久久先锋影音av| 欧美在线不卡一区| 福利91精品一区二区三区| 亚洲一区成人在线| 久久精品亚洲国产奇米99| 欧洲视频一区二区| 国产99久久精品| 日韩电影在线一区二区| 国产精品热久久久久夜色精品三区| 欧美性大战久久久久久久蜜臀| 久久精品国产99久久6| 亚洲免费观看视频| 久久精品在线免费观看| 在线观看91av| 91农村精品一区二区在线| 久久99国产精品尤物| 亚洲图片欧美视频| 亚洲女人的天堂| 国产女人18毛片水真多成人如厕 | 国产精品美女久久福利网站| 69堂国产成人免费视频| 色8久久精品久久久久久蜜| 国产成人午夜99999| 美日韩黄色大片| 人人爽香蕉精品| 亚洲福中文字幕伊人影院| 中文字幕日韩av资源站| 国产午夜精品美女毛片视频| 日韩视频在线永久播放| 制服.丝袜.亚洲.中文.综合| 在线一区二区三区做爰视频网站| 床上的激情91.| 国产高清不卡一区二区| 激情综合亚洲精品| 奇米精品一区二区三区在线观看一 | 亚洲色图一区二区三区| 国产精品久久久久影视| 中文字幕免费不卡| 中文字幕va一区二区三区| 中文在线一区二区| 国产精品天美传媒沈樵| 国产精品网站导航| 亚洲欧美在线另类| 国产麻豆精品95视频| 精品一区精品二区高清| 免费av成人在线| 国产在线不卡一区| 成人黄色片在线观看| 99久久婷婷国产| 欧美婷婷六月丁香综合色| 欧美精品久久天天躁| 91精品国产色综合久久ai换脸| 欧美另类高清zo欧美| 精品成a人在线观看| 国产精品久久久久婷婷| 亚洲天堂精品在线观看| 亚洲图片欧美视频| 免费在线成人网| 国产91精品久久久久久久网曝门| 懂色av一区二区三区免费看| 99久久免费精品| 欧美日韩一二三区| 日韩美女主播在线视频一区二区三区| 日韩一区二区在线播放| 久久久亚洲精华液精华液精华液| 国产精品久久一级| 日韩精品电影在线观看| 国内精品第一页| 99r精品视频| 91精品国产全国免费观看| 久久日韩精品一区二区五区| 国产精品第13页| 日本成人在线电影网| 成人一区二区在线观看| 欧美乱熟臀69xxxxxx| 国产欧美视频在线观看| 午夜婷婷国产麻豆精品| 豆国产96在线|亚洲| 欧美高清你懂得| 亚洲视频1区2区| 激情五月婷婷综合| 91黄色免费观看| 久久久久久一级片| 日韩成人一级片| 色婷婷香蕉在线一区二区| 久久一夜天堂av一区二区三区| 一区二区三区蜜桃| 成人午夜短视频|