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

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

?? irq_int.c

?? 數碼顯示
?? C
字號:
//===================================================================//
//     Project Name : MOTOROLA-PDIUSBD12 USB-MCS CARD
//      Module Name : Master Firmware Program
//     Product Type : License
//      OS/Dev Tool : CodeWarrior Development Studio for HC(S)08 Microcontrollers
//  Original Author : Ming Zeng
//     Organization : Tsinghua University , DEP 
//    Original Date : Feb, 20, 2003
//             Addr : Tsinghua University, Beijing City
//              TEL : 
//            EMail : ming@zming.net
//          Website : http://www.zming.net
//		  Copyright : Copyright ZMing.net, 2003
//         Comments : 
//                    
//			
//===================================================================//

#include "HAL.H"
#include "USBD12.H"
#include "COMMON.H"
#include "USB110.H"
#include "USB.H"
#include "VDOR.H"

//***********************************************************
// 用于響應D12中斷的各個例程
//***********************************************************

void ISRx_Bus_Reset(void);

void ISRx_EP0_TxDone(void);
void ISRx_EP0_RxDone(void);

void ISRx_EP1_TxDone(void);
void ISRx_EP1_RxDone(void);

void ISRx_Main_TxDone(void);
void ISRx_Main_RxDone(void);

void ISRx_DMA_EOT(void);

void ISRx_FN_USB(void);


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


extern COMMONFLAGS bCOMMONFlags;

/* Control endpoint TX/RX buffers */
extern CONTROL_XFER ControlData;
extern CODE_DATA CodeData;
/* General Buffer*/
unsigned char  GenBuf[GENBUF_LENGH];
// This variable is used for debugging
unsigned char nFlashPhase = 0;


/////////////////////////
//IRQ中斷子程序
/////////////////////////
interrupt 2 void IRQInterrupt() //外中斷,由D12產生
{
 	
	DisableInterrupts;
	INTSCR |= 0x02;//暫時關閉irq中斷
	bCOMMONFlags.bits.bUSB_Busy = 1;
	EnableInterrupts;
}

//////////////////////////////////////////
//////////////////////////////////////////
void ISRx_FN_USB()//對D12的USB處理
{
	unsigned int nST;
	
	bCOMMONFlags.bits.bIN_ISR = 1;
	
	nST = USBD12_ReadInterruptRegister();
	if(nST != 0)
    {
		if(nST & USBD12_INT_BUSRESET)
        {
			ISRx_Bus_Reset();
			bCOMMONFlags.bits.bBus_Reset = 1;
		}

		if(nST & USBD12_INT_EOT)
			ISRx_DMA_EOT();

		if(nST & USBD12_INT_SUSPENDCHANGE)
			bCOMMONFlags.bits.bSuspend = 1;

		if(nST & USBD12_INT_ENDP0IN)
			ISRx_EP0_TxDone();
		if(nST & USBD12_INT_ENDP0OUT)
			ISRx_EP0_RxDone();
		if(nST & USBD12_INT_ENDP1IN)
			ISRx_EP1_TxDone();
		if(nST & USBD12_INT_ENDP1OUT)
			ISRx_EP1_RxDone();
		if(nST & USBD12_INT_ENDP2IN)
			ISRx_Main_TxDone();
		if(nST & USBD12_INT_ENDP2OUT)
			ISRx_Main_RxDone();
	}

	bCOMMONFlags.bits.bIN_ISR = 0;
	bCOMMONFlags.bits.bUSB_Busy = 0;
	INTSCR &= 0xfd;//開啟irq中斷


}


void ISRx_Bus_Reset(void)
{
}

// OUT Packet
void ISRx_EP0_RxDone(void)
{

	unsigned char ep_last, i;

	ep_last = USBD12_ReadLastTransactionStatus(0); // Clear interrupt flag

	if(ep_last & USBD12_SETUPPACKET)
	{
		ControlData.wLength = 0;
		ControlData.wCount = 0;

		if( USBD12_ReadEndpoint(0,(unsigned char *)(&(ControlData.DeviceRequest))
		, sizeof(ControlData.DeviceRequest)) != sizeof(DEVICE_REQUEST) )
		{
			USBD12_SetEndpointStatus(0, 1);
			USBD12_SetEndpointStatus(1, 1);
			bCOMMONFlags.bits.bControl_State = USB_IDLE;
			
			return;
		}

		ControlData.DeviceRequest.wValue = SWAP(ControlData.DeviceRequest.wValue);
		ControlData.DeviceRequest.wIndex = SWAP(ControlData.DeviceRequest.wIndex);
		ControlData.DeviceRequest.wLength = SWAP(ControlData.DeviceRequest.wLength);

		// Acknowledge setup here to unlock in/out endp
		USBD12_AcknowledgeEndpoint(0);
		USBD12_AcknowledgeEndpoint(1);

		ControlData.wLength = ControlData.DeviceRequest.wLength;
		ControlData.wCount = 0;

		if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
		{
			bCOMMONFlags.bits.bSetup_Packet = 1;
			bCOMMONFlags.bits.bControl_State = USB_IDLE;		/* get command */
		}
		else
		{
			if (ControlData.DeviceRequest.wLength == 0)
			{
				bCOMMONFlags.bits.bSetup_Packet = 1;
				bCOMMONFlags.bits.bControl_State = USB_IDLE;		/* set command */
			}
			else
			{
				if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE)
				{
					bCOMMONFlags.bits.bControl_State = USB_IDLE;
					USBD12_SetEndpointStatus(0, 1);
					USBD12_SetEndpointStatus(1, 1);
				}
				else
				{
					bCOMMONFlags.bits.bControl_State = USB_RECEIVE;	/* set command with OUT token */
				}
			} // set command with data
		} // else set command
	} // if setup packet
	else if (bCOMMONFlags.bits.bControl_State == USB_RECEIVE)
	{
		i =	USBD12_ReadEndpoint(0, ControlData.dataBuffer + ControlData.wCount,
			EP0_PACKET_SIZE);

		ControlData.wCount += i;
		if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength)
		{
			bCOMMONFlags.bits.bSetup_Packet = 1;
			bCOMMONFlags.bits.bControl_State = USB_IDLE;
		}
	}
	else
	{
		bCOMMONFlags.bits.bControl_State = USB_IDLE;
	}
}

// IN Packet
void ISRx_EP0_TxDone(void)
{
	short i = ControlData.wLength - ControlData.wCount;

	USBD12_ReadLastTransactionStatus(1); // Clear interrupt flag

	if(bCOMMONFlags.bits.bControl_State != USB_TRANSMIT) 
		return;

	if(i >= EP0_PACKET_SIZE)
	{
		USBD12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, EP0_PACKET_SIZE);
		ControlData.wCount += EP0_PACKET_SIZE;

		bCOMMONFlags.bits.bControl_State = USB_TRANSMIT;
	}
	else {
	 	if(i != 0)
			{
			USBD12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, i);
			ControlData.wCount += i;

			bCOMMONFlags.bits.bControl_State = USB_IDLE;
			}
		else {
			 if (i == 0)
				{
				USBD12_WriteEndpoint(1, 0, 0); // Send zero packet at the end ???

				bCOMMONFlags.bits.bControl_State = USB_IDLE;
				}
			 }
		}
}

// End of DMA transfer
void ISRx_DMA_EOT(void)
{
}

// OUT Packet
void ISRx_EP1_RxDone(void)
{
}

// IN Packet
void ISRx_EP1_TxDone(void)
{
}

// OUT Packet
void ISRx_Main_RxDone(void)
{
	unsigned short nLen;

	nLen = USBD12_ReadLastTransactionStatus(4); /* Clear interrupt flag */
	
	//nLen = USBD12_ReadEndpoint(4,CodeData.pCodeData, sizeof(GenBuf));
}

// IN Packet
void ISRx_Main_TxDone(void)
{
	unsigned short nLen;

	USBD12_ReadLastTransactionStatus(5); /* Clear interrupt flag */
	
	switch (CodeData.bCodeCount)
	{
		case 1 : CodeData.pCodeData = GenBuf;
				 USBD12_WriteEndpointOnce(5,CodeData.pCodeData, EP2_TX_FIFO_SIZE);
				 CodeData.bCodeCount = 2;
				 break;
		case 2 : CodeData.pCodeData = GenBuf+ EP2_TX_FIFO_SIZE;
				 USBD12_WriteEndpointOnce(5,CodeData.pCodeData, EP2_TX_FIFO_SIZE);
				 CodeData.bCodeCount = 3;
				 break;
		case 3 : CodeData.pCodeData = GenBuf+ EP2_TX_FIFO_SIZE +EP2_TX_FIFO_SIZE;
				 USBD12_WriteEndpointOnce(5,CodeData.pCodeData, EP2_TX_FIFO_SIZE);
				 CodeData.bCodeCount = 4;
				 break;
		case 4 : CodeData.pCodeData = GenBuf+ EP2_TX_FIFO_SIZE +EP2_TX_FIFO_SIZE +EP2_TX_FIFO_SIZE;
				 USBD12_WriteEndpointOnce(5,CodeData.pCodeData, EP2_TX_FIFO_SIZE);
				 CodeData.bCodeCount = 1;
				 break;
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区免费视频| 亚洲国产sm捆绑调教视频| 国产精品久久久久7777按摩| 亚洲五码中文字幕| 国产成人精品三级| 欧美一级欧美三级| 亚洲影视资源网| 99久久99久久综合| 国产区在线观看成人精品 | 国产iv一区二区三区| 欧美日韩一区三区| 亚洲综合色视频| 99精品视频一区二区三区| 久久久www成人免费无遮挡大片| 午夜电影一区二区| 欧美日韩国产一区二区三区地区| 中文字幕色av一区二区三区| 国产成人在线观看免费网站| 精品国免费一区二区三区| 午夜激情一区二区| 欧美一区日韩一区| av不卡在线播放| xvideos.蜜桃一区二区| 卡一卡二国产精品 | 精品剧情v国产在线观看在线| 亚洲图片欧美视频| 欧美三级一区二区| 亚洲电影一区二区三区| 欧美午夜精品理论片a级按摩| 一区二区三区四区高清精品免费观看| 91丝袜美女网| 一区二区三区蜜桃网| 欧美系列亚洲系列| 亚洲va国产va欧美va观看| 欧美视频一区二区三区| 日韩国产欧美在线观看| 日韩一级欧美一级| 国产精品一区久久久久| 国产农村妇女毛片精品久久麻豆 | 亚洲国产高清在线| 成人免费av网站| 综合久久国产九一剧情麻豆| 91亚洲国产成人精品一区二区三| 亚洲视频精选在线| 欧美日韩国产片| 韩国成人精品a∨在线观看| 久久久久久久综合日本| 丝袜美腿亚洲综合| 欧美精品一区二区三区在线| 国产精品1区二区.| 亚洲欧美另类图片小说| 91精品国产综合久久久久久漫画| 老司机午夜精品99久久| 国产女主播一区| 欧美亚洲综合色| 美女爽到高潮91| 国产精品久久久久久久久免费丝袜 | 国产成人a级片| 亚洲精品va在线观看| 91麻豆精品国产91久久久使用方法 | 不卡一区二区在线| 亚洲电影在线免费观看| 亚洲精品一区二区三区蜜桃下载| 成人在线视频首页| 日韩综合一区二区| 国产精品你懂的| 91国产免费看| 国产一二精品视频| 亚洲最新视频在线观看| 久久久久久久久久电影| 在线免费av一区| 国产精品一区二区黑丝| 亚洲v日本v欧美v久久精品| 久久久无码精品亚洲日韩按摩| 91久久国产综合久久| 国产毛片精品国产一区二区三区| 夜夜揉揉日日人人青青一国产精品| 精品国产人成亚洲区| 欧美亚洲国产一区在线观看网站| 久久99国内精品| 亚洲一区在线视频观看| 欧美—级在线免费片| 欧美一区二区三区在线观看视频| 成人av网站大全| 国产乱色国产精品免费视频| 亚洲国产乱码最新视频| 国产日韩欧美麻豆| 精品欧美乱码久久久久久1区2区| 色视频欧美一区二区三区| 国产高清成人在线| 老色鬼精品视频在线观看播放| 亚洲综合精品自拍| 亚洲天堂av老司机| 国产日韩影视精品| 欧美mv和日韩mv的网站| 在线不卡免费av| 91久久国产综合久久| 99久久精品国产导航| 成人手机在线视频| 国产成人综合自拍| 国内不卡的二区三区中文字幕| 日韩中文字幕区一区有砖一区| 亚洲自拍偷拍综合| 亚洲美女偷拍久久| 亚洲精品成人天堂一二三| 成人免费在线播放视频| 国产精品无码永久免费888| 精品999在线播放| 日韩欧美在线网站| 欧美成人三级在线| 日韩欧美精品三级| 精品少妇一区二区三区视频免付费| 欧美日韩国产区一| 91精品久久久久久久91蜜桃| 欧美日韩亚洲国产综合| 69堂成人精品免费视频| 欧美高清www午色夜在线视频| 在线观看日韩av先锋影音电影院| 在线一区二区三区四区五区 | 日韩视频免费观看高清完整版在线观看 | 成人永久aaa| 99在线热播精品免费| 一本久久a久久免费精品不卡| 色狠狠综合天天综合综合| 日本久久精品电影| 91精品免费在线| 久久亚洲一级片| 亚洲国产精品v| 亚洲精品精品亚洲| 日本一区中文字幕| 国产美女娇喘av呻吟久久| 99视频一区二区三区| 欧美午夜一区二区三区免费大片| 欧美精品久久99| 国产亚洲一本大道中文在线| 国产蜜臀97一区二区三区| 亚洲精品免费视频| 美女高潮久久久| 成人动漫一区二区三区| 欧美日韩mp4| 国产日韩精品一区二区三区| 亚洲精品高清视频在线观看| 天堂午夜影视日韩欧美一区二区| 久久爱www久久做| 91色在线porny| 日韩免费一区二区三区在线播放| 国产日韩精品一区二区三区在线| 亚洲精品乱码久久久久久日本蜜臀| 天天影视涩香欲综合网| 国产**成人网毛片九色| 欧美亚洲国产怡红院影院| 精品国产91洋老外米糕| 一区二区三区精品在线观看| 日韩激情一二三区| eeuss国产一区二区三区| 欧美久久一二区| 国产精品另类一区| 日本不卡免费在线视频| 不卡一区二区中文字幕| 日韩欧美国产wwwww| 亚洲黄一区二区三区| 国产福利不卡视频| 91精品免费观看| 亚洲欧美日韩综合aⅴ视频| 国产一区视频网站| 精品视频999| 亚洲人午夜精品天堂一二香蕉| 日本美女一区二区三区| 欧洲色大大久久| 中文字幕亚洲电影| 国产精品18久久久久久久网站| 欧美日韩高清一区二区三区| 亚洲欧洲精品一区二区三区不卡| 久久国产视频网| 91麻豆精品久久久久蜜臀| 亚洲欧洲一区二区三区| 国产a久久麻豆| 久久久99免费| 国产一区二区调教| 精品久久一区二区三区| 日韩专区欧美专区| 欧美三级中文字幕在线观看| 日韩一区欧美小说| 成人av在线一区二区| 国产欧美日韩在线视频| 国产大片一区二区| 亚洲精品一区二区三区福利 | 日韩av中文在线观看| 在线区一区二视频| 亚洲天堂免费在线观看视频| 国产99精品国产| 国产精品日日摸夜夜摸av| 国产成人亚洲精品狼色在线 | 天堂影院一区二区| 欧亚一区二区三区| 亚洲高清三级视频| 欧美高清精品3d| 蜜臀国产一区二区三区在线播放| 欧美老肥妇做.爰bbww视频| 一区二区日韩电影|