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

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

?? usb.c

?? avrusb源碼
?? C
字號:
//===================================================================//
//					Augest, 25, 2002		The Last Modified Date
//                  Modified by Dai LiZHou, HIT (dailizhou@0451.com)
//===================================================================//

#include "AvrUsb.H"
#include <string.h>

extern AVRUSBFLAGS bAvrUsbFlags;

/*
//*************************************************************************
// USB protocol function pointer arrays
//*************************************************************************
*/
 void (* const StandardDeviceRequest[])(void) =
{
	USBClassRequest_GetStatus,			// 0
	USBClassRequest_ClearFeature,		// 1
	reserved,							// 2
	USBClassRequest_SetFeature,			// 3
	reserved,							// 4
	USBClassRequest_SetAddress,			// 5
	USBClassRequest_GetDescriptor,		// 6
	reserved,							// 7
	USBClassRequest_GetConfiguration,	// 8
	USBClassRequest_SetConfiguration,	// 9
	USBClassRequest_GetInterface,		// 10
	USBClassRequest_SetInterface,		// 12
	reserved,
	reserved,
	reserved,
	reserved
};

void (* const VendorDeviceRequest[])(void) =
{
	reserved,//USBVendorRequest_WriteCode,
	reserved,//USBVendorRequest_ReadCode,
	reserved,
	reserved,//USBVendorRequest_GetFlashPhase,
	reserved,//USBVendorRequest_GetCodeData,
	reserved,
	USBVendorRequest_LEDON,
	USBVendorRequest_LEDOFF,
	USBVendorRequest_LEDFlash,
	reserved,
	reserved,
	reserved,
	reserved,      // Upper...
	reserved,
	reserved,
	reserved
};

/*
//*************************************************************************
//  Public static data
//*************************************************************************
*/
extern unsigned long  lClockTicks;

CONTROL_XFER  ControlData;


/* Functions */
void USB_Suspend_Change(void)
{
}

void USB_Stall_EP0(void)
{
	USBD12_SetEndpointStatus(0, 1);
	USBD12_SetEndpointStatus(1, 1);
}

void USB_Disconnect(void)
{
	CLI();
	// Initialize D12 configuration
	USBD12_SetMode(USBD12_NOLAZYCLOCK | USBD12_CLOCKRUNNING,
        USBD12_SETTOONE | USBD12_CLOCK_12M);
}

void USB_Connect(void)
{
	// reset event flags
	DISABLE_INTERRUPTS;
	bAvrUsbFlags.nValue = 0;
//	ENABLE_INTERRUPTS;

	USBD12_SetEndpointStatus(2, 0);
	USBD12_SetEndpointStatus(3, 0);
	USBD12_SetEndpointStatus(4, 0);
	USBD12_SetEndpointStatus(5, 0);
	// V2.1 enable normal+sof interrupt
	USBD12_SetDMA(USBD12_ENDP4INTENABLE | USBD12_ENDP5INTENABLE);

	// Initialize D12 configuration
	USBD12_SetMode(USBD12_NOLAZYCLOCK | 
	               USBD12_CLOCKRUNNING | 
				   USBD12_SOFTCONNECT, 
				   USBD12_SETTOONE |USBD12_CLOCK_4M);
	SEI();
}


void USB_Reconnect(void)
{
	unsigned long lClockCount;
	
	bAvrUsbFlags.bits.bIN_ISR = 1;

	USB_ClearAllInts();

	USB_Disconnect();

	Delay(0xff);
	ENABLE_INTERRUPTS;
	lClockCount = lClockTicks;
	while(lClockTicks < lClockCount + 20);
	DISABLE_INTERRUPTS;
	
	USB_Connect();
	bAvrUsbFlags.bits.bIN_ISR = 0;

}

void USB_Init_Unconfig(void)
{
	USBD12_SetEndpointEnable(0);	/* Disable all endpoints but EPP0. */
}

void USB_Init_Config(void)
{
	USBD12_SetEndpointEnable(1);	/* Enable  generic/iso endpoints. */
}

void USB_Single_Transmit(unsigned char* pBuf, unsigned char nLen)
{
	if(nLen <= EP0_PACKET_SIZE)
    {
		USBD12_WriteEndpoint(1, pBuf, nLen);
	}
}

void USB_Code_Transmit(const unsigned char * pRomData, unsigned short nLen)
{
	ControlData.wCount = 0;
	if(ControlData.wLength > nLen)		ControlData.wLength = nLen;

	ControlData.pData=pRomData;
	if(ControlData.wLength >= EP0_PACKET_SIZE)
    {

		USBD12_WriteEndpointRom(1, pRomData, EP0_PACKET_SIZE);
		ControlData.wCount += EP0_PACKET_SIZE;

		DISABLE_INTERRUPTS;
		bAvrUsbFlags.bits.bControl_State = USB_TRANSMIT;
		ENABLE_INTERRUPTS;
	}
	else
    {
		USBD12_WriteEndpointRom(1, pRomData, ControlData.wLength);
		ControlData.wCount += ControlData.wLength;
		DISABLE_INTERRUPTS;
		bAvrUsbFlags.bits.bControl_State = USB_IDLE;
		ENABLE_INTERRUPTS;
	}
}

void USB_Control_Handler(void)
{
	unsigned char nType, nReq;

	nType = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
	nReq = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK;

	if (nType == USB_STANDARD_REQUEST)
	{
		(*StandardDeviceRequest[nReq])();
	}
	else if (nType == USB_VENDOR_REQUEST)
	{
		(*VendorDeviceRequest[nReq])();
	}
	else
	{
		USB_Stall_EP0();
	}
}

void USB_ClearAllInts(void)
{
	USBD12_ReadInterruptRegister();
	USBD12_ReadLastTransactionStatus(0);
	USBD12_ReadLastTransactionStatus(1);
	USBD12_ReadLastTransactionStatus(2);
	USBD12_ReadLastTransactionStatus(3);
	USBD12_ReadLastTransactionStatus(4);
	USBD12_ReadLastTransactionStatus(5);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线资源网| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美一区二区三区网站| 国产精品一区久久久久| 中文字幕免费不卡| 91麻豆国产自产在线观看| 一区二区久久久久久| 欧美日本韩国一区| 久久er99热精品一区二区| 久久这里只有精品6| 国模娜娜一区二区三区| 久久久久久久国产精品影院| 国产精品一二三区在线| 欧美国产丝袜视频| 成人黄色在线看| 中文字幕亚洲成人| 国产精品69毛片高清亚洲| 久久久久国产一区二区三区四区| 国产在线观看一区二区| 国产日韩影视精品| 国产精品一二三区在线| 中文字幕av不卡| 国产高清精品在线| 国产视频一区二区在线| 国内精品在线播放| 久久久久国产一区二区三区四区| 成人黄色小视频| 亚洲另类春色国产| 欧美色男人天堂| 麻豆国产欧美一区二区三区| 久久久久亚洲蜜桃| 岛国精品在线观看| 亚洲一区在线视频观看| 91精品国产91综合久久蜜臀| 激情伊人五月天久久综合| 国产亚洲精品资源在线26u| 波多野结衣亚洲| 亚洲自拍偷拍av| 日韩免费电影一区| 国产成人丝袜美腿| 亚洲小说欧美激情另类| 日韩一区国产二区欧美三区| 国产美女精品人人做人人爽| 亚洲天堂网中文字| 欧美人牲a欧美精品| 国产一区二区日韩精品| 亚洲人精品午夜| 日韩小视频在线观看专区| 国产成人三级在线观看| 亚洲夂夂婷婷色拍ww47| 日韩欧美在线123| 不卡视频在线看| 午夜精品爽啪视频| 五月激情六月综合| 国产情人综合久久777777| 91精品福利在线| 久久av资源网| 中文字幕乱码久久午夜不卡 | 国内精品不卡在线| 亚洲人精品午夜| 精品女同一区二区| 91蜜桃在线观看| 精品一区二区三区久久| 亚洲乱码国产乱码精品精小说| 51久久夜色精品国产麻豆| 成人高清在线视频| 欧美aaa在线| 亚洲日本在线a| 日韩欧美成人一区二区| 日本黄色一区二区| 精彩视频一区二区| 亚洲一区二区三区中文字幕在线| 亚洲精品一区二区三区福利| 色狠狠桃花综合| 国产麻豆成人精品| 亚洲成人你懂的| 国产精品午夜电影| 日韩视频在线一区二区| 在线亚洲人成电影网站色www| 青青草国产成人av片免费| 欧美高清在线一区二区| 欧美日本乱大交xxxxx| 成人的网站免费观看| 爽好多水快深点欧美视频| 中文字幕av一区二区三区| 日韩一区二区在线观看视频 | 91精品国产aⅴ一区二区| 91丨九色丨尤物| 国内精品自线一区二区三区视频| 婷婷综合五月天| 亚洲视频中文字幕| 久久精品欧美一区二区三区不卡| 91精品国产综合久久婷婷香蕉 | 久久精品网站免费观看| 欧美男人的天堂一二区| 99re在线精品| 国产成人三级在线观看| 久久 天天综合| 丝袜美腿高跟呻吟高潮一区| 一区二区三区欧美| 国产精品一二三四区| 日韩精品91亚洲二区在线观看| 亚洲乱码中文字幕综合| 国产精品毛片高清在线完整版| 欧美一区日韩一区| 精品视频在线看| 在线中文字幕一区二区| 99re66热这里只有精品3直播| 国产精品18久久久久久久网站| 美女视频免费一区| 秋霞国产午夜精品免费视频| 亚洲国产人成综合网站| 国产精品免费人成网站| 久久精品日产第一区二区三区高清版| 欧美人妖巨大在线| 欧美美女bb生活片| 欧美人成免费网站| 欧美日韩久久一区| 欧美三级日韩三级| 欧美日韩不卡一区二区| 欧美色电影在线| 欧美日韩免费在线视频| 在线精品视频一区二区三四| 91福利视频在线| 一本一道久久a久久精品 | 国产成人av电影在线播放| 韩国av一区二区三区在线观看| 久久精品国产亚洲a| 久久69国产一区二区蜜臀| 黑人精品欧美一区二区蜜桃| 久久99在线观看| 国内成人自拍视频| 国产大片一区二区| 成人蜜臀av电影| 99精品在线观看视频| 日本福利一区二区| 欧美视频完全免费看| 欧美人妇做爰xxxⅹ性高电影| 91精品国产综合久久久蜜臀粉嫩| 欧美一区二区三区精品| 日韩欧美中文字幕公布| 久久一夜天堂av一区二区三区| 欧美精品一区二区三区久久久| 久久久久久久性| 国产精品乱人伦一区二区| 亚洲欧美日韩中文播放| 一区二区在线观看视频在线观看| 亚洲在线观看免费| 日韩影视精彩在线| 精品无人区卡一卡二卡三乱码免费卡| 国产精品一二三区| 99久久99久久久精品齐齐| 欧洲精品一区二区| 91 com成人网| 久久人人超碰精品| 国产婷婷色一区二区三区| 国产日韩欧美亚洲| 亚洲三级电影全部在线观看高清| 亚洲v日本v欧美v久久精品| 日本不卡一二三区黄网| 精彩视频一区二区三区| voyeur盗摄精品| 欧洲亚洲精品在线| 精品伦理精品一区| 精品一区二区三区在线视频| 国产精品一级黄| 色婷婷综合久久久久中文一区二区| 欧美三级中文字幕在线观看| 欧美va亚洲va| 国产精品久久午夜| 午夜av电影一区| 国产精品一区二区在线观看网站 | 精品婷婷伊人一区三区三| 精品剧情v国产在线观看在线| 国产精品无圣光一区二区| 亚洲一区国产视频| 国内精品免费**视频| 成人精品国产一区二区4080| 欧美亚洲一区二区在线观看| 欧美一级理论性理论a| 国产精品无人区| 天堂久久久久va久久久久| 国产一区二区三区在线观看精品 | 欧美日韩一区二区三区四区五区| 精品乱人伦一区二区三区| 亚洲男人天堂av| 精品一区二区三区不卡| 在线视频观看一区| 7777女厕盗摄久久久| 久久久久久麻豆| 亚洲成人在线观看视频| 成人天堂资源www在线| 欧美精品在线一区二区三区| 日本一区二区在线不卡| 天天射综合影视| 成人丝袜18视频在线观看| 91精品国产美女浴室洗澡无遮挡| 亚洲欧洲精品一区二区三区不卡| 麻豆一区二区99久久久久| 色婷婷亚洲精品|