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

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

?? bulkloop.c

?? 提供了usb接口fx2芯片的編程。從io輸入到后來的差分信號輸出。都給了詳細的例子
?? C
?? 第 1 頁 / 共 2 頁
字號:
#pragma NOIV               // Do not generate interrupt vectors
//-----------------------------------------------------------------------------
//   File:      bulkloop.c
//   Contents:   Hooks required to implement USB peripheral function.
//
//   Copyright (c) 2000 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
BYTE   Highspeed;
WORD xfrcnt = 64;
sbit RDCLKA = IOA ^ 6;


#define VR_NAKALL_ON    0xD0    //制造商請求
#define VR_NAKALL_OFF   0xD1
#define SINGLEWRITE     0xB0 
#define SINGLEREAD      0xB1
#define SPEED           0xB2

  WORD j;
  BYTE rddr;
  BYTE AD;
  BYTE D16;
  WORD i;

void rddata(BYTE AD);
void rddata16(BYTE AD);


//-----------------------------------------------------------------------------
// Task Dispatcher hooks
//   The following hooks are called by the task dispatcher.
//-----------------------------------------------------------------------------

void TD_Init(void)             // Called once at startup
{  
   // set the CPU clock to 48MHz
  // CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;
   CPUCS = 0x30;
   SYNCDELAY;
   // set the slave FIFO interface to 48MHz
 //  IFCONFIG |= 0x40;
   //OEB|=0xFF    //

  // 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

  // default: all endpoints have their VALID bit set
  // default: TYPE1 = 1 and TYPE0 = 0 --> BULK  
  // default: EP2 and EP4 DIR bits are 0 (OUT direction)
  // default: EP6 and EP8 DIR bits are 1 (IN direction)
  // default: EP2, EP4, EP6, and EP8 are double buffered

  // we are just using the default values, yes this is not necessary...
  EP1OUTCFG = 0xA0;
  SYNCDELAY;
  EP1INCFG = 0xA0;
  SYNCDELAY;                    // see TRM section 15.14
  EP2CFG = 0xA2;
  SYNCDELAY;                    
  EP4CFG = 0xA0;
  SYNCDELAY;                    
  EP6CFG = 0xE2;
  SYNCDELAY;                    
  EP8CFG = 0xE0;

  // out endpoints do not come up armed
  
  // since the defaults are double buffered we must write dummy byte counts twice
  SYNCDELAY;                    
  EP2BCL = 0x80;                // arm EP2OUT by writing byte count w/skip.
  SYNCDELAY;                    
  EP2BCL = 0x80;
  SYNCDELAY;                    
  EP4BCL = 0x80;                // arm EP4OUT by writing byte count w/skip.
  SYNCDELAY;                    
  EP4BCL = 0x80;    

  // enable dual autopointer feature
  AUTOPTRSETUP |= 0x01;
  SYNCDELAY;
  PORTACFG = 0x00; 
  OEB |= 0xFF;
  OEA |= 0xFF;
  OEE |= 0XFF;
  Rwuen = TRUE;                 // Enable remote-wakeup
//  EPIE=0x10;
}


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

   if(!(EP2468STAT & bmEP2EMPTY))
    { // check EP2 EMPTY(busy) bit in EP2468STAT (SFR), core set's this bit when FIFO is empty
      IOB= EP2FIFOBUF[0];   //addr output
	  D16= EP2FIFOBUF[1];   //D16 OR D8 
	  OEC=0x00;     //C inport
	
	  AD=EP2FIFOBUF[0];


	  switch(D16)
	  {
	   case 0x00:          //D8
	      rddata(AD);  
    	  break;
       case 0xFF:
          rddata16(AD);
          break;  
	   default:            //D16 
	      rddata(AD);  
  	  }
 EP2BCL = 0x80;
   }




}                                                                                                                                                                       
                                                                                                                                                                         
 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
{
   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)
{
  BYTE tmp;
  
  switch (SETUPDAT[1])
  {
     case VR_NAKALL_ON:
        tmp = FIFORESET;
        tmp |= bmNAKALL;      
        SYNCDELAY;                    
        FIFORESET = tmp;
        break;
     case VR_NAKALL_OFF:
        tmp = FIFORESET;
        tmp &= ~bmNAKALL;      
        SYNCDELAY;                    
        FIFORESET = tmp;
        break;
     case SINGLEWRITE:    //single write,data in SETUPDAT[2],ram address in SETUPDAT[4]
          OEC |= 0xFF;
          IOB = SETUPDAT[4];
          tmp = SETUPDAT[2];
		  IOC = tmp;
		  SYNCDELAY;  
		  SYNCDELAY;  
		  //IOA=0x00;
		  IOB=0x36;
          OEC=0x00;
      	  EP0BUF[1]=IOC;
          EP0BUF[0] = SETUPDAT[4];  //隨便返回一個值,用于測試   
          //EP0BUF[5] = tmp;
                                       
		  EP0BCH = 0;        //這兩句保留                                          
		  EP0BCL = 8;
          break;                                
     case SINGLEREAD:         //single read,ram address in SETUPDAT[4],put the data in EP0BUF[0]
          OEC &= 0x00; 
          IOB = SETUPDAT[4];
          EP0BUF[0] = IOC;
          EP0BCH = 0;        //這兩句保留
		  EP0BCL = 8; 
          break; 
     case SPEED:
         if(Highspeed==1)
           {
             xfrcnt = 512;
           }
         else xfrcnt = 64;
         EP0BUF[0] = Highspeed;
         EP0BUF[1] = xfrcnt>>8;
         EP0BUF[2] = (BYTE)xfrcnt;
         EP0BCH = 0;
         EP0BCL = 8;
        break;

     default:
        return(TRUE);
  }

  return(FALSE);
}

//-----------------------------------------------------------------------------
// 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
{
   // whenever we get a USB reset, we should revert to full speed mode
   pConfigDscr = pFullSpeedConfigDscr;
   ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
   pOtherConfigDscr = pHighSpeedConfigDscr;
   ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
   Highspeed = 0;

   EZUSB_IRQ_CLEAR();
   USBIRQ = bmURES;         // Clear URES IRQ
}

void ISR_Susp(void) interrupt 0
{
 
  Sleep = TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级视频在线观看| 欧美吻胸吃奶大尺度电影| 亚洲成人自拍一区| 亚洲另类色综合网站| 中文字幕亚洲精品在线观看 | 综合久久久久综合| 国产精品黄色在线观看| 中文字幕在线观看不卡视频| 国产午夜精品一区二区| 日本一区二区三区dvd视频在线| 日韩欧美亚洲国产精品字幕久久久 | 日韩欧美的一区二区| 日韩欧美专区在线| 久久影院午夜片一区| 国产丝袜美腿一区二区三区| 欧美激情一区在线观看| 亚洲情趣在线观看| 午夜影视日本亚洲欧洲精品| 青青草原综合久久大伊人精品| 日本美女一区二区三区| 国产在线麻豆精品观看| av在线播放不卡| 欧美三级三级三级| 91麻豆精品久久久久蜜臀 | 国产天堂亚洲国产碰碰| 亚洲欧洲国产日韩| 午夜精品视频一区| 国产乱码精品一区二区三区五月婷| 成人国产在线观看| 欧美日韩精品一区二区天天拍小说| 日韩欧美在线1卡| 国产欧美日韩在线看| 亚洲综合色区另类av| 久久精品国产成人一区二区三区| 国产91精品一区二区麻豆亚洲| 色呦呦国产精品| 日韩欧美国产一区在线观看| 一区在线播放视频| 美女网站视频久久| 91亚洲男人天堂| 欧美成va人片在线观看| 亚洲免费av在线| 国产又黄又大久久| 欧美老女人第四色| 日韩毛片一二三区| 国产一区二区在线电影| 欧美色网一区二区| 中文字幕在线观看一区二区| 美日韩黄色大片| 欧美偷拍一区二区| 中文字幕五月欧美| 国产一区二区不卡| 日韩精品一区二区三区swag| 尤物视频一区二区| 99久久久免费精品国产一区二区| 精品日韩一区二区| 亚洲va天堂va国产va久| 99亚偷拍自图区亚洲| 久久综合视频网| 毛片一区二区三区| 6080国产精品一区二区| 亚洲综合在线视频| 91在线观看污| 日韩一区有码在线| av在线不卡电影| 国产欧美综合在线| 国产老妇另类xxxxx| 日韩美女视频一区二区在线观看| 无码av中文一区二区三区桃花岛| 色综合中文字幕| 国产精品不卡在线观看| 成人深夜福利app| 国产欧美日韩在线观看| 国产精品系列在线播放| 久久精品综合网| 国精产品一区一区三区mba视频| 日韩一区二区中文字幕| 青青草国产精品97视觉盛宴| 欧美日韩另类一区| 日韩av在线免费观看不卡| 欧美午夜电影一区| 午夜视黄欧洲亚洲| 91精品国产综合久久精品| 日韩成人一区二区三区在线观看| 欧美日韩综合色| 视频一区中文字幕| 欧美大胆一级视频| 国产成人亚洲综合色影视| 国产欧美1区2区3区| av在线这里只有精品| 一区二区三区四区激情| 欧美久久久久中文字幕| 美腿丝袜亚洲色图| 欧美高清在线视频| 欧美在线播放高清精品| 日韩成人一级片| 中文久久乱码一区二区| 国产成人免费av在线| 1024国产精品| 欧美精品丝袜中出| 国产酒店精品激情| 亚洲亚洲人成综合网络| 日韩欧美亚洲国产精品字幕久久久| 国产精品一二三区在线| 亚洲人妖av一区二区| 欧美日本在线观看| 国产精品99久| 亚洲狠狠爱一区二区三区| 精品成人免费观看| 色噜噜夜夜夜综合网| 美女视频黄免费的久久| 国产精品福利av| 日韩欧美另类在线| 91麻豆swag| 国产一区二区三区国产| 一级做a爱片久久| 亚洲精品在线观看视频| 色94色欧美sute亚洲线路二| 捆绑紧缚一区二区三区视频| 国产精品国产精品国产专区不蜜| 精品视频免费在线| 成人污视频在线观看| 91美女片黄在线| 日本精品一区二区三区高清| 欧美在线视频你懂得| 狠狠色综合日日| 亚洲永久免费av| 欧美色综合影院| 成人性生交大片| 久久精品夜色噜噜亚洲aⅴ| 欧美不卡一二三| 欧美激情一区二区三区| 国产精品不卡在线| 亚洲一卡二卡三卡四卡无卡久久| 无码av中文一区二区三区桃花岛| 首页国产欧美久久| 狠狠狠色丁香婷婷综合激情| 国产成人精品www牛牛影视| 成人av影院在线| 欧美综合视频在线观看| 欧美一区二区网站| 国产人成一区二区三区影院| 国产精品福利一区| 日韩在线播放一区二区| 国产真实乱偷精品视频免| www.久久久久久久久| 欧洲精品视频在线观看| 欧美成人乱码一区二区三区| 欧美国产日韩亚洲一区| 亚洲午夜久久久久久久久电影院 | 中文字幕在线不卡| 亚洲国产精品一区二区www | 亚洲国产欧美在线| 精品一区二区三区不卡| 99精品欧美一区二区蜜桃免费| 欧美日韩国产高清一区二区| 久久久久久久久岛国免费| 亚洲综合网站在线观看| 精品一区二区精品| 91行情网站电视在线观看高清版| 日韩欧美不卡在线观看视频| 亚洲视频1区2区| 国产一区在线观看麻豆| 色老汉一区二区三区| 久久午夜老司机| 日韩精品一二三区| 91影视在线播放| 久久精品人人爽人人爽| 午夜久久久影院| 色综合色狠狠天天综合色| 精品久久久久久亚洲综合网| 亚洲国产日韩一区二区| 成人综合婷婷国产精品久久| 欧美一级黄色片| 亚洲一区二区av电影| 99久精品国产| 日本一区二区三区电影| 久久精品国内一区二区三区| 欧美性三三影院| 亚洲免费观看高清完整版在线观看| 九九精品一区二区| 欧美一区二区二区| 亚洲成人黄色影院| 在线视频一区二区三| 中文字幕在线观看一区| 国产成人午夜精品影院观看视频| 欧美一区二区精品| 日本vs亚洲vs韩国一区三区| 欧美三级日本三级少妇99| 一区二区三区在线观看网站| a4yy欧美一区二区三区| 国产精品污网站| 国产成人免费av在线| 久久精品视频在线免费观看| 九一九一国产精品| 2020国产精品久久精品美国| 国产在线视频精品一区| 精品久久国产字幕高潮| 久久99精品久久久久婷婷| 日韩一区二区三区电影在线观看 |