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

📄 uart.h

📁 使用于克隆器
💻 H
字号:
/******************************************************************************
 Copyright (c) 2003 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: Uart.h
 [Date]:        04-Nov-2003
 [Comment]:
   Uart header file.
 [Reversion History]:
*******************************************************************************/

#include "define.h"
#include "mcu.h"
#include "debug.h"

#ifndef _UART_H_
#define _UART_H_

#ifdef _UART_C_
#define _UARTDEC_
#else
#define _UARTDEC_ extern
#endif

/////////////////////////////////////////////
// Uart Protocol Command Definition
/////////////////////////////////////////////
#define kWrite_MST_Bank0     0x1E
#define kRead_MST_Bank0      0x1F
#define kWrite_MST_Bank1     0x1C
#define kRead_MST_Bank1      0x1D
#define kWrite_MST_Bank2     0x18
#define kRead_MST_Bank2      0x19
#define kWrite_MST_Bank3     0x16
#define kRead_MST_Bank3      0x17
#define kWrite_MST_Bank4     0x14
#define kRead_MST_Bank4      0x15
#define kWrite_MST_Bank5     0x0E
#define kRead_MST_Bank5      0x0D
#define kWrite_MST_Bank6     0x06
#define kRead_MST_Bank6      0x05
#define kWrite_MST_Bank7     0x04
#define kRead_MST_Bank7      0x03
#define kWrite_MST_OSD       0x1A
#define kRead_MST_OSD        0x1B
#define kWrite_EEPROM        0x12
#define kRead_EEPROM         0x13
#define kWrite_Device        0x10
#define kRead_Device_B8      0x11
#define kRead_Device_B16     0x0F
#define kWrite_VPC32xx_FP    0x0B
#define kRead_VPC32xx_FP     0x0C
#define kWrite_MCU           0x07
#define kRead_MCU            0x08

#define kEnter_ISP           0x00

// Test
#define kTest_Command        0x09

#define DEV_MICRONAS_AUDIO  0x01
#define DEV_PHLIPS_TUNER    0x02
#define DEV_EEPROM_HDCP     0x03

#define URCMD_MICRONAS_AUDIO_WRITE  0
#define URCMD_MICRONAS_AUDIO_READ   1

#define URCMD_PHLIPS_TUNER_SET_FREQ      0
#define URCMD_PHLIPS_TUNER_GET_STATUS    1

#define URCMD_EEPROM_HDCP_GET_ADDR      0
#define URCMD_EEPROM_HDCP_WRITE         1
#define URCMD_EEPROM_HDCP_WRITE_END     2
#define URCMD_EEPROM_HDCP_GET_CHECKSUM  3


/////////////////////////////////////////////
// Uart Constant
/////////////////////////////////////////////
// [Timer1 Baud Rate] = (1 / 32) * {Fosc / [12 * (256 - [TH1])]}
// [TH1] = 256 - (Fosc / ([Timer1 Baud Rate] * 32 * 12)

#define UART_BAUD_RATE    9600

#define _SMOD    1

// (TIMER1_MODE2_DIVIDER / 2) -> decimal fraction
#define TIMER1_MODE2_DIVIDER ((DWORD)UART_BAUD_RATE * 384)
#define TIMER1_MODE2_TH1    256-((DWORD)MCU_XTAL_CLK_HZ*_SMOD+MCU_XTAL_CLK_HZ+(TIMER1_MODE2_DIVIDER/2))/TIMER1_MODE2_DIVIDER

#define UART_CMD_LENGTH (g_UartCommand.Buffer[_UART_CMD_CODE_] >> 5)
#define UART_CMD        (g_UartCommand.Buffer[_UART_CMD_CODE_] & 0x1F)
#define UART_CMD_MS_REG (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_CMD_MS_DAT (g_UartCommand.Buffer[_UART_CMD_INDEX2_])

#define UART_EXT             (UART_CMD_LENGTH == 7)
#define UART_CMD_EXT_LENGTH  (g_UartCommand.Buffer[_UART_CMD_INDEX1_])
#define UART_EXT_DEV         (g_UartCommand.Buffer[_UART_CMD_INDEX2_])
#define UART_EXT_CMD         (g_UartCommand.Buffer[_UART_CMD_INDEX3_])
#define UART_EXT_CMD_MS_DAT1 (g_UartCommand.Buffer[_UART_CMD_INDEX4_])
#define UART_EXT_CMD_MS_DAT2 (g_UartCommand.Buffer[_UART_CMD_INDEX5_])
#define UART_EXT_CMD_MS_DAT3 (g_UartCommand.Buffer[_UART_CMD_INDEX6_])
#define UART_EXT_CMD_MS_DAT4 (g_UartCommand.Buffer[_UART_CMD_INDEX7_])
#define UART_EXT_CMD_MS_DAT5 (g_UartCommand.Buffer[_UART_CMD_INDEX8_])
#define UART_EXT_CMD_MS_DAT6 (g_UartCommand.Buffer[_UART_CMD_INDEX9_])
#define UART_EXT_CMD_MS_DAT7 (g_UartCommand.Buffer[_UART_CMD_INDEX10_])
#define UART_EXT_CMD_MS_DAT8 (g_UartCommand.Buffer[_UART_CMD_INDEX11_])
#define UART_EXT_CMD_MS_DAT9 (g_UartCommand.Buffer[_UART_CMD_INDEX12_])
#define UART_EXT_CMD_MS_DAT10 (g_UartCommand.Buffer[_UART_CMD_INDEX13_])
#define UART_EXT_CMD_MS_DAT11 (g_UartCommand.Buffer[_UART_CMD_INDEX14_])
#define UART_EXT_CMD_MS_DAT12 (g_UartCommand.Buffer[_UART_CMD_INDEX15_])
#define UART_EXT_CMD_MS_DAT13 (g_UartCommand.Buffer[_UART_CMD_INDEX16_])

#define _EOS_ '\0' // end of string

/////////////////////////////////////////////
// Uart command structure
/////////////////////////////////////////////
typedef enum _UartCommadEnumType
{
    _UART_CMD_CODE_,
    _UART_CMD_INDEX1_,
    _UART_CMD_INDEX2_,
    _UART_CMD_INDEX3_,
    _UART_CMD_INDEX4_,
    _UART_CMD_INDEX5_,
    _UART_CMD_INDEX6_,
    _UART_CMD_INDEX7_,
    _UART_CMD_INDEX8_,
    _UART_CMD_INDEX9_,
    _UART_CMD_INDEX10_,
    _UART_CMD_INDEX11_,
    _UART_CMD_INDEX12_,
    _UART_CMD_INDEX13_,
    _UART_CMD_INDEX14_,
    _UART_CMD_INDEX15_,
    _UART_CMD_INDEX16_,
    _UART_CMD_LENGTH_
}UartCommadEnumType;

typedef struct _UartCommadType
{
    BYTE Buffer[_UART_CMD_LENGTH_];  // command buffer
                                     // [Length+Command] - [Byte 2] - [Byte 3] - [Byte 4] - [Byte 5]
    BYTE Index;                      // buffer index

}UartCommadType;

typedef enum
{
    MCU_P0,
    MCU_P1,
    MCU_P2,
    MCU_P3,
    MCU_P4,
    MCU_TCON,
    MCU_TMOD,
    MCU_PCON,
    MCU_IE,
    MCU_IP,
    MCU_SCON
} MCU_Reg;
/////////////////////////////////////////////
// Uart Variables
/////////////////////////////////////////////
_UARTDEC_ bit g_bUartDetected; // decode command flag
_UARTDEC_ bit g_bUartOutput;  // output hexidecimal data flag

_UARTDEC_ bit g_bDebugASCIICommandFlag;
_UARTDEC_ bit g_bDebugProgStopFlag;

_UARTDEC_ XDATA UartCommadType g_UartCommand; // Uart command struct

/////////////////////////////////////////////
// Uart subroutines
/////////////////////////////////////////////
#if 0
#if (_DEBUG_PRINT_EN_)
  #define puthex(ucVal) printf("%x", ucVal)
  _UARTDEC_ void putstr(BYTE code *pFmt);
  _UARTDEC_ void printf(BYTE code *pFmt, WORD wVal);
#else
  #define puthex(ucVal)
  #define putstr(pFmt)
  #define printf(pFmt, wVal)
#endif

#else
void putstr(BYTE code *pFmt);
void printf(BYTE code *pFmt, WORD wVal);
#define puthex(ucVal) printf("%x", ucVal)
#endif

#if (_DEBUG_PRINT_EN_||_DEBUG_RW_REG_EN_)
  _UARTDEC_ void putchar(BYTE ucVal);
#else
  #define putchar(ucVal)
#endif

#endif

⌨️ 快捷键说明

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