www.pudn.com > tl16c554.rar > 16c554.h
#ifndef _16C554_H #define _16C554_H sbit UART_RST = P3^1; /******************************************************/ /* 特殊功能寄存器地址定义 */ /******************************************************/ #define RBR 0X00 //receiver-buffer register #define THR 0X00 //transmitter-holding register #define DLL 0X00 #define DLM 0X80 #define IER 0X80 //interrupt-enable register #define FCR 0X40 //FIFO-control register #define IIR 0X40 //interrupt-identification register #define LCR 0XC0 //line-control register #define MCR 0X20 //modem-control register #define LSR 0Xa0 //line-status register #define MSR 0X60 //modem-status register #define SCR 0Xe0 //scratchpad register #define UA_ADDR 0XC700 #define UA_RBR XBYTE[UA_ADDR+RBR] //receiver-buffer register #define UA_THR XBYTE[UA_ADDR+THR] //transmitter-holding register #define UA_DLL XBYTE[UA_ADDR+DLL] #define UA_DLM XBYTE[UA_ADDR+DLM] #define UA_IER XBYTE[UA_ADDR+IER] //interrupt-enable register #define UA_FCR XBYTE[UA_ADDR+FCR] //FIFO-control register #define UA_IIR XBYTE[UA_ADDR+IIR] //interrupt-identification register #define UA_LCR XBYTE[UA_ADDR+LCR] //line-control register #define UA_MCR XBYTE[UA_ADDR+MCR] //modem-control register #define UA_LSR XBYTE[UA_ADDR+LSR] //line-status register #define UA_MSR XBYTE[UA_ADDR+MSR] //modem-status register #define UA_SCR XBYTE[UA_ADDR+SCR] //scratchpad register #define UB_ADDR 0XBB00 #define UB_RBR XBYTE[UB_ADDR+RBR] //receiver-buffer register #define UB_THR XBYTE[UB_ADDR+THR] //transmitter-holding register #define UB_DLL XBYTE[UB_ADDR+DLL] #define UB_DLM XBYTE[UB_ADDR+DLM] #define UB_IER XBYTE[UB_ADDR+IER] //interrupt-enable register #define UB_FCR XBYTE[UB_ADDR+FCR] //FIFO-control register #define UB_IIR XBYTE[UB_ADDR+IIR] //interrupt-identification register #define UB_LCR XBYTE[UB_ADDR+LCR] //line-control register #define UB_MCR XBYTE[UB_ADDR+MCR] //modem-control register #define UB_LSR XBYTE[UB_ADDR+LSR] //line-status register #define UB_MSR XBYTE[UB_ADDR+MSR] //modem-status register #define UB_SCR XBYTE[UB_ADDR+SCR] //scratchpad register #define UC_ADDR 0XAD00 #define UC_RBR XBYTE[UC_ADDR+RBR] //receiver-buffer register #define UC_THR XBYTE[UC_ADDR+THR] //transmitter-holding register #define UC_DLL XBYTE[UC_ADDR+DLL] #define UC_DLM XBYTE[UC_ADDR+DLM] #define UC_IER XBYTE[UC_ADDR+IER] //interrupt-enable register #define UC_FCR XBYTE[UC_ADDR+FCR] //FIFO-control register #define UC_IIR XBYTE[UC_ADDR+IIR] //interrupt-identification register #define UC_LCR XBYTE[UC_ADDR+LCR] //line-control register #define UC_MCR XBYTE[UC_ADDR+MCR] //modem-control register #define UC_LSR XBYTE[UC_ADDR+LSR] //line-status register #define UC_MSR XBYTE[UC_ADDR+MSR] //modem-status register #define UC_SCR XBYTE[UC_ADDR+SCR] //scratchpad register #define UD_ADDR 0X9E00 #define UD_RBR XBYTE[UD_ADDR+RBR] //receiver-buffer register #define UD_THR XBYTE[UD_ADDR+THR] //transmitter-holding register #define UD_DLL XBYTE[UD_ADDR+DLL] #define UD_DLM XBYTE[UD_ADDR+DLM] #define UD_IER XBYTE[UD_ADDR+IER] //interrupt-enable register #define UD_FCR XBYTE[UD_ADDR+FCR] //FIFO-control register #define UD_IIR XBYTE[UD_ADDR+IIR] //interrupt-identification register #define UD_LCR XBYTE[UD_ADDR+LCR] //line-control register #define UD_MCR XBYTE[UD_ADDR+MCR] //modem-control register #define UD_LSR XBYTE[UD_ADDR+LSR] //line-status register #define UD_MSR XBYTE[UD_ADDR+MSR] //modem-status register #define UD_SCR XBYTE[UD_ADDR+SCR] //scratchpad register #define U_READ_STATUS XBYTE[0XDFFF] //the address of the reading status from tl16c554 //config FCR #define FCR_CONFIG1 0X87 //ENABLE FIFO, //CLEAR FIFO(receive and transmit FIFO) //Triggle Level = 8(Bytes) //config IER #define IER_CONFIG1 0X03 // // //config LCR #define LCR_CONFIG1 0x03 //8 Bytes, 1 Stop bit, No Parity //config Bsp #define U_CLOCK 3686400L #define BAND_A 9600L #define BAND_B 4800L #define BAND_C 4800L #define BAND_D 9600L #define DLL_A (U_CLOCK/BAND_A/16) #define DLM_A ((U_CLOCK/BAND_A/16)>>8) #define DLL_B (U_CLOCK/BAND_B/16) #define DLM_B ((U_CLOCK/BAND_B/16)>>8) #define DLL_C (U_CLOCK/BAND_C/16) #define DLM_C ((U_CLOCK/BAND_C/16)>>8) #define DLL_D (U_CLOCK/BAND_D/16) #define DLM_D ((U_CLOCK/BAND_D/16)>>8) //config MCR #define MCR_CONFIG1 0x08 //Enable extern serial channel interrupt /* ******************************************************************************************** */ #define ENABLE YES #define DISABLE NO //各串口使能定义 #define UARTA DISABLE #define UARTB DISABLE #define UARTC DISABLE #define UARTD DISABLE //串口任务参数定义 #define UARTA_TX 0X01 #define UARTA_TX_C 0XFE #define UARTA_RX 0X02 #define UARTA_RX_C 0XFD #define UARTB_TX 0X04 #define UARTB_TX_C 0XFB #define UARTB_RX 0X08 #define UARTB_RX_C 0XF7 #define UARTC_TX 0X10 #define UARTC_TX_C 0XEF #define UARTC_RX 0X20 #define UARTC_RX_C 0XDF #define UARTD_TX 0X40 #define UARTD_TX_C 0XBF #define UARTD_RX 0X80 #define UARTD_RX_C 0X7F // #define UA_TX 0X01 #define UA_TX_CLEAR 0XFE #define UB_TX 0X02 #define UB_TX_CLEAR 0XFB #define UC_TX 0X04 #define UC_TX_CLEAR 0XFB #define UD_TX 0X08 #define UD_TX_CLEAR 0XF7 #endif