mst705Ȧ

来自「MST705源代码」· 代码 · 共 287 行

TXT
287
字号
#include "types.h"
#include "board.h"
#include "global.h"
#include "power.h"
#include "DEBUG.h"
#include "ir.h"
#include "DevVd.h"
#include "msvd.h"
#include "mcu.h"
#include "panel.h"
#include "M9_VD_AGC_Lib.h"
#include "M2_VD_Std_Lib.h"
#include "ms_rwreg.h"
#include "msddc2bi.h"
#include "reg52.h"
#include "mstar.h"

#if(ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
#endif

#define ReSyncTick			255


void EXT0Interrupt(void) interrupt 0
{
#if (VGA_ENABLE || YPBPR_ENABLE)

    if( !g_bDebugProgStopFlag ) // Program pause
    {
       if( IsVGAInUse()||IsYPbPrInUse()) // PC/YPBPR
            {
            if(IsSrcHasSignal())
                {
                  hw_ClrBlacklit(); // Back light off by int
                  g_bInputTimingChangeFlag= 1;
                }
            }
    }
#endif

#if ENABLE_DDC2BI
    {
 //    	BYTE ucStatus;
    	g_ucDDC2BI_ucStates = MCUXFR_11_DDC2BI_FLAG;

    	if(g_ucDDC2BI_ucStates & DATW_INT)
    	{
    		if(g_ucDDC2BI_ucStates & WORDADR)
    			g_ucDDC2BIBuffIndex = 0;
                  if(g_ucDDC2BIBuffIndex < _DDC2BI_CMD_LENGTH_)
    			g_ucDDC2BI_Buff[g_ucDDC2BIBuffIndex++] = MCUXFR_12_DDC2BI_W_BUF;

    	}
    	else if (g_ucDDC2BI_ucStates & DATR_INT)
    	{
    		MCUXFR_13_DDC2BI_R_BUF = SI2CHKSUMValue;
    	}
    	else if(g_ucDDC2BI_ucStates & STOP_INT)
    	{
    		if(g_ucDDC2BIBuffIndex!=0)
    		{
    		      g_bDDC2BICommandFlag= 1;
    		      g_ucDDC2BIBuffIndex = 0;
    		}

    	}
       MCUXFR_11_DDC2BI_FLAG = 0;

    }
#endif

}

void Time0Interrupt(void) interrupt 1
{
    // Reset timer0
#if ENABLE_MCU_USE_INTERNAL_CLOCK
    if( g_bMcuUseNewClock )
    {
        TH0 = HIBYTE(NEW_ISR_TIMER0_COUNTER);
        TL0 = LOBYTE(NEW_ISR_TIMER0_COUNTER);
    }
    else
#endif
    {
        TH0 = HIBYTE(ISR_TIMER0_COUNTER);
        TL0 = LOBYTE(ISR_TIMER0_COUNTER);
    }

    //#if IRSEND_ENABLE
    //IRSendHandle();
    //#endif

    irDetectTimer0(); // Ir detecting

#if(VGA_ENABLE||YPBPR_ENABLE)
    if( IsAnalogPortInUse())
    {
        // mode detect counter
        if(g_ucModeDetectCounter)
            g_ucModeDetectCounter--;
    }
    else
#endif
    {
        // video mode detect counter
        if (g_VdInfo.ucVideoPollingCounter)
            g_VdInfo.ucVideoPollingCounter--;

        if( IsVideoPortInUse()) // MStar VD
        {
            switch((g_ucmSCounter&0x7))
            {
                case 0:
                #if( ENABLE_VD_DSP&&( DSP_RUN_MODE == DSP_RUN_MODE_TIMER_AND_POLLING ) )
                    //if( g_ucmsVDCtl&MSVD_CTL_FLAG_VSYNC )
                        VD_DSP_Int();
                #endif
                    break;
                case 2:
                case 6:
                    //if( g_ucmsVDCtl&MSVD_CTL_FLAG_DSP_STD ) // For debug
                        msDSP_Std_Processor();
                    break;
                case 1:
                case 3:
                case 5:
                case 7:
                    if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_AGC_MONITOR )
                        VD_AGC_MonitorStatus();
                #if( ENABLE_SW_DETECT_COLOR_STD )
                    if( VD_Type >= MARIA2_E )
                        msVDDetectColorStd();
                #endif
                    break;
                default:
                    break;
            }

        #if( ENABLE_SECAM )
            if( g_ucVDSecamHandlerTimer )
                g_ucVDSecamHandlerTimer --;
        #endif

        #if( ENABLE_HSYNC_HANDLER )
            if( g_ucVDHSyncHandler_Timer )
                g_ucVDHSyncHandler_Timer --;
        #endif

        #if( ENABLE_MONITOR_SIGNAL )
            if( g_wMonitorSignal_Timer )
                g_wMonitorSignal_Timer --;
        #endif


        #ifdef VD_PATCH_005
            if( g_msVD_Patch005_Timer )
                g_msVD_Patch005_Timer --;
        #endif

        #if( ENABLE_PAL_SWITCH_HANDLER )
            if( g_ucPalSwitchHandler_Timer )
                g_ucPalSwitchHandler_Timer --;
        #endif

            if( g_wVDColorBurstHandlerTimer )
                g_wVDColorBurstHandlerTimer --;

            if( g_ucMSVDNoiseHandlerTimer )
                g_ucMSVDNoiseHandlerTimer --;


        }
    }

    if((--g_ucmSCounter)==0)
    {
        g_b100mSArrival = 1;
        g_ucmSCounter = T100MsTick;
    }

    if(ReSyncCounter)
        ReSyncCounter--;

#if(ENABLE_VSYNC_CTL_AUTO_H_TOTAL)
    if( g_wCheckBK0_57_Timer)
        g_wCheckBK0_57_Timer --;
#endif

#if GAME_ENABLE
    if(g_uwGameMsCounter != 0)
		g_uwGameMsCounter--;

    if(g_uwGameMsCounter==0)
    {
    	if(!GameBlockFastDownFlag)
    		g_uwGameMsCounter=GameTick;
    	else
    		g_uwGameMsCounter=GameFastTick;
    	Set_GameBlockDownFlag();
    }
#endif


}


void EXT1Interrupt(void) interrupt 2
{
    if (!g_bDebugProgStopFlag)
    {
	#if( ENABLE_MCU_USE_INTERNAL_CLOCK && IR_FORMAT != IR_RC5)
        if(g_bMcuUseNewClock)
            irInterruptProcess_NewClk();
        else
	#endif
        	irInterruptProcess();
    }
}

void Time1Interrupt(void) interrupt 3
{
#if (IR_TIMER_SEL == IR_USE_TIMER1)
//    EA = 0; // disable all interrupt
    irDetectTimer1();  // tiemr1 for IR
//    EA = 1; // release EA bit
#endif
}

///////////////////////////////////////
// Uart Interrupt
///////////////////////////////////////
void uartInterrupt(void) interrupt 4
{
//    EA = 0; // disable all interrupt
#if _DEBUG_EXTDEV_EN_
    if (!_testbit_(TI)) // check translate interrupt
    {
        ucUartCheckTick = 2;

        RI = 0; // clear recieve interrupt

        g_UartCommand.Buffer[g_UartCommand.Index] = SBUF; // recieve byte

        // check command buffer index
        if (UART_EXT)
        {
            if (g_UartCommand.Index == 0) // check 1st data
                g_UartCommand.Index++; // for get UART_CMD_EXT_LENGTH
            else
            {
                if (g_UartCommand.Index < UART_CMD_EXT_LENGTH) // still read command
                    g_UartCommand.Index++; // next index of command buffer
                if (g_UartCommand.Index >= UART_CMD_EXT_LENGTH) // read command ok
                {
                    g_bUartDetected = TRUE; // command  buffer recieve ok
                    g_UartCommand.Index = 0; // reset index of command buffer
                    ucUartCheckTick = 0;
                }
            }
        }
        else
        {
            if (g_UartCommand.Index < UART_CMD_LENGTH) // still read command
                g_UartCommand.Index++; // next index of command buffer
            if (g_UartCommand.Index >= UART_CMD_LENGTH) // read command ok
            {
                g_bUartDetected = TRUE; // command  buffer recieve ok
                g_UartCommand.Index = 0; // reset index of command buffer
                ucUartCheckTick = 0;
            }
        }
    } // if TI
#endif
//    EA = 1; // release EA bit
}

void isrTimer2_S(void) interrupt 5
{
#if (IR_TIMER_SEL == IR_USE_TIMER2)
//    EA = 0; // disable all interrupt
    irDetectTimer1();  // tiemr1 for IR
//    EA = 1; // release EA bit
#endif
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?