16c554 的头文件

//------------------------------------------------------------------------------ 
#ifndef    AT16C554H 
#define    AT16C554H 
 
//------------------------------------------------------------------------------ 
 
#include   "timer.h" 
#include   "AT78E58BP.H" 
#include   "System.h" 
#include   "Asyn_422.H" 
#include   <intrins.h> 
#include   <string.h> 
//------------------------------------------------------------------------------ 
//							常量定义 
//------------------------------------------------------------------------------ 
#define	 PortNumber			4 
#define  SERIAL_STU_BUSY 	0x01				// 串行口忙标志位,1为忙,0为空闲 
#define  SERIAL_STU_FREE 	0x00			 
//------------------------------------------------------------------------------ 
//                  波特率定义 
//------------------------------------------------------------------------------ 
#define 	CY18432M 
#ifdef 		CY18432M 
	#define 	B50 		0x0900				// DLM 为高八位,DLL 为低八位 
	#define 	B300 		0x0180 
	#define 	B600 		0x00c0 
	#define 	B1200 		0x0060 
	#define 	B2400 		0x0030 
	#define 	B4800 		0x0018 
	#define 	B9600 		0x000c 
	#define 	B19200 		0x0006 
	#define 	B38400 		0x0003 
	#define 	B57600 		0x0002 
	#define 	B115200 	0x0001 
#else 
	#define 	B200 		0x0900				// DLM 为高八位,DLL 为低八位 
	#define 	B1200 		0x0180 
	#define 	B2400 		0x00c0 
	#define 	B4800 		0x0060 
	#define 	B9600 		0x0030 
	#define 	B19200 		0x0018 
	#define 	B38400 		0x000c 
	#define 	B76800 		0x0006 
	#define 	B153600 	0x0003 
	#define 	B230400 	0x0002 
	#define 	B460800 	0x0001 
#endif 
//------------------------------------------------------------------------------ 
//           16C554 内部寄存器定义 
//------------------------------------------------------------------------------ 
#define 		RHR 			0X00		// 接受数据保持寄存器, 					只读 
#define 		THR 			0X00		// 发送数据保持寄存器, 					只写 
#define 		IER 			0X01		// 中断允许寄存器,     					只写 
#define 		FCR 			0X02		// FIFO 控制寄存器,						只写 
#define 		ISR 			0X02		// 中断状态寄存器,							只读 
#define 		LCR 			0X03		// 线控制寄存器,							只写 
#define 		MCR 			0X04		// MODEM 控制寄存器,						只写 
#define 		LSR 			0X05		// 线状态寄存器,							只读 
#define 		MSR 			0X06		// MODEM 状态寄存器,						只读 
#define 		SPR 			0X07		// 中间结果暂存寄存器,						可读写 
#define 		DLL 			0X00		// 波特率发生分频因子低八位,LCR bit7 为1,	可读写 
#define 		DLM 			0X01		// 波特率发生分频因子高八位,LCR bit7 为1,	可读写 
 
#define FIFO_EN 				0X01		// FIFO 使能命令字 
#define FIFO_TRI_LEVEL_1 		0X00		// FIFO 触发级别为1个字节 
#define FIFO_TRI_LEVEL_4 		0X40		// FIFO 触发级别为4个字节 
#define FIFO_TRI_LEVEL_8 		0X80		// FIFO 触发级别为8个字节 
#define FIFO_TRI_LEVEL_14 		0XC0		// FIFO 触发级别为14个字节 
#define FIFO_DMA_MODE 			0X08		// FIFO DMA 模式选择命令字 
#define FIFO_CLEAR_RCVR 		0X02		// 清除接受FIFO 中的内容数据 
#define FIFO_CLEAR_XMIT 		0X04		// 清除发送FIFO 中的内容数据 
 
#define IER_MODEM_INT 			0X08		// MODEM 状态中断屏蔽位 
#define IER_RECEIVELINE_INT 	0X04		// 接受线状态中断屏蔽位 
#define IER_TRANSMITHOLD_INT 	0X02		// 发送保持寄存器中断屏蔽位 
#define IER_RECEIVEHOLD_INT 	0X01		// 接受保持寄存器中断屏蔽位 
 
#define LCR_WORD_LEN5 			0X00		// 数据位长度为5 
#define LCR_WORD_LEN6 			0X01		// 数据位长度为6 
#define LCR_WORD_LEN7 			0X02		// 数据位长度为7 
#define LCR_WORD_LEN8 			0X03		// 数据位长度为8 
#define LCR_STOP_LEN1 			0X00		// 停止位长度为1 
#define LCR_STOP_LEN2 			0X04		// 停止位长度为2 注意: 当数据位为5时停止位为1.5位 
#define LCR_PARITY_EN 			0X08		// 校验位使能控制位 
#define LCR_PARITY_EVEN 		0X10		// EVEN偶校验设置位,默任情况下为奇校验ODD 
#define LCR_PARITY_SET 			0X20		// 奇偶校验强制设置位 
#define LCR_OUT_BREAK 			0X40		// TX输出BREAK信号 
#define LCR_DIV_EN 				0X80		// 允许发送波特率 
#define LCR_DIV_Dis				0X00		// 禁止发送波特率 
#define MCR_INTX_EN 			0X08		// 中断引脚输出允许控制命令字 
#define MCR_INTX_Dis 			0X00		// 中断引脚输出禁止控制命令字 
 
//------------------------------------------------------------------------------ 
//           16C554 中断事件定义 
//------------------------------------------------------------------------------ 
#define EVENT_LSR 				0X06		// LSR 状态寄存器事件 
#define EVENT_LSR_RECEIVE 		0X01		// 数据接受保存到保存寄存器或FIFO中 
#define EVENT_LSR_OVERRUN 		0X02		// 接受移位积存器中的数据发生覆盖错误事件 
#define EVENT_LSR_PARITY 		0X04		// 接受数据校验错误事件 
#define EVENT_LSR_FRAMING 		0X08		// 接受数据发生帧错误 
#define EVENT_LSR_BREAK 		0X10		// 接受到一个BREAK 事件 
#define EVENT_LSR_TRANHOLDEMPTY 0X20		// 发送保持寄存器或FIFO 空事件允许装载数据 
#define EVENT_LSR_TRANSMITEMPTY 0x40		// 发送器空事件 
#define EVENT_LSR_FIFOERROR 	0X80		// FIFO 中有错误数据 
#define EVENT_RXRDY 			0X04		// 数据接受就绪中断事件 
#define EVENT_RXRDY_TIMEOUT 	0X0C		// 接受数据超时中断事件 
#define EVENT_TXRDY 			0X02		// 数据发送就绪中断事件 
#define EVENT_MSR 				0X00		// MODEM 状态中断事件 
#define FIFO_SIZE 				16 
 
//------------------------------------------------------------------------------------- 
//      16C554 各端口RAM映射 
//------------------------------------------------------------------------------------- 
#define STARTADDR_SERIAL1 		0X0000		// 串行口通道1起始地址 
#define STARTADDR_SERIAL2 		0X0008		// 串行口通道2起始地址 
#define STARTADDR_SERIAL3 		0X0010		// 串行口通道3起始地址 
#define STARTADDR_SERIAL4 		0X0018		// 串行口通道4起始地址 
 
//------------------------------------------------------------------------------------- 
//       其它常量 
//------------------------------------------------------------------------------------- 
#define   	Init_16c554_Count    	10 
#define 	FREE_RESET 				0 
#define 	RESET 					1 
//------------------------------------------------------------------------------------- 
//         多串口相关的数据结构 
//------------------------------------------------------------------------------------- 
typedef struct st_CommHandle 
			   { 
				 Uint   RAMAddress_Map; 
				 Uchar  CommReceiveBuffer[CommMaxReceiveBuffer];  //串口接收缓冲区 
				 Uchar  CommSendBuffer[CommMaxSendBuffer];        //串口发送缓冲区 
				 Uchar  CommReceive_Head;                         //串口接收缓冲区头指针 
				 Uchar  CommReceive_Trail;                        //串口接收缓冲区尾指针 
				 Uchar  CommSend_Head;                            //串口发送缓冲区头指针 
				 Uchar  CommSend_Trail;                           //串口发送缓冲区尾指针 
			     Uchar  Comm_Stu;                                 //串行口发送器忙标志数组 
			     Uchar  Comm_Priority;                            //串行口接受缓冲区数据处理优先级别数组 
			   };//end struct 
 
typedef struct st_CommHandle TCommHandle; 
//------------------------------------------------------------------------------------- 
//        多串口16C554 驱动程序公用函数 
//------------------------------------------------------------------------------------- 
extern bool 	Init_16c554(void); 
extern void 	Port_open(Uchar PortID,Uint Baud); 
extern void 	Port_close(Uchar PortID); 
extern int  	Port_Receive(Uchar PortID,void *Buffer,int Count); 
extern int  	Port_Send(Uchar PortID,void *Buffer,int Count); 
//------------------------------------------------------------------------------------- 
#endif 
//-----

posted on 2015-12-30 16:53  嵌入式操作系统  阅读(807)  评论(0编辑  收藏  举报

导航