串行通信课件_第1页
串行通信课件_第2页
串行通信课件_第3页
串行通信课件_第4页
串行通信课件_第5页
已阅读5页,还剩36页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

串行通信

串行通信優點:便於長距離傳送

缺點:傳送速度較慢電腦與外界資訊交換稱為通信。通信的基本方式可分為並行通信和串行通信:並行通信是數據的各位同時發送或同時接收;串行通信是數據的各位依次逐位發送或接收。並行通信優點:傳送速度快

缺點:不便長距離傳送串行通信的基本特徵是數據逐位順序進行傳送串行通信的格式及約定(如:同步方式、通訊速率、數據塊格式、信號電平……等)不同,形成了多種串行通信的協議與介面標準。常見的有:☞通用非同步收發器(UART)——本課程介紹的串口☞通用串行匯流排(USB)☞I2C匯流排☞CAN匯流排☞SPI匯流排☞RS-485,RS-232C,RS422A標準……等等

非同步通信對硬體要求較低,實現起來比較簡單、靈活,適用於數據的隨機發送/接收,但因每個位元組都要建立一次同步,即每個字元都要額外附加兩位,所以工作速度較低,在單片機中主要採用非同步通信方式。§6-1串行通信概述一、非同步通信和同步通信串行通信按同步方式可分為非同步通信和同步通信。1、非同步通信非同步通信依靠起始位、停止位保持通信同步。

非同步通信數據傳送按幀傳輸,一幀數據包含起始位、數據位、校驗位和停止位。

同步通信傳輸速度較快,但要求有準確的時鐘來實現收發雙方的嚴格同步,對硬體要求較高,適用於成批數據傳送。2、同步通信同步通信依靠同步字元保持通信同步。

同步通信是由1~2個同步字元和多位元組數據位組成,同步字元作為起始位以觸發同步時鐘開始發送或接收數據;多位元組數據之間不允許有空隙,每位佔用的時間相等;空閒位需發送同步字元。

串列傳輸速率的倒數即為每位傳輸所需的時間。相互通信的甲乙雙方必須具有相同的串列傳輸速率,否則無法成功地完成串行數據通信。二、串行通信串列傳輸速率串列傳輸速率bps(bitpersecond)定義:

每秒傳輸數據的位數,即:1波特=1位/秒(1bps)三、串行通信的制式

串行通信按照數據傳送方向可分為三種制式:

單工制式是指甲乙雙方通信時只能單向傳送數據,發送方和接收方固定。1、單工制式(Simplex)

半雙工制式是指通信雙方都具有發送器和接收器,既可發送也可接收,但不能同時接收和發送,發送時不能接收,接收時不能發送。2、半雙工制式(HalfDuplex)

全雙工制式是指通信雙方均設有發送器和接收器,並且通道劃分為發送通道和接收通道,因此全雙工制式可實現甲乙雙方同時發送和接收數據,發送時能接收,接收時也能發送。3、全雙工制式(FullDuplex)四、串行通信的校驗3、迴圈冗餘碼校驗(CyclicRedundancyCheck,簡稱CRC)1、奇偶校驗2、累加和校驗累加和校驗是指發送方將所發送的數據塊求和,並將“校驗和”附加到數據塊末尾。接收方接收數據時也是先對數據塊求和,將所得結果與發送方的“校驗和”進行比較,相符則無差錯,否則即出現了差錯。“校驗和”的加運算可用邏輯加,也可用算術加。累加和校驗的缺點是無法檢驗出位元組位序(或1、0位序不同)的錯誤。

迴圈冗餘碼校驗的基本原理是將一個數據塊看成一個位數很長的二進位數,然後用一個特定的數去除它,將餘數作校驗碼附在數據塊後一起發送。接收端收到該數據塊和校驗碼後,進行同樣的運算來校驗傳送是否出錯。目前CRC已廣泛用於數據存儲和數據通信中,並在國際上形成規範,已有不少現成的CRC軟體演算法。

80C51系列單片機有一個全雙工的串行口,這個口既可以用於網路通信,也可以實現串行非同步通信,還可以作為同步移位寄存器使用。§6-280C51串行口51單片機的串行介面SBUF(發)SBUF(收)發送控制器TI接收控制器RI移位寄存器串列傳輸速率發生器T11A累加器(門)移位寄存器RxDTxD去申請中斷引腳引腳CPU內部

發送時,只需將發送數據輸入SBUF,CPU將自動啟動和完成串行數據的發送;

接收時,CPU將自動把接收到的數據存入SBUF,用戶只需從SBUF中讀出接收數據。一、串行口特殊功能寄存器1、串行數據緩衝器SBUF

在邏輯上只有一個,既表示發送寄存器,又表示接收寄存器,具有同一個單元地址99H,用同一寄存器名SBUF。

在物理上有兩個,一個是發送緩衝寄存器,另一個是接收緩衝寄存器。指令

MOVSBUF,A

啟動一次數據發送,可向SBUF

再發送下一個數指令

MOVA,SBUF

完成一次數據接收,SBUF可再接收下一個數2、串行控制寄存器SCONSCOND7D6D5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能工作方式選擇多機通信控制接收允許發送第9位接收第9位發送中斷接收中斷①SM0SM1——串行口工作方式選擇位。②SM2——多機通信控制位。③REN——允許接收控制位。REN=1,允許接收。④TB8——方式2和方式3中要發送的第9位數據。⑤RB8——方式2和方式3中要接收的第9位數據。⑥TI——發送中斷標誌。⑦RI——接收中斷標誌。①SM0SM1——串行口工作方式選擇位。其狀態組合所對應的工作方式如表6-2所示。

SM0SM1工作方式

功能說明000同步移位寄存器輸入/輸出,串列傳輸速率固定為fosc/120118位UART;串列傳輸速率可變(TI溢出率/n,n=32或16)1029位UART,串列傳輸速率固定為fosc/n,(n=64或32)1139位UART,串列傳輸速率可變(T1溢出率/n,n=32或16)②SM2------多機通信控制位。在方式2和方式3中,若SM2=1,且RB8(接收到的第9位數據)=1時,將接收到的前8位數據送入SBUF,並置位RI產生中斷請求;否則,將接收到的8位數據丟棄。而當SM2=0時,則不論第9位數據為0還是為1,都將前8位數據裝入SBUF中,並產生中斷請求。在方式0時,SM2必須為0。

③REN------允許接收控制位。REN位用於對串行數據的接收進行控制:REN=0,禁止接收;REN=1,允許接收。該位由軟體置位或複位。④TB8------方式2和方式3中要發送的第9位數據。在方式2和方式3時,TB8是發送的第9位數據。在多機通信中,以TB8位的狀態表示主機發送的是地址還是數據:TB8=0表示數據,TB8=1表示地址。該位由軟體置位或複位。

TB8還可用於奇偶校驗位。⑤RB8------方式2和方式3中要接收的第9位數據。在方式2或方式3時,RB8存放接收到的第9位數據。⑥TI------發送中斷標誌。當方式0時,發送完第8位數據後,該位由硬體置位。在其他方式下,遇發送停止位時,該位由硬體置位。因此TI=1,表示幀發送結束,可軟體查詢TI位標誌,也可以請求中斷。TI位必須由軟體清0。⑦RI------接收中斷標誌。當方式0時,接收完第8位數據後,該位由硬體置位。在其他方式下,當接收到停止位時,該位由硬體置位。因此RI=1,表示幀接收結束,可軟體查詢RI位標誌,也可以請求中斷。RI位也必須由軟體清0。接收/發送數據,無論是否採用中斷方式工作,每接收/發送一個數據都必須用指令對RI/TI

清0,以備下一次收/發。3、電源控制寄存器PCONPCOND7D6D5D4D3D2D1D0位名稱SMOD———GF1GF0PDIDLSMOD=1,串行口串列傳輸速率加倍。PCON寄存器不能進行位尋址。☞

SMOD:在串行口工作方式1、2、3中,是串列傳輸速率加倍位

=1時,串列傳輸速率加倍

=0時,串列傳輸速率不加倍。

(在PCON中只有這一個位與串口有關)二、串行工作方式

80C51串行通信共有4種工作方式,由串行控制寄存器SCON中SM0SM1決定。

1、串行工作方式0(同步移位寄存器工作方式)以RXD(P3.0)端作為數據移位的輸入/輸出端,以TXD(P3.1)端輸出移位脈衝。移位數據的發送和接收以8位為一幀,不設起始位和停止位,無論輸入/輸出,均低位在前高位在後。其幀格式為:•

•

•D0D1D2D3D4D5D6D7•

•

•

方式0可將串行輸入輸出數據轉換成並行輸入輸出數據。⑴數據發送

在移位時鐘脈衝(TXD)的控制下,數據從串行口RXD端逐位移入74HC164SA、SB端。當8位數據全部移出後,SCON寄存器的TI位被自動置1。其後74HC164的內容即可並行輸出。74HC164CLR為清0端,輸出時CLR必須為1,否則74HC164Q0~Q7輸出為0。

串行口作為並行輸出口使用時,要有“串入並出”的移位寄存器配合。(例如CD4094或74HCl64)(2)數據接收

串行口作為並行輸入口使用時,要有“併入串出”的移位寄存器配合。(例如CD4014或74HCl65)

74HC165S/L端為移位/置入端,當S/L=0時,從Q0~Q7並行置入數據,當S/L=1時,允許從QH端移出數據。在80C51串行控制寄存器SCON中的REN=1時,TXD端發出移位時鐘脈衝,從RXD端串行輸入8位數據。當接收到第8位數據D7後,置位中斷標誌RI,表示一幀數據接收完成。⑶串列傳輸速率:方式0

串列傳輸速率固定,為單片機晶振頻率的十二分之一。即一個機器週期進行一次移位。⑷應用舉例【例6-1】電路如圖所示,試編制程式按下列順序要求每隔0.5秒迴圈操作。④

從右向左依次點亮,每次亮一個;⑤

從左向右依次點亮,每次增加一個, 直至全部點亮;⑥

返回從②不斷迴圈。①

8個發光二極體全部點亮;②從左向右依次暗滅,每次減少一個,直至全滅;③

從左向右依次點亮,每次亮一個;解:編程如下:LIGHT:MOVSCON,#00H;串行口方式0

CLRES;禁止串行中斷P121MOVDPTR,#TAB;置發光二極體亮暗控制字表首址LP1:MOVR7,#0;置順序編號0LP2:MOVA,R7;讀順序編號

MOVCA,@A+DPTR;讀控制字

CLRP1.0;關閉並行輸出,STR=O時,關閉並行輸出;

MOVSBUF,A;啟動串行發送

JNBTI,$

;等待發送完畢

CLRTI;清發送中斷標誌

SETBP1.0;開啟並行輸出,STR=1時,開啟並行輸出;

LCALLDLY500ms;調用延時0.5秒副程式(參閱例4-13)

INCR7;指向下一控制字

CJNER7,#30,LP2;判迴圈操作完否?未完繼續

SJMPLP1;順序編號0~29依次操作完畢,從0開始重新迴圈TAB:

DB0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;從左向右依次暗滅,

每次減少一個,直至全滅;

DB80H,40H,20H,10H,08H,04H,02H,01H;從左向右依次點亮,每次亮一個

DB02H,04H,08H,10H,20H,40H,80H;從右向左依次點亮,每次亮一個

DB0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;從左向右依次點亮,

每次增加一個,直至全部點亮;【例】電路如圖所示,試編制程式輸入K1~K8狀態數據,並存入內RAM40H。解:編程如下:

KIN:

MOVSCON,#00H;串行口方式0

CLRES ;禁止串行中斷

CLRP1.0;鎖存並行輸入數據

SETBP1.0;允許串行移位操作

SETBREN;允許並啟動接收(TXD發送移位脈衝)

JNBRI,$ ;等待接收完畢

MOV40H,SBUF;存入K1~K8狀態數據

RET;2、串行工作方式1

方式1是一幀10位的非同步串行通信方式,包括1個起始位,8個數據位和一個停止位。其幀格式為:起始D0D1D2D3D4D5D6D7停止⑴數據發送發送時只要將數據寫入SBUF,在串行口由硬體自動加入起始位和停止位,構成一個完整的幀格式。然後在移位脈衝的作用下,由TXD端串行輸出。一幀數據發送完畢,將SCON中的TI置1。⑵數據接收接收時,在REN=1前提下,當採樣到RXD從1向0跳變狀態時,就認定為已接收到起始位。隨後在移位脈衝的控制下,將串行接收數據移入SBUF中。一幀數據接收完畢,將SCON中的RI置1,表示可以從SBUF取走接收到的一個字元。

在實際應用時,通常是先確定串列傳輸速率,後根據串列傳輸速率求T1定時初值,因此上式又可寫為:⑶串列傳輸速率

方式1串列傳輸速率可變,由定時/計數器T1的計數溢出率來決定。串列傳輸速率=2SMOD×(T1溢出率)/32

其中SMOD為PCON寄存器中最高位的值,SMOD=1表示串列傳輸速率倍增。當定時/計數器T1用作串列傳輸速率發生器時,通常選用定時初值自動重裝的工作方式2(注意:不要把定時/計數器的工作方式與串行口的工作方式搞混淆了)。其計數結構為8位,假定計數初值為COUNT,單片機的機器週期為T,則定時時間為(256-COUNT)*T。從而在1s內發生溢出的次數(即溢出率)為:

串列傳輸速率=(2SMOD/32)T1的溢出率串列傳輸速率=(2SMOD/32)T1的溢出率☞溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數。☞初值X=2n

-2SMOD

fosc32

串列傳輸速率

12☞串列傳輸速率=2SMOD

fosc32

12(2n

-X)其中:X是定時器初值⑷應用舉例【例6-3】設甲乙機以串行方式1進行數據傳送,fosc=11.0592MHz,串列傳輸速率為1200b/s。甲機發送的16個數據存在內RAM40H~4FH單元中,乙機接收後存在內RAM50H為首地址的區域中。

T1初值=256-×=232=E8H3212×1200解: 串行方式1串列傳輸速率取決於T1溢出率(設SMOD=0), 計算T1定時初值: 1105920020甲機發送副程式:

MOVTMOD,#20H ;置T1定時器工作方式2 MOVTL1,#0E8H ;置T1計數初值

MOVTH1,#0E8H ;置T1計數重裝值

CLRET1 ;禁止T1中斷

SETBTR1 ;T1啟動

MOVSCON,#40H ;置串行方式1,禁止接收

MOVPCON,#00H ;置SMOD=0(SMOD不能位操作)

CLRES ;禁止串行中斷

MOVR0,#40H ;置發送數據區首地址

MOVR2,#16 ;置發送數據長度

MOV A,@R0 ;讀一個數據

MOV SBUF,A ;發送

JNB TI,$ ;等待一幀數據發送完畢

CLR TI ;清發送中斷標誌

INC R0 ;指向下一位元組單元

DJNZ R2,TRSA ;判16個數據發完否?未完繼續

RET ;TXDA:

TRSA:

MOVTMOD,#20H ;置T1定時器工作方式2 MOVTL1,#0E8H ;置T1計數初值

MOVTH1,#0E8H ;置T1計數重裝值

CLRET1 ;禁止T1中斷

SETBTR1 ;T1啟動

MOVSCON,#40H ;置串行方式1,禁止接收

MOVPCON,#00H ;置SMOD=0(SMOD不能位操作) CLRES ;禁止串行中斷

MOVR0,#50H ;置接收數據區首地址

MOVR2,#16 ;置接收數據長度

SETBREN

;啟動接收

JNB RI,$ ;等待一幀數據接收完畢

CLR RI ;清接收中斷標誌

MOV A,SBUF ;讀接收數據

MOV @R0,A ;存接收數據

INC R0 ;指向下一數據存儲單元

DJNZ R2,RDSB ;判16個數據接收完否?未完繼續

RET;乙機接收副程式:RXDB:RDSB:

方式2是一幀11位的串行通信方式,即1個起始位,8個數據位,1個可編程位TB8/RB8和1個停止位,其幀格式為:3、

串行工作方式2起始D0D1D2D3D4D5D6D7TB8/RB8停止當SMOD=0時,串列傳輸速率=20

╳fosc/64=

fosc/64當SMOD=1時,串列傳輸速率=21

╳

fosc/64=

fosc/32

可編程位TB8/RB8既可作奇偶校驗位用,也可作控制位(多機通信)用,其功能由用戶確定。

數據發送和接收與方式1基本相同,區別在於方式2把發送/接收到的第9位內容送入TB8/RB8。

串列傳輸速率:方式2串列傳輸速率固定,即fosc/32和fosc/64。如用公式表示則為:串列傳輸速率=2SMOD╳fosc/64【例6-4】設計一個串行方式2發送副程式(SMOD=1),將片內RAM50H~5FH中的數據串行發送,第9數據位作為奇偶校驗位。接到接收方核對正確的回復信號(用FFH表示)後,再發送下一位元組數據,否則再重發一遍。解:程式如下:MOVA,@R0;讀數據MOVC,PSW.0;奇偶標誌送TB8MOVTB8,C;MOVSBUF,A;啟動發送JNBTI,$;等待一幀數據發送完畢CLRTI;清發送中斷標誌SETBREN;允許接收CLRRI;清接收中斷標誌JNBRI,$;等待接收回復信號MOVA,SBUF;讀回復信號CPLA;回復信號取反JNZTRLP;非全0(回復信號≠FFH,錯誤),轉重發INCR0;全0(回復信號=FFH,正確), 指向下一數據存儲單元CJNER0,#60H,TRLP;判16個數據發送完否?未完繼續RET;TRLP:MOVSCON,#80H;置串行方式2,禁止接收MOVPCON,#80H;置SMOD=1MOVR0,#50H ;置發送數據區首址TRS2:【例6-5】編制一個串行方式2接收副程式,接收上例發送的16個數據,存首址為40H的內RAM中,並核對奇偶校驗位,接收核對正確,發出回復信號FFH;發現錯誤,發出回復信號00H,並等待重新接收。RXD2:MOVSCON,#80H;置串行方式2,禁止接收

MOVPCON,#80H;置SMOD=1MOVR0,#40H;置接收數據區首址

SETBREN;啟動接收RWAP:JNBRI,$;等待一幀數據接收完畢

CLRRI

;清接收中斷標誌

MOVA,SBUF;讀接收數據,並在PSW中產生接收數據的奇偶值

JBPSW.0,ONE;P=1,轉另判

JBRB8,ERR;P=0,RB8=1,接收有錯;

;P=0,RB8=0,接收正確,繼續接收RLOP:MOV@R0,A;存接收數據

INCR0;指向下一數據存儲單元RIT:MOVA,#0FFH;置回復信號正確FDBK:MOVSBUF,A;發送回復信號

CJNER0,#50H,RWAP;判16個數據接收完否?未完繼續

CLRREN;16個數據正確接收完畢,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论