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

📄 debug.c

📁 使用于克隆器
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
 Copyright (c) 2003 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: Debug.c
 [Date]:        10-Nov-2003
 [Comment]:
   Uart subroutines.
 [Reversion History]:
*******************************************************************************/

#define _DEBUG_C_

// Common
#include "define.h"
#include "mcu.h"
#include "userdef.h"
// External
#include "common.h"
#include "uart.h"
#include "board.h"
#include "ram.h"
#include "i2c.h"
#include "ir.h"
#include "irFunc.h"
#include "global.h"
#include "userpref.h"

// Internal
#include "debug.h"

#if (!VERSION_DEBUG)
code BYTE tDummydata_Debug[] =
{
	0x00,
};
#endif

#define _DEBUG_OUTPUT_EN_    0
 ///////////////////////////////////////////////////////
// Test command
///////////////////////////////////////////////////////
void ExecTestCommand(void)
{
    //BYTE ucBank = msReadByte(0);

    //printf(" [TestCmd=%x] ", g_UartCommand.Buffer[_UART_CMD_INDEX1_] );
    switch (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
    {
#if (_DEBUG_TESTCOMMAND_EN_)

        case 0x28:
            printf("\r\n Current Write: %x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            i2cWriteCurrent(g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_]);
            break;
        case 0x29:
            printf("\r\n Current Write: %x", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            i2cWriteByte(g_UartCommand.Buffer[_UART_CMD_INDEX2_], g_UartCommand.Buffer[_UART_CMD_INDEX3_], g_UartCommand.Buffer[_UART_CMD_INDEX4_]);
            break;
 #endif
        case 0x50:
            g_bDebugProgStopFlag = !g_bDebugProgStopFlag;
            if (g_bDebugProgStopFlag)
                putstr("\r\n<Debug>");
            else
                putstr("\r\n<Free>");
            break;

#if (_DEBUG_TESTCOMMAND_EN_)
         //Ir is Start from 0x90~0xDF,Please don't use 0x90.
        case 0x90: // Ir_
            g_ucIrCode = IRKEY_POWER;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x91:
            g_ucIrCode = IRKEY_MTS;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x92:
            g_ucIrCode = IRKEY_VOL_DOWN;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x94:
            g_ucIrCode = IRKEY_TVMENU;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x95:
            g_ucIrCode = IRKEY_CC;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x96:
            g_ucIrCode = IRKEY_SMODE;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x97:
            g_ucIrCode = IRKEY_1;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x98:
            g_ucIrCode = IRKEY_4;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x99:
            g_ucIrCode = IRKEY_7;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0x9a:
            g_ucIrCode = IRKEY_INPUT;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA1:
            g_ucIrCode = IRKEY_CH_UP;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA2:
            //g_ucIrCode = IRKEY_OSD_ENTER;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA3:
            g_ucIrCode = IRKEY_CH_DOWN;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA5:
            g_ucIrCode = IRKEY_ASPECT_RATIO;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA6:
            g_ucIrCode = IRKEY_PMODE;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA7:
            g_ucIrCode = IRKEY_2;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA8:
            g_ucIrCode = IRKEY_5;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xA9:
            g_ucIrCode = IRKEY_8;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xAA:
            g_ucIrCode = IRKEY_0;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB0:
            g_ucIrCode = IRKEY_MUTE;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
         case 0xB1:
            g_ucIrCode = IRKEY_AAA;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = 1;
            break;
        case 0xB2:
            g_ucIrCode = IRKEY_VOL_UP;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB4:
            //g_ucIrCode = IRKEY_SS;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB5:
            //g_ucIrCode = IRKEY_PIP;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB6:
            g_ucIrCode = IRKEY_DISPLAY;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB7:
            g_ucIrCode = IRKEY_3;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB8:
            g_ucIrCode = IRKEY_6;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xB9:
            g_ucIrCode = IRKEY_9;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xBA:
            g_ucIrCode = IRKEY_STILL;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xC0:
            g_ucIrCode = IRKEY_ATSC;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xC5:
            g_ucIrCode = IRKEY_SLEEP;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xC6:
            g_ucIrCode = IRKEY_CH_RECALL;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xC8:
            g_ucIrCode = IRKEY_CC;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xC9:
            g_ucIrCode = IRKEY_LOCK;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
        case 0xCA:
            g_ucIrCode = IRKEY_NAVI;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;

        case 0xE7: // IIC Device test
            if (i2c_AccessStart(g_UartCommand.Buffer[_UART_CMD_INDEX2_], I2C_TRANS_WRITE) == TRUE) // write command
                printf("\r\nIIC[0x%x] OK", g_UartCommand.Buffer[_UART_CMD_INDEX2_]);
            else
                putstr("\r\nNG");
            break;

        case 0xFFFF: //dummy for delete warning..
            g_ucIrCode = IRKEY_NAVI;
            g_IrCodeParam[5] = FALSE;
            g_bIrDetect = TRUE;
            break;
  #endif
     }

    //msWriteByte( BK0_00, ucBank );
}

void uartDecodeCommand(void)
{
    if (_testbit_(g_bUartDetected)) // check command flag
    {
#if (_DEBUG_EXTDEV_EN_)
        if (UART_EXT)
            ;//tDecodeExtCommand();
        else
#endif
            uartDecodeNormalCommand();
    }
}

 ///////////////////////////////////////
//  Decode Uart command
///////////////////////////////////////
void uartDecodeNormalCommand(void)
{
#if (_DEBUG_RW_REG_EN_)
    XDATA WORD uwEEADDR;
#endif

    switch (UART_CMD)
    {
        case kEnter_ISP:
            {
                 // new check ISP command
                if (UART_CMD_LENGTH != 3)
                    break;
                if (g_UartCommand.Buffer[_UART_CMD_INDEX1_] != 0x55 || g_UartCommand.Buffer[_UART_CMD_INDEX2_] != 0xaa)
                    break;

#ifdef MCU_MTV412M
                //pwPowerOffSystem();
                Enter_MTV412_ISP();
#endif

#ifdef MCU_W78E65
                pwPowerOffSystem();

                CHPENR = 0x87; // CHPENR = 0x59, enable CHPCON register write attribute
                CHPENR = 0x59; // CHPENR = 0x59, enable CHPCON register write attribute
                CHPCON = 0x03; // CHPCON = 0x03, enter in-system programming mode
                CHPENR = 0x00; // CHPENR = 0x00, disable CHPCON write attribute

                TR0 = 0;       // Timer0 stop
                IP = 0x00;     // Set interrupt priority

                EA = 1;        // Set single interrupt
                ET0 = 1;       // Enable TIMER0 iterrrupt
                // Timer0 interrupt enable for wake-up from INDLE mode

                // Set time for enter ISP mode about 1.676 us
                TL0 = 0xf0; // TL0 = 0xf0
                TH0 = 0xff; // TH0 = 0xff
                TMOD |= 0x01;  // Set Timer0 mode 1 (16-bit timer)
                TR0 = 1;       // Start Timer0
                PCON = 0x01;   // Enter IDLE mode for launching the in-system programmability
#endif

#ifdef MCU_W77E532
                //P4 = 0x00;
                pwPowerOffSystem();

                IE = 0;
                TCON = 0;

                TA = 0xAA;
                TA = 0x55;
                TURBO_CHPCON = 0x03; // CHPCON = 0x03, enter in-system programming mode
                TA = 0x00;

                TR0 = 0;       // Timer0 stop
                IP = 0x00;     // Set interrupt priority

                EA = 1;        // Set single interrupt
                ET0 = 1;       // Enable TIMER0 iterrrupt
                // Timer0 interrupt enable for wake-up from INDLE mode

                // Set time for enter ISP mode about 1.676 us
                TL0 = 0xf0; // TL0 = 0xf0
                TH0 = 0xff; // TH0 = 0xff
                TMOD |= 0x01;  // Set Timer0 mode 1 (16-bit timer)
                TR0 = 1;       // Start Timer0
                PCON = 0x01;   // Enter IDLE mode for launching the in-system programmability
#endif

                break;
            }
 #if (_DEBUG_EXTDEV_EN_)
        case kWrite_MCU:
    #ifndef MCU_MTV412M
            {
                switch (UART_CMD_MS_REG)
                {
                    case MCU_P0:
                        P0 = UART_CMD_MS_DAT;
                        break;
                    case MCU_P1:
                        P1 = UART_CMD_MS_DAT;;
                        break;
                    case MCU_P2:
                        P2 = UART_CMD_MS_DAT;;
                        break;
                    case MCU_P3:
                        P3 = UART_CMD_MS_DAT;;
                        break;
                    case MCU_P4:
                        P4 = UART_CMD_MS_DAT;;
                        break;
                    case MCU_TCON:
                        TCON = UART_CMD_MS_DAT;;
                        break;
                    case MCU_TMOD:
                        TMOD = UART_CMD_MS_DAT;;
                        break;
                    case MCU_PCON:
                        PCON = UART_CMD_MS_DAT;;
                        break;
                    case MCU_IE:
                        IE = UART_CMD_MS_DAT;;
                        break;
                    case MCU_IP:
                        IP = UART_CMD_MS_DAT;;
                        break;
                    case MCU_SCON:
                        SCON = UART_CMD_MS_DAT;;
                        break;
                }
                if (!g_bDebugASCIICommandFlag)
                    putchar(0xF1);
                break;
            }
    #endif
        case kRead_MCU:
    #ifndef MCU_MTV412M
            {
                switch (UART_CMD_MS_REG)
                {
                    case MCU_P0:
                        UART_CMD_MS_DAT = P0;
                        break;
                    case MCU_P1:
                        UART_CMD_MS_DAT = P1;
                        break;
                    case MCU_P2:
                        UART_CMD_MS_DAT = P2;
                        break;
                    case MCU_P3:

⌨️ 快捷键说明

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