8250的初始化
8250的初始化
1 H1 Y1 U w0 M' h. ~6 s! z! J 在用8250进行异步通信之前,要对其进行初始化。初始化通常包括以下四步: + }5 o; n1 E- @0 y& }
①设置除数寄存器。 ) i' z! h( E- P" ~% I. s& e* E' l* S
初始化的第一步是根据波特率对除数寄存器进行设置。由于除数寄存器和接收缓冲器/发送保持器共用端口地址,所以写入除数寄存器之前,要先将线路控制寄存器LCR的最高位DLAB置位,然后按波特率与除数的对应关系对两个除数寄存器分别进行设置。下面是 7 h( A7 Y% N: _ N& `9 ]/ O
设置第一个通信接口COMl的波特率为2 400的C程序段: 0 j( Z# G; \; z: s+ ~) [
outpoab(0x3fn,0x80); /*写LCR,使DLAB为1*/ 7 }7 ~8 M8 w) ]+ Z) f
outpoab(0x3f8,0x30);/*写除数寄存器的低字节(参看表12.3)*/
5 H9 p; q9 H/ N' h" d" B outportb(0x3f9,0); /*写除数寄存器的高字节(参看表12.3)*/
: C# G' c* y( F6 ~( F ②设置线路控制寄存器LCR ; k/ e+ P! ^) F
这一步是确定通信的数据格式(帧的格式),即数据位的位数、停止位的位数、是否进行奇偶校验、校验的类型等,同时使LcR的最高位DLAB复位,为后续的初始化过程中寄存器的寻址做准备。下面的一个C语句是设置COMl的数据格式为7个数据位,2个停止位、采用奇校验:
点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹