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

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

?? fx2hid.c

?? 矢量分析儀cypress an2135源碼
?? C
字號(hào):
#pragma NOIV               // Do not generate interrupt vectors
/*
-----------------------------------------------------------------------------
   File:      usbhidio_fx2.c
   Contents:   Hooks required to implement USB peripheral function.

   This is an adaptation of the Cypress example FX2_Hid_Keyboard.c,
   which was in turn adapted from Cypress's bulkloop.c 
   (and is available on request from Cypress).

   The application communicates with the usbhdio host applications available from:
 
   www.Lvr.com/hidpage.htm

   This code requires the full (not evaluation) version of the Keil compiler.
   Additions to the keyboard code are labeled with "usbhidio start" and "usbhidio end"
   Unneeded keyboard code is commented out.
  
   Copyright (c) 2000 Cypress Semiconductor All rights reserved
   with some changes by Jan Axelson (jan@Lvr.com) 
-----------------------------------------------------------------------------
*/

#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;

#define	min(a,b) (((a)<(b))?(a):(b))

#define GD_HID	0x21
#define GD_REPORT	0x22
#define CR_SET_REPORT 0x09
#define HID_OUTPUT_REPORT 2

#define BTN_ADDR		0x41
#define LED_ADDR		0x42

#define PF_IDLE			0
#define PF_GETKEYS		1

#define KEY_WAKEUP		0
#define KEY_F1			1
#define KEY_F2			2
#define KEY_F3			3

WORD	pHIDDscr;
WORD	pReportDscr;
WORD	pReportDscrEnd;
extern code HIDDscr;
extern code REPORTDSCR ReportDscr; 
extern code ReportDscrEnd;

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

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

BYTE buttons;
BYTE oldbuttons;
BYTE leds = 0xFF;

BYTE read_buttons (void);
void write_leds (BYTE d);

#define VR_NAKALL_ON    0xD0
#define VR_NAKALL_OFF   0xD1
//-----------------------------------------------------------------------------
// Task Dispatcher hooks
//   The following hooks are called by the task dispatcher.
//-----------------------------------------------------------------------------

// read_buttons and write_leds are unused by usbhidio
/*
BYTE read_buttons (void)
{
	BYTE d;

	while (I2CS & 0x40);	//Wait for stop to be done
	I2CS = 0x80;			//Set start condition
	I2DAT = BTN_ADDR;		//Write button address
	while (!(I2CS & 0x01));	//Wait for done
	I2CS = 0x20;			//Set last read
	d = I2DAT;				//Dummy read
	while (!(I2CS & 0x01));	//Wait for done
	I2CS = 0x40;			//Set stop bit
	return(I2DAT);			//Read the data
}


void write_leds (BYTE d)
{
	while (I2CS & 0x40);	//Wait for stop to be done
	I2CS = 0x80;			//Set start condition
	I2DAT = LED_ADDR;		//Write led address
	while (!(I2CS & 0x01));	//Wait for done
	I2DAT = d;				//Write data
	while (!(I2CS & 0x01));	//Wait for done
	I2CS = 0x40;			//Set stop bit
}
*/


void TD_Init(void)             // Called once at startup
{
   // set the CPU clock to 48MHz
   CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;

   // set the slave FIFO interface to 48MHz
   IFCONFIG |= 0x40;

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

  Rwuen = TRUE;                 // Enable remote-wakeup

}


void TD_Poll(void)              // Called repeatedly while the device is idle
{
	if( !(EP1INCS & 0x02) )	// Is the EP1INBUF available,
	{

//		This keyboard code is unneeded
/*	
	buttons = read_buttons();
		if (buttons == read_buttons())	//Debounce
		{
			buttons &= 0x0F;
			if ((oldbuttons - buttons) != 0)	//Change in button state
			{
				if (buttons & 1)	//Shift
					EP1INBUF[0] = 0;
				else
					EP1INBUF[0] = 2;
				if (buttons & 2)	//a
					EP1INBUF[2] = 0;
				else
					EP1INBUF[2] = 4;
				if (buttons & 4)	//b
					EP1INBUF[3] = 0;
				else
					EP1INBUF[3] = 5;
				if (buttons & 8)	//c
					EP1INBUF[4] = 0;
				else
					EP1INBUF[4] = 6;
				EP1INBUF[1] = 0;
				EP1INBC = 5;
			}
			oldbuttons = buttons;
		}
*/
	}
	if( !(EP1OUTCS & 0x02) )	// Is there something available in EP1OUTBUF
	{

//		This keyboard code is unneeded by usbhidio
/*
		leds = 0xFF;	//Turn all off
		if (EP1OUTBUF[0] & 0x02)	//Caps
			leds &= 0xBF;
		if (EP1OUTBUF[0] & 0x01)	//Scroll
			leds &= 0xF7;
		if (EP1OUTBUF[0] & 0x04)	//Num
			leds &= 0xFE;
		write_leds (leds);
*/

// usbhidio code start

// Copy bytes received on the OUT endpoint to the IN endpoint. 
		EP1INBUF[0] = EP1OUTBUF[0];
		EP1INBUF[1] = EP1OUTBUF[1];

// Rearm the IN endpoint buffer to enable sending a report.
// The value equals the report size.
		EP1INBC = 2;			

// usbhidiocode end

		EP1OUTBC = 0;				//Rearm the OUT endpoint buffer to enable receiving a report.

	} 
}

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

   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;
      ((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
      pOtherConfigDscr = pFullSpeedConfigDscr;
      ((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
   }

   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
{
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线不卡一区二区| 国产成人综合在线| 国产精品亚洲人在线观看| av高清不卡在线| 欧美老肥妇做.爰bbww| 国产亚洲成av人在线观看导航 | 成人一二三区视频| 在线播放视频一区| 国产精品免费人成网站| 日韩中文字幕区一区有砖一区 | 亚洲亚洲精品在线观看| 国内精品在线播放| 在线亚洲+欧美+日本专区| 精品奇米国产一区二区三区| 亚洲精品在线观看视频| 国产精品三级视频| 麻豆精品视频在线| 欧美午夜精品理论片a级按摩| 久久久99免费| 日韩精品乱码免费| 91一区二区在线| 亚洲国产精品传媒在线观看| 奇米影视一区二区三区| 一本色道久久综合精品竹菊| 久久久精品2019中文字幕之3| 日本不卡中文字幕| 欧洲另类一二三四区| 日本一区二区成人| 激情综合亚洲精品| 日韩一区二区不卡| 亚洲成av人片在线观看无码| 成人18视频日本| 国产亚洲综合在线| 国产麻豆精品在线观看| 日韩免费福利电影在线观看| 亚洲成av人在线观看| 色老汉av一区二区三区| 亚洲视频一区在线观看| 成人免费视频视频在线观看免费| 久久一区二区视频| 日本中文字幕不卡| 日韩一级二级三级| 午夜精品成人在线视频| 欧美综合在线视频| 国产精品短视频| 不卡的av在线播放| 中文字幕欧美三区| 懂色av中文字幕一区二区三区| 精品福利av导航| 国产精品99久久久久久有的能看 | 国产丶欧美丶日本不卡视频| www久久久久| 精品一区二区三区免费播放| 日韩欧美一区二区不卡| 奇米一区二区三区av| 久久综合久久综合九色| 美脚の诱脚舐め脚责91| 欧美一级黄色录像| 青青草国产成人99久久| 欧美tickling挠脚心丨vk| 精品夜夜嗨av一区二区三区| 欧美成人精精品一区二区频| 日本欧美一区二区| 精品国产不卡一区二区三区| 韩国精品在线观看| 精品国产不卡一区二区三区| 日本特黄久久久高潮| 久久青草欧美一区二区三区| 国产一区二三区| 国产午夜精品一区二区| 久久成人羞羞网站| 久久久亚洲午夜电影| 国产精品77777| 欧美激情资源网| 色综合久久久久久久久| 一区二区三区加勒比av| 欧美福利视频一区| 亚洲成人你懂的| 精品粉嫩超白一线天av| 国产电影一区在线| 亚洲人成网站在线| 91超碰这里只有精品国产| 久久99精品久久久| 久久美女高清视频| 99久久精品国产毛片| 蜜臀精品一区二区三区在线观看| 日韩视频永久免费| 国产乱子伦一区二区三区国色天香 | 偷窥国产亚洲免费视频| 欧美精品粉嫩高潮一区二区| 国产美女娇喘av呻吟久久| 中文字幕中文字幕一区| 欧美亚洲丝袜传媒另类| 亚洲mv在线观看| 久久久精品免费网站| 色久优优欧美色久优优| 日韩精品亚洲专区| 精品国内片67194| 色综合色综合色综合| 日本成人在线电影网| 国产婷婷一区二区| 欧美三级日韩三级国产三级| 久久成人久久鬼色| 中文字幕亚洲成人| 欧美精品在线一区二区| 丁香婷婷深情五月亚洲| 亚洲18影院在线观看| 久久香蕉国产线看观看99| 91麻豆免费在线观看| 麻豆成人91精品二区三区| 亚洲欧洲成人自拍| 91精品在线观看入口| 国产成人精品免费网站| 蜜臀va亚洲va欧美va天堂| 中文子幕无线码一区tr| 欧美日韩精品一区二区天天拍小说 | 欧美视频完全免费看| 奇米精品一区二区三区四区| 国产精品天天看| 欧美一区午夜视频在线观看| 成人性生交大片免费看视频在线| 亚洲精品成人少妇| 久久久91精品国产一区二区三区| 91国在线观看| 国产精品一区二区在线播放| 亚洲精品国产a| 久久综合色之久久综合| 欧美三级一区二区| av欧美精品.com| 视频在线在亚洲| 亚洲图片欧美激情| 精品成人私密视频| 欧美日韩在线三区| 国产精品一区久久久久| 蜜桃av一区二区在线观看| 亚洲欧洲色图综合| 欧美成人一区二区三区片免费 | 国产一区二区三区不卡在线观看 | 亚洲激情第一区| 久久五月婷婷丁香社区| 欧美日韩精品三区| 91麻豆国产在线观看| 国产麻豆精品视频| 六月丁香婷婷色狠狠久久| www国产精品av| 欧美大片日本大片免费观看| 欧美亚洲综合在线| av不卡免费在线观看| 国产一区视频网站| 激情综合色综合久久| 午夜精品福利一区二区蜜股av| 亚洲日本丝袜连裤袜办公室| 国产清纯在线一区二区www| 精品播放一区二区| 日韩欧美国产一区二区在线播放| 欧美私人免费视频| 不卡一区二区三区四区| 成人免费视频视频| 成人三级伦理片| 高清在线观看日韩| 国产精品一级片| 精品一区二区三区免费| 欧美a级理论片| 日本午夜精品一区二区三区电影| 亚洲免费观看高清完整版在线观看 | 亚洲电影在线播放| 曰韩精品一区二区| 136国产福利精品导航| 亚洲素人一区二区| 亚洲欧美日韩人成在线播放| 亚洲精选视频免费看| 亚洲大片精品永久免费| 秋霞国产午夜精品免费视频| 久久99精品国产.久久久久| 精品一区二区三区日韩| 国产91精品精华液一区二区三区| 99国产精品久久久久久久久久久| 色又黄又爽网站www久久| 欧美色图激情小说| 日韩欧美黄色影院| 国产精品午夜免费| 夜夜嗨av一区二区三区中文字幕| 亚洲成人先锋电影| 精品亚洲欧美一区| 99久久综合精品| 欧美性大战久久| 日韩一级视频免费观看在线| 久久看人人爽人人| 自拍偷拍欧美精品| 午夜不卡av免费| 国产精品888| 亚洲一区二区三区四区在线观看| 亚洲国产高清在线观看视频| 伊人一区二区三区| 日韩福利电影在线观看| 国产河南妇女毛片精品久久久| 日本二三区不卡| 日韩欧美在线一区二区三区| 中文字幕免费不卡| 偷偷要91色婷婷|