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

📄 com.h

📁 DOS下的串口触摸屏控制器驱动程序
💻 H
字号:
/*---------------------------------------------------------------------*
   FILENAME:                     SER977.H

                  Some definitions used by SERIAL.C

 *--------------------------------------------------------------------*/

#define COM1            1
#define COM2            2
#define COM1BASE        0x3F8   	//COM1的端口地址
#define COM2BASE        0x2F8   	//COM2的端口地址

/*
    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 输出数据到串口。
	o RXR 从串口读入数据。
	o IER 控制中断产生。
	o IIR 中断标志
	o LCR 初始化串口。
	o MCR 发送控制信号到modem.
	o LSR 监视串口状态.
	o MSR 从modem接收状态.
	
	o DLL Low byte of baud rate divisor.
	o DHH High byte of baud rate divisor.
*/
#define TXR             0       //发送保持寄存器(写方式时)
#define RXR             0       //接收保持寄存器(读方式时)
#define IER             1       //中断允许寄存器
#define IIR             2       //中断状态寄存器
#define LCR             3       //线路控制寄存器
#define MCR             4       //Modem控制寄存器
#define LSR             5       //线路状态寄存器
#define MSR             6       //Modem状态寄存器

//要设置BRD,必须首先将LCR的第7位设置成1。然后可以安全地将所需除数输
//出给它们的I/O地址。设置BRD后,应马上清除LCR的第7位。
#define DLL             0       //除数锁存器低位
#define DLH             1       //除数锁存器高位

/*-------------------------------------------------------------------*
LCR(线路控制寄存器)寄存器位定义。
	引脚	含义
	0-1	00=5 bits, 01=6 bits, 10=7 bits, 11=8 bits.(数据位为几位)
	2	0=1 bits,1=2bits.(停止位)
	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 ODD_PARITY      0x08	//奇校验
#define EVEN_PARITY     0x18	//偶校验

/*-------------------------------------------------------------------*
LSR(线路状态寄存器)寄存器位定义。
	引脚	含义
	0	Data ready.(接收到数据)
	1	Overrun error.(数据寄存器溢出)
	2	Parity error。(奇偶性出错)
	3	Framing error.(帧差错,没有找到停止位)
	4	Break detect - End to transmission requested.
	5	Transmitter holding register is empty.(发送保持寄存器空)
	6	Transmitter shift register is empty.(发送移位寄存器空)
	7	Time out.(超时)
 *-------------------------------------------------------------------*/
#define RCVRDY          0x01
#define OVRERR          0x02
#define PRTYERR         0x04
#define FRMERR          0x08
#define BRKERR          0x10
#define XMTRDY          0x20
#define XMTRSR          0x40
#define TIMEOUT		0x80

/*-------------------------------------------------------------------*
MCR(Modem控制寄存器)寄存器位定义.
	引脚	含义
	0	Data Terminal Ready. Computer ready to go(设置DTR线活动).
	1	Request To Send. Computer wants to send data( 设置RTS线活动).
	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.
 *------------------------------------------------------------------*/
// 数据终端就绪(DTR)线告诉调制解调器,计算机已打开并准备接收来自调制解调器的信息。
#define DTR             0x01
//请求送出(RTS)线告诉解调器计算机准备向线上送出一些东西。
#define RTS             0x02

#define MC_INT		0x08


/*------------------------------------------------------------------*
MSR(Modem状态寄存器)寄存器位定义.
	引脚	含义
	0		delta Clear To Send(清除发送).
	1		delta Data Set Ready(数据设置就绪).
	2		delta Ring Indicator(环形指示器).
	3		delta Data Carrier Detect(数据携带者探测).
	4		Clear To Send(CTS设置为高电平).
	5		Data Set Ready(DSR设置为高电平).
	6		Ring Indicator(RI设置为高电平).
	7		Data Carrier Detect(DCD设置为高电平).
 *------------------------------------------------------------------*/
#define CTS             0x10
#define DSR             0x20

/*------------------------------------------------------------------*
IER(中断允许寄存器)寄存器位定义.
	引脚	含义
	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(改变MODEN状态寄存器).
	4-7		Not used.
 *------------------------------------------------------------------*/
#define RX_INT          0x01

/*------------------------------------------------------------------*
IIR(中断状态寄存器)寄存器位定义.
	引脚	含义
	0		Interrupt pending(以发生的中断超过1).
	1-2             Interrupt ID code(中断ID号).
			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 HSR_ID		0x0		//CTS,DSR,RI或DCD
#define NO_INT		0x01		//没有串口中断
#define TBRE_ID		0x02		//发送缓冲寄存器空中断
#define RX_ID           0x04		//接收数据中断
#define URS_ID		0x06		//串口错误或间断中断(过速,奇偶,组帧)
#define FDT_ID		0x0c		
#define RX_MASK         0x0f		//串口中断掩码


//8259的中断控制地址。
#define IMR             0x21		//中断掩码寄存器
#define ICR             0x20		//中断控制寄存器

//发送中断应答信号
#define EOI             0x20 

/*
    The (IMR) tells the (PIC) to service an interrupt only if it
    is not masked (FALSE).
*/
#define IRQ3            0xF7  /* COM2 */
#define IRQ4            0xEF  /* COM1 */






⌨️ 快捷键说明

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