8250的初始化
在用8250进行异步通信之前,要对其进行初始化,
8250的初始化
。初始化通常包括以下四步:①设置除数寄存器。
初始化的第一步是根据波特率对除数寄存器进行设置。由于除数寄存器和接收缓冲器/发送保持器共用端口地址,所以写入除数寄存器之前,要先将线路控制寄存器LCR的最高位DLAB置位,然后按波特率与除数的对应关系对两个除数寄存器分别进行设置。下面是
设置第一个通信接口COMl的波特率为2400的C程序段:
outpoab(0x3fn,0x80);/*写LCR,使DLAB为1*/
outpoab(0x3f8,0x30);/*写除数寄存器的低字节(参看表12.3)*/
outportb(0x3f9,0);/*写除数寄存器的高字节(参看表12.3)*/
②设置线路控制寄存器LCR
这一步是确定通信的数据格式(帧的格式),即数据位的位数、停止位的位数、是否进行奇偶校验、校验的类型等,同时使LcR的最高位DLAB复位,为后续的初始化过程中寄存器的寻址做准备,
电脑资料
《8250的初始化》(http://meiwen.anslib.com)。下面的一个C语句是设置COMl的数据格式为7个数据位,2个停止位、采用奇校验:outportb(0x3fb,OxOe);
③设置Modem控制寄存器MCR
通常情况下设定低2位都为1,使8250输出DTR和RTS。即便系统中不使用这两个信号,这样设置也没有关系。如果要使用中断,位3(OUT2)应设置为1。在正常情况下,MCR的位4(LOOP)应设置为0。如果要对8250进行自检,则应设置为l,这样,发送的数据能被自己接收,而不必在外部接线。
④设置中断允许寄存器IER
若不采用中断,应将IER的低4位都设置成0;若采用中断,则应根据需要对低4位进行设置,以确定四类中断事件的哪些可产生中断。一般情况下,四类中断都应置成允许。