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

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

?? isr.c

?? 對u盤硬件接口編程源碼
?? C
字號:
//#include <reg51.h>                /* special function register declarations   */ 
#include <stdio.h>
#include <string.h>

#include "d12ci.h"
#include "main.h"
#include "USB100.h"
#include "isr.h"
//#include "..\inc\44b.h"

#include "bulk_only.h"

/*
//*************************************************************************
//  Public static data
//*************************************************************************
*/

/* Control endpoint TX/RX buffers */
extern CONTROL_XFER ControlData;
extern EPPFLAGS bEPPflags;
	
// ISR static vars ;

unsigned char  EpBuf[EP2_PACKET_SIZE];
unsigned char  GenEpBuf[EP1_PACKET_SIZE];
IO_REQUEST  ioRequest;
unsigned char ioSize, ioCount;

unsigned long ClockTicks = 0;
unsigned char MainEpBuf[256];

extern unsigned char bulk_state;



void usb_isr()
{
	int i;
	unsigned int i_st;
	DISABLE;
	rI_ISPC=BIT_EINT2;//clear regiester

	//fn_usb_isr() begin;
	bEPPflags.bits.in_isr = 1;
	
	i_st = D12_ReadInterruptRegister();

	if(i_st != 0) {

		if(i_st & D12_INT_ENDP0IN){
			ep0_txdone();
			}
		if(i_st & D12_INT_ENDP0OUT){
			ep0_rxdone();
		}

		if(i_st & D12_INT_ENDP2IN){
			main_txdone();
			}
		if(i_st & D12_INT_ENDP2OUT){
			main_rxdone();
			}
	}
	bEPPflags.bits.in_isr = 0;

	ENABLE;
}

void bus_reset(void)
{
;
}
void dma_eot(void)
{
;
}
//---------------------------------
void ep0_rxdone(void)
{
	unsigned char ep_last, i;
	ep_last = D12_ReadLastTransactionStatus(0); // Clear interrupt flag
	if (ep_last & D12_SETUPPACKET) {

		ControlData.wLength = 0;
		ControlData.wCount = 0;
	//判斷端點是否滿,如是,則取出
		if( D12_ReadEndpoint(0, sizeof(ControlData.DeviceRequest),
			(unsigned char *)(&(ControlData.DeviceRequest))) != sizeof(DEVICE_REQUEST) ) {

			D12_SetEndpointStatus(0, 1);
			D12_SetEndpointStatus(1, 1);
			bEPPflags.bits.control_state = USB_IDLE;
			
			return;
		}

		Uart_Printf("bmRequestType=0x%x,bRequest=0x%x,wValue=0x%x,wIndex=0x%x,wLength=0x%x\n",
							ControlData.DeviceRequest.bmRequestType,
							ControlData.DeviceRequest.bRequest,
							ControlData.DeviceRequest.wValue,
							ControlData.DeviceRequest.wIndex,
							ControlData.DeviceRequest.wLength);


		// Acknowledge setup here to unlock in/out endp
	//向控制輸出端點發(fā)送應(yīng)答建立命令以重新使能下一個建立階段
		D12_AcknowledgeEndpoint(0);
		D12_AcknowledgeEndpoint(1);

		ControlData.wLength = ControlData.DeviceRequest.wLength;
		ControlData.wCount = 0;
	//需要證實控制傳輸是控制讀還是寫,如果是讀:
	//如果控制傳輸是一個控制讀類型那就是說器件需要在下一個數(shù)據(jù)階段向
	//主機發(fā)回數(shù)據(jù)包.MCU需要設(shè)置一個標(biāo)志以指示USB 設(shè)備現(xiàn)在正處于傳輸
	//模式即準(zhǔn)備在主機發(fā)送請求時發(fā)送數(shù)據(jù)

		if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
			bEPPflags.bits.setup_packet = 1;
			bEPPflags.bits.control_state = USB_IDLE;		/* get command */
		}
	//如果是寫
		else {
			if (ControlData.DeviceRequest.wLength == 0) {
				bEPPflags.bits.setup_packet = 1;
				bEPPflags.bits.control_state = USB_IDLE;		/* set command */
			}
			else {
				if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE) {
					bEPPflags.bits.control_state = USB_IDLE;
					D12_SetEndpointStatus(0, 1);
					D12_SetEndpointStatus(1, 1);
				}
				else {
					bEPPflags.bits.control_state = USB_RECEIVE;	/* set command with OUT token */
				}
			} // set command with data
		} // else set command
	} // if setup packet

	else if (bEPPflags.bits.control_state == USB_RECEIVE) {
		i =	D12_ReadEndpoint(0, EP0_PACKET_SIZE,
			ControlData.dataBuffer + ControlData.wCount);

		ControlData.wCount += i;
		if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength) {
			bEPPflags.bits.setup_packet = 1;
			bEPPflags.bits.control_state = USB_IDLE;
		}
	}

	else {
		bEPPflags.bits.control_state = USB_IDLE;
	}

}
//----------------------------------
void ep0_txdone(void)
{
	short i = ControlData.wLength - ControlData.wCount;
	D12_ReadLastTransactionStatus(1); // Clear interrupt flag
	if (bEPPflags.bits.control_state != USB_TRANSMIT) 
		return;
	//-------------------------
	if( i >= EP0_PACKET_SIZE) {
		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData + ControlData.wCount);
		ControlData.wCount = ControlData.wCount + EP0_PACKET_SIZE;

		bEPPflags.bits.control_state = USB_TRANSMIT;
	}
	else if( i != 0) {
		D12_WriteEndpoint(1, i, ControlData.pData + ControlData.wCount);
		ControlData.wCount = ControlData.wCount + i;

		bEPPflags.bits.control_state = USB_IDLE;
	}
	else if (i == 0){
		D12_WriteEndpoint(1, 0, 0); // Send zero packet at the end ???

		bEPPflags.bits.control_state = USB_IDLE;
	}

}

void main_txdone(void)
{

	D12_ReadLastTransactionStatus(5); /* Clear interrupt flag */

	switch(bulk_state){
		case BULK_DATA_TRANS:
			TransDataGoOn();
			break;
		case BULK_DATA_END:
			TransmitCSW();
			break;
		case BULK_REQEST_TRANS:
			TransRequestGoOn();
			break;
		case BULK_CSW_END:
			break;
		default:	return;
		}

}

void main_rxdone(void)
{
	int i;
	D12_ReadLastTransactionStatus(4); /* Clear interrupt flag */
	
	D12_ReadEndpoint(4, 64, EpBuf);
	for(i=0;i<0x40;i++) Uart_Printf("%x ",EpBuf[i]);
	if((bulk_state != BULK_DATA_RECIEVE) &&(EpBuf[0] == 0x55)) InterpretCBW();
	else Trans_Data2PC();

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美a一区二区| kk眼镜猥琐国模调教系列一区二区| 欧美一区二区三区婷婷月色| 亚洲精品一区二区三区福利| 精品国产电影一区二区| 国产精品国产三级国产有无不卡| 国产精品视频一二| 裸体健美xxxx欧美裸体表演| 蜜乳av一区二区| 一区二区免费看| 99r国产精品| 久99久精品视频免费观看| 99re热这里只有精品视频| 精品三级在线观看| 亚洲一二三四在线| 91视频在线观看| 国产三级久久久| 久久99国产精品麻豆| 91精品国产综合久久久久久久| 欧美性大战xxxxx久久久| 中文字幕av一区二区三区免费看| 国产精品国产三级国产aⅴ原创 | 欧美福利视频一区| 中文字幕在线观看不卡视频| 亚洲精品成人a在线观看| 大尺度一区二区| 国产亚洲欧洲一区高清在线观看| 亚洲麻豆国产自偷在线| 成人av午夜电影| 国产日本欧美一区二区| 亚洲成人免费影院| 91搞黄在线观看| 一区二区三区免费| 欧美怡红院视频| 亚洲成a人片在线不卡一二三区| 韩国精品主播一区二区在线观看 | 免费av网站大全久久| 欧美日韩国产一级二级| 国产欧美日韩三级| 亚洲va国产天堂va久久en| 国内精品国产成人| 日本一区二区三区在线不卡| 成人精品一区二区三区中文字幕| 欧美日韩欧美一区二区| 日韩av网站免费在线| 欧美二区三区的天堂| 蜜臀av一区二区| 久久午夜电影网| 99精品在线免费| 久久精品视频免费观看| 成人综合在线观看| 亚洲日本va在线观看| 国产乱国产乱300精品| 欧美激情艳妇裸体舞| 老司机午夜精品99久久| 久久久国产一区二区三区四区小说 | 久久精品一区二区三区四区| 夜夜嗨av一区二区三区网页| 欧美亚洲综合另类| 亚洲视频精选在线| 欧美精品视频www在线观看| 麻豆成人免费电影| 亚洲国产精品ⅴa在线观看| 色哟哟国产精品免费观看| 亚洲国产精品一区二区久久恐怖片| 高清成人在线观看| 一区二区三区在线观看网站| 欧美久久免费观看| 国产成a人亚洲| 亚洲成人资源网| 久久精品一区二区三区四区| 欧美自拍偷拍午夜视频| 久久99国产乱子伦精品免费| 一区在线观看免费| 91精品国产综合久久精品图片| 夜夜精品浪潮av一区二区三区| 91蜜桃网址入口| 久久99久久99小草精品免视看| 日韩一区二区中文字幕| av不卡一区二区三区| 六月婷婷色综合| 一区二区成人在线| 国产精品亲子乱子伦xxxx裸| 国模冰冰炮一区二区| 国产无人区一区二区三区| 色综合久久综合中文综合网| 亚洲图片激情小说| 精品国产99国产精品| 国产一区二区三区四区五区入口| 亚洲精品一区二区三区在线观看 | 国产在线不卡一区| 国产亚洲欧美一级| 欧美一级理论性理论a| 91视频国产观看| 国产精品一区二区三区乱码| 肉丝袜脚交视频一区二区| 亚洲三级久久久| 欧美精彩视频一区二区三区| 91日韩在线专区| 国产精品18久久久久久久网站| 国产精品久久久久久户外露出 | 欧美久久久久久久久中文字幕| 麻豆成人91精品二区三区| 一区二区三区欧美在线观看| 国产精品麻豆欧美日韩ww| 久久青草欧美一区二区三区| 国产成a人亚洲精品| 国产成a人无v码亚洲福利| 狠狠久久亚洲欧美| 国产一区在线观看麻豆| 精品制服美女丁香| 精品一区二区在线播放| 亚洲欧洲av一区二区三区久久| 色视频一区二区| 久久福利视频一区二区| 蜜臀av国产精品久久久久| 午夜久久久影院| 亚洲aaa精品| 蜜桃视频免费观看一区| 美腿丝袜在线亚洲一区| 日本美女视频一区二区| 美女脱光内衣内裤视频久久影院| 国产精品国产三级国产三级人妇 | 亚洲成人免费在线| 午夜精品123| 美国三级日本三级久久99| 亚洲欧美日韩久久| 久久丝袜美腿综合| 国产清纯白嫩初高生在线观看91| 欧美羞羞免费网站| 欧美精品久久久久久久多人混战 | 精品一区二区精品| 国产一区二区三区免费播放| 亚欧色一区w666天堂| 国产欧美日韩亚州综合 | 中文久久乱码一区二区| 中文字幕一区不卡| 亚洲综合成人在线| 美女脱光内衣内裤视频久久影院| 亚洲精品老司机| 肉色丝袜一区二区| 亚洲国产你懂的| 全部av―极品视觉盛宴亚洲| 精品一区二区三区视频在线观看| 亚洲一区自拍偷拍| 久久精品国产77777蜜臀| 粉嫩在线一区二区三区视频| 精品在线视频一区| jizzjizzjizz欧美| 欧美日韩国产综合视频在线观看| 97成人超碰视| 国产91丝袜在线18| 欧美午夜片在线看| xnxx国产精品| 精品av久久707| 一区二区中文视频| 日本不卡一区二区三区高清视频| 亚洲午夜国产一区99re久久| 国内精品国产成人国产三级粉色| 美女一区二区久久| 色偷偷成人一区二区三区91| 日韩一卡二卡三卡| 亚洲美腿欧美偷拍| 国产精品中文欧美| 欧美群妇大交群中文字幕| 欧美国产亚洲另类动漫| 日韩av在线发布| 久久97超碰国产精品超碰| 色一情一乱一乱一91av| 久久精品视频一区二区三区| 首页亚洲欧美制服丝腿| 99久久国产综合精品女不卡| xf在线a精品一区二区视频网站| 久久久国产精华| 亚洲一区二区三区在线看| 日韩在线一区二区| 色综合久久久网| 久久久91精品国产一区二区精品| 日本一二三不卡| 免费成人小视频| 欧美日韩国产综合草草| 日韩欧美一级二级三级| 2024国产精品| 欧美激情一区二区三区四区| 亚洲天堂中文字幕| 亚洲国产欧美日韩另类综合 | 日韩毛片精品高清免费| 国产一区二区在线观看免费| 成人av在线播放网站| 久久久久久久久一| 亚洲三级久久久| 成人av在线资源| 欧美激情综合在线| 亚洲va韩国va欧美va| 99re这里只有精品6| 国产三级精品三级| 成人免费毛片a| 国产日韩欧美激情| 国产伦精品一区二区三区免费 | 久久99日本精品|