📄 pc机与单片机的通讯.htm
字号:
<TD align=middle height=16 width="15%">SG</TD>
<TD align=middle height=16 width="10%">-</TD>
<TD align=middle height=16 width="172%">信号地</TD></TR>
<TR>
<TD align=middle height=16 width="10%">8</TD>
<TD align=middle height=16 width="10%">1</TD>
<TD align=middle height=16 width="15%">DCD</TD>
<TD align=middle height=16 width="10%">输入</TD>
<TD align=middle height=16
width="172%">数据载波检测</TD></TR>
<TR>
<TD align=middle height=16 width="10%">20</TD>
<TD align=middle height=16 width="10%">4</TD>
<TD align=middle height=16 width="15%">DTR</TD>
<TD align=middle height=16 width="10%">输出</TD>
<TD align=middle height=16
width="172%">数据终端准备就绪(计算机)</TD></TR>
<TR>
<TD align=middle height=16 width="10%">22</TD>
<TD align=middle height=16 width="10%">9</TD>
<TD align=middle height=16 width="15%">RI</TD>
<TD align=middle height=16 width="10%">输入</TD>
<TD align=middle height=16
width="172%">响铃指示</TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=left>
以上信号在通讯过程之中可能会被全部或部分使用,最简单的通讯仅需TXD及RXD及SG即可完成,其他的握手信号可以做适当处理或直接悬空,至于是否可以悬空这视乎你的通讯软件。比如说,如果使用DOS所提供的BIOS通讯驱动程序,那么,这些握手信号则需要做如下处理,因为BIOS的通讯驱动使用了这些信号。如果使用自己编写的串行驱动程序则可以完全不使用这些握手信号(详见下面有关章节)。</P>
<P align=center><IMG
src="PC机与单片机的通讯.files/2003616224445929.gif"></P>
<P align=left>
PC机一般使用8250或16550的作为串行通讯控制器,8250及16550的管脚排列如下:</P>
<P align=center><IMG
src="PC机与单片机的通讯.files/200361622455670.gif"></P>
<P align=left>
8250(16550)的寄存器如下表所示:</P>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColorLight=#0000ff cellPadding=0
cellSpacing=0 height=244 width="74%">
<TBODY>
<TR>
<TD align=middle height=26
width="15%"><B>基地址</B></TD>
<TD align=middle height=26
width="15%"><B>读/写</B></TD>
<TD align=middle height=26
width="15%"><B>寄存器缩写</B></TD>
<TD align=middle height=26
width="50%"><B>注 释</B></TD></TR>
<TR>
<TD align=middle height=16 width="15%">0</TD>
<TD align=middle height=16 width="15%">Write</TD>
<TD align=middle height=16 width="15%">-</TD>
<TD align=middle height=16
width="50%">发送保持寄存器(DLAB=0)</TD></TR>
<TR>
<TD align=middle height=16 width="15%">0</TD>
<TD align=middle height=16 width="15%">Read</TD>
<TD align=middle height=16 width="15%">-</TD>
<TD align=middle height=16
width="50%">接收数据寄存器(DLAB=0)</TD></TR>
<TR>
<TD align=middle height=16 width="15%">0</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">-</TD>
<TD align=middle height=16
width="50%">波特率低八位(DLAB=1)</TD></TR>
<TR>
<TD align=middle height=16 width="15%">1</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">IER</TD>
<TD align=middle height=16
width="50%">中断允许寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">1</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">-</TD>
<TD align=middle height=16
width="50%">波特率高八位(DLAB=1)</TD></TR>
<TR>
<TD align=middle height=16 width="15%">2</TD>
<TD align=middle height=16 width="15%">Read</TD>
<TD align=middle height=16 width="15%">IIR</TD>
<TD align=middle height=16
width="50%">中断标识寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">2</TD>
<TD align=middle height=16 width="15%">Write</TD>
<TD align=middle height=16 width="15%">FCR</TD>
<TD align=middle height=16
width="50%">FIFO控制寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">3</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">LCR</TD>
<TD align=middle height=16
width="50%">线路控制寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">4</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">MCR</TD>
<TD align=middle height=16
width="50%">MODEM控制寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">5</TD>
<TD align=middle height=16 width="15%">Read</TD>
<TD align=middle height=16 width="15%">LSR</TD>
<TD align=middle height=16
width="50%">线路状态寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">6</TD>
<TD align=middle height=16 width="15%">Read</TD>
<TD align=middle height=16 width="15%">MSR</TD>
<TD align=middle height=16
width="50%">MODEM状态寄存器</TD></TR>
<TR>
<TD align=middle height=16 width="15%">7</TD>
<TD align=middle height=16
width="15%">Read/Write</TD>
<TD align=middle height=16 width="15%">-</TD>
<TD align=middle height=16 width="50%">Scratch
Register</TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=left>
PC机支持1-4个串行口,即COM1-COM4,其基地址在BIOS数据区0000:0400-0000:0406中描述,对应地址分别为3F8/2F8/3E8/2E8,COM1及COM3使用PC机中断4,COM2及COM4使用中断3。</P>
<P align=left>
在上表中,8250共有12个寄存器,使用了8个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1用于设定通讯所需的波特率。常用的波特率参数见下表:</P>
<P align=center> </P>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColorLight=#0000ff cellPadding=0
cellSpacing=0 height=210 width="66%">
<TBODY>
<TR>
<TD align=middle height=28
width="30%"><B>速率(BPS)</B></TD>
<TD align=middle height=28
width="35%"><B>波特率高八位</B></TD>
<TD align=middle height=28
width="35%"><B>波特率低八位</B></TD></TR>
<TR>
<TD align=middle height=16 width="30%">50</TD>
<TD align=middle height=16 width="35%">09h</TD>
<TD align=middle height=16 width="35%">00h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">300</TD>
<TD align=middle height=16 width="35%">01h</TD>
<TD align=middle height=16 width="35%">80h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">600</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">C0h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">2400</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">30h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">4800</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">18h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">9600</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">0Ch</TD></TR>
<TR>
<TD align=middle height=16 width="30%">19200</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">06h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">38400</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">03h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">57600</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16 width="35%">02h</TD></TR>
<TR>
<TD align=middle height=16 width="30%">115200</TD>
<TD align=middle height=16 width="35%">00h</TD>
<TD align=middle height=16
width="35%">01h</TD></TR></TBODY></TABLE></CENTER></DIV>
<P align=left> </P>
<P align=left>
以下几个表格为8250的寄存器的功能描述:</P>
<P align=left> 中断允许寄存器(IER):</P>
<DIV align=center>
<CENTER>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -