?? dpjjx23.htm
字號:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft FrontPage 5.0">
<TITLE>串行接口</TITLE>
</HEAD>
<BODY background="../back.jpg">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">串行接口</P>
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">概述</LI></p>
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></OL>
<OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">串行接口的一般概念</LI>
單片機與外界進行信息交換稱之為通訊。
</OL>
</FONT>
</FONT>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><FONT SIZE=2>8051</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>單片機的通訊方式有兩種:</FONT></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>并行通訊:數據的各位同時發送或接收。</FONT></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>串行通訊:數據一位一位順序發送或接收。參看下圖:</FONT></p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"><font size="2">
<img src="DPJ221.gif" width="565" height="341"></font></p>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">串行通訊的方式:</P>
</FONT>
<OL><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">異步通訊:它用一個起始位表示字符的開始,用停止位表示字符的結束。其每幀的格式如下:</LI></p>
</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
</font>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>在一幀格式中,先是一個起始位</font><FONT SIZE=2>0</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>,然后是</FONT><FONT SIZE=2>8</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>個數據位,規定低位在前,高位在后,接下來是奇偶校驗位(可以省略),最后是停止位</FONT><FONT SIZE=2>1</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>。用這種格式表示字符,則字符可以一個接一個地傳送。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>在異步通訊中,</font><FONT SIZE=2>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>與外設之間必須有兩項規定,即字符格式和波特率。字符格式的規定是雙方能夠在對同一種</FONT><FONT SIZE=2>0</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>和</FONT><FONT SIZE=2>1</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>的串理解成同一種意義。原則上字符格式可以由通訊的雙方自由制定,但從通用、方便的角度出發,一般還是使用一些標準為好,如采用</FONT><FONT SIZE=2>ASCII</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>標準。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>波特率即數據傳送的速率,其定義是每秒鐘傳送的二進制數的位數。例如,數據傳送的速率是</font><FONT SIZE=2>120</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>字符</FONT><FONT SIZE=2>/s</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>,而每個字符如上述規定包含</FONT><FONT SIZE=2>10</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>數位,則傳送波特率為</FONT><FONT SIZE=2>1200</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>波特。</font></P><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0"></font>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">同步通訊:在同步通訊中,每個字符要用起始位和停止位作為字符開始和結束的標志,占用了時間;所以在數據塊傳遞時,為了提高速度,常去掉這些標志,采用同步傳送。由于數據塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現發送端與接收端之間的同步,故硬件較復雜。</LI></p>
</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">通訊方向:在串行通訊中,把通訊接口只能發送或接收的單向傳送方法叫單工傳送;而把數據在甲乙兩機之間的雙向傳遞,稱之為雙工傳送。在雙工傳送方式中又分為半雙工傳送和全雙工傳送。半雙工傳送是兩機之間不能同時進行發送和接收,任一時該,只能發或者只能收信息。</LI></p>
</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></font></font></OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT SIZE=2>2</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>.</FONT><FONT SIZE=2>8051</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>單片機的串行接口結構</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT SIZE=2>8051</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>串行接口是一個可編程的全雙工串行通訊接口。它可用作異步通訊方式(</FONT><FONT SIZE=2>UART</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>),與串行傳送信息的外部設備相連接,或用于通過標準異步通訊協議進行全雙工的</FONT><FONT SIZE=2>8051</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>多機系統也可以通過同步方式,使用</FONT><FONT SIZE=2>TTL</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>或</FONT><FONT SIZE=2>CMOS</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>移位寄存器來擴充</FONT><FONT SIZE=2>I/O</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>口。</font></P>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT SIZE=2>8051</font><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>單片機通過引腳</FONT><FONT SIZE=2>RXD</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>(</FONT><FONT SIZE=2>P3.0</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>,串行數據接收端)和引腳</FONT><FONT SIZE=2>TXD</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>(</FONT><FONT SIZE=2>P3.1</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>,串行數據發送端)與外界通訊。</FONT><FONT SIZE=2>SBUF</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>是串行口緩沖寄存器,包括發送寄存器和接收寄存器。它們有相同名字和地址空間,但不會出現沖突,因為它們兩個一個只能被</FONT><FONT SIZE=2>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>讀出數據,一個只能被</FONT><FONT SIZE=2>CPU</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>寫入數據。</font></P>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<OL>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">串行口的控制與狀態寄存器</LI></p>
</FONT>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P></OL>
</FONT>
<OL>
<FONT FACE="宋體" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
</font>
<LI>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>串行口控制寄存器</font><FONT SIZE=2>SCON</LI> </font>
<FONT SIZE=3>
</p>
<p style="line-height: 150%; margin-top: 0; margin-bottom: 0"></P>
</FONT>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">
<FONT FACE="宋體" LANG="ZH-CN" SIZE=2>它用于定義串行口的工作方式及實施接收和發送控制。字節地址為</font><FONT SIZE=2>98H</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=2>,其各位定義如下表:</font></P>
<TABLE BORDER CELLSPACING=1 CELLPADDING=7 WIDTH=592>
<TR>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D7
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D6
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D5
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D4
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D3
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D2
</FONT></TD>
<TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2>
<P ALIGN="JUSTIFY" style="line-height: 150%; margin-top: 0; margin-bottom: 0">D1
</FONT></TD>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -