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

📄 pc机与单片机的通讯.htm

📁 8250扩展串口的单片机C51例程和相关资料。
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                          <TR>
                            <TD align=middle height=16 
                            width="21%">Bit5:3=011</TD>
                            <TD align=middle height=16 width="54%">偶校验</TD></TR>
                          <TR>
                            <TD align=middle height=16 
                            width="21%">Bit5:3=101</TD>
                            <TD align=middle height=16 
width="54%">奇偶保持为1</TD></TR>
                          <TR>
                            <TD align=middle height=16 
                            width="21%">Bit5:3=111</TD>
                            <TD align=middle height=16 
width="54%">奇偶保持为0</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="21%">Bit2=0</TD>
                            <TD align=middle height=16 width="54%">1位停止位</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="21%">Bit2=1</TD>
                            <TD align=middle height=16 
                              width="54%">2位停止位(数据位6-8位),1.5位停止位(5位数据位)</TD></TR>
                          <TR>
                            <TD align=middle height=16 
width="21%">Bit1:0=00</TD>
                            <TD align=middle height=16 width="54%">5位数据位</TD></TR>
                          <TR>
                            <TD align=middle height=16 
width="21%">Bit1:0=01</TD>
                            <TD align=middle height=16 width="54%">6位数据位</TD></TR>
                          <TR>
                            <TD align=middle height=16 
width="21%">Bit1:0=10</TD>
                            <TD align=middle height=16 width="54%">7位数据位</TD></TR>
                          <TR>
                            <TD align=middle height=16 
width="21%">Bit1:0=11</TD>
                            <TD align=middle height=16 
                          width="54%">8位数据位</TD></TR></TBODY></TABLE></CENTER></DIV>
                        <P align=left>&nbsp;&nbsp;&nbsp; 
                          LCR用来设定通讯所需的一些基本参数。Bit7为1指定波特率因子寄存器有效,为0则指定发送/接收及IER有效。Bit6置1会将发送端置为0,这将会使接收端产生一个“间断”。Bit3-5用来设定是否使用奇偶校验以及奇偶校验的类型,Bit3=1时使用校验,Bit4为0则为奇校验,1为偶校验,而Bit5则强制校验为1或0,并由Bit4决定具体为0或1。Bit2用来设定停止位的长度,0表示1位停止位,为1则根据数据长度的不同使用1.5-2位停止位。Bit0:1用来设定数据长度。</P>
                        <P align=left>  MODEM控制寄存器(MCR):</P>
                        <DIV align=center>
                        <CENTER>
                        <TABLE border=1 borderColorLight=#0000ff cellPadding=0 
                        cellSpacing=0 height=171 width="81%">
                          <TBODY>
                          <TR>
                            <TD align=middle height=25 width="21%"><B>位</B></TD>
                            <TD align=middle height=25 
                              width="54%"><B>注&nbsp;&nbsp;&nbsp; 释</B></TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit7</TD>
                            <TD align=middle height=16 width="57%">未使用</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit6</TD>
                            <TD align=middle height=16 width="57%">未使用</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit5</TD>
                            <TD align=middle height=16 
                              width="57%">自动流量控制(仅16750)</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit4</TD>
                            <TD align=middle height=16 width="57%">环路测试</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit3</TD>
                            <TD align=middle height=16 width="57%">辅助输出2</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit2</TD>
                            <TD align=middle height=16 width="57%">辅助输出1</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit1</TD>
                            <TD align=middle height=16 width="57%">设置RTS</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit0</TD>
                            <TD align=middle height=16 
                          width="57%">设置DSR</TD></TR></TBODY></TABLE></CENTER></DIV>
                        <P align=left>&nbsp;&nbsp;&nbsp; 
                          MCR寄存器可读可写,Bit4=1进入环路测试模式。Bit3-0用来控制对应的管脚。</P>
                        <P align=left>  线路状态寄存器(LSR):</P>
                        <DIV align=center>
                        <CENTER>
                        <TABLE border=1 borderColorLight=#0000ff cellPadding=0 
                        cellSpacing=0 height=171 width="81%">
                          <TBODY>
                          <TR>
                            <TD align=middle height=25 width="21%"><B>位</B></TD>
                            <TD align=middle height=25 
                              width="54%"><B>注&nbsp;&nbsp;&nbsp; 释</B></TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit7</TD>
                            <TD align=middle height=16 
                            width="57%">FIFO中接收数据错误</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit6</TD>
                            <TD align=middle height=16 
                          width="57%">发送移位寄存器空</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit5</TD>
                            <TD align=middle height=16 
                          width="57%">发送保持寄存器空</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit4</TD>
                            <TD align=middle height=16 width="57%">间断</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit3</TD>
                            <TD align=middle height=16 width="57%">帧格式错</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit2</TD>
                            <TD align=middle height=16 width="57%">奇偶错</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit1</TD>
                            <TD align=middle height=16 width="57%">超越错</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit0</TD>
                            <TD align=middle height=16 
                          width="57%">接收数据就绪</TD></TR></TBODY></TABLE></CENTER></DIV>
                        <P align=left>&nbsp;&nbsp;&nbsp; 
                          LSR为只读寄存器,当发生错误时Bit7为1,Bit6为1时标示发送保持及发送移位寄存器均空,Bit5为1时标示仅发送保持寄存器空,此时,可以由软件发送下一数据。当线路状态为0时Bit4置位为1,帧格式错时Bit3置位为1,奇偶错和超越错分别将Bit2及Bit1置位为1。Bit0置位为1表示接收数据就绪。</P>
                        <P>  MODEM状态寄存器(MSR):</P>
                        <DIV align=center>
                        <CENTER>
                        <TABLE border=1 borderColorLight=#0000ff cellPadding=0 
                        cellSpacing=0 height=171 width="81%">
                          <TBODY>
                          <TR>
                            <TD align=middle height=25 width="21%"><B>位</B></TD>
                            <TD align=middle height=25 
                              width="54%"><B>注&nbsp;&nbsp;&nbsp; 释</B></TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit7</TD>
                            <TD align=middle height=16 width="57%">载波检测</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit6</TD>
                            <TD align=middle height=16 width="57%">响铃指示</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit5</TD>
                            <TD align=middle height=16 
                          width="57%">DSR准备就绪</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit4</TD>
                            <TD align=middle height=16 width="57%">CTS有效</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit3</TD>
                            <TD align=middle height=16 
width="57%">DCD已改变</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit2</TD>
                            <TD align=middle height=16 width="57%">RI已改变</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit1</TD>
                            <TD align=middle height=16 
width="57%">DSR已改变</TD></TR>
                          <TR>
                            <TD align=middle height=16 width="18%">Bit0</TD>
                            <TD align=middle height=16 
                          width="57%">CTS已改变</TD></TR></TBODY></TABLE></CENTER></DIV>
                        <P align=left>&nbsp;&nbsp;&nbsp; 
                          MSR寄存器的高4位分别对应MODEM的状态线,低4位表示MODEM的状态线是否发生了变化。</P>
                        <P align=left>&nbsp;&nbsp;&nbsp; 
                        以上我们详细介绍了PC机的串行通讯硬件环境,以下将分别给出使用查询及中断驱动的方法编写的串行口驱动程序。这些程序仅使用RXD/TXD,无需硬件握手信号。</P>
                        <P align=left>(2)<A 
                        name=polling></A>使用查询方法的串行通讯程序设计:   <A 
                        href="http://www.ewbbs.com/Admin_ArticleShow.asp?ArticleID=128#0">返回页首</A></P>
                        <P align=left><FONT 
                        color=#ff0000><I>polling.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        </I></FONT></P>
                        <P align=left><FONT color=#0000ff>#include 
                        <DOS.H><BR>#include <STDIO.H><BR>#include 
                        <CONIO.H><BR>#define PortBase 0x2F8<BR><BR>void 
                        com_putch(unsigned char);<BR>int 
                        com_chkch(void);<BR><BR>main()<BR>{<BR>&nbsp;int 
                        c;<BR>&nbsp;unsigned char 
                        ch;<BR><BR>&nbsp;outportb(PortBase + 1 , 0); /* Turn off 
                        interrupts - Port1 */<BR><BR>&nbsp;/* Set COM1: 
                        9600,8,N,1*/<BR>&nbsp;outportb(PortBase + 3 , 
                        0x80);<BR>&nbsp;outportb(PortBase + 0 , 
                        0x0C);<BR>&nbsp;outportb(PortBase + 1 , 
                        0x00);<BR>&nbsp;outportb(PortBase + 3 , 
                        0x03);<BR><BR>&nbsp;clrscr();<BR><BR>&nbsp;while(1) 
                        {<BR></FONT></P>
                        <P align=left><FONT color=#0000ff>&nbsp; c = 
                        com_chkch();<BR>&nbsp;&nbsp; if(c!=-1) {<BR>&nbsp;&nbsp; 
                        c &amp;= 0xff; putch(c);<BR>&nbsp;&nbsp; if(c=='\n') 
                        putch('\r');<BR>&nbsp; }<BR>&nbsp;</FONT></P>
                        <P align=left><FONT color=#0000ff>&nbsp; if(kbhit()) 
                        {<BR>&nbsp;&nbsp; ch = getch(); com_putch(ch);<BR>&nbsp; 
                        }<BR>&nbsp;}<BR><BR>}<BR><BR><BR>void com_putch(unsigned 
                        char ch) {<BR>&nbsp;unsigned char 
                        status;<BR><BR>&nbsp;while(1) {<BR>&nbsp; status = 
                        inportb(PortBase+5);<BR>&nbsp; if(status&amp;0x01) 

⌨️ 快捷键说明

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