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

📄 com.h

📁 TFT 屏驱动IC源码头TFT 屏驱动IC源码
💻 H
字号:
/* ##########################################################################
   #                      Terawins Inc. Company                             #
   #                 Copyright (c) 2005, All rights reserved                #
   #                                                                        #
   #  All rights reserved. Reproduction in whole or in parts is prohibited  #
   #  without the prior written consent.                                    #
   ########################################################################## */
   
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                          LCD Application Firmware                          //
// ========================================================================== //
//                                                                            //
//  Module   : Com.h                                                          //
//                                                                            //
//  Purpose  : UART communication routine header                              //
//                                                                            //
//  Version  : 1.00                                                           //
//                                                                            //
//  Compiler : Keil 8051 C Compiler v7.0                                      //
//                                                                            //
//  Reference: [1] Keil C51 Compiler User's Guide 09.2001, Keil Software, Inc.//
//                                                                            //
// ========================================================================== //
//                                                                            //
//  Date        Author        Reason (what and why)                           //
//  ----------- ------------- ----------------------------------------------  //
//  2005/12/30  Bruce Cho     Initial Draft                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
#ifndef __COM_H__
#define __COM_H__


#include "common.h"
//#include "reg51.h"
#include <intrins.h> // Required for _testbit_();

#define CHAR_OFFSET ('A'-'9'-1)

// Common XTAL frequencies (Hz).
#define XTAL_11_059MHZ  11059200
#define XTAL_12_000MHZ  12000000
#define XTAL_12_288MHZ  12288000
#define XTAL_16_000MHZ  16000000
#define XTAL_20_000MHZ  20000000
#define XTAL_22_118MHZ  22118400
#define XTAL_24_000MHZ  24000000
#define XTAL_27_000MHZ  27000000


// Baud rate
#define BAUD_RATE_9600	1
#define BAUD_RATE_19200	2
#define BAUD_RATE_38400	3
#define BAUD_RATE_57600	4

// Choose your frequency and baud rate
// The Baud rate supported by Xtal:
// ============================================
//   Xtal Freq.   |  baud rate supported
// ============================================
//   11.059M         9600
//                   19200
//                   57600
// ============================================
//   22.118M         9600
//                   19200
//                   38400
//                   57600
// ============================================
//   27.000M         9600
//                   19200
//=============================================
#define XTAL_FREQ       XTAL_27_000MHZ
#define BAUD_RATE		BAUD_RATE_19200

#if (XTAL_FREQ == XTAL_11_059MHZ)
	#if (BAUD_RATE == BAUD_RATE_9600)
		#define TH1_VALUE 0xFA
	#elif (BAUD_RATE == BAUD_RATE_19200)
		#define TH1_VALUE 0xFD
	#elif (BAUD_RATE == BAUD_RATE_57600)
		#define TH1_VALUE 0xFF
	#else
		#error Not a valid Baud rate
	#endif
#elif (XTAL_FREQ == XTAL_22_118MHZ)
	#if (BAUD_RATE == BAUD_RATE_9600)
		#define TH1_VALUE 0xF4
	#elif (BAUD_RATE == BAUD_RATE_19200)
		#define TH1_VALUE 0xFA
	#elif (BAUD_RATE == BAUD_RATE_38400)
		#define TH1_VALUE 0xFD
	#elif (BAUD_RATE == BAUD_RATE_57600)
		#define TH1_VALUE 0xFE
	#else
		#error Not a valid Baud rate
	#endif
#elif (XTAL_FREQ == XTAL_27_000MHZ)
	#if (BAUD_RATE == BAUD_RATE_9600)
		#define TH1_VALUE 0xF1
	#elif (BAUD_RATE == BAUD_RATE_19200)
		#define TH1_VALUE 0xF9
	#else
		#error Not a valid Baud rate
	#endif
#else
#   error You must pick a reference XTAL frequency.
#endif

//#define SHOW_MSG(level,msg, par, parcnt)


 // Choice of memory space will affect ring buffer sizes. Usually, RX >= TX size.
//      0 - data
//      1 - idata
//      2 - pdata
//      3 - xdata
#define RING_MEM_SPACE  1
#define RX_RING_SIZE    0
#define TX_RING_SIZE    8

#if RING_MEM_SPACE == 0
#   undef  RING_MEM_SPACE
#   define RING_MEM_SPACE data
#   if RX_RING_SIZE + TX_RING_SIZE > 0x7F - 0x20
#       error Suggest you drop the size of UART ring buffers or switch to another memory space.
#   endif
#elif RING_MEM_SPACE == 1
#   undef  RING_MEM_SPACE
#   define RING_MEM_SPACE idata
#   if RX_RING_SIZE + TX_RING_SIZE > 0xFF - 0x20
#       error Suggest you drop the size of UART ring buffers or switch to another memory space.
#   endif
#elif RING_MEM_SPACE == 2
#   undef  RING_MEM_SPACE
#   define RING_MEM_SPACE pdata
#   if RX_RING_SIZE + TX_RING_SIZE > 0xFF
#       error Suggest you drop the size of UART ring buffers or switch to another memory space.
#   endif
#elif RING_MEM_SPACE == 3
#   undef  RING_MEM_SPACE
#   define RING_MEM_SPACE xdata
#   if RX_RING_SIZE + TX_RING_SIZE > 0xFFFF - 0x20
#       error Suggest you drop the size of UART ring buffers or switch to another memory space.
#   endif
#else
#   error You must pick a UART ring buffer memory space of xdata, idata, or data.
#endif

// Documentational.
#define UART_INTR_NUM       4
#define REGISTER_BANK_1     1

#define SCON_8N1            0x40 // SCON.SM1 = 1, SM0,2 = 0
#define SCON_REN            0x10

// Timer 1 only (Timer 0 not used here)
#define TMOD_GATE_T1        0x00	//0x80
#define TMOD_C_T_T1         0x00	//0x40
#define TMOD_M1_T1          0x01	//0x20
#define TMOD_M0_T1          0x00	//0x10
//#define T1_MODE        (TMOD_GATE_T1<<3  | TMOD_C_T_T1<<2 | TMOD_M1_T1<<1 | TMOD_M0_T1)<<4
#define T1_MODE		0x21
#define T1_8BIT_AUTO_RELOAD (TMOD_M1_T1)

#define PCON_SMOD           0x80 // Doubles baud rate timing of Timer 1

// Clip indexes at 2^16 since the 8051 only supports a 16-bit XDATA space.
#if RX_RING_SIZE > 256
    typedef unsigned int  RxRingIndex;
#else
    typedef unsigned char RxRingIndex;
#endif

#if TX_RING_SIZE > 256
    typedef unsigned int  TxRingIndex;
#else
    typedef unsigned char TxRingIndex;
#endif

typedef enum UartOptions
{
    UART_TRANSLATE_EOL,
    UART_BAUD_RATE    ,

    NUM_UART_OPTIONS
} UartOptions;

/*
typedef enum UartBaudRates
{
    BAUD_RATE_1200     ,
    BAUD_RATE_2400     ,
    BAUD_RATE_9600     ,
    BAUD_RATE_19200    ,
    BAUD_RATE_38400    ,
    BAUD_RATE_57600    ,
    BAUD_RATE_115200   ,

    NUM_BAUD_RATES     ,
    BAUD_RATE_NO_CHANGE
} UartBaudRates;
*/

bit UartInit(void);
bit uart_putchar(uCHAR outChar);
static  void uartIsr(void);
void ShowMsg(char *cpData);
//void ShowMsgVal(char *cpData, uCHAR *bpData, uCHAR bDataCnt);


#endif //end of Com.h

⌨️ 快捷键说明

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