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

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

?? usb.c

?? HardDiskUSBconnectsourcecode
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**************************************************************************
 *                         H E A D E R   F I L E S
 *************************************************************************/
#include "stdio.h"
#include<ABSACC.H>
#include <reg51.h>
#include <intrins.h>
#include "AT89C51SND.h"
#include "typedef.h"
#include "config.h"
#include "constant.h"
#include "usb.h"
#include "global.h"
#include "gpio.h"
#include "macro.h"
#include "external.h"

/********************************************
*
*GET_DESCRIPTOR(Device Descriptor = 18 byte)
*
********************************************/
code UINT8   USB_DeviceDescriptor[] =
{
		

		
		0x12,                   /*bLength:*/
		0x01,                   /*bDescriptorType*/
		0x10, 0x01,           /*bcdUSB*/
		0x00,                   /*bDeviceClass*/
		0x00,                   /*bDeviceSubClass*/
		0x00,                   /*bDeviceProtocol*/
		0x08,                   /*bMaxPacketSize0*/
		0x34, 0x22,           /*idVendor*/
		0x78, 0x56,           /*idProduct*/
		0x01, 0x00,           /*bcdDevice*/
		0x01,                   /*iManufacturer*/
		0x02,                   /*iProduct*/
		0x03,                   /*iSerialNumber*/
		0x01,                   /*bNumConfigurations*/
};

/********************************************
*
*GET_DESCRIPTOR(Configuration Descriptor = 34 byte)
*
********************************************/
code UINT8   USB_ConfigurationDescriptor[] =
{
		
		
		0x09,                   /*bLength*/
		0x02,                   /*bDescriptorType*/
		0x20, 0x00,           /*wTotalLength*/
		0x01,                   /*bNumInterfaces*/
		0x01,                   /*bConfigurationValue*/
		0x00,                   /*iConfiguration*/
		0x80,                   /*bmAttributes*/
		0xFA,                   /*bMaxPower*/


		/*Interface Descriptor(0x09 byte)*/
		0x09,                   /*bLength             */
		0x04,                   /*bDescriptorType  */
		0x00,                   /*bInterfaceNumber*/
		0x00,                   /*bAlternateSetting*/
		0x02,                   /*bNumEndpoints:*/
		0x08,                   /*bInterfaceClass*/
		0x06,                   /*bInterfaceSubClass:*/
		0x50,                   /*bInterfaceProtocol*/
		0x00,                   /*iInterface*/

		/*Endpoint Descriptor (0x07 byte)*/
		0x07,                   /*bLength:*/
		0x05,                   /*bDescriptorType:*/
		0x81,                   /*bEndpointAddress*/
		0x02,                   /*bmAttributes*/
		0x40, 0x00,           /*wMaxPacketSize*/
		0x00,                   /*bInterval: ignored*/
		                   

		/*Endpoint Descriptor (0x07 byte)*/
		0x07,                   /*bLength:*/
		0x05,                   /*bDescriptorType:*/
		0x02,                   /*bEndpointAddress*/
		0x02,                   /*bmAttributes*/
		0x40, 0x00,           /*wMaxPacketSize*/
		0x00,                   /*bInterval: ignored*/

};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 4 byte)
*
********************************************/
code UINT8   USB_LanguageIdString[] =
{
		
		0x04,              /*bLength*/
		0x03,              /*bDescriptorType: STRING*/
		0x09, 0x04,     /*bString: English (US)*/
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 32 byte)
*
********************************************/
code UINT8   USB_ManufacturerString[] =
{

		0x20,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'a', 0x00,     
		't', 0x00,
		'm', 0x00,
		'e', 0x00,
		'l', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 48 byte)
*
********************************************/
code UINT8   USB_ProductString[] =
{
		
		0x30,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'a',0x00,     
		't',0x00,
		'm',0x00,
		'e',0x00,
		'l',0x00,
		'a',0x00,
		't',0x00,
		'8',0x00,
		'9',0x00,
		'c',0x00,
		'5',0x00,
		'1',0x00,
		's',0x00,
		'n',0x00,
		'd',0x00,
		'1',0x00,
		'c',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 18 byte)
*
********************************************/
code UINT8   USB_SerialNumberString[] =
{
		
		0x12,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'0', 0x00,     /*bString: 01.00.00*/
		'1', 0x00,
		'.', 0x00,
		'0', 0x00,
		'0', 0x00,
		'.', 0x00,
		'0', 0x00,
		'0', 0x00,
};

/**************************************************************************
 *                                                                                                                                 
 *  Function Name: usb_init                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/

void usb_init(void ){

       Pll_ndiv(1);
       Pll_rdiv(11);
       Pll_enable();
       Set_Usb_clock(1);
       Usb_enable();      /*Enable usb controller*/	
       Reset_All_Ep();   
       Stop_Reset_All_Ep();
       Usb_sel_ep(0);   /*select ep0*/ 
	 UEPCONX = 0x80;
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name: usb_task                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_task (void)
{



	if (Usb_reset_event())                      
	{
    		Clear_Usb_reset_event();	
      		printf("USB RESET detection\n ");
	}

	if (Usb_ep_int_event() == 0x01)
	{
		
		Usb_sel_ep(0);                
		if (Usb_setup_packet_receive())
		{
			
			usb_do_enumeration();
		}
    	}
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_do_enumeration                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_do_enumeration (void)
{ 

	Usb_sel_ep(0x00);
	UsbCtrlCmd.bmRequestType = UEPDATX;
	UsbCtrlCmd.bRequest =  UEPDATX;
	UsbCtrlCmd.wValue = UEPDATX;
	UsbCtrlCmd.wValue |= UEPDATX<<8;
	UsbCtrlCmd.wIndex  =UEPDATX;
	UsbCtrlCmd.wIndex |=UEPDATX<<8;
	UsbCtrlCmd.wLength = UEPDATX;
	UsbCtrlCmd.wLength |= UEPDATX<<8;

	 #if 1
	printf("UsbCtrlCmd.bmRequestType = %x\n",UsbCtrlCmd.bmRequestType);
	printf("UsbCtrlCmd.bRequest=%x\n",UsbCtrlCmd.bRequest);
	printf("UsbCtrlCmd.wValue=%x\n",UsbCtrlCmd.wValue);
	printf("UsbCtrlCmd.wIndex=%x\n",UsbCtrlCmd.wIndex);
	printf("UsbCtrlCmd.wLength=%x\n",UsbCtrlCmd.wLength);
	#endif
	
	if((UsbCtrlCmd.bmRequestType&0x20) == 0x00){
		
		usb_standard_request();
		
	}
	else if((UsbCtrlCmd.bmRequestType&0x20) == 0x20){ 
		usb_class_request();

	}
}



/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_standard_request                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_standard_request(void)
{ 

	switch (UsbCtrlCmd.bRequest)                 
  	{

		case USB_GET_DESCRIPTOR:
			
			usb_GetDescriptor();
		break;
			
		case USB_GET_CONFIGURATION:
			
			usb_get_configuration();
		break;

 		case USB_SET_ADDRESS:
			usb_set_address();
		break;

  		case USB_SET_CONFIGURATION:
			usb_set_configuration();
		break;

		case USB_CLEAR_FEATURE:
			usb_clear_feature();
		break;

		case USB_SET_FEATURE:
			usb_set_feature();
		break;

		case USB_GET_STATUS:
			usb_get_status();
		break;

		
		default:	  
		break;
  }
 
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_class_request                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_class_request(void)
{ 


	switch (UsbCtrlCmd.bRequest)                 
  	{

		case HID_SET_IDLE:
			hid_set_idle();
			break;
		case USB_GET_MAX_LUN:
			printf("USB_GET_MAX_LUN\n");
			usb_get_max_lun();
			break;
		default:
		break;
	}


}
/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_GetDescriptor                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void   usb_GetDescriptor(void){
	
	UINT8 data_to_send;
	UINT8 des_type,i;
	UINT8 desc_ptr = 0; 
	UINT8 zeroflag = 0;
	UINT8 ret;
	Usb_set_DIR_bit();                           

	des_type = UsbCtrlCmd.wValue>>8;/*read  wValue msb*/
	switch (des_type)
	{
		case USB_DEVICE_DESC:
		{

		
			G_pucCtrlDataPointer = (UINT8 *)USB_DeviceDescriptor;
			data_to_send = sizeof(USB_DeviceDescriptor);
			break;
		}

		case USB_CONFIGURATION_DESC:
		{
			
			G_pucCtrlDataPointer = (UINT8 *)USB_ConfigurationDescriptor;
			data_to_send = sizeof(USB_ConfigurationDescriptor);
			break;
		}

    		case USB_STRING_DESC:
    		{

			
			des_type = UsbCtrlCmd.wValue & 0xff;
			switch (des_type)
			{
				case USB_LANG_ID:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_LanguageIdString;
					data_to_send = sizeof(USB_LanguageIdString); 	 
					break;
				}

				case USB_MAN_INDEX:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_ManufacturerString;
					data_to_send = sizeof(USB_ManufacturerString);		  
					break;
				}
				case USB_PROD_INDEX:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_ProductString;
					data_to_send = sizeof(USB_ProductString);		  
					break;
				}
				case USB_SN_INDEX:
				{
					G_pucCtrlDataPointer = (UINT8 *)USB_SerialNumberString;
					data_to_send = sizeof(USB_SerialNumberString);
					break;
				}
				default:
				{
					return;
				}
      			}
			break;
    		}
		default:
		{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清一级片| 国产午夜亚洲精品理论片色戒| 亚洲综合男人的天堂| 99国产精品国产精品毛片| 亚洲国产va精品久久久不卡综合| 日韩视频免费观看高清完整版 | 亚洲天堂免费看| 欧美优质美女网站| 国内成人免费视频| 亚洲精品v日韩精品| 欧美精品一区二区三区视频| 成人app在线| 亚洲精品成人精品456| 精品免费日韩av| 99r国产精品| 日韩激情一二三区| 亚洲日本欧美天堂| 精品999在线播放| 欧美性猛交一区二区三区精品| 国产一区二区三区四| 午夜精品久久久久久久久久| 国产日本亚洲高清| 欧美日韩aaaaaa| 99久久99久久综合| 国产美女精品在线| 蜜桃视频一区二区三区| 亚洲一区二区不卡免费| 亚洲欧美一区二区不卡| 国产精品理伦片| 国产精品免费免费| 中文在线一区二区| 欧美国产一区在线| 国产性色一区二区| 欧美国产日本视频| 欧美成人免费网站| 精品国产一区二区精华| 26uuu精品一区二区在线观看| 日韩欧美美女一区二区三区| 日韩精品中文字幕在线不卡尤物| 欧美精品色综合| 欧美片在线播放| 欧美高清视频www夜色资源网| 欧美喷水一区二区| 日韩欧美高清在线| www国产精品av| 国产无一区二区| 国产精品久久久久影院老司| 亚洲色大成网站www久久九九| 亚洲欧美成人一区二区三区| 亚洲小说欧美激情另类| 日韩激情视频网站| 久久精品免费观看| 高清成人免费视频| 色综合天天视频在线观看| 一本色道亚洲精品aⅴ| 欧美日韩卡一卡二| 欧美成人伊人久久综合网| 国产亚洲一区二区三区在线观看| 欧美激情一区三区| 亚洲精品国久久99热| 日韩有码一区二区三区| 麻豆国产精品官网| 成人av集中营| 精品视频全国免费看| 日韩女优毛片在线| 国产精品乱人伦中文| 亚洲成人在线观看视频| 国内精品国产三级国产a久久 | 国产高清精品网站| 99久久国产综合精品色伊| 欧美婷婷六月丁香综合色| 欧美大片在线观看| 日韩一区在线看| 日韩经典一区二区| 成人免费看视频| 欧美色网一区二区| 国产视频视频一区| 亚洲国产精品人人做人人爽| 久久激情五月激情| 99v久久综合狠狠综合久久| 欧美欧美欧美欧美首页| 亚洲国产精品av| 五月天网站亚洲| 成人午夜又粗又硬又大| 欧美浪妇xxxx高跟鞋交| 国产欧美一区二区精品秋霞影院| 亚洲国产一区二区三区青草影视| 久久99精品国产麻豆婷婷| 91视频一区二区三区| 精品国产91洋老外米糕| 亚洲一级电影视频| 国产精品1区2区3区在线观看| 欧美三级中文字幕在线观看| 国产人久久人人人人爽| 美女视频黄久久| 欧美午夜影院一区| 中文字幕av在线一区二区三区| 午夜精品国产更新| 97精品国产露脸对白| 欧美电影免费提供在线观看| 亚洲色图清纯唯美| 国产精品996| 日韩欧美亚洲另类制服综合在线| 一区二区三区产品免费精品久久75| 久久电影国产免费久久电影| 欧美日韩不卡视频| 伊人开心综合网| 国产成人福利片| 欧美成人a∨高清免费观看| 亚洲国产成人高清精品| 色呦呦国产精品| 欧美激情一区三区| 国内欧美视频一区二区| 欧美一区二区三区四区视频| 亚洲一区二区三区四区在线观看| av激情成人网| 久久久99精品久久| 久久成人久久鬼色| 欧美一区二区播放| 亚洲成人激情av| 在线视频国内自拍亚洲视频| 亚洲欧洲精品一区二区三区不卡| 国产精品一区二区久久精品爱涩| 日韩午夜精品电影| 乱一区二区av| 日韩视频免费直播| 久久国产精品色| 精品久久久久久综合日本欧美| 免费在线看成人av| 欧美一级片免费看| 免费观看在线综合色| 91精品在线观看入口| 免播放器亚洲一区| 日韩欧美色综合网站| 久久成人18免费观看| 精品国精品国产尤物美女| 精品一区二区综合| 精品欧美久久久| 国产一区二区影院| 亚洲国产精品精华液ab| 成人一区二区三区视频在线观看| 国产农村妇女毛片精品久久麻豆 | 欧美久久久久久久久久| 一区二区三区欧美| 在线视频国内自拍亚洲视频| 亚洲国产视频一区二区| 欧美人牲a欧美精品| 日韩—二三区免费观看av| 日韩欧美成人一区| 国产在线乱码一区二区三区| 久久久久久久久蜜桃| 国产精品18久久久久久久久 | 1024成人网色www| 一本大道av伊人久久综合| 亚洲一级二级三级在线免费观看| 欧美蜜桃一区二区三区| 免费人成在线不卡| 久久精品一区二区三区不卡牛牛 | 精品欧美黑人一区二区三区| 国产麻豆精品一区二区| 欧美国产97人人爽人人喊| 91亚洲国产成人精品一区二三| 一区二区久久久| 欧美一区二区三区的| 国产精品亚洲一区二区三区妖精| 亚洲欧洲色图综合| 欧美三级日韩在线| 经典三级视频一区| 国产精品传媒在线| 欧美裸体一区二区三区| 国产一二三精品| 亚洲色图清纯唯美| 欧美一级黄色片| 国产aⅴ综合色| 亚洲自拍偷拍麻豆| 欧美成人伊人久久综合网| av激情成人网| 日本视频免费一区| 国产欧美一区二区精品忘忧草| 在线看国产一区| 国产一区二区三区四区五区美女| 日韩美女视频一区二区| 日韩一区二区三区视频在线观看| 高潮精品一区videoshd| 亚洲国产aⅴ天堂久久| 久久久久久久久久久久电影 | 五月开心婷婷久久| 久久精品欧美日韩| 欧美性videosxxxxx| 国产精品亚洲午夜一区二区三区 | 国产最新精品精品你懂的| 成人免费一区二区三区视频| 91精品国产aⅴ一区二区| 成人免费精品视频| 麻豆精品一二三| 亚洲亚洲人成综合网络| 国产精品入口麻豆原神| 欧美大片日本大片免费观看| 在线观看91视频| 成人黄色一级视频|