| 8250的初始化 |
|
| 作者:陆志才 文章引用自“微型计算机组成原理”(高教出版社,南开大学2003)点击数: 更新时间:2007-3-12 20:38:08 |
|
| |
|
|
8250的初始化
在用8250进行异步通信之前,要对其进行初始化。初始化通常包括以下四步:
①设置除数寄存器。
初始化的第一步是根据波特率对除数寄存器进行设置。由于除数寄存器和接收缓冲器/发送保持器共用端口地址,所以写入除数寄存器之前,要先将线路控制寄存器LCR的最高位DLAB置位,然后按波特率与除数的对应关系对两个除数寄存器分别进行设置。下面是
设置第一个通信接口COMl的波特率为2 400的C程序段:
outpoab(0x3fn,0x80); /*写LCR,使DLAB为1*/
outpoab(0x3f8,0x30);/*写除数寄存器的低字节(参看表12.3)*/
outportb(0x3f9,0); /*写除数寄存器的高字节(参看表12.3)*/
②设置线路控制寄存器LCR
这一步是确定通信的数据格式(帧的格式),即数据位的位数、停止位的位数、是否进行奇偶校验、校验的类型等,同时使LcR的最高位DLAB复位,为后续的初始化过程中寄存器的寻址做准备。下面的一个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位进行设置,以确定四类中断事件的哪些可产生中断。一般情况下,四类中断都应置成允许。
|
|
本篇文章属于主题:PC系列机的串行通信,了解更多请点击:PC系列机的串行通信 |
|
|
| 文章录入:admin 责任编辑:admin |
|
上一篇文章: 8250内部寄存器 下一篇文章: 异步通信BIOS功能调用 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |