串行口的工作方式0為移位寄存器輸入輸出方式,方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位發(fā)送中斷標志TI或接收中斷標志RI。
1.方式0發(fā)送
串行數(shù)據(jù)從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數(shù)據(jù)寫入發(fā)送寄存器(SBUF)時,立即啟動發(fā)送,將8位數(shù)據(jù)以fosc/12的固定波特率從RXD輸出,低位在前,高位在后,直至最高位(D7位)數(shù)字移出后,停止發(fā)送數(shù)據(jù)和移位時鐘脈沖。
MOV SCON, #10H ; 串行口方式0
MOV A, SBUF ; 接收數(shù)據(jù)
JNB RI, $ ; 等待數(shù)據(jù)接收完畢
2.方式0接收
方式0接收前,務必先置位REN=1,允許接收數(shù)據(jù)。此時,RXD為串行數(shù)據(jù)輸入端,TXD仍為同步脈沖移位輸出端。當RI=0和REN=1同時滿足時,就會啟動一次接收過程。接收器以fosc/12的固定波特率接收TXD端輸入的數(shù)據(jù)。當接收到第8位數(shù)據(jù)時,將數(shù)據(jù)移入接收寄存器,并由硬件置位RI,向CPU申請中斷。
MOVSCON,#00H ;串行口方式0
MOVSBUF,A ;將數(shù)據(jù)送出
JNBTI,$ ;等待數(shù)據(jù)發(fā)送完畢
工作方式0一般用于對并行輸入輸出口的擴展,如圖1所示。
圖1 方式0的應用
二、方式1:8位UART方式
當SM0=0、SM1=l時,串行口選擇方式1,單片機工作于8位數(shù)據(jù)異步通訊方式(UART)。在方式1時,傳送一幀信息為10位,即1位起始位(0),8位數(shù)據(jù)位(低位在先)和1位停止位(1)。方式1的數(shù)據(jù)格式如圖2所示。
圖2 方式1的數(shù)據(jù)格式
1.方式1發(fā)送
當CPU執(zhí)行MOVA,SBUF指令將數(shù)據(jù)寫入發(fā)送緩沖SBUF,啟動發(fā)送。先把起始位輸出到TXD,然后把移位寄存器的輸出位送到TXD。接著發(fā)出第一個移位脈沖(SHIFT),使數(shù)據(jù)右移一位,并從左端補入0。此后數(shù)據(jù)將逐位由TXD端送出,而其左面不斷補入0。發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。
圖3 方式1發(fā)送
2.方式1接收
當REN=1且接收到起始位后,在移位脈沖的控制下,把接收到的數(shù)據(jù)移入接收緩沖寄存器(SBUF)中,停止位到來后,把停止位送入RB8中,并置位RI,通知CPU接收到一個字符。
圖4 方式1接收
三、方式2和方式3:9位數(shù)據(jù)異步通訊方式
當SM0=1、SM1=0時,串行口選擇方式2;當SM1=1、SM0=1時,串行口選擇方式3。方式2和方式3的工作原理相似,定義為9位的異步通訊接口,發(fā)送(通過TXD)和接收(通過RXD)一幀信息都是11位,1位起始位(0)、8位數(shù)據(jù)位(低位在先)、1位可編程位(即第9位數(shù)據(jù))和1位停止位(1)。其數(shù)據(jù)格式如圖5所示。
圖5 方式2和3的數(shù)據(jù)格式
方式2和方式3唯一的差別是方式2的波特率是固定的,方式3的波特率是可變的。
1.方式2和方式3發(fā)送
當CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令時,啟動發(fā)送器發(fā)送。把起始位(0)放到TXD端,經(jīng)過一位時間后,數(shù)據(jù)由移位寄存器送到TXD端,通過第一位數(shù) 據(jù),出現(xiàn)第一個移位脈沖。當TB8的內容移到位寄存器的輸出位置時,其左面一位是停止位“1”,再往左的所有位全為“0”。這種狀態(tài)由零檢測器檢測到后, 就通知發(fā)送控制器作最后一次移位,然后置TI=1,請求中斷。發(fā)送過程如圖6所示。
圖6 方式2和3的發(fā)送
2.方式2和方式3接收
接收時,數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時,接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負跳變。接收的過程如圖7所示。
圖7 方式2和3的接收
四、波特率的計算
波特率反映串行口傳輸數(shù)據(jù)的速率,它取決于振蕩頻率、PCON寄存器的SCON位以及定時器的設定。在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要遵循一定的約定。AT89S52串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器的溢出率控制。
方式0為固定波特率:波特率=fosc/12
方式2可選兩種波特率:波特率=(2SMOD/64)×fosc
當SMOD=1時,波特率=fosc/32;
當SMOD=0時,波特率=fosc/64。
方式1、3為可變波特率,用T1作波特率發(fā)生器。
波特率=(2SMOD/32)×T1溢出率,T1溢出率為T1溢出一次所需時間的倒數(shù)。
例如:計算波特率。要求用T1工作于方式2來產生波特率2400,已知晶振頻率=12MHz。
解:求出T1的初值:
常用波特率和T1初值可參考教材中的表6-2。五、多機通信
在集散式分布系統(tǒng)中,往往采用一臺主機和多臺從機。其中主機發(fā)送的信息可以被各個從機接收,而各從機的信息只能被主機接收,從機與從機之間不能互相直接通信。
圖8為多機通信連線示意圖,系統(tǒng)中左邊為主機,其余的為1~n號從機,并保證每臺從機在系統(tǒng)中的編號是惟一的。
圖8 多通信示意圖
-
單片機
+關注
關注
6067文章
44998瀏覽量
650784 -
串行口
+關注
關注
1文章
43瀏覽量
11104
原文標題:單片機串行接口工作方式
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄

AVR單片機與串行AD的SPI接口設計

單片機串行通信的結構組成及工作原理解析

51單片機的結構及工作方式等基礎知識詳細說明

MCS-51單片機定時器和計數(shù)器的4種工作方式解析

51單片機串行口的工作方式解析資料下載

80C51單片機串行通信講解

評論