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

📄 comm.h

📁 ucos porting source for Am188
💻 H
字号:
#define COM1						0
#define COM2						1
#define COM3						2
#define COM4						3
#define COM5						4

#define COM1BASE                0x3F8   /*  Base port address for COM1  */
#define COM2BASE                0x2F8   /*  Base port address for COM2  */
#define COM3BASE                0x3E8   /*  Base port address for COM3  */
#define COM4BASE                0x2E8   /*  Base port address for COM4  */

// if CPU CLOCK is 40MHz

#define B300    8333
#define B600    4166
#define B1200   2083
#define B2400   1041
#define B4800   520
#define B9600   260
#define B19200  130
#define B28800  86
#define B38400  65
#define B57600  43
#define B76800  32
#define B115200 22


// if CPU CLOCK is 40MHz
/*
#define B300    6875
#define B600    3437
#define B1200   1718 
#define B2400   859 
#define B4800   429 
#define B9600   214 
#define B19200  107
#define B28800  71 
#define B38400  53 
#define B57600  35 
#define B76800  26
#define B115200 18
*/

#define	COM1BUF_TXSIZE 64 
#define	COM2BUF_TXSIZE 64 
#define	COM3BUF_TXSIZE 64 
#define	COM4BUF_TXSIZE 64 

#define	COM1BUF_RXSIZE 512
#define	COM2BUF_RXSIZE 2048
#define	COM3BUF_RXSIZE 512
#define	COM4BUF_RXSIZE 512

//
// DEFINE PC16C550 COMMAND & REGISTERS
//
/*************************************************************************
		The 8250 UART has 10 registers accessible through 7 port addresses.
		Here are their addresses relative to COM1BASE and COM2BASE. Note
		that the baud rate registers, (DLL) and (DLH) are active only when
		the Divisor-Latch Access-Bit (DLAB) is on. The (DLAB) is bit 7 of
		the (LCR).

	o TXR Output data to the serial port.
	o RXR Input data from the serial port.
	o LCR Initialize the serial port.
	o IER Controls interrupt generation.
	o IIR Identifies interrupts.
	o MCR Send contorl signals to the modem.
	o LSR Monitor the status of the serial port.
	o MSR Receive status of the modem.
	o DLL Low byte of baud rate divisor.
	o DHH High byte of baud rate divisor.
***************************************************************************/

#define TXR     0           /*  Transmit register (WRITE)   */
#define RXR 	0			/*	Receive register	(READ)	*/
#define IER 	1			/*	Interrupt Enable			*/
#define IIR 	2			/*	Interrupt ID				*/
#define LCR 	3			/*	Line control				*/
#define MCR 	4			/*	Modem control				*/
#define LSR 	5			/*	Line Status 				*/
#define MSR 	6			/*	Modem Status				*/
#define DLL 	0			/*	Divisor Latch Low			*/
#define DLH 	1			/*	Divisor latch High			*/


/**************************************************************************
	Bit values held in the Line Control Register (LCR).
	bit 	meaning
	--- 	-------
	0-1 	00=5 bits, 01=6 bits, 10=7 bits, 11=8 bits.
	2	Stop bits.
	3	0=parity off, 1=parity on.

	4	0=parity odd, 1=parity even.
	5	Sticky parity.
	6	Set break.
	7	Toggle port addresses.
**************************************************************************/

#define NO_PARITY			0x00
#define EVEN_PARITY 		0x18
#define ODD_PARITY			0x08

/**************************************************************************
	Bit values held in the Line Status Register (LSR).
	bit 	meaning
	--- 	-------
	0	Data ready.
	1	Overrun error - Data register overwritten.
	2	Parity error - bad transmission.
	3	Framing error - No stop bit was found.
	4	Break detect - End to transmission requested.
	5	Transmitter holding register is empty.
	6	Transmitter shift register is empty.
	7	Time out - off line.
***************************************************************************/

#define RCVRDY		0x01
#define OVRERR		0x02
#define PRTYERR 	0x04
#define FRMERR		0x08
#define BRKERR		0x10
#define XMTRDY		0x20
#define XMTRSR		0x40
#define TIMEOUT 	0x80

/**************************************************************************
	Bit values held in the Modem Output Control Register (MCR). bit
	meaning --- 	------- 0	Data Terminal Ready. Computer ready to
	go. 1	Request To Send. Computer wants to send data. 2   auxillary
	output #1. 3   auxillary output #2.(Note: This bit must be set to
	allow the communications card to send interrupts to the system) 4
	UART ouput looped back as input. 5-7 Not used.
	**************************************************************************/

#define DTR 		0x01
#define RTS 		0x02
#define MC_INT		0x08

/**************************************************************************
	Bit values held in the Modem Input Status Register (MSR). bit
	meaning --- 	------- 0	delta Clear To Send. 1	 delta Data Set
	Ready. 2   delta Ring Indicator. 3	 delta Data Carrier Detect. 4
	Clear To Send. 5   Data Set Ready. 6   Ring Indicator. 7   Data
	Carrier Detect.
**************************************************************************/

#define CTS 		0x10
#define DSR 		0x20

/**************************************************************************
	Bit values held in the Interrupt Enable Register (IER). bit
	meaning --- 	------- 0	Interrupt when data received. 1
	Interrupt when transmitter holding reg. empty. 2   Interrupt when
	data reception error. 3   Interrupt when change in modem status
	register. 4-7 Not used.
*************************************************************************/

#define RX_INT		0x01

/**************************************************************************
	Bit values held in the Interrupt Identification Register (IIR). bit
	meaning --- 	------- 0	Interrupt pending 1-2
	Interrupt ID code 00=Change in modem status register, 01=Transmitter
	holding register empty, 10=Data received, 11=reception error, or
	break encountered. 3-7	   Not used.
	***************************************************************************/

#define RX_ID		0x04
#define RX_MASK 	0x07


#define NOERROR 	0			/* No error 				*/
#define BUFOVFL 	1			/* Buffer overflowed		*/

#define ASCII		0x007F		/* Mask ASCII characters	*/
#define SBUFSIZ 	0x1000		/* Serial buffer size		*/

extern byte	TxBuffer1[COM1BUF_TXSIZE], RxBuffer1[COM1BUF_RXSIZE];
extern int  TxIn1, TxOut1, RxIn1, RxOut1;         

extern byte TxBuffer2[COM2BUF_TXSIZE], RxBuffer2[COM2BUF_RXSIZE];      
extern int  TxIn2, TxOut2, RxIn2, RxOut2;   	

extern byte TxBuffer3[COM3BUF_TXSIZE], RxBuffer3[COM3BUF_RXSIZE];    
extern int  TxIn3, TxOut3, RxIn3, RxOut3;   

extern byte TxBuffer4[COM4BUF_TXSIZE], RxBuffer4[COM4BUF_RXSIZE];
extern int  TxIn4, TxOut4, RxIn4, RxOut4; 

extern  word    TxTimer, TxTimeOutFlag;
extern  word    RxTimer, RxTimeOutFlag;

extern void COM_Initialize(int, long, int, char, int);
extern void COM_Close(int port);
extern int  COM_Putchar(int port,  unsigned char tc);
extern int  COM_Getch(int port, byte *);
extern int  COM_Getchar(int port, byte *);
extern void COM_TxEnable(int port);
extern int  COM_Printf(int port, char *format, ...);
extern int  COM_String(int port, const char *format);
extern int  COM_Memory(int, const char *, int);
extern int  COM_TxBuffer(int port, const char *buffer, int number_of_buffer);
extern void COM_DtrControl(int port, int ctrl);
extern void COM_ClearBuffer(int port);

extern int 	CheckPrinterBusy(void);

⌨️ 快捷键说明

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