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

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

?? usb.c

?? ATMEL AT89C51SND1 IDE TO USB READER
?? C
?? 第 1 頁 / 共 2 頁
字號:
			return;
		}
	}


	if (UsbCtrlCmd.wLength > data_to_send)
	{
		if ((data_to_send % 8) == 0)
		{
			zeroflag = TRUE;                          
		}
		else
		{
			zeroflag = FALSE;                         
		}
	}
	else
	{
		data_to_send = UsbCtrlCmd.wLength;       
	}
	Usb_clr_rxsetup_bit() ;  

	while (data_to_send > 8)
	{

		Usb_sel_ep(0);
		for(i=0;i<8;i++){
			UEPDATX = G_pucCtrlDataPointer[desc_ptr] ;
			desc_ptr ++;
		}

		data_to_send = data_to_send - 8;
		ret = usb_send_data();
		if (ret == 1)return;

	}

	Usb_sel_ep(0); 
	for(i=0;i<data_to_send;i++){

		UEPDATX = G_pucCtrlDataPointer[desc_ptr] ;
		desc_ptr ++;
	}	

	data_to_send = 0;
	ret = usb_send_data();
	if (ret == 1)return;

	if (zeroflag == TRUE)
	{
		ret = usb_send_data();
		if (ret == 1)return;
	}
	while ((!(Usb_receive_out_data())) && (!(Usb_setup_packet_receive())));

	if (Usb_setup_packet_receive())
	{
		return;
	}

	if (Usb_receive_out_data())
	{
		Usb_clear_DIR_bit();                  
		Usb_clear_RXOUTB0_bit();
	}

}
/**************************************************************************
*                                                                                                                                 
*  Function Name:usb_send_data                                                                               
*                                                                                                                          
*  Descriptions:                                                       
*                                                                        
*  Arguments:                                                           
*                                                                       
*  Returns: None                                                         
*                                          
**************************************************************************/
UINT8 usb_send_data (void)
{


	Usb_set_TXRDY_bit(); /*send zero packet*/ 
	while ((!(Usb_receive_out_data())) && (!(Usb_send_data_complete())));
	if ((Usb_receive_out_data()))             
	{
		Usb_clear_RXOUTB0_bit();
		return 1;
	}
	if (Usb_send_data_complete())
	{
		Usb_clear_TXCMPL_bit();
	}
	return 0;
}
/**************************************************************************
*                                                                                                                                 
*  Function Name:usb_set_address                                                                               
*                                                                                                                          
*  Descriptions:                                                       
*                                                                        
*  Arguments:                                                           
*                                                                       
*  Returns: None                                                         
*                                          
**************************************************************************/
void usb_set_address (void)
{

	UINT8 add;

	Usb_clear_DIR_bit();
	add = UsbCtrlCmd.wValue&0x00ff;                    
	Usb_set_EP0RST();	
	Usb_clr_EP0RST();	
	Usb_clr_rxsetup_bit();                    
	Usb_set_FADDEN_bit();

	Usb_set_TXRDY_bit();    
	while (!(Usb_send_data_complete()));
	Usb_clear_TXCMPL_bit();
	Usb_set_USBADDR(add);

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


	Usb_clr_rxsetup_bit();
	Usb_set_DIR_bit();


	if (USBCON & 0x02)
	{
		UEPDATX = 1;
	}
	else
	{
		UEPDATX = 0;
	}

	Usb_set_TXRDY_bit();
	while (!(Usb_send_data_complete()));
	Usb_clear_TXCMPL_bit();
	while (!(Usb_receive_out_data()));
	Usb_clear_RXOUTB0_bit();
	Usb_clear_DIR_bit();

}

/**************************************************************************
*                                                                                                                                 
*  Function Name:usb_set_configuration                                                                               
*                                                                                                                          
*  Descriptions:                                                       
*                                                                        
*  Arguments:                                                           
*                                                                       
*  Returns: None                                                         
*                                          
**************************************************************************/
void usb_set_configuration (void)
{
	UINT8 configuration_number;

	configuration_number = UsbCtrlCmd.wValue&0x00ff;
	Usb_clear_DIR_bit();
	Usb_clr_rxsetup_bit();
	Usb_set_TXRDY_bit();                          /* send a ZLP for STATUS phase */
	if (configuration_number == 0)
	{
		Usb_clear_CONFG();
	}
	else
	{
		Usb_set_CONFG();
	}
	while (!Usb_send_data_complete());
	Usb_clear_TXCMPL_bit();
	Usb_sel_ep(0x01);                     /* endpoints configuration */
	UEPCONX = 0x86 ;
	Usb_sel_ep(0x02);
	UEPCONX = 0x82;

}

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



	if (UsbCtrlCmd.bmRequestType == 0x00)
	{
		Usb_clr_rxsetup_bit();
		Usb_set_STALLRQ_bit();
		while (!(Usb_stall_sent_complete()));
		Usb_clear_STALLRQ_bit();
	}

	if (UsbCtrlCmd.bmRequestType == 0x01)
	{
		Usb_clr_rxsetup_bit();
		Usb_set_STALLRQ_bit();
		while (!(Usb_stall_sent_complete()));
		Usb_clear_STALLRQ_bit();
	}

	if (UsbCtrlCmd.bmRequestType == 0x02)
	{

		if ((UsbCtrlCmd.wValue&0xff) == 0x00)/*feature selector*/
		{

			switch ((UsbCtrlCmd.wIndex&0xff)&0x7f)           /*endpoint selector*/
			{

			case 0x00:
				{
					Usb_clr_rxsetup_bit();
					Usb_set_TXRDY_bit();
					while (!(Usb_send_data_complete()));
					Usb_clear_TXCMPL_bit();
					break;
				}
			case 0x01:
				{

					Usb_sel_ep(1);
					Usb_clear_STALLRQ_bit();
					Usb_set_EP1RST();
					Usb_clr_EP1RST();
					ep_status[1] =0x00; 
					Usb_sel_ep(0);
					Usb_clr_rxsetup_bit();
					Usb_set_TXRDY_bit();    
					while (!(Usb_send_data_complete()));
					Usb_clear_TXCMPL_bit();
					break;
				}
			case 0x02:
				{

					Usb_sel_ep(2);
					Usb_clear_STALLRQ_bit();
					Usb_set_EP2RST();
					Usb_clr_EP2RST();
					ep_status[2] = 0x00;
					Usb_sel_ep(0);
					Usb_clr_rxsetup_bit();
					Usb_set_TXRDY_bit();    
					while (!(Usb_send_data_complete()));
					Usb_clear_TXCMPL_bit();
					break;
				}
			default:
				{
					Usb_clr_rxsetup_bit();
					Usb_set_STALLRQ_bit();
					while (!(Usb_stall_sent_complete()));
					Usb_clear_STALLRQ_bit();
					break;
				}
			}
		}
	}

}

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


	if (UsbCtrlCmd.bmRequestType == 0x00)
	{
		Usb_clr_rxsetup_bit();
		Usb_set_STALLRQ_bit();
		while (!(Usb_stall_sent_complete()));
		Usb_clear_STALLRQ_bit();
	}
	if (UsbCtrlCmd.bmRequestType == 0x01)
	{

		Usb_clr_rxsetup_bit();
		Usb_set_STALLRQ_bit();
		while (!(Usb_stall_sent_complete()));
		Usb_clear_STALLRQ_bit();
	}


	if (UsbCtrlCmd.bmRequestType == 0x02)
	{

		if ((UsbCtrlCmd.wValue&0xff) == 0x00)/*feature selector*/
		{


			switch (UsbCtrlCmd.wIndex & 0x7f) // check wIndex 
			{
			case 0x01:
				{
					Usb_sel_ep(1);
					Usb_set_STALLRQ_bit();
					Usb_sel_ep(0);
					ep_status[1] = 0x01;
					Usb_clr_rxsetup_bit();
					Usb_set_TXRDY_bit();
					while (!(Usb_send_data_complete()));
					Usb_clear_TXCMPL_bit();
					break;
				}
			case 0x02:
				{
					Usb_sel_ep(2);
					Usb_set_STALLRQ_bit();
					Usb_sel_ep(0);
					ep_status[2] = 0x01;
					Usb_clr_rxsetup_bit();
					Usb_set_TXRDY_bit();
					while (!(Usb_send_data_complete()));
					Usb_clear_TXCMPL_bit();
					break;
				}
			default:
				{

					break;
				}
			}
		}
	}
}

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


	UINT8 wIndex;
	Usb_clr_rxsetup_bit();
	Usb_set_DIR_bit();
	switch(UsbCtrlCmd.bmRequestType) 
	{
	case 0x80:
		{
			UEPDATX = 0x01;
			break;
		}
	case 0x81:
		{

			UEPDATX = 0x00;
			break;
		}
	case 0x82:
		{
			wIndex = UsbCtrlCmd.wIndex & 0x7f;
			UEPDATX = ep_status[wIndex];
			break;
		}
	}
	UEPDATX = 0x00;
	Usb_set_TXRDY_bit();
	while ((!(Usb_send_data_complete())) || (Usb_setup_packet_receive()));
	Usb_clear_TXCMPL_bit();
	while ((!(Usb_receive_out_data())) || (Usb_setup_packet_receive()));
	Usb_clear_DIR_bit();                  
	Usb_clear_RXOUTB0_bit();

}

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


	Usb_clear_DIR_bit();
	Usb_clr_rxsetup_bit();
	Usb_set_TXRDY_bit();
	while (!(Usb_send_data_complete()));
	Usb_clear_TXCMPL_bit();
}

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

	Usb_clr_rxsetup_bit();
	Usb_set_DIR_bit();
	UEPDATX = 0x00;
	Usb_set_TXRDY_bit();
	while ((!(Usb_send_data_complete())) || (Usb_setup_packet_receive()));
	Usb_clear_TXCMPL_bit();
	while ((!(Usb_receive_out_data())) || (Usb_setup_packet_receive()));
	Usb_clear_DIR_bit();                  
	Usb_clear_RXOUTB0_bit();

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区视频在线| 国产清纯白嫩初高生在线观看91 | 成人中文字幕合集| 亚洲色图在线看| 精品久久久久久久久久久久久久久 | 国产精品国产自产拍高清av王其| 欧美在线观看视频一区二区| 国产精品亚洲一区二区三区在线| 亚洲国产日韩在线一区模特| 欧美国产激情一区二区三区蜜月| 91精品黄色片免费大全| 色婷婷精品大在线视频| 成人午夜在线视频| 国产在线国偷精品免费看| 午夜日韩在线电影| 亚洲精品午夜久久久| 国产欧美一区二区三区沐欲| 日韩一级免费一区| 欧美浪妇xxxx高跟鞋交| eeuss鲁一区二区三区| 国产精品主播直播| 久色婷婷小香蕉久久| 日韩中文字幕一区二区三区| 一区二区三区久久| 亚洲嫩草精品久久| 国产精品不卡一区| 国产亲近乱来精品视频| xnxx国产精品| 欧美大片日本大片免费观看| 欧美精品99久久久**| 91国产福利在线| 91福利国产精品| 91久久精品网| 欧美性极品少妇| 在线观看日韩毛片| 欧美综合亚洲图片综合区| 91色porny蝌蚪| 91年精品国产| 日本伦理一区二区| 欧美在线你懂的| 欧美少妇xxx| 欧美性色aⅴ视频一区日韩精品| 欧美在线免费视屏| 欧美精品自拍偷拍动漫精品| 欧美久久一二区| 日韩一区二区麻豆国产| 日韩一区二区在线看| 欧美一区二区在线免费播放| 日韩一区二区三区视频| 欧美xxxxxxxx| 国产欧美视频一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 最新国产成人在线观看| 一区二区三区日韩欧美精品| 亚洲一区二区三区四区五区黄| 日韩在线观看一区二区| 日韩va欧美va亚洲va久久| 久久99国产精品尤物| 国产精品综合av一区二区国产馆| 国产成人鲁色资源国产91色综 | 精品乱人伦小说| 久久久久久久久蜜桃| 中文乱码免费一区二区| 亚洲啪啪综合av一区二区三区| 亚洲国产一区在线观看| 日本中文字幕一区二区有限公司| 久久er精品视频| 成人免费视频国产在线观看| 日本丰满少妇一区二区三区| 正在播放亚洲一区| 国产香蕉久久精品综合网| 亚洲手机成人高清视频| 午夜激情综合网| 国产黄人亚洲片| 色94色欧美sute亚洲13| 日韩欧美123| 国产精品伦理在线| 五月天国产精品| 国产精品 欧美精品| 在线这里只有精品| 日韩免费视频一区| 亚洲三级在线看| 麻豆国产欧美日韩综合精品二区| www.色精品| 日韩欧美国产综合| 亚洲欧美日韩中文字幕一区二区三区| 亚洲福中文字幕伊人影院| 国产在线精品国自产拍免费| 日本精品一级二级| 久久久久久久电影| 午夜一区二区三区视频| 国产一区二区不卡在线| 欧美日韩在线电影| 日本一区二区免费在线| 日韩高清在线电影| 色哟哟日韩精品| 久久久精品影视| 日本成人中文字幕在线视频| 99国产精品久久久久久久久久久| 欧美一区二区人人喊爽| 亚洲欧美日韩国产中文在线| 国产剧情一区二区| 欧美精品久久久久久久久老牛影院| 欧美极品另类videosde| 美女精品自拍一二三四| 欧美性受xxxx| 综合分类小说区另类春色亚洲小说欧美 | 欧美一a一片一级一片| 久久老女人爱爱| 蜜臀久久99精品久久久画质超高清| 91视视频在线观看入口直接观看www| 精品国产髙清在线看国产毛片| 亚洲资源在线观看| 不卡一二三区首页| 欧美激情一区二区三区蜜桃视频| 丝袜亚洲另类欧美综合| 不卡电影一区二区三区| 久久久午夜电影| 久久国产乱子精品免费女| 色吧成人激情小说| 亚洲欧美日韩人成在线播放| 成人动漫一区二区三区| 久久久久久久久蜜桃| 久久不见久久见免费视频7| 欧美一区二区三区免费观看视频| 亚洲乱码国产乱码精品精98午夜| 大胆欧美人体老妇| 欧美韩国日本不卡| 国产精品18久久久久久vr| 欧美xxx久久| 黄一区二区三区| 欧美大胆人体bbbb| 首页国产欧美日韩丝袜| 欧美日韩大陆在线| 日韩av电影一区| 91精品国产91热久久久做人人| 午夜精品福利在线| 欧美一区二区三区不卡| 久久精品国产精品亚洲红杏| 日韩女优av电影| 久久爱www久久做| 久久精品日韩一区二区三区| 国产91精品精华液一区二区三区 | 久久精品网站免费观看| 国产麻豆视频精品| 国产欧美综合在线观看第十页| 国产精品一卡二卡| 国产精品久久久久影院亚瑟 | 国产欧美一区二区精品秋霞影院 | 精品久久一区二区三区| 久久精品国产999大香线蕉| 精品久久久久久综合日本欧美| 国产一区二区美女诱惑| 国产日韩欧美亚洲| 99精品欧美一区二区三区小说 | 午夜电影一区二区| 欧美一级高清片| 国产成人亚洲综合a∨猫咪| 国产精品久久久久久久裸模| 一本一道波多野结衣一区二区| 亚洲午夜视频在线| 日韩欧美国产综合| www.欧美.com| 亚洲国产另类精品专区| 日韩一区二区三区电影在线观看 | 一区二区三区在线视频播放| 欧美日韩一级黄| 久久精品99久久久| 国产精品嫩草久久久久| 欧美三级电影在线观看| 蜜臀a∨国产成人精品| 国产免费观看久久| 欧美日韩一区二区欧美激情| 久久91精品久久久久久秒播| 成人免费在线播放视频| 欧美巨大另类极品videosbest | 在线综合+亚洲+欧美中文字幕| 久久66热偷产精品| 亚洲视频一区二区在线| 8x8x8国产精品| 成人激情小说网站| 午夜欧美视频在线观看 | 爽好久久久欧美精品| 久久精品欧美一区二区三区麻豆| 一本色道a无线码一区v| 麻豆精品在线视频| 伊人夜夜躁av伊人久久| 精品国产在天天线2019| 色婷婷激情综合| 国产一区二区在线观看免费| 亚洲综合一区二区三区| 久久精品视频一区| 91精品国产综合久久久久| 本田岬高潮一区二区三区| 免费黄网站欧美| 亚洲国产毛片aaaaa无费看| 国产精品免费视频观看| 日韩久久久精品| 在线观看视频91| 9i在线看片成人免费|