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

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

?? isr.c

?? 用D12實現U盤的單片機程序
?? C
字號:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   1999 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	    ISR.C
   // Author:           Hilbert Zhang ZhenYu
   //                   Chew Thing Piao
   // Created:          Oct. 1 99
   // Modified:
   // Revision: 		0.0.
   //
   //*************************************************************************
   //
   //*************************************************************************
   */
#include <reg51.h>                /* special function register declarations   */

#undef   GLOBAL_EXT

#include "SysCnfg.h"
#include "BasicTyp.h"

#include "Common.h"
#include "Hal4Sys.h"
#include "Hal4d12.h"

/*
//*************************************************************************
//  Public data
//*************************************************************************
*/
// bit Flags
STRUC_EXT BITFLAGS  bFlags;

// Timer 0
BIT_EXT             MCUBF_Timer;
INT8_EXT            Hal4Sys_ClockTicks;

// D12 bit flags
BIT_EXT D12BF_SetupOverwritten;
BIT_EXT D12BF_Configuration;

// DefaultControlPipe Finate State Machine [One-Hot]
INT8_EXT BDATA_SEG  DCPFSMstate;
BIT_EXT             DCPFSM_SetupProc;
BIT_EXT             DCPFSM_Datain;
BIT_EXT             DCPFSM_Dataout;
BIT_EXT             DCPFSM_COhandshake;
BIT_EXT             DCPFSM_CIhandshake;
BIT_EXT             DCPFSM_Stall;

INT8_EXT BDATA_SEG  BOTFSMstate;
BIT_EXT             DCPFSM_CBWProc;
BIT_EXT             BOTFSM_DataIn;
BIT_EXT             BOTFSM_DataOut;
BIT_EXT             BOTFSM_CSWProc;
BIT_EXT             BOTFSM_CSW;
BIT_EXT             BOTFSM_Stall;

// USB Device Request
STRUC_EXT DEVICE_REQUEST DCPDeviceRequest;
INT8_EXT            UsbReq_Recipient;
INT8_EXT            UsbReq_Type;
INT8_EXT            UsbReq_Request;
BIT_EXT             REQBF_DCPRequest_dir;
BIT_EXT             REQBF_DCPRequest_EPdir;
BIT_EXT             REQBF_StallDCPRequest;

// Default Control Pipe Tansfer DCPXfer
INT8_EXT BDATA_SEG  Xfer_Space;
BIT_EXT             DCPXfer_atMCUCODE;
BIT_EXT             DCPXfer_atMCURAM;
BIT_EXT             DCPXfer_atEEROM;
BIT_EXT             DCPXfer_atATA;
BIT_EXT             DCPXfer_atATASTR;

INT16_EXT           DCPXfer_wResidue;
INT8_EXT            * DCPXfer_pData;

/*
//*************************************************************************
//  Private data
//*************************************************************************
*/
INT8 BDATA_SEG          ISR_eplts ;
sbit D12EP0LTS_SUCCESS = ISR_eplts^0;
sbit D12EP0LTS_SETUP = ISR_eplts^5;

INT16 BDATA_SEG         ISR_IR;			// bit addressable data(16bits) from $20H->

sbit D12IS_EOT          = ISR_IR^0;     // D12 Interrupt Src
sbit D12IS_SUSPENDCHANGE= ISR_IR^15;    // D12 Interrupt Src
sbit D12IS_BUSRESET     = ISR_IR^14;    // D12 Interrupt Src
sbit D12IS_ENDP2IN      = ISR_IR^13;    // D12 Interrupt Src
sbit D12IS_ENDP2OUT     = ISR_IR^12;    // D12 Interrupt Src
sbit D12IS_ENDP1IN      = ISR_IR^11;    // D12 Interrupt Src
sbit D12IS_ENDP1OUT     = ISR_IR^10;    // D12 Interrupt Src
sbit D12IS_ENDP0IN      = ISR_IR^9;     // D12 Interrupt Src
sbit D12IS_ENDP0OUT     = ISR_IR^8;     // D12 Interrupt Src

/*
//*************************************************************************
// Private temp Var
//*************************************************************************
*/

/*
//*************************************************************************
//  Private Functions
//*************************************************************************
*/

void ep0_txdone(void);
void ep0_rxdone(void);

void ep1_txdone(void);
void ep1_rxdone(void);

/*
//*************************************************************************
//  Functions
//*************************************************************************
*/

timer_isr() interrupt 1
{
	RaiseIRQL();

#ifdef WORK_AT_12MHZ
    TIMER0_LOW = 0x00;    // 1 MS interval @12MHz
	TIMER0_HIGH =TIMER0_AT12MHZ;   // 0xFC
#endif

#ifdef WORK_AT_24MHZ
    TIMER0_LOW = 0x00;    // 1 MS interval @24MHz
    TIMER0_HIGH =TIMER0_AT24MHZ;    // 0xF8
#endif

#ifdef WORK_AT_36MHZ
    TIMER0_LOW = 0x00;    // 1 MS interval @36MHz
    TIMER0_HIGH =TIMER0_AT36MHZ;
#endif

#ifdef WORK_AT_48MHZ
    TIMER0_LOW = 0x00;    // 1 MS interval @48MHz
    TIMER0_HIGH =TIMER0_AT48MHZ;
#endif

    Hal4Sys_ClockTicks++;

    MCUBF_Timer = 1;

    LowerIRQL();
}

usb_isr() interrupt 0
{
	INT8 tem1 ;

	RaiseIRQL();

 //   tem1 = MCU_P1;
 //   tem2 = MCU_P2;
  //  tem3 = MCU_P3;
   // tem0 = MCU_P0;
 //   MCU_P1 = D12REG_ONLY;   // 0x38

	Hal4D12_ReadInterruptRegister(&ISR_IR);
	if(ISR_IR != 0)
    {
	    if(D12IS_BUSRESET)
        {
            DCPFSMstate = USBFSM4DCP_IDLE;   //USBFSM4DCP_IDLE =0x00
            BOTFSMstate = USBFSM4BOT_IDLE;  //USBFSM4BOT_IDLE =0x01
            D12BF_SetupOverwritten = 0;
            D12SUSPD = 1;
        }

//	    if(D12IS_EOT)
//		    dma_eot();


	    if(D12IS_SUSPENDCHANGE)
		   {
			   if(D12SUSPD == 1)
		   			{  //  In suspend state
		                            //    D12SUSPD = 0;
		                            //    MCU_D12CS= 0;
              		P0 = 0xFF;
					P1 = 0xFF;
					P2 = 0xFF;
					P3 = 0xFF;
                	PCON |= 0x02; //Powerdown bit set
					while (1);
					}
		}

		if(D12IS_ENDP0OUT)
			ep0_rxdone();
		if(D12IS_ENDP0IN)
			ep0_txdone();
		if(D12IS_ENDP1IN)
			ep1_txdone();
		if(D12IS_ENDP1OUT)
			ep1_rxdone();

	}

//	MCU_P2 =tem2;
//	MCU_P3 =tem3;
//	MCU_P0 =tem0;
    LowerIRQL();

//	MCU_P1 =tem1;
}

void ep0_rxdone(void)
{

	ISR_eplts = Hal4D12_ReadLastTransactionStatus(0); // Clear interrupt flag

    if (!D12EP0LTS_SUCCESS)
        return;

    if (D12EP0LTS_SETUP)
    {

        if(DCPFSM_SetupProc || DCPFSM_Dataout || DCPFSM_Datain )
        {
			D12BF_SetupOverwritten = 1;
        }

        DCPFSMstate = USBFSM4DCP_SETUPPROC;//USBFSM4DCP_SETUPPROC =0x01
	}
	else /* not a setup packet, just a Data Out Packet */
	{
        if (DCPFSM_CIhandshake)
        {
            /*
			// it may or may not be zero Length Packet in the STATUS stage of Get Command,
			*/
			/*
            // According to USB1.1 8.5.2.1
            // Any Length Pkt issued by host is taken as valid status stage
            */
			DCPFSMstate = USBFSM4DCP_IDLE;//USBFSM4BOT_IDLE =0x01
            /* D12 has Ack it in hardware, otherwise I cannot receive this interrupt*/
        }
        // else just let it stay in FIFO of Control-Out
    }
}

void ep0_txdone(void)
{

	ISR_eplts = Hal4D12_ReadLastTransactionStatus(1); // Clear interrupt flag

    if ( !D12EP0LTS_SUCCESS )
        return;

    if (DCPFSM_Datain)  //DCPFSM_DataIn = DCPFSMstate^1
    {
        if( DCPXfer_wResidue >= EP0_PACKET_SIZE)
	    {

            if(DCPXfer_atMCUCODE)
                Hal4D12_WriteEPAtCode(1, EP0_PACKET_SIZE, DCPXfer_pData);
            else if(DCPXfer_atMCURAM)
                Hal4D12_WriteEndpoint(1, EP0_PACKET_SIZE, DCPXfer_pData);
            else
                return;

			DCPXfer_pData += EP0_PACKET_SIZE;
            DCPXfer_wResidue -= EP0_PACKET_SIZE;

		    /*
		    // State remains at USBFSM4DCP_DATAIN
			*/
	    }
	    else if( DCPXfer_wResidue != 0)
	    {
            if(DCPXfer_atMCUCODE)
                Hal4D12_WriteEPAtCode(1, (INT8)DCPXfer_wResidue, DCPXfer_pData );
            else if(DCPXfer_atMCURAM)
                Hal4D12_WriteEndpoint(1, (INT8)DCPXfer_wResidue, DCPXfer_pData );
            else
                return;

			//DCPXfer_pData += DCPXfer_wResidue;
            DCPXfer_wResidue = 0;
			DCPFSMstate = USBFSM4DCP_HANDSHAKE4CI;
		}
	    else //  DCPXfer_wResidue == 0
	    {
            // Send zero packet at the end
            //
		    Hal4D12_WriteEndpoint(1, 0, 0);

		    DCPFSMstate = USBFSM4DCP_HANDSHAKE4CI;//USBFSM4DCP_HANDSHAKE4CI =0x10
	    }
    }
	else if( DCPFSM_COhandshake )
    {
    	DCPFSMstate = USBFSM4DCP_IDLE;//USBFSM4BOT_IDLE =0x01
    }
    // else just exit

#undef DCPXfer_wResidue
}


void ep1_txdone(void)
{
	Hal4D12_ReadLastTransactionStatus(3); /* Clear interrupt flag */
}

void ep1_rxdone(void)
{
	Hal4D12_ReadLastTransactionStatus(2); /* Clear interrupt flag */
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉成人伊视频在线观看| 久久综合色一综合色88| 一区免费观看视频| 色综合色狠狠天天综合色| 亚洲日本免费电影| 在线观看一区二区视频| 日本色综合中文字幕| 精品免费99久久| 国产福利一区在线观看| 亚洲欧洲国产专区| 在线欧美日韩国产| 精品在线观看视频| 亚洲视频在线观看一区| 欧美日韩一区二区在线视频| 婷婷成人综合网| 久久久av毛片精品| 色综合天天综合狠狠| 午夜电影一区二区三区| 久久―日本道色综合久久| 99精品国产99久久久久久白柏 | 成人免费视频国产在线观看| 成人免费视频在线观看| 欧美精品粉嫩高潮一区二区| 九九久久精品视频| 亚洲品质自拍视频| 欧美va亚洲va香蕉在线| 在线视频亚洲一区| 国产精品亚洲成人| 午夜不卡在线视频| 国产精品嫩草99a| 日韩午夜小视频| 91亚洲男人天堂| 精品一区二区三区在线观看| 亚洲人成在线观看一区二区| 欧美一区二区三级| 在线亚洲高清视频| 国产高清无密码一区二区三区| 亚洲一区二区在线播放相泽| 精品黑人一区二区三区久久| 91免费视频大全| 国内精品久久久久影院薰衣草| 亚洲资源中文字幕| 国产精品视频一二| 久久亚洲影视婷婷| 在线综合亚洲欧美在线视频| av网站一区二区三区| 久久精品免费观看| 午夜免费久久看| 亚洲天堂a在线| 久久久久国色av免费看影院| 欧美一区二区三区不卡| 欧美亚洲国产bt| 一本久道中文字幕精品亚洲嫩| 国产精品亚洲视频| 国内精品免费在线观看| 奇米综合一区二区三区精品视频 | 国产亚洲一本大道中文在线| 欧美精品高清视频| 精品视频123区在线观看| 成人一区在线观看| 国产成人夜色高潮福利影视| 美日韩黄色大片| 欧美aa在线视频| 免费观看在线色综合| 日韩和欧美一区二区三区| 国产精品一区一区三区| 在线观看91av| 欧美日韩国产综合久久 | 亚洲日本韩国一区| 国产精品久久久久永久免费观看| 久久老女人爱爱| 欧美精品一区二区三区一线天视频 | 精品一区二区免费视频| 日本亚洲三级在线| 男女男精品网站| 日韩在线观看一区二区| 丝袜美腿亚洲综合| 免费人成黄页网站在线一区二区| 日本亚洲天堂网| 狠狠色综合播放一区二区| 麻豆91免费看| 国产一区二区不卡在线| 韩国成人福利片在线播放| 黑人巨大精品欧美一区| 国产福利不卡视频| 成人av免费在线播放| 亚洲欧美日韩在线不卡| 精品乱码亚洲一区二区不卡| 日韩视频免费观看高清完整版在线观看| 欧美日韩一区在线观看| 欧美军同video69gay| 日韩欧美国产高清| 久久久亚洲综合| 国产精品久久久久一区二区三区 | 国产精品水嫩水嫩| 自拍av一区二区三区| 亚洲午夜久久久久中文字幕久| 亚洲bt欧美bt精品| 国产在线不卡一卡二卡三卡四卡| 国产成人亚洲综合色影视| 99re这里都是精品| 91精品国产色综合久久不卡蜜臀 | 91精品黄色片免费大全| 久久综合久久综合亚洲| 日本一区二区在线不卡| 一区二区三区国产豹纹内裤在线| 亚洲成a人片在线不卡一二三区| 美女精品一区二区| 波多野结衣在线一区| 欧美日韩国产123区| 亚洲精品一线二线三线无人区| 亚洲天堂2014| 久久国产精品色| 色综合色综合色综合色综合色综合 | 亚洲成人精品一区二区| 久热成人在线视频| 日本电影亚洲天堂一区| 日韩网站在线看片你懂的| 国产精品久久午夜夜伦鲁鲁| 亚洲大尺度视频在线观看| 国产精品综合av一区二区国产馆| 一道本成人在线| 欧美一级xxx| 一区二区在线观看免费视频播放| 美女性感视频久久| 色婷婷综合久久久久中文| 日韩限制级电影在线观看| 亚洲欧美欧美一区二区三区| 国模大尺度一区二区三区| 欧美日韩综合在线免费观看| 欧美高清在线视频| 蜜臀av国产精品久久久久| 在线免费观看不卡av| 国产精品理论在线观看| 久久疯狂做爰流白浆xx| 欧美三级电影在线观看| 亚洲天堂成人网| 成人在线综合网| 精品国产亚洲在线| 日韩专区一卡二卡| 欧洲人成人精品| 国产精品卡一卡二卡三| 国产精品一区二区在线观看不卡| 日韩一区二区视频在线观看| 一区二区三区鲁丝不卡| 暴力调教一区二区三区| 久久精品网站免费观看| 久久精品国产99国产| 欧美日韩精品欧美日韩精品一| 亚洲欧洲国产日韩| 北条麻妃一区二区三区| 国产精品久久久久aaaa樱花| 懂色av一区二区三区蜜臀| 久久久久久一二三区| 精品在线播放免费| 久久无码av三级| 精品一区二区三区在线视频| 欧美电视剧免费观看| 久久国产精品无码网站| 精品少妇一区二区三区免费观看| 日本aⅴ亚洲精品中文乱码| 欧美日韩精品免费| 免费视频一区二区| 精品免费视频.| 国产一区二区h| 欧美国产欧美综合| 9人人澡人人爽人人精品| 中文字幕一区二区三区四区不卡| 国产sm精品调教视频网站| 国产午夜精品一区二区三区视频| 国产精品自拍网站| 国产精品久久99| 色综合色狠狠天天综合色| 亚洲一区二区视频在线观看| 欧美日韩中文精品| 日本欧美肥老太交大片| 精品粉嫩超白一线天av| 国产精品一区二区你懂的| 国产精品私房写真福利视频| 99久久伊人久久99| 一区二区三区波多野结衣在线观看| 欧美色综合久久| 琪琪久久久久日韩精品| 久久久久久久网| 91亚洲永久精品| 日本怡春院一区二区| 久久久久久久综合色一本| 91毛片在线观看| 香蕉成人啪国产精品视频综合网| 精品欧美久久久| 91在线你懂得| 日韩高清一区在线| 国产亚洲精品7777| 色婷婷综合视频在线观看| 亚洲高清免费观看| 精品av综合导航| 91在线一区二区三区| 日韩国产成人精品| 中文字幕永久在线不卡| 欧美日韩综合在线免费观看|