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

📄 head.h

📁 TL16C554串口扩展芯片的四个串口通信程序
💻 H
字号:

//head.h

#include <mega64.h> 
#include <delay.h>
#include <stdio.h>
#include <string.h>

#define uchar 	unsigned char
#define schar 	signed char
#define uint  	unsigned int
#define sint  	signed int

#define fosc 	8000000 	//晶振8MHZ  
#define fuart	16000000

//UCSRA
#define RXC  	7
#define TXC	6
#define UDRE	5
#define FE	4
#define DOR 	3
#define UPE	2
#define U2X	1
#define MPCM	0
//UCSRB
#define RXCIE	7
#define TXCIE	6
#define UDRIE	5
#define RXEN	4
#define TXEN	3
#define UCSZ2	2
#define RXB8	1
#define TXB8	0
//UCSRC
#define UMSEL	6
#define UPM1	5
#define UPM0	4
#define USBS	3
#define UCSZ1	2
#define UCSZ0	1
#define UCPOL	0 

//PORTD
#define CSA  	PORTD.4 
#define CSB  	PORTD.5
#define CSC  	PORTD.6
#define CSD  	PORTD.7

//MCUCR
#define SRE	7
#define SRW10	6
//XMCRA
#define SRL2	6
#define SRL1	5 
#define SRL0	4 
#define SRW01	3
#define SRW00	2
#define SRW11	1
//XMCRB
#define XMBK	7
#define XMM2	2 
#define XMM1	1 
#define XMM0	0 

//EECR
#define EEWE	1
#define EERE	0

#define FRAMING_ERROR 		(1<<FE)
#define PARITY_ERROR 		(1<<UPE)
#define DATA_OVERRUN 		(1<<DOR)
#define RX_COMPLETE 		(1<<RXC)
#define TX_COMPLETE 		(1<<TXC)
#define DATA_REGISTER_EMPTY	(1<<UDRE)

#define RT485	PORTE.2
#define RST554	PORTE.3
 
//串口A
#define TL16C554_A_THR  	*(unsigned char *)0x8000 // Transmit Holding Register
#define TL16C554_A_RBR  	*(unsigned char *)0x8000 // Receive Holding Register 
#define TL16C554_A_DLL  	*(unsigned char *)0x8000 // Divisor-latch LSB
#define TL16C554_A_DLM  	*(unsigned char *)0x8001 // Divisor-latch MSB
#define TL16C554_A_IER  	*(unsigned char *)0x8001 // Interrupt Enable Register
#define TL16C554_A_IIR  	*(unsigned char *)0x8002 // Interrupt Status Register
#define TL16C554_A_FCR  	*(unsigned char *)0x8002 // FIFO control register
#define TL16C554_A_LCR  	*(unsigned char *)0x8003 // Line control Register
#define TL16C554_A_MCR  	*(unsigned char *)0x8004 // Modem Control Register
#define TL16C554_A_LSR  	*(unsigned char *)0x8005 // Line Status Register
#define TL16C554_A_MSR  	*(unsigned char *)0x8006 // Modem Status Register
#define TL16C554_A_SCR  	*(unsigned char *)0x8007 // Scratchpad Register  

//串口B
#define TL16C554_B_THR  	*(unsigned char *)0x8000 // Transmit Holding Register
#define TL16C554_B_RBR  	*(unsigned char *)0x8000 // Receive Holding Register 
#define TL16C554_B_DLL  	*(unsigned char *)0x8000 // Divisor-latch LSB
#define TL16C554_B_DLM  	*(unsigned char *)0x8001 // Divisor-latch MSB
#define TL16C554_B_IER  	*(unsigned char *)0x8001 // Interrupt Enable Register
#define TL16C554_B_IIR  	*(unsigned char *)0x8002 // Interrupt Status Register
#define TL16C554_B_FCR  	*(unsigned char *)0x8002 // FIFO control register
#define TL16C554_B_LCR  	*(unsigned char *)0x8003 // Line control Register
#define TL16C554_B_MCR  	*(unsigned char *)0x8004 // Modem Control Register
#define TL16C554_B_LSR  	*(unsigned char *)0x8005 // Line Status Register
#define TL16C554_B_MSR  	*(unsigned char *)0x8006 // Modem Status Register
#define TL16C554_B_SCR  	*(unsigned char *)0x8007 // Scratchpad Register        

//串口C
#define TL16C554_C_THR  	*(unsigned char *)0x8000 // Transmit Holding Register
#define TL16C554_C_RBR  	*(unsigned char *)0x8000 // Receive Holding Register 
#define TL16C554_C_DLL  	*(unsigned char *)0x8000 // Divisor-latch LSB
#define TL16C554_C_DLM  	*(unsigned char *)0x8001 // Divisor-latch MSB
#define TL16C554_C_IER  	*(unsigned char *)0x8001 // Interrupt Enable Register
#define TL16C554_C_IIR  	*(unsigned char *)0x8002 // Interrupt Status Register
#define TL16C554_C_FCR  	*(unsigned char *)0x8002 // FIFO control register
#define TL16C554_C_LCR  	*(unsigned char *)0x8003 // Line control Register
#define TL16C554_C_MCR  	*(unsigned char *)0x8004 // Modem Control Register
#define TL16C554_C_LSR  	*(unsigned char *)0x8005 // Line Status Register
#define TL16C554_C_MSR  	*(unsigned char *)0x8006 // Modem Status Register
#define TL16C554_C_SCR  	*(unsigned char *)0x8007 // Scratchpad Register  


//串口D
#define TL16C554_D_THR  	*(unsigned char *)0x8000 // Transmit Holding Register
#define TL16C554_D_RBR  	*(unsigned char *)0x8000 // Receive Holding Register 
#define TL16C554_D_DLL  	*(unsigned char *)0x8000 // Divisor-latch LSB
#define TL16C554_D_DLM  	*(unsigned char *)0x8001 // Divisor-latch MSB
#define TL16C554_D_IER  	*(unsigned char *)0x8001 // Interrupt Enable Register
#define TL16C554_D_IIR  	*(unsigned char *)0x8002 // Interrupt Status Register
#define TL16C554_D_FCR  	*(unsigned char *)0x8002 // FIFO control register
#define TL16C554_D_LCR  	*(unsigned char *)0x8003 // Line control Register
#define TL16C554_D_MCR  	*(unsigned char *)0x8004 // Modem Control Register
#define TL16C554_D_LSR  	*(unsigned char *)0x8005 // Line Status Register
#define TL16C554_D_MSR  	*(unsigned char *)0x8006 // Modem Status Register
#define TL16C554_D_SCR  	*(unsigned char *)0x8007 // Scratchpad Register  


typedef struct
{
  	uchar Start;
  	uchar Command;
  	uchar *Pack_Data;
  	uchar Check_Sum;
}Str_Command; 

typedef struct
{
  	uchar Start;
  	uchar Command; 
  	uchar Len[2];
  	uchar *Pack_Data;
  	uchar Check_Sum;
}Str_Data;                                 
                          


⌨️ 快捷键说明

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