📄 串行接口.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0047)http://www.onestudy.net/download/elec/dpj21.htm -->
<!-- saved from url=(0048)http://www.21icsearch.com/pmcu/dpjjx/dpjjx23.htm --><HTML><HEAD><TITLE>串行接口</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY background=""><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>串行接口</P>
<OL>
<P align=justify>
<LI>概述
<P></P></LI></OL>
<OL>
<P align=justify>
<LI>串行接口的一般概念 单片机与外界进行信息交换称之为通讯。 </LI></OL></FONT>
<P><FONT size=3>8051</FONT><FONT lang=ZH-CN face=宋体
size=3>单片机的通讯方式有两种:</FONT></P>
<P><FONT lang=ZH-CN face=宋体 size=3>并行通讯:数据的各位同时发送或接收。</FONT></P>
<P><FONT lang=ZH-CN face=宋体 size=3>串行通讯:数据一位一位顺序发送或接收。参看下图:</FONT></P>
<P><IMG height=341 src="串行接口.files/DPJ221.gif" width=565></P><FONT lang=ZH-CN
face=宋体 size=3>
<P></P>
<P align=justify>串行通讯的方式:</P></FONT>
<OL><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>
<LI>异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下:
<P></P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>在一帧格式中,先是一个起始位</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋体 size=3>,然后是</FONT><FONT
size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位</FONT><FONT
size=3>1</FONT><FONT lang=ZH-CN face=宋体
size=3>。用这种格式表示字符,则字符可以一个接一个地传送。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>在异步通讯中,</FONT><FONT
size=3>CPU</FONT><FONT lang=ZH-CN face=宋体
size=3>与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种</FONT><FONT
size=3>0</FONT><FONT lang=ZH-CN face=宋体 size=3>和</FONT><FONT
size=3>1</FONT><FONT lang=ZH-CN face=宋体
size=3>的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用</FONT><FONT
size=3>ASCII</FONT><FONT lang=ZH-CN face=宋体 size=3>标准。</FONT></P>
<P align=justify><FONT lang=ZH-CN face=宋体
size=3>波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是</FONT><FONT
size=3>120</FONT><FONT lang=ZH-CN face=宋体 size=3>字符</FONT><FONT
size=3>/s</FONT><FONT lang=ZH-CN face=宋体 size=3>,而每个字符如上述规定包含</FONT><FONT
size=3>10</FONT><FONT lang=ZH-CN face=宋体 size=3>数位,则传送波特率为</FONT><FONT
size=3>1200</FONT><FONT lang=ZH-CN face=宋体 size=3>波特。</FONT></P><FONT
lang=ZH-CN face=宋体 size=3>
<P align=justify></P>
<LI>同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
<P></P>
<P align=justify></P>
<LI>通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。
<P></P></FONT></LI></OL>
<P align=justify><FONT size=3>2</FONT><FONT lang=ZH-CN face=宋体
size=3>.</FONT><FONT size=3>8051</FONT><FONT lang=ZH-CN face=宋体
size=3>单片机的串行接口结构</FONT></P>
<P align=justify><FONT size=3>8051</FONT><FONT lang=ZH-CN face=宋体
size=3>串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(</FONT><FONT size=3>UART</FONT><FONT
lang=ZH-CN face=宋体 size=3>),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的</FONT><FONT
size=3>8051</FONT><FONT lang=ZH-CN face=宋体 size=3>多机系统也可以通过同步方式,使用</FONT><FONT
size=3>TTL</FONT><FONT lang=ZH-CN face=宋体 size=3>或</FONT><FONT
size=3>CMOS</FONT><FONT lang=ZH-CN face=宋体 size=3>移位寄存器来扩充</FONT><FONT
size=3>I/O</FONT><FONT lang=ZH-CN face=宋体 size=3>口。</FONT></P>
<P align=justify><FONT size=3>8051</FONT><FONT lang=ZH-CN face=宋体
size=3>单片机通过引脚</FONT><FONT size=3>RXD</FONT><FONT lang=ZH-CN face=宋体
size=3>(</FONT><FONT size=3>P3.</FONT><FONT size=3>0</FONT><FONT lang=ZH-CN
face=宋体 size=3>,串行数据接收端)和引脚</FONT><FONT size=3>TXD</FONT><FONT lang=ZH-CN
face=宋体 size=3>(</FONT><FONT size=3>P3.</FONT><FONT size=3>1</FONT><FONT
lang=ZH-CN face=宋体 size=3>,串行数据发送端)与外界通讯。</FONT><FONT size=3>SBUF</FONT><FONT
lang=ZH-CN face=宋体
size=3>是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被</FONT><FONT
size=3>CPU</FONT><FONT lang=ZH-CN face=宋体 size=3>读出数据,一个只能被</FONT><FONT
size=3>CPU</FONT><FONT lang=ZH-CN face=宋体 size=3>写入数据。</FONT></P><FONT
lang=ZH-CN face=宋体 size=3>
<OL>
<P align=justify>
<LI>串行口的控制与状态寄存器
<P></P></LI></OL></FONT>
<OL><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify></FONT>
<LI><FONT lang=ZH-CN face=宋体 size=3>串行口控制寄存器</FONT><FONT size=3>SCON</FONT>
<FONT size=3>
<P></P></FONT>
<P align=justify><FONT lang=ZH-CN face=宋体
size=3>它用于定义串行口的工作方式及实施接收和发送控制。字节地址为</FONT><FONT size=3>98H</FONT><FONT
lang=ZH-CN face=宋体 size=3>,其各位定义如下表:</FONT></P>
<TABLE cellSpacing=1 cellPadding=7 width=592 border=1>
<TBODY>
<TR>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D7 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D6 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D5 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D4 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D3 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D2 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D1 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>D0 </FONT></P></TD></TR>
<TR>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>SM0 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>SM1 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>SM2 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>REN </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>TB8 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>RB8 </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>TI </FONT></P></TD>
<TD vAlign=top width="13%"><FONT size=3>
<P align=justify>RI </FONT></P></TD></TR></TBODY></TABLE>
<P align=justify><FONT size=3>SM0</FONT><FONT lang=ZH-CN face=宋体
size=3>、</FONT><FONT size=3>SM1</FONT><FONT lang=ZH-CN face=宋体
size=3>:串行口工作方式选择位,其定义如下:</FONT></P>
<TABLE cellSpacing=1 cellPadding=7 width=592 border=1>
<TBODY>
<TR>
<TD vAlign=top width="14%">
<P align=justify><FONT size=3>SM0</FONT><FONT lang=ZH-CN face=宋体
size=3>、</FONT><FONT size=3>SM1</FONT> </P></TD>
<TD vAlign=top width="19%"><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>工作方式 </FONT></P></TD>
<TD vAlign=top width="42%"><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>功能描述 </FONT></P></TD>
<TD vAlign=top width="25%"><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>波特率 </FONT></P></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>
<P align=justify>0 0 </FONT></P></TD>
<TD vAlign=top width="19%">
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>方式</FONT><FONT
size=3>0</FONT> </P></TD>
<TD vAlign=top width="42%">
<P align=justify><FONT size=3>8</FONT><FONT lang=ZH-CN face=宋体
size=3>位移位寄存器</FONT> </P></TD>
<TD vAlign=top width="25%"><FONT size=3>
<P align=justify>Fosc/12 </FONT></P></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>
<P align=justify>0 1 </FONT></P></TD>
<TD vAlign=top width="19%">
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>方式</FONT><FONT
size=3>1</FONT> </P></TD>
<TD vAlign=top width="42%">
<P align=justify><FONT size=3>10</FONT><FONT lang=ZH-CN face=宋体
size=3>位</FONT><FONT size=3>UART</FONT> </P></TD>
<TD vAlign=top width="25%"><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>可变 </FONT></P></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>
<P align=justify>1 0 </FONT></P></TD>
<TD vAlign=top width="19%">
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>方式</FONT><FONT
size=3>2</FONT> </P></TD>
<TD vAlign=top width="42%">
<P align=justify><FONT size=3>11</FONT><FONT lang=ZH-CN face=宋体
size=3>位</FONT><FONT size=3>UART</FONT> </P></TD>
<TD vAlign=top width="25%">
<P align=justify><FONT size=3>Fosc/64</FONT><FONT lang=ZH-CN face=宋体
size=3>或</FONT><FONT size=3>fosc/32</FONT> </P></TD></TR>
<TR>
<TD vAlign=top width="14%"><FONT size=3>
<P align=justify>1 1 </FONT></P></TD>
<TD vAlign=top width="19%">
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>方式</FONT><FONT
size=3>3</FONT> </P></TD>
<TD vAlign=top width="42%">
<P align=justify><FONT size=3>11</FONT><FONT lang=ZH-CN face=宋体
size=3>位</FONT><FONT size=3>UART</FONT> </P></TD>
<TD vAlign=top width="25%"><FONT lang=ZH-CN face=宋体 size=3>
<P align=justify>可变 </FONT></P></TD></TR></TBODY></TABLE>
<P align=justify><FONT lang=ZH-CN face=宋体 size=3>其中</FONT><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -