版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
80C51的串行口
2
6.1電腦串行通信基礎
隨著多微機系統的廣泛應用和電腦網絡技術的普及,電腦的通信功能愈來愈顯得重要。電腦通信是指電腦與外部設備或電腦與電腦之間的資訊交換。通信有並行通信和串行通信兩種方式。在多微機系統以及現代測控系統中資訊的交換多採用串行通信方式。電腦通信是將電腦技術和通信技術的相結合,完成電腦與外部設備或電腦與電腦之間的資訊交換。可以分為兩大類:並行通信與串行通信。並行通信通常是將數據字節的各位用多條數據線同時進行傳送。並行通信控制簡單、傳輸速度快;由於傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。
4
串行通信是將數據字節分成一位一位的形式在一條傳輸線上逐個地傳送。串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網等現成的設備,但數據的傳送控制比並行通信複雜。
5
6.1.1串行通信的基本概念
一、非同步通信與同步通信1、非同步通信非同步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。為使雙方的收發協調,要求發送和接收設備的時鐘盡可能一致。
6
非同步通信是以字元(構成的幀)為單位進行傳輸,字元與字元之間的間隙(時間間隔)是任意的,但每個字元中的各位是以固定的時間傳送的,即字元之間是非同步的(字元之間不一定有“位間隔”的整數倍的關係),但同一字元內的各位是同步的(各位之間的距離均為“位間隔”的整數倍)。7
非同步通信的數據格式:一幀包含內容:起始位(1位,低電平);數據位(5~8位);奇偶校驗位(1位);停止位(1~2位,高電平)從起始位到停止位結束的時間週期稱為1幀。例如:用ASCII碼編碼傳送,數據位為7位,加一個奇偶校驗位、一個起始位及一個停止位,每幀共10位。低位高位8
相鄰兩個字元之間的間隔可以是任意長度的,兩個相鄰字元之間根據需要插入任意個高電平的空閒位。例如:字元A(ASCII碼)非同步通信的幀格式,設採用偶校驗,1位停止位。非同步通信的特點:不要求收發雙方時鐘的嚴格一致,實現容易,設備開銷較小,但每個字元要附加2~3位用於起止位,各幀之間還有間隔,因此傳輸效率不高。
0100000101數據位起始位偶校驗位停止位9
2、同步通信同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸數據的位之間的距離均為“位間隔”的整數倍,同時傳送的字元間不留間隙,即保持位同步關係,也保持字元同步關係。發送方對接收方的同步可以通過兩種方法實現。
外同步自同步10
面向字元的同步格式:此時,傳送的數據和控制資訊都必須由規定的字元集(如ASCII碼)中的字元所組成。圖中幀頭為1個或2個同步字元SYN(ASCII碼為16H)。SOH為序始字元(ASCII碼為01H),表示標題的開始,標題中包含源地址、目標地址和路由指示等資訊。STX為文始字元(ASCII碼為02H),表示傳送的數據塊開始。數據塊是傳送的正文內容,由多個字元組成。數據塊後面是組終字元ETB(ASCII碼為17H)或文終字元ETX(ASCII碼為03H)。然後是校驗碼。典型的面向字元的同步規程如IBM的二進位同步規程BSC。
11
面向位的同步格式:此時,將數據塊看作數據流,並用序列01111110作為開始和結束標誌。為了避免在數據流中出現序列01111110時引起的混亂,發送方總是在其發送的數據流中每出現5個連續的1就插入一個附加的0;接收方則每檢測到5個連續的1並且其後有一個0時,就刪除該0。典型的面向位的同步協議如國際標準化組織ISO的高級資料鏈路控制規程HDLC和IBM的同步資料鏈路控制規程SDLC。同步通信的特點是以特定的位組合“01111110”作為幀的開始和結束標誌,所傳輸的一幀數據可以是任意位。所以傳輸的效率較高,但實現的硬體設備比非同步通信複雜。
12
二、串行通信的傳輸方向1、單工單工是指數據傳輸僅能沿一個方向,不能實現反向傳輸。2、半雙工半雙工是指數據傳輸可以沿兩個方向,但需要分時進行。3、全雙工全雙工是指數據可以同時進行雙向傳輸。
單工半雙工全雙工13
三、信號的調製與解調
利用調製器(Modulator)把數字信號轉換成模擬信號,然後送到通信線路上去,再由解調器(Demodulator)把從通信線路上收到的模擬信號轉換成數字信號。由於通信是雙向的,調製器和解調器合併在一個裝置中,這就是數據機MODEM。
14
四、串行通信的錯誤校驗
1、奇偶校驗在發送數據時,數據位尾隨的1位為奇偶校驗位(1或0)。奇校驗時,數據中“1”的個數與校驗位“1”的個數之和應為奇數;偶校驗時,數據中“1”的個數與校驗位“1”的個數之和應為偶數。接收字元時,對“1”的個數進行校驗,若發現不一致,則說明傳輸數據過程中出現了差錯。2、代碼和校驗代碼和校驗是發送方將所發數據塊求和(或各位元組異或),產生一個位元組的校驗字元(校驗和)附加到數據塊末尾。接收方接收數據同時對數據塊(除校驗位元組外)求和(或各位元組異或),將所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。3、迴圈冗餘校驗這種校驗是通過某種數學運算實現有效資訊與校驗位之間的迴圈校驗,常用於對磁片資訊的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用於同步通信中。15
五、傳輸速率與傳輸距離
1、傳輸速率比特率是每秒鐘傳輸二進位代碼的位數,單位是:位/秒(bps)。如每秒鐘傳送240個字元,而每個字元格式包含10位(1個起始位、1個停止位、8個數據位),這時的比特率為:
10位×240個/秒=2400bps串列傳輸速率表示每秒鐘調製信號變化的次數,單位是:波特(Baud)。串列傳輸速率和比特率不總是相同的,對於將數字信號1或0直接用兩種不同電壓表示的所謂基帶傳輸,比特率和串列傳輸速率是相同的。所以,我們也經常用串列傳輸速率表示數據的傳輸速率。16
2、傳輸距離與傳輸速率的關係串行介面或終端直接傳送串行資訊位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡遮罩雙絞線時,傳輸距離隨傳輸速率的增加而減小。當比特率超過1000bps時,最大傳輸距離迅速下降,如9600bps時最大距離下降到只有76m(約250英尺)。17
6.1.2串行通信介面標準
一、RS-232C介面RS-232C是EIA(美國電子工業協會)1969年修訂RS-232C標準。RS-232C定義了數據終端設備(DTE)與數據通信設備(DCE)之間的物理介面標準。1、機械特性RS-232C介面規定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)
18
2、功能特性
19
4、過程特性過程特性規定了信號之間的時序關係,以便正確地接收和發送數據
。遠程通信連接20
近程通信連接21
5、RS-232C電平與TTL電平轉換驅動電路22
6、採用RS-232C介面存在的問題1、傳輸距離短,傳輸速率低
RS-232C匯流排標準受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不超過幾十米)。最高傳送速率為20Kbps。2、有電平偏移
RS-232C匯流排標準要求收發雙方共地。通信距離較大時,收發雙方的地電位差別較大,在信號地上將有比較大的地電流並產生壓降。3、抗干擾能力差
RS-232C在電平轉換時採用單端輸入輸出,在傳輸過程中當干擾和雜訊混在正常的信號中。為了提高信噪比,RS-232C匯流排標準不得不採用比較大的電壓擺幅。23
二、RS-422A介面
RS-422A是平衡型電壓數字介面電路的電氣標準
,輸出驅動器為雙端平衡驅動器。如果其中一條線為邏輯“1”狀態,另一條線就為邏輯“0”,比採用單端不平衡驅動對電壓的放大倍數大一倍。差分電路能從地線干擾中拾取有效信號,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和雜訊,由於差分放大器的作用,可使干擾和雜訊相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。RS-422A傳輸速率(90Kbps)時,傳輸距離可達1200米。
24
三、RS-485介面
RS-485是RS-422A的變型:RS-422A用於全雙工,而RS-485則用於半雙工。RS-485是一種多發送器標準,在通信線路上最多可以使用32對差分驅動器/接收器。如果在一個網路中連接的設備超過32個,還可以使用中繼器。
RS-485的信號傳輸採用兩線間的電壓來表示邏輯1和邏輯0。由於發送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線採用差動通道,所以它的干擾抑制性極好,又因為它的阻抗低,無接地問題,所以傳輸距離可達1200米,傳輸速率可達1Mbps。25
RS-485是一點對多點的通信介面,一般採用雙絞線的結構。普通的PC機一般不帶RS485介面,因此要使用RS-232C/RS-485轉換器。對於單片機可以通過晶片MAX485來完成TTL/RS-485的電平轉換。在電腦和單片機組成的RS-485通信系統中,下位機由單片機系統組成,主要完成工業現場信號的採集和控制,上位機為普通的PC機,負責監視下位機的運行狀態,並對其狀態資訊進行集中處理,以圖文方式顯示下位機的工作狀態以及工業現場被控設備的工作狀況。系統中各節點(包括上位機)的識別是通過設置不同的站地址來實現的。26
6.280C51的串行口
6.2.180C51串行口的結構
(P3.1)(P3.0)27
有兩個物理上獨立的接收、發送緩衝器SBUF,它們佔用同一地址99H;一個用來發送,一個用來接收。發送緩衝器只能寫不能讀出,接收緩衝器只能讀出不能寫入。在進行非同步通信時,數據的發送和接收分別在各自的時鐘(TCLK和RCLK)控制下進行,但必須與字元位數的串列傳輸速率保持一致。MCS-51串行口的發送和接收時鐘可由兩種方式產生:一種:由主機頻率fOSC經分頻後產生。一種:是由內部定時器T1或T2的溢出率經16分頻後提供。28
串行口的發送過程由指令MOVSBUF,A啟動,即CPU由一條寫發送緩衝器的指令把數據(字元)寫入串行口的發送緩衝器SBUF中;再由硬體電路自動在字元的始、末加上起始位(低電平)、停止位(高電平)及其它控制位(奇偶位);然後在移位脈衝的控制下,低位在前,高位在後,從TXD端(方式0除外)一位位地向外發送。串行口的接收與否受制於允許接收位REN的狀態,當REN被軟體置“1”後,允許接收器接收。接收端RXD一位位接收數據,直到收到一個完整的字元數據後,控制電路進行最後一次移位,自動去掉起始位,使接收中斷標誌位RI置“1”,並向CPU申請中斷。CPU回應中斷,用一條指令MOVA,SBUF把接收緩衝器SBUF的內容讀入累加器A。29
SCON是一個特殊功能寄存器,用以設定串行口的工作方式、接收/發送控制以及設置狀態標誌:
6.2.280C51串行口的控制寄存器
SM0和SM1為工作方式選擇位,可選擇四種工作方式:
30
●SM2,多機通信控制位,主要用於方式2和方式3。當接收機的SM2=1時可以利用收到的RB8來控制是否啟動RI(RB8=0時不啟動RI,收到的資訊丟棄;RB8=1時收到的數據進入SBUF,並啟動RI,進而在中斷服務中將數據從SBUF讀走)。當SM2=0時,不論收到的RB8為0和1,均可以使收到的數據進入SBUF,並啟動RI(即此時RB8不具有控制RI啟動的功能)。通過控制SM2,可以實現多機通信。在方式0時,SM2必須是0。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才置1。●REN,允許串行接收位。由軟體置REN=1,則啟動串行口接收數據;若軟體置REN=0,則禁止接收。31
●TB8,在方式2或方式3中,是發送數據的第九位,可以用軟體規定其作用。可以用作數據的奇偶校驗位,或在多機通信中,作為地址幀/數據幀的標誌位。在方式0和方式1中,該位未用。●RB8,在方式2或方式3中,是接收到數據的第九位,作為奇偶校驗位或地址幀/數據幀的標誌位。在方式1時,若SM2=0,則RB8是接收到的停止位。●TI,發送中斷標誌位。在方式0時,當串行發送第8位數據結束時,或在其他方式,串行發送停止位的開始時,由內部硬體使TI置1,向CPU發中斷申請。在中斷服務程式中,必須用軟體將其清0,取消此中斷申請。●RI,接收中斷標誌位。在方式0時,當串行接收第8位數據結束時,或在其他方式,串行接收停止位的中間時,由內部硬體使RI置1,向CPU發中斷申請。也必須在中斷服務程式中,用軟體將其清0,取消此中斷申請。32
特殊功能寄存器PCON中只有一位SMOD與串行口工作有關,無位尋址功能:
SMOD(PCON.7)串列傳輸速率倍增位。在串行口方式1、方式2、方式3時,串列傳輸速率與SMOD有關,當SMOD=1時,串列傳輸速率提高一倍。複位時,SMOD=0。33
6.2.380C51串行口的工作方式
一、方式0方式0時,串行口為同步移位寄存器的輸入輸出方式。主要用於擴展並行輸入或輸出口。數據由RXD(P3.0)引腳輸入或輸出,同步移位脈衝由TXD(P3.1)引腳輸出。發送和接收均為8位數據,低位在先,高位在後。串列傳輸速率固定為fosc/12。
1、方式0輸出發送操作在TI=0的情況下開始,由指令MOVSBUF,A啟動,8位數據發送完後,由硬體自動置TI=1,並向CPU發出中斷請求。34
2、方式0輸入滿足REN=1和RI=0的條件下,串行口處於方式0輸入。當接收完8位數據後,通過指令MOVA,SBUF將接收的數據傳送給累加器A。在再次接收之前,必須用軟體將RI清0。35
8031的串行口外接串行輸入並行輸出移位寄存器74LS164,並行輸入串行輸出移位寄存器74LS165。工作於方式0的接收和發送電路36
二、方式1
方式1是10位數據的非同步通信口。TXD為數據發送引腳,RXD為數據接收引腳,傳送一幀數據的格式如圖所示。其中1位起始位,8位數據位,1位停止位。
1、方式1輸出在TI=0的條件下,由指令MOVSBUF,A啟動,發送電路自動在8位數據前後加一位起始、停止位,發送完成後置TI=1。37
2、方式1輸入
用軟體置REN為1時,接收器以所選擇串列傳輸速率的16倍速率採樣RXD引腳電平,檢測到RXD引腳輸入電平發生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,並開始接收這一幀資訊的其餘位。接收過程中,數據從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最後一次移位。當RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位數據的前8位數據裝入接收SBUF,第9位(停止位)進入RB8,並置RI=1,向CPU請求中斷。38
三、方式2和方式3方式2或方式3時為11位數據的非同步通信口。TXD為數據發送引腳,RXD為數據接收引腳。
方式2和方式3時起始位1位,數據9位(含1位附加的第9位,發送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數據為11位。方式2的串列傳輸速率固定為晶振頻率的1/64或1/32,方式3的串列傳輸速率由定時器T1的溢出率決定。
39
1、方式2和方式3輸出發送開始時,先把起始位0輸出到TXD引腳,然後發送移位寄存器的輸出位(D0)到TXD引腳。每一個移位脈衝都使輸出移位寄存器的各位右移一位,並由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位上,以後每次移位,左邊都移入0。當停止位移至輸出位時,左邊其餘位全為0,檢測電路檢測到這一條件時,使控制電路進行最後一次移位,並置TI=1,向CPU請求中斷。40
2、方式2和方式3輸入
接收時,數據從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最後一次移位。當RI=0,且SM2=0(或接收到的第9位數據為1)時,接收到的數據裝入接收緩衝器SBUF和RB8(接收數據的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數據丟失,且不置位RI,繼續搜索RXD引腳的負跳變。41
四、串列傳輸速率的計算在串行通信中,收發雙方對發送或接收數據的速率要有約定。通過軟體可對單片機串行口編程為四種工作方式,其中方式0和方式2的串列傳輸速率是固定的,而方式1和方式3的串列傳輸速率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應三種串列傳輸速率。由於輸入的移位時鐘的來源不同,所以,各種方式的串列傳輸速率計算公式也不相同。方式0的串列傳輸速率=fosc/12方式2的串列傳輸速率=(2SMOD/64)·fosc方式1的串列傳輸速率=(2SMOD/32)·(T1溢出率)方式3的串列傳輸速率=(2SMOD/32)·(T1溢出率)42
定時器T1溢出率的計算公式:
T1溢出率=式中,K為定時器T1的位數,它和定時器T1的設定方式有關:T1為方式0,K=13T1為方式1,K=16T1為方式2或3,K=843
當T1作為串列傳輸速率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決於TH1中的計數值。
T1溢出率=fosc/{12×[256-(TH1)]}在單片機的應用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的串列傳輸速率也相對固定。常用的串行口串列傳輸速率以及各參數的關係如表所示。44
串行口之前,應對其進行初始化,主要是設置產生串列傳輸速率的定時器1、串行口控制和中斷控制。具體步驟如下:確定T1的工作方式(編程TMOD寄存器);計算T1的初值,裝載TH1、TL1;啟動T1(編程TCON中的TR1位);確定串行口控制(編程SCON寄存器);串行口在中斷方式工作時,要進行中斷設置(編程IE、IP寄存器)。45
串行口發送程式將片內RAM40H-4FH中的數據串行發送,串行口設定為工作方式2,TB8作奇偶校驗位。在寫入發送SBUF之前,先將數據的奇偶位P寫入TB8,第9位數據作奇偶校驗位用。
ORG0000HAJMPMAIN
ORG0100HMAIN:MOVSCON,#80H;方式設定
MOVPCON,#80H;取串列傳輸速率為fosc/32MOVR0,#40H;首地址40H送R0MOVR7,#10H;數據長度送R7LOOP:MOVA,@R0;取數據送AMOVC,PSW.0;P寫入TB8MOVTB8,C
MOVSBUF,A;啟動發送
WAIT:JBCTI,NEXT;判斷發送中斷標誌TISJMPWAITNEXT:INCR0
DJNZR7,LOOPRET46
串行口接收程式將接收的16個位元組數據送片內RAM40H-4FH單元中。設串行口以方式3狀態工作,串列傳輸速率為2400。T1用作串列傳輸速率發生器,工作於方式2,SMOD=0,計數常數為F4H,見表2
REV:MOVTMOD,#20H;T1方式2,定時模式
MOVTH1,#F4H;裝入初值
MOVTL1,#F4H
SETBTR1;啟動T1MOVR0,#40H;R0置地址初值
MOVR7,#10H;數據長度至R7MOVPCON,#00H;置SMOD=0MOVSCON,#BOH;串行口編程方式3接收
47
WAIT:JBCRI,PR;等待接收到數據
SJMPWAITPR:MOVA,SBUF;奇偶校驗位判別:RB8=1?JNBPSW.0,PNPJNBRB8,ERRSJMPRIGHTPNP:JBRB8,PERRIGHT:MOV@R0,A;數據至緩衝器
INCR0
DJNZR7,WAIT;判斷數據塊接收完否?
CLRPSW.5;正確接收16個位元組置標誌位F0=0RETERR:SETBPSW.5;置奇校驗出錯標誌F0=1RET48
6.3單片機串行口應用舉例
在電腦分佈式測控系統中,經常要利用串行通信方式進行數據傳輸。80C51單片機的串行口為電腦間的通信提供了極為便利的條件。利用單片機的串行口還可以方便地擴展鍵盤和顯示器,對於簡單的應用非常便利。這裏僅介紹單片機串行口在通信方面的應用,關於鍵盤和顯示器的擴展將在下一章介紹。49
6.3.1單片機與單片機的通信
一、點對點的通信
1、硬體連接
50
二、應用程式
51
設1號機是發送方,2號機是接收方。當1號機發送時,先發送一個“E1”聯絡信號,2號機收到後回答一個“E2”應答信號,表示同意接收。當1號機收到應答信號“E2”後,開始發送數據,每發送一個數據字節都要計算“校驗和”,假定數據塊長度為16個位元組,起始地址為40H,一個數據塊發送完畢後立即發送“校驗和”。2號機接收數據並轉存到數據緩衝區,起始地址也為40H,每接收到一個數據字節便計算一次“校驗和”,當收到一個數據塊後,再接收1號機發來的“校驗和”,並將它與2號機求出的校驗和進行比較。若兩者相等,說明接收正確,2號機回答00H;若兩者不相等,說明接收不正確,2號機回答0FFH,請求重發。1號機接到00H後結束發送。若收到的答復非零,則重新發送數據一次。雙方約定採用串行口方式1進行通信,一幀資訊為10位,其中有1個起始位、8個數據位和一個停止位;串列傳輸速率為2400波特,T1工作在定時器方式2,振盪頻率選用11.0592MHZ,查表可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。
52
發送程式清單如下:
ASTART:CLREAMOVTMOD,#20H;定時器1置為方式2MOVTH1,#0F4H;裝載定時器初值,串列傳輸速率2400MOVTL1,#0F4HMOVPCON,#00HSETBTR1;啟動定時器
MOVSCON,#50H;設定串口方式1,且準備接收應答信號
ALOOP1:MOVSBUF,#0E1H;發聯絡信號
JNBTI,$;等待一幀發送完畢
CLRTI;允許再發送
JNBRI,$;等待2號機的應答信號
CLRRI;允許再接收
MOVA,SBUF;2號機應答後,讀至AXRLA,#0E2H;判斷2號機是否準備完畢
JNZALOOP1;2號機未準備好,繼續聯絡
ALOOP2:MOVR0,#40H;2號機準備好,設定數據塊地址指針初值
MOVR7,#10H;設定數據塊長度初值
MOVR6,#00H;清校驗和單元53
ALOOP3:MOVSBUF,@R0;發送一個數據字節
MOVA,R6ADDA,@R0;求校驗和
MOVR6,A;保存校驗和
INCR0JNBTI,$CLRTIDJNZR7,ALOOP3;整個數據塊是否發送完畢
MOVSBUF,R6;發送校驗和
JNBTI,$CLRTIJNBRI,$;等待2號機的應答信號
CLRRIMOVA,SBUF;2號機應答,讀至AJNZALOOP2;2號機應答“錯誤”,轉重新發送
RET;2號機應答“正確”,返回54
接收程式清單如下:BSTART:CLREAMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HMOVPCON,#00HSETBTR1MOVSCON,#50H;設定串口方式1,且準備接收
BLOOP1:JNBRI,$;等待1號機的聯絡信號
CLRRIMOVA,SBUF;收到1號機信號
XRLA,#0E1H;判是否為1號機聯絡信號
JNZBLOOP1;不是1號機聯絡信號,再等待
MOVSBUF,#0E2H;是1號機聯絡信號,發應答信號
JNBTI,$CLRTIMOVR0,#40H;設定數據塊地址指針初值
MOVR7,#10H;設定數據塊長度初值
MOVR6,#00H;清校驗和單元55
BLOOP2:JNBRI,$CLRRIMOVA,SBUFMOV@R0,A;接收數據轉儲
INCR0ADDA,R6;求校驗和
MOVR6,ADJNZR7,BLOOP2;判數據塊是否接收完畢
JNBRI,$;完畢,接收1號機發來的校驗和
CLRRIMOVA,SBUFXRLA,R6;比較校驗和
JZEND1;校驗和相等,跳至發正確標誌
MOVSBUF,#0FFH;校驗和不相等,發錯誤標誌
JNBTI,$;轉重新接收
CLRTIEND1:MOVSBUF,#00HRET56
二、多機通信
1、硬體連接單片機構成的多機系統常採用匯流排型主從式結構。所謂主從式,即在數個單片機中,有一個是主機,其餘的是從機,從機要服從主機的調度、支配。80C31單片機的串行口方式2和方式3適於這種主從式的通信結構。當然採用不同的通信標準時,還需進行相應的電平轉換,有時還要對信號進行光電隔離。在實際的多機應用系統中,常採用RS-485串行標準匯流排進行數據傳輸。
57
2、通信協議所有從機的SM2位置1,處於接收地址幀狀態。主機發送一地址幀,其中8位是地址,第9位為地址/數據的區分標誌,該位置1表示該幀為地址幀。所有從機收到地址幀後,都將接收的地址與本機的地址比較。對於地址相符的從機,使自己的SM2位置0(以接收主機隨後發來的數據幀),並把本站地址發回主機作為應答;對於地址不符的從機,仍保持SM2=1,對主機隨後發來的數據幀不予理睬。從機發送數據結束後,要發送一幀校驗和,並置第9位(TB8)為1,作為從機數據傳送結束的標誌。
58
主機接收數據時先判斷數據接收標誌(RB8),若RB8=1,表示數據傳送結束,並比較此幀校驗和,若正確則回送正確信號00H,此信號命令該從機複位(即重新等待地址幀);若校驗和出錯,則發送0FFH,命令該從機重發數據。若接收幀的RB8=0,則存數據到緩衝區,並準備接收下幀資訊。主機收到從機應答地址後,確認地址是否相符,如果地址不符,發複位信號(數據幀中TB8=1);如果地址相符,則清TB8,開始發送數據。從機收到複位命令後回到監聽地址狀態(SM2=1)。否則開始接收數據和命令。59
3、應用程式主機發送的地址聯絡信號為:00H,01H,02H,……(即從機設備地址),地址FFH為命令各從機複位,即恢復SM2=1。主機命令編碼為:01H,主機命令從機接收數據;02H,主機命令從機發送數據。其他都按02H對待。RRDY=1:表示從機準備好接收。TRDY=1:表示從機準備好發送。ERR=1:表示從機接收的命令是非法的。
程式分為主機程式和從機程式。約定一次傳遞數據為16個位元組,以01H地址的從機為例。60
主機程式清單:設從機地址號存於40H單元,命令存於41H單元。
MAIN:MOVTMOD,#20H;T1方式2 MOVTH1,#0FDH;初始化串列傳輸速率9600 MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0F0H;串口方式3,多機,準備接收應答LOOP1:SETBTB8MOVSBUF,40H;發送預通信從機地址
JNBTI,$ CLRTIJNBRI,$;等待從機對聯絡應答
CLRRIMOVA,SBUF;接收應答,讀至A XRLA,40H;判應答的地址是否正確
JZAD_OK61
AD_ERR:MOVSBUF,#0FFH;應答錯誤,發命令FFHJNBTI,$CLRTISJMPLOOP1;返回重新發送聯絡信號
AD_OK:CLRTB8 ;應答正確
MOVSBUF,41H;發送命令字
JNBTI,$ CLRTIJNBRI,$ ;等待從機對命令應答
CLRRIMOVA,SBUF;接收應答,讀至A XRLA,#80H;判斷應答是否正確
JNZCO_OK SETBTB8SJMPAD_ERR;錯誤處理62
CO_OK:MOVA,SBUF;應答正確,判是發送還是接收命令
XRLA,#01H JZSE_DATA;從機準備好接收,可以發送
MOVA,SBUF XRLA,#02H JZRE_DATA;從機準備好發送,可以接收
LJMPSE_DATARE_DATA:MOVR6,#00H;清校驗和接收16個位元組數據
MOVR0,#30H MOVR7,#10H
63
LOOP2:JNBRI,$CLRRIMOVA,SBUF MOV@R0,A INCR0 ADDA,R6 MOVR6,ADJNZR7,LOOP2JNBRI,$ CLRRIMOVA,SBUF;接收校驗和並判斷
XRLA,R6 JZXYOK;校驗正確
MOVSBUF,#0FFH;校驗錯誤
JNBTI,$ CLRTILJMPRE_DATA64
XYOK:MOVSBUF,#00H;校驗和正確,發00HJNBTI,$ CLRTISETBTB8;置地址標誌
LJMPRETENDSE_DATA:MOVR6,#00H;發送16個位元組數據
MOVR0,#30H MOVR7,#10HLOOP3:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP365
MOVA,R6 MOVSBUF,A;發校驗和
JNBTI,$ CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H JZRET_END;從機接收正確
SJMPSE_DATA;從機接收不正確,重新發送
RET_END:RET66
從機程式清單:設本機號存於40H單元,41H單元存放“發送”命令,42H單元存放“接收”命令。
MAIN:MOVTMOD,#20H;初始化串行口
MOVTH1,#0FDH MOVTL1,#0FDHMOVPCON,#00H SETBTR1MOVSCON,#0F0HLOOP1:SETBEA;開中斷
SETBES SETBRRDY;發送與接收準備就緒
SETBTRDY SJMPLOOP167
SERVE:PUSHPSW;中斷服務程式
PUSHACC CLRESCLRRI MOVA,SBUF XRLA,40H;判斷是否本機地址
JZSER_OK LJMPENDI;非本機地址,繼續監聽SER_OK:CLRSM2;是本機地址,取消監聽狀態
MOVSBUF,40H;本機地址發回
JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;是複位命令,恢復監聽
MOVA,SBUF;不是複位命令,判是“發送”還是“接收”
XRLA,41H JZSERISE;收到“發送”命令,發送處理
MOVA,SBUF XRLA,42H JZSERIRE;收到“接收”命令,接收處理
SJMPFFML;非法命令,轉非法處理
68
SERISE:JBTRDY,SEND;從機發送是否準備好
MOVSBUF,#00HSJMPWAIT01SEND:MOVSBUF,#02H;返回“發送準備好”
WAIT01:JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機接收是否準備就緒
LCALLSE_DATA;發送數據
LJMPENDFFML:MOVSBUF,#80H;發非法命令,恢復監聽
JNBTI,$ CLRTILJMPENDIISERIRE:JBRRDY,RECE;從機接收是否準備好
MOVSBUF,#00H SJMPWAIT0269
RECE:MOVSBUF,#01H;返回“接收準備好”WEIT02:JNBTI,$CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機發送是否就緒
LCALLRE_DATA;接收數據
LJMPENDENDII:SETBSM2ENDI:SETBESEND:POPACC POPPSW RETI70
SE_DATA:CLRTRDY;發送數據塊副程式
MOVR6,#00H MOVR0,#30HMOVR7,#10HLOOP2:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP2;數據塊發送完畢?
MOVA,R6 MOVSBUF,AJNBTI,$;發送校驗和
CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H;判發送是否正確
JZSEND_OK SJMPSE_DATA;發送錯誤,重發71
SEND_OK:SETBSM2;發送正確,繼續監聽
SETBES RETRE_DATA:CLRRRDY;接收數據塊副程式
MOVR6,#00HMOVR0,#30HMOVR7,#10H72
LOOP3:JNBRI,$ CLRRIMOVA,SBUFMOV@R0,A INCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP3;接收數據塊完畢?
JNBRI,$;接收校驗和
CLRRIMOVA,SBUF XRLA,R6;判斷校驗和是否正確
JZRECE_OK MOVSBUF,#0FFH;校驗和錯誤,發FFHJNBTI,$ CLRTI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 团队协作能力提升互动课程活动方案
- 新兴金融行业运营手册
- 推进产学研深度融合协同创新方案
- 2025浙江台州温岭市交通旅游集团有限公司下属温岭市交通设计院有限公司面向社会招聘1人笔试历年难易错考点试卷带答案解析
- 2025年淮北濉溪博之雅餐饮管理有限公司招聘35人笔试参考题库附带答案详解
- 2025山西晋中昔阳县文化旅游发展有限责任公司社会招聘15人笔试参考题库附带答案详解
- 2025山东东营市国有资本投资集团有限公司招聘12人笔试历年备考题库附带答案详解2套试卷
- 2025四川飞机维修工程有限公司招聘10人笔试参考题库附带答案详解
- 2025云南西双版纳勐海黎明热带果蔬种植有限责任公司招聘工作人员招聘4人笔试历年典型考点题库附带答案详解2套试卷
- 2025中煤电力有限公司总部及所属企业招聘16人笔试参考题库附带答案详解
- 《3D打印材料光固化树脂标准》编制说明
- 个人投资业务管理办法
- RDPAC准则及医药法规相关知识试卷题目与答案
- 传播策划课件
- 做卓越的老师读书汇报
- 空调延长质保协议书
- 2024-2025统编版初中语文八年级上册期末考试测试卷及参考答案(共3套)
- 仓库转正述职报告
- 《危险货物运输》课件
- 罗森运营部经营管理手册
- 读后续写三二一法则课件高三英语一轮复习
评论
0/150
提交评论