⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int.c

📁 realtek LCD monitor, TV开发源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

    if(--ucTimer0Cnt)
    {

        //1231 sephinroth start
        if((GET_INPUTSOURCE_TYPE() == _SOURCE_DVI) && (bDDCSDADVI == _HIGH))
        {
            ucDdcSdaCnt = 0;
        }
        
        if((GET_INPUTSOURCE_TYPE() == _SOURCE_DVI) && (bDDCSDADVI == _LOW))
        {
            ucDdcSdaCnt++;
            
            if(ucDdcSdaCnt >= 500)
            {
                CDdcSclToggle();
            }
        }
        //1231 sephinroth end
    }
    else
    {
        if(bTimer0Ctrl == _FALSE)
        {
            CTimerDecreaseTimerCnt();
        }

        ucTimer0Cnt = 10;

#if(_DCR_MODE == _DCR_TYPE_3)
        ucDcrTimer += 1;            // 10msec, add by DCR add 20071219
#endif

    }
}

#if(_DEBUG_TOOL == _RS232)
//-------------------------------------------------------------------------------------------------------------------
// UART interrupt function (4)
//-------------------------------------------------------------------------------------------------------------------
void IntProcUart(void)  interrupt 4
{
    if(TI)
        TI = 0;

    if(RI)
    {
        if(!bUartCommandStart)
        {
            pUartData[0] = SBUF;
            switch(pUartData[0])
            {
                case 0x5a:
                case 0x5b:
                case 0x5c:
                case 0x5d:
                case 0x41:
                    bUartCommandStart = _TRUE;
                    ucUartCommandNum = 1;
                    break;
                default:
                    bUartCommandStart = _FALSE;
                    break;
            }
        }
        else
        {
            if(ucUartCommandNum < 5)
            {
                pUartData[ucUartCommandNum] = SBUF;
                ucUartCommandNum++;
                if(ucUartCommandNum == 5)
                {
                    bUartCommandStart = _FALSE;
                    bUartCommandSuccess = _TRUE;
                    ucUartCommandNum = 1;
                }
            }
        }

        RI = 0;
    }
}
#endif  // End of #if(_DEBUG_TOOL == _RS232)


//-------------------------------------------------------------------------------------------------------------------
// UART interrupt function (2)
//-------------------------------------------------------------------------------------------------------------------
#if(_DEBUG_TOOL == _ISP_FOR_RTD2120)

//0811 sephinroth start
#if(_DDCCI_SUPPORT == _ON)
#define _I2C_COMMAND_LENGTH        4
void IntIspAndEdid(void) interrupt 2
{
   BYTE FLAG;
   FLAG=MCU_I2C_STATUS_FF2B;
   EX1 = 0;
   if((FLAG&0x01)!=0) // SLAVE MATCH
   {
      RamI2cCommandIndex=0;
   }
   else if((FLAG&0x04)!=0) // Receieved data
   {
      if(!GET_FACTORY_MODE())
      {
         if(RamI2cCommandIndex==0)
            RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF28;
         if(RamI2cCommandIndex<9)//AK0816
         {
            RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF29;
            if(((RamI2cCommandData[1]&0x7F)+3)==RamI2cCommandIndex)  bGetMcuDdcciCommand=_TRUE;
         }
      }
      else
      { //I2C COMMAND FOR FACTORY MODE
         if (RamI2cCommandIndex==0)
            RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF28;
         if(RamI2cCommandIndex<9) //AK0816
         {
            RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF29;
         }
         if(RamI2cCommandIndex==_I2C_COMMAND_LENGTH)
         {
            if(RamI2cCommandData[3]==(BYTE)(RamI2cCommandData[0]+ RamI2cCommandData[1] + RamI2cCommandData[2]))
            {
               bAlignmentDo=_TRUE;
               RamI2cCommandData[3] =0xFC; //I2c Command
               MCU_I2C_DATA_OUT_FF2A=RamI2cCommandData[2];
            }
            else
            {
               MCU_I2C_DATA_OUT_FF2A =0xFC; //CHECKSUM ERROR !
               RamI2cCommandData[3]=0xAA;
            }
         }
      }
   }
   else if((FLAG&0x08)!=0)   // Transmit data
   {

      WORD i = 0xffff;
#if(_TMDS_SUPPORT==_ON)
      if((GET_INPUTSOURCE_TYPE()==_SOURCE_VGA) || (!GET_POWERSTATUS()))//1211 sephinroth
      {
         do
         {
            Delay5us();
         }while (bDDCSCLVGA && --i);
      }
      else
      {
         do
         {
            Delay5us();
         }while (bDDCSCLDVI && --i);
      }
#else
      do
      {
         Delay5us();
      }while (bDDCSCLVGA && --i);
#endif

      if(GET_FACTORY_MODE())
      {
         MCU_I2C_DATA_OUT_FF2A=RamI2cCommandData[3];
      }
      else
      {
         if(((ucMcuDdcciReplyBuffer[1]&0x7F)+2)==(RamI2cCommandIndex))
         {
            ucMcuDdcciReplyBuffer[1]=0x80;
            ucMcuDdcciReplyBuffer[2]=0xBE;
            MCU_I2C_DATA_OUT_FF2A=0x6E;//ucMcuDdcciReplyBuffer[0];
            RamI2cCommandIndex=0;
         }
         else
         {
            RamI2cCommandIndex++;
            MCU_I2C_DATA_OUT_FF2A=ucMcuDdcciReplyBuffer[RamI2cCommandIndex];
         }
      }
   }
   MCU_I2C_STATUS_FF2B=0;
   EX1 = 1;

}
#else
void IntProcDdcci(void)  interrupt 2
{
    BYTE tempbuf;

    EA=0;

    if(!bRunCommand)
    {
        tempbuf = MCU_I2C_STATUS_FF2B;

        if(tempbuf & 0x08)
            MCU_I2C_DATA_OUT_FF2A = TxBUF;

        if(tempbuf & 0x01)
            ucDdcciCommandNumber = 0;

        if(tempbuf & 0x02)
            ucDdcciCommandNumber=0;

        if(tempbuf & 0x04)
        {
            if(ucDdcciCommandNumber==0)
                ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_SUB_IN_FF28;

            ucDdcciCommandNumber++;
            ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_DATA_IN_FF29;
            bRunCommand=_TRUE;
        }

        MCU_I2C_STATUS_FF2B = tempbuf & 0xc0;
    }

    EA=1;
}
#endif  //End of #if(_DDCCI_SUPPORT == _ON)

#endif  // #if(_DEBUG_TOOL == _ISP_FOR_RTD2120)
//0811 sephinroth end

#if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)
#if(_DDCCI_SUPPORT == _ON)

#define _I2C_COMMAND_LENGTH        4
void IntIspAndEdid(void) interrupt 2
{
    BYTE FLAG;
    FLAG=MCU_I2C_STATUS_FF27;

    if(GET_FACTORY_MODE())
        MCU_I2C_IRQ_CTRL2_FF2A  &= 0xDF; //host write/read enable

    EX1 = 0;

    if((FLAG&0x01)!=0) // SLAVE MATCH
    {
        RamI2cCommandIndex=0;
    }
    else if((FLAG&0x04)!=0) // Receieved data
    {
        if(!GET_FACTORY_MODE())
        {
            if(RamI2cCommandIndex==0)
                RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF24;
            if(RamI2cCommandIndex<9)//AK0816
            {
                RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF25;
                if(((RamI2cCommandData[1]&0x7f)+3)==RamI2cCommandIndex)
                    bGetMcuDdcciCommand=_TRUE;
            }
        }
        else //Factory mode
        {   //I2C COMMAND FOR FACTORY MODE
            if (RamI2cCommandIndex==0)
                RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_SUB_IN_FF24;

            if(RamI2cCommandIndex<9) //AK0816
            {
                RamI2cCommandData[RamI2cCommandIndex++]=MCU_I2C_DATA_IN_FF25;
            }
            if(RamI2cCommandIndex==_I2C_COMMAND_LENGTH)
            {
                MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
                if(RamI2cCommandData[3]==(BYTE)(RamI2cCommandData[0]+ RamI2cCommandData[1] + RamI2cCommandData[2]))
                {
                    bAlignmentDo=_TRUE;
                    RamI2cCommandData[3] =0xFC; //I2c Command
                    MCU_I2C_DATA_OUT_FF26=RamI2cCommandData[2];
                }
                else
                {
                    MCU_I2C_DATA_OUT_FF26 =0xFC; //CHECKSUM ERROR !
                    RamI2cCommandData[3]=0xAA;
                }
            }
        }
    }
/*
    else if((FLAG&0x02)!=0) // sub latch
    {
        if(((MCU_I2C_SET_SLAVE_FF23&0xFE)==0x7C))//slaver address
        {
            Delay5us();
            Delay5us();
            Delay5us();
            Delay5us();
            Delay5us();
            Delay5us();
            Delay5us();
            if(MCU_I2C_SUB_IN_FF24==0x55)   //sub adddress
            {
                MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
                RamI2cCommandData[0]=MCU_I2C_SUB_IN_FF24;
                bAlignmentDo=_TRUE;        //0xBBの0x55ぃ浪琩CHECKSUM
                MCU_I2C_DATA_OUT_FF26 =0x00; //CHECKSUM ERROR !
                RamI2cCommandData[3]=0xFC; //I2c Command
            }
        }
    }
*/
    else if((FLAG&0x08)!=0)   // Transmit data
    {
        if(GET_FACTORY_MODE())
        {
            MCU_I2C_IRQ_CTRL2_FF2A |= 0x20;
            MCU_I2C_DATA_OUT_FF26=RamI2cCommandData[3];
        }
        else
        {
            if(((ucMcuDdcciReplyBuffer[1]&0x7F)+2)==(RamI2cCommandIndex))
            {
                ucMcuDdcciReplyBuffer[1]=0x80;
                ucMcuDdcciReplyBuffer[2]=0xBE;
                MCU_I2C_DATA_OUT_FF26=0x6E;//ucMcuDdcciReplyBuffer[0];
                //RamI2cCommandIndex=0;
                MCU_I2C_IRQ_CTRL2_FF2A  = (MCU_I2C_IRQ_CTRL2_FF2A | _BIT6) & (~_BIT5); //host write/read enable
                MCU_I2C_DATA_OUT_FF26  = 0x00;
            }
            else
            {
                RamI2cCommandIndex++;
                MCU_I2C_DATA_OUT_FF26=ucMcuDdcciReplyBuffer[RamI2cCommandIndex];
            }
        }
    }

    MCU_I2C_STATUS2_FF29 = 0x00;
    MCU_I2C_STATUS_FF27=0;
    EX1 = 1;
}

#else

void IntProcDdcci(void)  interrupt 2
{
    BYTE tempbuf;

    EA=0;
    MCU_I2C_IRQ_CTRL2_FF2A  &= 0xDF; //host write/read enable
    if(!bRunCommand)
    {
        tempbuf = MCU_I2C_STATUS_FF27;
//Anderson 080215 for Debug Message Supported Start
#if(_DEBUG_MESSAGE_SUPPORT == _ON)
        if(tempbuf & 0x08)
        {
            if(bDebugMessageStart == 0)
            {
                MCU_I2C_IRQ_CTRL2_FF2A |= 0xA0;
                MCU_I2C_DATA_OUT_FF26 = TxBUF;
            }
            else
            {
                if(bDataOutEnd)
                {
                    MCU_I2C_IRQ_CTRL2_FF2A |= 0xA0;
                    MCU_I2C_DATA_OUT_FF26 = TxBUF;
                    bDataOutEnd = 0;
                }
            }
        }
#else
        if(tempbuf & 0x08)
#if(_MCU_TYPE == _REALTEK_EMBEDDED)
            MCU_I2C_DATA_OUT_FF26 = TxBUF;
#elif((_MCU_TYPE == _REALTEK_RTD2120) || (_MCU_TYPE == _REALTEK_RTD2122))
            MCU_I2C_DATA_OUT_FF2A = TxBUF;
#endif
#endif
//Anderson 080215 for Debug Message Supported End
        if(tempbuf & 0x01)
            ucDdcciCommandNumber = 0;

        if(tempbuf & 0x02)
            ucDdcciCommandNumber=0;

        if(tempbuf & 0x04)
        {
            if(ucDdcciCommandNumber==0)
                ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_SUB_IN_FF24;

            ucDdcciCommandNumber++;
            ucDdcciData[ucDdcciCommandNumber] = MCU_I2C_DATA_IN_FF25;
            bRunCommand=_TRUE;
        }

        MCU_I2C_STATUS_FF27 = tempbuf & 0xc0;
    }

    EA=1;
}
#endif
#endif  // #if(_DEBUG_TOOL == _ISP_FOR_EMBEDDED)

⌨️ 快捷键说明

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