單片機第十章串行口_第1頁
單片機第十章串行口_第2頁
單片機第十章串行口_第3頁
單片機第十章串行口_第4頁
單片機第十章串行口_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單片機第十章串行口1第一頁,共三十六頁,2022年,8月28日二.串行通訊的字符格式:1.異步通訊:傳送方向……..1數據0……..1數據0……..1數據0

停止位起始位停止位起始位停止位起始位若干空閑位數據中信息的兩種狀態(tài)分別以mark和space標志,其中:

mark譯為”標號”,對應邏輯1的狀態(tài)。

Space譯為”空格”,對應邏輯0的狀態(tài)。

2第二頁,共三十六頁,2022年,8月28日每一幀數據均以0開始,以1終止,中間傳送的數據位可以是5位,7位,8位均可,中間有若干空閑位,空閑時一般處于1的狀態(tài)。異步通訊比較靈活,實現起來比較簡單

2.同步通訊:選用一個同步字符,例如0010010發(fā)送過去,約定同時開始同步傳送。

傳送方向數據數據數據數據同步字符

數據之間沒有間隔,可連續(xù)發(fā)送。3第三頁,共三十六頁,2022年,8月28日比較:同步傳送效率比異步高。如果傳送200個字節(jié)加一各同步字符,則輔助數據只佔0.5%若用異步傳送到200個字節(jié)則至少有400位輔助數據,其數量可觀。三.異步串行通訊的信號格式:

1.近程通訊RS232

TXD甲機

RXD

GND1488148914891488RXD乙機TXDGNDTTLTTLTTLTTLRS2324第四頁,共三十六頁,2022年,8月28日近程通訊采用數字信號直接傳送方式:計算機內部的數據信號是TTL電平標準,而通信線上的數據信號是RS-232電平標準。盡管電平標準不同,但數據信號的波形和頻率并沒有改變,近程串行通訊只需用傳輸線把兩端接口電路直接連接起來即可實現。RS-232和TTL電平標準的邏輯值規(guī)定為:

RS-232標準TTL標準邏輯1(mark)-3~-25V2~5V(高電平額定值3V)邏輯0(space)+3+25V0~0.8V(低電平額定值0.2V)5第五頁,共三十六頁,2022年,8月28日2.遠程通訊在遠程通訊中,應使用專用通信電纜,出于經濟的考慮,通常使用電話線作為傳輸線,如圖:計算機MODEMMODEM計算機數字信號數字信號RS-232標準RS-232標準模擬信號電話線地地6第六頁,共三十六頁,2022年,8月28日遠距離直接傳送數字信號,信號會發(fā)生畸變,為此要把數字信號轉變?yōu)槟M信號再進行傳送,通常使用頻率調制法,即以不同頻率的載波信號代表數字信號的兩種不同電平狀態(tài),這種數據傳送方式稱為頻帶傳送方式。通常為:

mark:1270HZ或2225HZspace:1070HZ或2025HZ在串行通信發(fā)送端有調制器,用以把電平信號調制為頻率信號,而在接收端有解調器,用以把頻率信號解調為電平信號。通常串行通信兩端均具有發(fā)送接收功能,因此均應設置調制器和解調器,二者合二為一為調制解調器,即MODEM。

7第七頁,共三十六頁,2022年,8月28日四.串行通訊的數據通路形式:1.

單工形式數據單向傳送,只需一條傳輸線。

2.

半雙工形式數據傳送是雙向,但不可同時進行。傳輸線可用一條,也可用兩條。

3.

全雙工形式數據傳送是雙向,且可同時發(fā)送接收。需兩條傳輸線。ABABAB8第八頁,共三十六頁,2022年,8月28日五.串行通訊的傳送速率:用每秒傳送數據的位數衡量,稱波特率(baudrate)

以波特為單位1波特=1bit/s(位/秒)

例如電傳打字機傳送速率為每秒10個字符,每個字符11位,則波特率為:

11位/字符×10字符/秒=110位/秒即110波特

傳送一位需時間:1/110秒≈9.1ms

MCS-51系列單片機具有一個全雙工的串行口,它在不同的工作方式中可同步或異步發(fā)送或接收數據。其波特率范圍:以6MHZ晶振為例、為0.24波特~31250波特

9第九頁,共三十六頁,2022年,8月28日

第二節(jié)8031單片機串行口的控制及工作方式

串行口的接收端為P3.0(10腳)稱RXD,發(fā)送端為P3.1(11腳)稱TXD。一.

8031串行口的控制寄存器:1.串行口控制寄存器SCON字節(jié)地址98H可位尋址。

SM0SM1SM2RENTB8

RB8TIRI

00:方式0接收中斷標志

01:方式1發(fā)送中斷標志

10:方式21:允許接收接收到的第9位

11:方式30:禁止接收待發(fā)送的第9位10第十頁,共三十六頁,2022年,8月28日例:使串行口方式1發(fā)送

MOVSCON,#40H01000000

方式1禁止接收2.PCON字節(jié)地址87HD7SMOD

只有最高位D7位有定義,SMOD稱波特率選擇位。SMOD為1時比為0時波特率高一倍。3.

串行通道數據寄存器SBUF

它是兩個9位移位寄存器,一個是發(fā)送緩沖器,只寫不讀,另一個是接收緩沖器,只讀不寫,它們共用一個地址99H

11第十一頁,共三十六頁,2022年,8月28日二.串行口的四種工作方式:1.方式0移位寄存器輸入輸出方式,同步發(fā)送接收8位數據,每個機器周期移一位。如圖:DSADSBCP74LS164Q0Q7

RXDTXD8031

RXDTXD8031Q7CP74LS165D0D7

輸出方式輸入方式12第十二頁,共三十六頁,2022年,8月28日方式0輸出的基本指令:

MOVSCON,#00H;SM0=SM1=0,選方式0

MOVA,#nnH;取待輸出數據nnHCLRTI;清發(fā)送中斷標志

MOVSBUF,A;對SBUF寫入即啟動發(fā)送,TXD端每個機器周期發(fā)出一個移位脈沖,數據即從RXD端輸出一位,74LS164的CP端每接收TXD端一個移位脈沖,數據右移一次,輸出時以并行方式出現。WAIT:JNBTI,WAIT;發(fā)送一個字節(jié)后TI=1

標志一幀數據發(fā)送完畢

CLRTI;清發(fā)送中斷標志,準備發(fā)送下一字節(jié)13第十三頁,共三十六頁,2022年,8月28日方式0輸入:當REN=1,接收中斷標志RI=0,則啟動接收,移位脈沖仍從TXD端輸出,數據從RXD端輸入,當一個字節(jié)數據輸入完畢時,置1接收中斷標志RI。

2.方式1異步通訊。發(fā)送或接收一幀數據為10位,其格式是:

18位數據0

SCON中SM0,SM1為01則選方式114第十四頁,共三十六頁,2022年,8月28日發(fā)送過程:①

啟動發(fā)送:執(zhí)行一條訪問SBUF的指令即啟動發(fā)送,且同時1裝入第9位。②

發(fā)送一位的時間:由選定的波特率決定。③

發(fā)送過程:首先起始位0從TXD腳發(fā)出,且第9位寫入1,然后每個移位脈沖將SBUF中數據右移一位,從TXD輸出,空位由0填充。發(fā)送結束后,置位發(fā)送中斷標志TI,申請中斷。15第十五頁,共三十六頁,2022年,8月28日接收過程:當REN=1,且接收中斷標志RI=0時,允許接收。①

判斷起始位:以選定波特率的16倍速率采樣RXD端,當連續(xù)三次采樣中有兩次是0時,則確認為起始位0,此時開始一幀數據的接收。②

開始接收:1FFH寫入移位寄存器,每個位移脈沖左移一位,一幀數據接收完后置1接收中斷標志,申請中斷。移位脈沖的頻率由選定波特率決定。③

判斷保留數據的條件保留數據的條件是:RI=0、SM2=0或者RI=0、停止位為1,符合兩組條件其中之一則將數據保留在SBUF中,并置位接收中斷標志RI。若不符合保留數據的條件,則將收到的數據丟棄,重新檢測RXD端以備下次接收。16第十六頁,共三十六頁,2022年,8月28日3.方式2.異步發(fā)送或接收一幀數據為11位,其格式為:

1第9位8位數據0

發(fā)送與接收操作同方式1,注意保留數據的兩組條件為:RI=0、SM2=0或者RI=0、第9位數據為1

4.方式3與方式2相同的是異步接收發(fā)送一幀數據是11位,但波特率與方式2不同。

注:所有方式當發(fā)送或接收一幀數據置1TI和RI中斷標志后,必須軟件清0,以備下一幀數據的發(fā)送或接收。17第十七頁,共三十六頁,2022年,8月28日三.SCON中的TB8、RB8第9位數據的用法舉例在數據通訊中,由于傳輸距離較遠,數據信號在傳輸過程中可能發(fā)生畸變,從而引起誤碼,為了保證傳輸質量,除了硬件上采取措施之外,軟件可采取排錯措施,例如可用第9位數據作為奇偶檢驗。例:

發(fā)送端發(fā)送一個字節(jié)數據及奇偶位:MOVSCON,#80H;選串行口方式2,傳送11位數據MOVA,#DATA;待發(fā)送8位數據送A,注意此時A的內容將影響PSW中的奇偶標志P,即PSW.0MOVC,PSW.0;奇偶標志送C,奇為1、偶為0MOVTB8,C;奇偶標志送TB8,待發(fā)送的第9位MOVSBUF,A;啟動一次發(fā)送共11位數據LOOP:JBCTI,NEXT;TI=1時,一幀數據發(fā)完,清TI轉下SJMPLOOP…………….NEXT:…18第十八頁,共三十六頁,2022年,8月28日接收端將收到的數據用奇偶校驗位進行核對排錯:

MOVSCON,#90H;選方式2,10010000,REN==1,允許接收

LOOP:JBCRI,RIV;等待接收完畢

SJMPLOOPRIV:MOVA,SBUF;接收完一幀數據取出送A

此時收到的數據將影響PSW中奇偶位PSW.0JBPSW.0,ONE;為奇跳下

JBRB8,ERR;接收到的數據為偶,而第9位為1,出錯

SJMPLD;接收正確

ONE:JNBRB8,ERR;接收到的第9位不為1,出錯

LD:……………;接收正確

ERR:…………….;接收出錯處理,可通知對方重發(fā)

19第十九頁,共三十六頁,2022年,8月28日

四.用SCON中的SM2實現多機通訊在方式2和方式3中,當接收到一幀數據時,只有符合下列條件之一數據才會被保留,否則將被丟棄:①RI=0②RI=0SM2=0第九位數據為11.多機通訊時約定主機發(fā)出地址信息時第9位為1,而數據信息第9位為0,且初始化時使SM2=12.主機先向各從機發(fā)出地址信息,此時由于地址信息第9位為1,各從機接收到的信息均符合第②組條件而被接收保存,各從機即將收到的地址信息與自己的地址相比較,如果與本機地址相符則使SM2=020第二十頁,共三十六頁,2022年,8月28日3.隨后主機向各從機發(fā)出數據,第9位為0,各從機收到后均不符合條件②,只有地址相符的從機由于SM2=0符合條件①而保存接收到的數據信息,其余各從機均將數據信息丟棄,這就實現了點對點的多機通訊。第三節(jié)波特率的制定方法一.方式0:以下以B代表波特率,以f代表晶振頻率方式0的波特率固定為晶振頻率的1/12

例如6M晶振,則B=6M/12=0.5M位/秒=0.5×106波特傳送一位所需時間是:2微秒注:方式0波特率只與晶振頻率f有關,f愈大傳送速度愈快。

21第二十一頁,共三十六頁,2022年,8月28日二.方式2:

B=f×2SMOD/64其中SMOD是PCON的最高位,可為0或1,以f=6M為例:當SMOD=0B=6M×20/64=93750波特當SMOD=1B=6M×21/64=187500波特注:方式2波特率與晶振頻率和SMOD有關,一經選定晶振頻率,波特率只有兩種可選擇。22第二十二頁,共三十六頁,2022年,8月28日三.方式1和方式3:

B=T1溢出率×2SMOD/32

什么是溢出率?溢出率即定時器每秒溢出的次數。由于定時器工作于不同的工作方式時,具有不同的計數器位數,(13位、16位、8位),裝入不同的初始常數,因此溢出率也不同。下面從溢出周期(隔多長時間溢出一次)來推出溢出率:23第二十三頁,共三十六頁,2022年,8月28日溢出周期:T=TC+TI

式中:TC

為定時器的定時間隔

TC=(2N-Z)×機器周期其中Z是定時器的初始常數N當定時器選擇方式0、1、2時分別為13、16、8機器周期為12/f

24第二十四頁,共三十六頁,2022年,8月28日TI為本次定時結束到下次啟動定時的時間,它包括:a:轉入中斷入口的硬件子程序所需的3個機器周期b:中斷服務程序中重裝時間常數又返回所需時間,一般為6個機器周期TI=9×12/f所以,溢出周期為:T=TC+TI

=(2N-Z)×12/f+9×12/f

=(2N-Z+9)×12/ff溢出率=1/T=(2N-Z+9)×1225第二十五頁,共三十六頁,2022年,8月28日

需要說明的是上述公式是對定時器方式0和1而言,對于定時器方式2則由于可自動重裝時間常數而省去了轉入中斷服務重裝時間常數所需的9個機器周期,即TI=0因此定時器方式2時溢出率為:

f溢出率=(2N-Z)×12

26第二十六頁,共三十六頁,2022年,8月28日

綜上分析,串行口方式1和方式3的波特率計算公式為:T1工作于方式0和方式1時

B=f×2SMODN=13或16①(2N-Z+9)×1232

T1工作于方式2時

B=f×2SMODN=8②(2N–Z)×1232

27第二十七頁,共三十六頁,2022年,8月28日由①式以f=6M為例T1方式0:當SMOD=0、Z=0時獲得最小波特率:

B=1.905≈2波特當SMOD=1、Z=1FFFH時獲得最大波特率:

B=3125波特T1方式1:波特率范圍為0.24~3125波特由②式,T1方式2:波特率范圍為61~31250波特

28第二十八頁,共三十六頁,2022年,8月28日例編一程序,設置8031串行口可發(fā)送接收一幀數據為11位,其波特率選定125波特。設晶振頻率為6MHZ分析:

1.方式2和方式3可發(fā)送接收11位數據。若選方式2B=f×2SMOD/64=6×106×2SMOD/64當SMOD=0時B=93750波特當SMOD=1時B=187500波特均不可滿足125波特,因此只能選方式3SCON:

11010000

方式3允許接收D0H29第二十九頁,共三十六頁,2022年,8月28日2.設置計算波特率:選T1方式2,其波特率范圍為61~31250波特可滿足125波特。T1工作于方式2時

B=f×2SMOD

選SMOD=1

(2N–Z)×1232

則:B=6×106×21=125解之得Z=6

(28–Z)×1232

30第三十頁,共三十六頁,2022年,8月28日程序如下:

ORG0000HAJMPMAINORG0023HAJMPPPT0MAIN:MOVSP,#60HMOVSCON,#0D0H;串行口方式3,允許接收

MOVPCON,#80H;SMOD=1MOVTMOD,#00100000B;T1方式2定時

MOVTL1,#06H;設置波特率125波特

MOVTH1,#06HSETBEA;允許CPU中斷

SETBES;允許串行口中斷

SETBTR1;啟動T1發(fā)出波特率

……………….

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論