單片機電子教案第章2_第1頁
單片機電子教案第章2_第2頁
單片機電子教案第章2_第3頁
單片機電子教案第章2_第4頁
單片機電子教案第章2_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本章分為三節(jié),主要介紹:6.280C51的串行口6.1計算機串行通信基礎6.3單片機串行口應用舉例6.1計算機串行通信基礎

隨著多微機系統(tǒng)的廣泛應用和計算機網(wǎng)絡技術(shù)的普及,計算機的通信功能愈來愈顯得重要。計算機通信是指計算機與外部設備或計算機與計算機之間的信息交換。通信有并行通信和串行通信兩種方式。在多微機系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。計算機通信是將計算機技術(shù)和通信技術(shù)的相結(jié)合,完成計算機與外部設備或計算機與計算機之間的信息交換??梢苑譃閮纱箢悾翰⑿型ㄐ排c串行通信。并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進行傳送。并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。

串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設備,但數(shù)據(jù)的傳送控制比并行通信復雜。

6.1.1串行通信的基本概念

一、異步通信與同步通信1、異步通信

異步通信是指通信的發(fā)送與接收設備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設備的時鐘盡可能一致。

異步通信是以字符(構(gòu)成的幀)為單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。異步通信的數(shù)據(jù)格式:異步通信的特點:不要求收發(fā)雙方時鐘的嚴格一致,實現(xiàn)容易,設備開銷較小,但每個字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。2、同步通信同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對接收方的同步可以通過兩種方法實現(xiàn)。

外同步自同步面向字符的同步格式:此時,傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字符集(如ASCII碼)中的字符所組成。圖中幀頭為1個或2個同步字符SYN(ASCII碼為16H)。SOH為序始字符(ASCII碼為01H),表示標題的開始,標題中包含源地址、目標地址和路由指示等信息。STX為文始字符(ASCII碼為02H),表示傳送的數(shù)據(jù)塊開始。數(shù)據(jù)塊是傳送的正文內(nèi)容,由多個字符組成。數(shù)據(jù)塊后面是組終字符ETB(ASCII碼為17H)或文終字符ETX(ASCII碼為03H)。然后是校驗碼。典型的面向字符的同步規(guī)程如IBM的二進制同步規(guī)程BSC。

面向位的同步格式:此時,將數(shù)據(jù)塊看作數(shù)據(jù)流,并用序列01111110作為開始和結(jié)束標志。為了避免在數(shù)據(jù)流中出現(xiàn)序列01111110時引起的混亂,發(fā)送方總是在其發(fā)送的數(shù)據(jù)流中每出現(xiàn)5個連續(xù)的1就插入一個附加的0;接收方則每檢測到5個連續(xù)的1并且其后有一個0時,就刪除該0。

典型的面向位的同步協(xié)議如ISO的高級數(shù)據(jù)鏈路控制規(guī)程HDLC和IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC。同步通信的特點是以特定的位組合“01111110”作為幀的開始和結(jié)束標志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實現(xiàn)的硬件設備比異步通信復雜。

二、串行通通信的傳輸輸方向1、單工單工是指數(shù)據(jù)傳傳輸僅能沿沿一個方向,不能實現(xiàn)現(xiàn)反向傳輸輸。2、半雙工工半雙工是指數(shù)據(jù)傳傳輸可以沿沿兩個方向,但需要分分時進行。。3、全雙工工全雙工是指數(shù)據(jù)可可以同時進行雙雙向傳輸。單工半雙工全全雙工三、信號的的調(diào)制與解解調(diào)利用調(diào)制器器(Modulator)把數(shù)字信號號轉(zhuǎn)換成模模擬信號,然后送到到通信線路路上去,再再由解調(diào)器器(Demodulator)把從通通信線路上上收到的模擬信號轉(zhuǎn)轉(zhuǎn)換成數(shù)字字信號。由于通信信是雙向的的,調(diào)制器器和解調(diào)器器合并在一一個裝置中中,這就是是調(diào)制解調(diào)調(diào)器MODEM。四、、串串行行通通信信的的錯錯誤誤校校驗驗1、、奇偶偶校校驗驗在發(fā)發(fā)送送數(shù)數(shù)據(jù)據(jù)時時,,數(shù)數(shù)據(jù)據(jù)位位尾尾隨隨的的1位位為為奇奇偶偶校校驗驗位位((1或或0))。。奇奇校校驗驗時時,,數(shù)數(shù)據(jù)據(jù)中中““1””的的個個數(shù)數(shù)與與校校驗驗位位““1””的的個個數(shù)數(shù)之之和和應應為為奇奇數(shù)數(shù);;偶偶校校驗驗時時,,數(shù)數(shù)據(jù)據(jù)中中““1””的的個個數(shù)數(shù)與與校校驗驗位位““1””的的個個數(shù)數(shù)之之和和應應為為偶偶數(shù)數(shù)。。接接收收字字符符時時,,對對““1””的的個個數(shù)數(shù)進進行行校校驗驗,,若若發(fā)發(fā)現(xiàn)現(xiàn)不不一一致致,,則則說說明明傳傳輸輸數(shù)數(shù)據(jù)據(jù)過過程程中中出出現(xiàn)現(xiàn)了了差差錯錯。。3、、循環(huán)環(huán)冗冗余余校校驗驗這種種校校驗驗是是通通過過某某種種數(shù)數(shù)學學運運算算實實現(xiàn)現(xiàn)有有效效信信息息與與校校驗驗位位之之間間的的循循環(huán)環(huán)校校驗驗,,常常用用于于對對磁磁盤盤信信息息的的傳傳輸輸、、存存儲儲區(qū)區(qū)的的完完整整性性校校驗驗等等。。這這種種校校驗驗方方法法糾糾錯錯能能力力強強,,廣廣泛泛應應用用于于同同步步通通信信中中。。2、、代碼碼和和校校驗驗代碼碼和和校校驗驗是是發(fā)發(fā)送送方方將將所所發(fā)發(fā)數(shù)數(shù)據(jù)據(jù)塊塊求求和和((或或各各字字節(jié)節(jié)異異或或)),,產(chǎn)產(chǎn)生生一一個個字字節(jié)節(jié)的的校校驗驗字字符符((校校驗驗和和))附附加加到到數(shù)數(shù)據(jù)據(jù)塊塊末末尾尾。。接接收收方方接接收收數(shù)數(shù)據(jù)據(jù)同同時時對對數(shù)數(shù)據(jù)據(jù)塊塊((除除校校驗驗字字節(jié)節(jié)外外))求求和和((或或各各字字節(jié)節(jié)異異或或)),,將將所所得得的的結(jié)結(jié)果果與與發(fā)發(fā)送送方方的的““校校驗驗和和””進進行行比比較較,,相相符符則則無無差差錯錯,,否否則則即即認認為為傳傳送送過過程程中中出出現(xiàn)現(xiàn)了了差差錯錯。。五、傳傳輸速速率與與傳輸輸距離離1、傳傳輸速速率比特率率是每秒鐘鐘傳輸輸二進進制代代碼的的位數(shù)數(shù),單位位是::位//秒((bps))。如如每秒秒鐘傳傳送240個字字符,,而每每個字字符格格式包包含10位位(1個起起始位位、1個停停止位位、8個數(shù)數(shù)據(jù)位位),,這時時的比比特率率為::10位位×240個/秒=2400bps波特率率表示每秒鐘鐘調(diào)制制信號號變化化的次次數(shù),單位位是::波特特(Baud))。波特率率和比比特率率不總總是相相同的的,對于將將數(shù)字字信號號1或或0直直接用用兩種種不同同電壓壓表示示的所所謂基基帶傳傳輸,,比特特率和和波特特率是是相同同的。。所以,,我們們也經(jīng)經(jīng)常用用波特特率表表示數(shù)數(shù)據(jù)的的傳輸輸速率率。2、傳傳輸距距離與與傳輸輸速率率的關(guān)關(guān)系串行接接口或或終端端直接接傳送送串行行信息息位流流的最最大距距離與與傳輸輸速率率及傳傳輸線線的電電氣特特性有有關(guān)。。當傳傳輸線線使用用每0.3m((約1英尺尺)有有50PF電容容的非非平衡衡屏蔽蔽雙絞絞線時時,傳傳輸距距離隨隨傳輸輸速率率的增增加而而減小小。當當比特特率超超過1000bps時時,,最大大傳輸輸距離離迅速速下降降,如如9600bps時時最大大距離離下降降到只只有76m(約約250英英尺))。6.1.2串串行行通信信接口口標準準一、RS-232C接口口RS-232C是EIA((美國國電子子工業(yè)業(yè)協(xié)會會)1969年年修訂訂RS-232C標標準。。RS-232C定定義了了數(shù)據(jù)據(jù)終端端設備備(DTE)與與數(shù)據(jù)據(jù)通信信設備備(DCE)之之間的的物理理接口口標準準。1、機機械特特性RS-232C接口口規(guī)定定使用用25針連連接器器,連連接器器的尺尺寸及及每個個插針針的排排列位位置都都有明明確的的定義義。((陽頭頭)2、功功能特特性4、過過程特特性過程特特性規(guī)規(guī)定了了信號號之間間的時時序關(guān)關(guān)系,,以便便正確確地接接收和和發(fā)送送數(shù)據(jù)據(jù)。遠程通通信連連接近程通通信連連接5、RS-232C電平平與TTL電平平轉(zhuǎn)換換驅(qū)動動電路路6、、采采用用RS-232C接接口口存存在在的的問問題題1、、傳輸輸距距離離短短,,傳傳輸輸速速率率低低RS-232C總總線線標標準準受受電電容容允允許許值值的的約約束束,,使使用用時時傳傳輸輸距距離離一一般般不不要要超超過過15米米((線線路路條條件件好好時時也也不不超超過過幾幾十十米米))。。最最高高傳傳送送速速率率為為20Kbps。。2、、有電電平平偏偏移移RS-232C總總線線標標準準要要求求收收發(fā)發(fā)雙雙方方共共地地。。通通信信距距離離較較大大時時,,收收發(fā)發(fā)雙雙方方的的地地電電位位差差別別較較大大,,在在信信號號地地上上將將有有比比較較大大的的地地電電流流并并產(chǎn)產(chǎn)生生壓壓降降。。3、、抗干干擾擾能能力力差差RS-232C在在電電平平轉(zhuǎn)轉(zhuǎn)換換時時采采用用單單端端輸輸入入輸輸出出,,在在傳傳輸輸過過程程中中當當干干擾擾和和噪噪聲聲混混在在正正常常的的信信號號中中。。為為了了提提高高信信噪噪比比,,RS-232C總總線線標標準準不不得得不不采采用用比比較較大大的的電電壓壓擺擺幅幅。。二、、RS-422A接接口口RS-422A輸出出驅(qū)驅(qū)動動器器為為雙雙端端平平衡衡驅(qū)驅(qū)動動器器。如如果果其其中中一一條條線線為為邏邏輯輯““1””狀狀態(tài)態(tài),,另另一一條條線線就就為為邏邏輯輯““0””,,比比采采用用單單端端不不平平衡衡驅(qū)驅(qū)動動對對電電壓壓的的放放大大倍倍數(shù)數(shù)大大一一倍倍。。差分分電電路路能從從地地線線干干擾擾中中拾拾取取有有效效信信號號,,差差分分接接收收器器可可以以分分辨辨200mV以以上上電電位位差差。。若若傳傳輸輸過過程程中中混混入入了了干干擾擾和和噪噪聲聲,,由由于于差差分分放放大大器器的的作作用用,,可可使使干干擾擾和和噪噪聲聲相相互互抵抵消消。。因因此此可可以以避避免免或或大大大大減減弱弱地地線線干干擾擾和和電電磁磁干干擾擾的的影影響響。。RS-422A傳傳輸輸速速率率((90Kbps))時時,,傳傳輸輸距距離離可可達達1200米米。。三、RS-485接接口RS-485是是RS-422A的變變型:RS-422A用于全全雙工,,而RS-485則用用于半雙雙工。RS-485是是一種多發(fā)送器器標準,在在通信線線路上最最多可以以使用32對對差分驅(qū)驅(qū)動器/接收器器。如果果在一個個網(wǎng)絡中中連接的的設備超超過32個,還還可以使使用中繼繼器。RS-485的的信號傳傳輸采用用兩線間間的電壓壓來表示示邏輯1和邏輯輯0。由由于發(fā)送送方需要要兩根傳輸輸線,接收方方也需要要兩根傳傳輸線。。傳輸線線采用差差動信道道,所以以它的干干擾抑制制性極好好,又因因為它的的阻抗低低,無接接地問題題,所以以傳輸距離離可達1200米,傳輸速速率可達達1Mbps。。RS-485是是一點對對多點的的通信接接口,一一般采用用雙絞線的結(jié)構(gòu)。。普通的的PC機機一般不不帶RS485接口,,因此要要使用RS-232C/RS-485轉(zhuǎn)換換器。對對于單片片機可以以通過芯芯片MAX485來完完成TTL/RS-485的的電平轉(zhuǎn)轉(zhuǎn)換。在在計算機機和單片片機組成成的RS-485通信信系統(tǒng)中中,下位位機由單單片機系系統(tǒng)組成成,上位位機為普普通的PC機,,負責監(jiān)監(jiān)視下位位機的運運行狀態(tài)態(tài),并對對其狀態(tài)態(tài)信息進進行集中中處理,,以圖文文方式顯顯示下位位機的工工作狀態(tài)態(tài)以及工工業(yè)現(xiàn)場場被控設設備的工工作狀況況。系統(tǒng)統(tǒng)中各節(jié)節(jié)點(包包括上位位機)的的識別是是通過設設置不同同的站地地址來實實現(xiàn)的。。6.280C51的串串行口有兩個物物理上獨獨立的接接收、發(fā)發(fā)送緩沖沖器SBUF,,它們占占用同一一地址99H;;接收收器是雙雙緩沖結(jié)結(jié)構(gòu);;發(fā)送緩緩沖器,,因為發(fā)發(fā)送時CPU是是主動的的,不會會產(chǎn)生重重疊錯誤誤。6.2.180C51串行行口的結(jié)結(jié)構(gòu)SCON是一一個特殊殊功能寄寄存器,,用以設設定串行行口的工工作方式式、接收收/發(fā)送送控制以以及設置置狀態(tài)標標志:6.2.280C51串行行口的控控制寄存存器SM0和和SM1為工作作方式選選擇位,,可選擇擇四種工工作方式式:●SM2,,多機通通信控制制位,主要用用于方式式2和方方式3。。當接收機的的SM2=1時時可以利利用收到到的RB8來控控制是否否激活RI(RB8=0時時不激活活RI,,收到的的信息丟丟棄;RB8==1時收收到的數(shù)數(shù)據(jù)進入入SBUF,并并激活RI,進進而在中中斷服務務中將數(shù)數(shù)據(jù)從SBUF讀走))。當SM2=0時時,不論論收到的的RB8為0和和1,均均可以使使收到的的數(shù)據(jù)進進入SBUF,,并激活活RI(即此時時RB8不具有有控制RI激活活的功能能)。通通過控制制SM2,可以以實現(xiàn)多多機通信信。在方式0時,SM2必必須是0。在方方式1時時,若SM2=1,則則只有接接收到有有效停止止位時,,RI才才置1。?!馬EN,,允許串串行接收收位。由軟件件置REN=1,則啟啟動串行行口接收收數(shù)據(jù);;若軟件件置REN=0,則禁禁止接收收。●TB8,,在方式式2或方方式3中中,是發(fā)發(fā)送數(shù)據(jù)據(jù)的第九九位,可以用用軟件規(guī)規(guī)定其作作用??煽梢杂米髯鲾?shù)據(jù)的的奇偶校校驗位,,或在多多機通信信中,作作為地址址幀/數(shù)數(shù)據(jù)幀的的標志位位。在方式0和方式式1中,,該位未未用。●RB8,,在方式式2或方方式3中中,是接接收到數(shù)數(shù)據(jù)的第第九位,作為奇奇偶校驗驗位或地地址幀/數(shù)據(jù)幀幀的標志志位。在在方式1時,若若SM2=0,,則RB8是接接收到的的停止位位?!馮I,發(fā)發(fā)送中斷斷標志位位。在方式式0時,,當串行行發(fā)送第第8位數(shù)數(shù)據(jù)結(jié)束束時,或或在其它它方式,,串行發(fā)發(fā)送停止止位的開開始時,,由內(nèi)部部硬件使使TI置置1,向向CPU發(fā)中斷斷申請。。在中斷斷服務程程序中,,必須用用軟件將將其清0,取消消此中斷斷申請。?!馬I,接接收中斷斷標志位位。在方式式0時,,當串行行接收第第8位數(shù)數(shù)據(jù)結(jié)束束時,或或在其它它方式,,串行接接收停止止位的中中間時,,由內(nèi)部部硬件使使RI置置1,向向CPU發(fā)中斷斷申請。。也必須須在中斷斷服務程程序中,,用軟件件將其清清0,取取消此中中斷申請請。PCON中只有有一位SMOD與串行行口工作作有關(guān):SMOD(PCON.7)波波特特率倍增增位。在在串行口口方式1、方式式2、方方式3時時,波特特率與SMOD有關(guān),,當SMOD=1時,,波特率率提高一一倍。復復位時,,SMOD=0。6.2.380C51串行行口的工工作方式式一、方式式0方式0時時,串行行口為同同步移位位寄存器器的輸入入輸出方方式。主主要用于于擴展并并行輸入入或輸出出口。數(shù)數(shù)據(jù)由RXD((P3.0)引引腳輸入入或輸出出,同步步移位脈脈沖由TXD((P3.1)引引腳輸出出。發(fā)送送和接收收均為8位數(shù)據(jù)據(jù),低位位在先,,高位在在后。波波特率固固定為fosc/12。1、方式式0輸出出2、方式式0輸入入方式0接接收和發(fā)發(fā)送電路路二、方式式1方式1是是10位位數(shù)據(jù)的的異步通通信口。。TXD為數(shù)據(jù)據(jù)發(fā)送引引腳,RXD為為數(shù)據(jù)接接收引腳腳,傳送送一幀數(shù)數(shù)據(jù)的格格式如圖圖所示。。其中1位起始始位,8位數(shù)據(jù)據(jù)位,1位停止止位。1、方式式1輸出出2、方式式1輸入入用軟件置置REN為1時時,接收收器以所所選擇波波特率的的16倍倍速率采采樣RXD引腳腳電平,,檢測到到RXD引腳輸輸入電平平發(fā)生負負跳變時時,則說說明起始始位有效效,將其其移入輸輸入移位位寄存器器,并開開始接收收這一幀幀信息的的其余位位。接收收過程中中,數(shù)據(jù)據(jù)從輸入入移位寄寄存器右右邊移入入,起始始位移至至輸入移移位寄存存器最左左邊時,,控制電電路進行行最后一一次移位位。當RI=0,且SM2=0(或或接收到到的停止止位為1)時,,將接收收到的9位數(shù)據(jù)據(jù)的前8位數(shù)據(jù)據(jù)裝入接接收SBUF,,第9位位(停止止位)進進入RB8,并并置RI=1,,向CPU請求求中斷。。三、方式式2和方方式3方式2或或方式3時為11位數(shù)數(shù)據(jù)的異異步通信信口。TXD為為數(shù)據(jù)發(fā)發(fā)送引腳腳,RXD為數(shù)數(shù)據(jù)接收收引腳。方式2和和方式3時起始始位1位位,數(shù)據(jù)據(jù)9位((含1位位附加的的第9位位,發(fā)送送時為SCON中的TB8,,接收時時為RB8),,停止位位1位,,一幀數(shù)數(shù)據(jù)為11位。。方式2的波特特率固定定為晶振振頻率的的1/64或1/32,方式式3的波波特率由由定時器器T1的的溢出率率決定。。1、方式式2和方方式3輸輸出發(fā)送開始始時,先先把起始始位0輸輸出到TXD引引腳,然然后發(fā)送送移位寄寄存器的的輸出位位(D0)到TXD引引腳。每每一個移移位脈沖沖都使輸輸出移位位寄存器器的各位位右移一一位,并并由TXD引腳腳輸出。。第一次移移位時,,停止位位“1””移入輸輸出移位位寄存器器的第9位上,,以后后每次移移位,左左邊都移移入0。。當停止止位移至至輸出位位時,左左邊其余余位全為為0,檢檢測電路路檢測到到這一條條件時,,使控制制電路進進行最后后一次移移位,并并置TI=1,,向CPU請求求中斷。。2、方式式2和方方式3輸輸入接收時,,數(shù)據(jù)從從右邊移移入輸入入移位寄寄存器,,在起始始位0移移到最左左邊時,,控制電電路進行行最后一一次移位位。當RI=0,且SM2=0(或或接收到到的第9位數(shù)據(jù)據(jù)為1))時,接接收到的的數(shù)據(jù)裝裝入接收收緩沖器器SBUF和RB8((接收數(shù)數(shù)據(jù)的第第9位)),置RI=1,向CPU請請求中斷斷。如果果條件不不滿足,,則數(shù)據(jù)據(jù)丟失,,且不置置位RI,繼續(xù)續(xù)搜索RXD引引腳的負負跳變。。四、波特特率的計計算在串行通通信中,,收發(fā)雙雙方對發(fā)發(fā)送或接接收數(shù)據(jù)據(jù)的速率率要有約約定。通通過軟件件可對單單片機串串行口編編程為四四種工作作方式,,其中方方式0和和方式2的波特特率是固固定的,,而方式式1和方方式3的的波特率率是可變變的,由由定時器器T1的的溢出率率來決定定。串行口的的四種工工作方式式對應三種波特特率。由于輸輸入的移移位時鐘鐘的來源源不同,,所以,,各種方方式的波波特率計計算公式式也不相相同。方式0的的波特率率=fosc/12方式2的的波特率率=((2SMOD/64))·fosc方式1的的波特率率=((2SMOD/32))·(T1溢出出率)方式3的的波特率率=((2SMOD/32))·(T1溢出出率)當T1作作為波特特率發(fā)生生器時,,最典型型的用法法是使T1工作作在自動動再裝入入的8位位定時器器方式((即方式式2,且且TCON的TR1=1,以以啟動定定時器))。這時時溢出率率取決于于TH1中的計計數(shù)值。。T1溢溢出率=fosc/{12××[256--(TH1)]}在單片機機的應用用中,常常用的晶晶振頻率率為:12MHz和11.0592MHz。所以以,選用用的波特特率也相相對固定定。常用用的串行行口波特特率以及及各參數(shù)數(shù)的關(guān)系系如表所所示。串行口工工作之前前,應對對其進行行初始化化,主要要是設置置產(chǎn)生波波特率的的定時器器1、串串行口控控制和中中斷控制制。具體體步驟如如下:確定T1的工工作方式式(編程TMOD寄存器器);計算T1的初初值,裝載TH1、、TL1;啟動T1(編程TCON中的TR1位位);確定串行口控控制(編程SCON寄存器器);串行口在在中斷方方式工作作時,要要進行中中斷設置置(編程程IE、IP寄存器))。6.3單單片機串串行口應應用舉例例在計算機機分布式式測控系系統(tǒng)中,,經(jīng)常要要利用串串行通信信方式進進行數(shù)據(jù)據(jù)傳輸。。80C51單單片機的的串行口口為計算算機間的的通信提提供了極極為便利利的條件件。利用用單片機機的串行行口還可可以方便便地擴展展鍵盤和和顯示器器,對于于簡單的的應用非非常便利利。這里里僅介紹紹單片機機串行口口在通信信方面的的應用,,關(guān)于鍵鍵盤和顯顯示器的的擴展將將在下一一章介紹紹。6.3.1單片機與與單片機機的通信信一、點對對點的通通信1、硬硬件連連接二、應應用程程序設1號號機是是發(fā)送送方,,2號號機是是接收收方。。當1號號機發(fā)送時時,先發(fā)發(fā)送一一個““E1”聯(lián)聯(lián)絡信信號,,2號號機收收到后后回答答一個個“E2””應答答信號號,表表示同同意接接收。。當1號機機收到到應答答信號號“E2””后,開開始發(fā)發(fā)送數(shù)數(shù)據(jù),,每發(fā)發(fā)送一一個數(shù)數(shù)據(jù)字字節(jié)都都要計計算““校驗驗和””,假假定數(shù)數(shù)據(jù)塊塊長度度為16個個字節(jié)節(jié),起起始地地址為為40H,,一個個數(shù)據(jù)據(jù)塊發(fā)發(fā)送完完畢后后立即即發(fā)送送“校校驗和和”。。2號機機接收收數(shù)據(jù)據(jù)并轉(zhuǎn)存存到數(shù)數(shù)據(jù)緩緩沖區(qū)區(qū),起起始地地址也也為40H,每每接收收到一一個數(shù)數(shù)據(jù)字字節(jié)便便計算算一次次“校校驗和和”,,當收收到一一個數(shù)數(shù)據(jù)塊塊后,,再接接收1號機機發(fā)來來的““校驗驗和””,并并將它它與2號機機求出出的校校驗和和進行行比較較。若若兩者者相等等,說說明接接收正正確,,2號號機回回答00H;若若兩者者不相相等,,說明明接收收不正正確,,2號號機回回答0FFH,,請求求重發(fā)發(fā)。1號機接到到00H后后結(jié)束發(fā)送送。若收到的的答復非零零,則重新新發(fā)送數(shù)據(jù)據(jù)一次。雙雙方約定采采用串行口方式式1進行通信,,一幀信息為為10位,,其中有1個起始位位、8個數(shù)數(shù)據(jù)位和一一個停止位位;波特率率為2400波特,,T1工作作在定時器器方式2,,振蕩頻率率選用11.0592MHZ,查表可可得TH1=TL1=0F4H,PCON寄存存器的SMOD位為為0。發(fā)送程序清清單如下::ASTART:CLREAMOVTMOD,#20H;;定定時器1置置為方式2MOVTH1,,#0F4H;;裝載定時時器初值,,波特率2400MOVTL1,,#0F4HMOVPCON,#00HSETBTR1;;啟啟動定時器器MOVSCON,#50H;;設設定串口方方式1,且且準備接收收應答信號號ALOOP1:MOVSBUF,,#0E1H;;發(fā)聯(lián)聯(lián)絡信號JNBTI,$;;等等待一幀發(fā)發(fā)送完畢CLRTI;;允許許再發(fā)送JNBRI,$;;等等待2號機機的應答信信號CLRRI;;允許再再接收MOVA,SBUF;;2號機機應答后,,讀至AXRLA,#0E2H;;判斷斷2號機是是否準備完完畢JNZALOOP1;;2號機未未準備好,,繼續(xù)聯(lián)絡絡ALOOP2:MOVR0,#40H;;2號機準備備好,設定定數(shù)據(jù)塊地地址指針初初值MOVR7,#10H;;設定數(shù)數(shù)據(jù)塊長度度初值MOVR6,#00H;;清校驗驗和單元ALOOP3:MOVSBUF,,@R0;;發(fā)送送一個數(shù)據(jù)據(jù)字節(jié)MOVA,R6ADDA,@R0;;求校驗和和MOVR6,A;;保存校校驗和INCR0JNBTI,,$CLRTIDJNZR7,,ALOOP3;;整整個個數(shù)數(shù)據(jù)據(jù)塊塊是是否否發(fā)發(fā)送送完完畢畢MOVSBUF,,R6;;發(fā)發(fā)送送校校驗驗和和JNBTI,,$CLRTIJNBRI,,$;;等等待待2號號機機的的應應答答信信號號CLRRIMOVA,,SBUF;;2號號機機應應答答,,讀讀至至AJNZALOOP2;;2號號機機應應答答““錯錯誤誤””,,轉(zhuǎn)轉(zhuǎn)重重新新發(fā)發(fā)送送RET;;2號號機機應應答答““正正確確””,,返返回回接收收程程序序清清單單如如下下::BSTART::CLREAMOVTMOD,,#20HMOVTH1,,#0F4HMOVTL1,,#0F4HMOVPCON,,#00HSETBTR1MOVSCON,,#50H;;設設定定串串口口方方式式1,,且且準準備備接接收收BLOOP1::JNBRI,,$;;等等待待1號號機機的的聯(lián)聯(lián)絡絡信信號號CLRRIMOVA,,SBUF;;收收到到1號號機機信信號號XRLA,,#0E1H;;判判是是否否為為1號號機機聯(lián)聯(lián)絡絡信信號號JNZBLOOP1;;不不是是1號號機機聯(lián)聯(lián)絡絡信信號號,,再再等等待待MOVSBUF,,#0E2H;;是是1號號機機聯(lián)聯(lián)絡絡信信號號,,發(fā)發(fā)應應答答信信號號JNBTI,,$CLRTIMOVR0,,#40H;;設設定定數(shù)數(shù)據(jù)據(jù)塊塊地地址址指指針針初初值值MOVR7,,#10H;;設設定定數(shù)數(shù)據(jù)據(jù)塊塊長長度度初初值值MOVR6,,#00H;;清清校校驗驗和和單單元元BLOOP2:JNBRI,$CLRRIMOVA,SBUFMOV@R0,,A;;接收數(shù)據(jù)據(jù)轉(zhuǎn)儲INCR0ADDA,R6;;求校驗和和MOVR6,ADJNZR7,,BLOOP2;;判判數(shù)據(jù)塊是是否接收完完畢JNBRI,$;;完畢畢,接收1號機發(fā)來來的校驗和和CLRRIMOVA,SBUFXRLA,R6;;比較校校驗和JZEND1;;校驗驗和相等,,跳至發(fā)正正確標志MOVSBUF,#0FFH;;校校驗和不相相等,發(fā)錯錯誤標志JNBTI,$;;轉(zhuǎn)重重新接收CLRTIEND1::MOVSBUF,#00HRET二、多機通通信1、硬件連連接單片機構(gòu)成成的多機系系統(tǒng)常采用用總線型主主從式結(jié)構(gòu)構(gòu)。所謂主主從式,即即在數(shù)個單單片機中,,有一個是是主機,其其余的是從從機,從機機要服從主主機的調(diào)度度、支配。。80C31單片機機的串行口口方式2和和方式3適適于這種主主從式的通通信結(jié)構(gòu)。。當然采用用不同的通通信標準時時,還需進進行相應的的電平轉(zhuǎn)換換,有時還還要對信號號進行光電電隔離。在在實際的多多機應用系系統(tǒng)中,常常采用RS-485串行標準準總線進行行數(shù)據(jù)傳輸輸。2、通信協(xié)協(xié)議所有從機的的SM2位位置1,處處于接收地地址幀狀態(tài)態(tài)。主機發(fā)送一一地址幀,,其中8位位是地址,,第9位為為地址/數(shù)數(shù)據(jù)的區(qū)分分標志,該該位置1表表示該幀為為地址幀。。所有從機收收到地址幀幀后,都將將接收的地地址與本機機的地址比比較。對于于地址相符符的從機,,使自己的的SM2位位置0(以以接收主機機隨后發(fā)來來的數(shù)據(jù)幀幀),并把把本站地址址發(fā)回主機機作為應答答;對于地地址不符的的從機,仍仍保持SM2=1,,對主機隨隨后發(fā)來的的數(shù)據(jù)幀不不予理睬。。從機發(fā)送數(shù)數(shù)據(jù)結(jié)束后后,要發(fā)送送一幀校驗驗和,并置置第9位((TB8))為1,作作為從機數(shù)數(shù)據(jù)傳送結(jié)結(jié)束的標志志。主機接收數(shù)數(shù)據(jù)時先判判斷數(shù)據(jù)接接收標志((RB8)),若RB8=1,,表示數(shù)據(jù)據(jù)傳送結(jié)束束,并比較較此幀校驗驗和,若正正確則回送送正確信號號00H,,此信號命命令該從機機復位(即即重新等待待地址幀));若校驗驗和出錯,,則發(fā)送0FFH,,命令該從從機重發(fā)數(shù)數(shù)據(jù)。若接接收幀的RB8=0,則存數(shù)數(shù)據(jù)到緩沖沖區(qū),并準準備接收下下幀信息。。主機收到從從機應答地地址后,確確認地址是是否相符,,如果地址址不符,發(fā)發(fā)復位信號號(數(shù)據(jù)幀幀中TB8=1);;如果地址址相符,則則清TB8,開始發(fā)發(fā)送數(shù)據(jù)。。從機收到復復位命令后后回到監(jiān)聽聽地址狀態(tài)態(tài)(SM2=1)。。否則開始始接收數(shù)據(jù)據(jù)和命令。。3、應用程程序主機發(fā)送的的地址聯(lián)絡絡信號為::00H,,01H,,02H,,………(即從機機設備地址址),地址址FFH為為命令各從從機復位,,即恢復SM2=1。主機命令編編碼為:01H,主主機命令從從機接收數(shù)數(shù)據(jù);02H,主機機命令從機機發(fā)送數(shù)據(jù)據(jù)。其它都都按02H對待。RRDY=1:表示示從機準備備好接收。。TRDY=1:表示示從機準備備好發(fā)送。。ERR=1:表示示從機接收收的命令是是非法的。。程序分為主主機程序和和從機程序序。約定一一次傳遞數(shù)數(shù)據(jù)為16個字節(jié),,以01H地址的從從機為例。主機程序清清單:設從機地址址號存于40H單元元,命令存存于41H單元。MAIN::MOVTMOD,#20H;;T1方式2MOVTH1,,#0FDH;;初始始化波特率率9600MOVTL1,,#0FDHMOVPCON,#00HSETBTR1MOVSCON,#0F0H;;串串口方式3,多機,,準備接收收應答LOOP1:SETBTB8MOVSBUF,40H;;發(fā)發(fā)送預通信信從機地址址JNBTI,$CLRTIJNBRI,$;;等待待從機對聯(lián)聯(lián)絡應答CLRRIMOVA,SBUF;;接收應答答,讀至AXRLA,40H;;判應答答的地址是是否正確JZAD_OKAD_ERR:MOVSBUF,,#0FFH;;應應答錯誤,,發(fā)命令FFHJNBTI,$CLRTISJMPLOOP1;;返返回重新發(fā)發(fā)送聯(lián)絡信信號AD_OK:CLRTB8;;應答答正確MOVSBUF,41H;;發(fā)送命命令字JNBTI,$CLRTIJNBRI,$;;等待待從機對命命令應答CLRRIMOVA,SBUF;;接收收應答,讀讀至AXRLA,#80H;;判斷應答答是否正確確JNZCO_OKSETBTB8SJMPAD_ERR;;錯錯誤處理CO_OK:MOVA,,SBUF;;應答答正確,判判是發(fā)送還還是接收命命令XRLA,#01HJZSE_DATA;;從機機準備好接接收,可以以發(fā)送MOVA,SBUFXRLA,#02HJZRE_DATA;;從機機準備好發(fā)發(fā)送,可以以接收LJMPSE_DATARE_DATA:MOVR6,#00H;;清校驗和和接收16個字節(jié)數(shù)數(shù)據(jù)MOVR0,#30HMOVR7,#10HLOOP2:JNBRI,$CLRRIMOVA,SBUFMOV@R0,,AINCR0ADDA,R6MOVR6,ADJNZR7,,LOOP2JNBRI,$CLRRIMOVA,SBUF;;接收校校驗和并判判斷XRLA,R6JZXYOK;;校驗正確確MOVSBUF,#0FFH;;校驗錯誤誤JNBTI,$CLRTILJMPRE_DATAXYOK::MOVSBUF,#00H;;校校驗和正確確,發(fā)00HJNBTI,$CLRTISETBTB8;;置地址址標志LJMPRETENDSE_DATA:MOVR6,#00H;;發(fā)送送16個字字節(jié)數(shù)據(jù)MOVR0,#30HMOVR7,#10HLOOP3:MOVA,@R0MOVSBUF,AJNBTI,$CLRTIINCR0ADDA,R6MOVR6,ADJNZR7,,LOOP3MOVA,R6MOVSBUF,A;;發(fā)發(fā)校驗和JNBTI,$CLRTIJNBRI,$CLRRIMOVA,SBUFXRLA,#00HJZRET_END;;從從機接收正正確SJMPSE_DATA;;從機接收收不正確,,重新發(fā)送送RET_END:RET從機程序清清單:設本機號存存于40H單元,41H單元元存放“發(fā)發(fā)送”命令令,42H單元存放放“接收””命令。MAIN::MOVTMOD,#20H;;初始化串串行口MOVTH1,,#0FDHMOVTL1,,#0FDHMOVPCON,#00HSETBTR1MOVSCON,#0F0HLOOP1:SETBEA;;開中斷斷SETBESSETBRRDY;;發(fā)送與與接收準備備就緒SETBTRDYSJMPLOOP1SERVE:PUSHPSW;;中斷服服務程序PUSHACCCLRESCLRRIMOVA,SBUFXRLA,40H;;判斷是是否本機地地址JZSER_OKLJMPENDI;;非非本機機地址址,繼繼續(xù)監(jiān)監(jiān)聽SER_OK::CLRSM2;;是是本機機地址址,取取消監(jiān)監(jiān)聽狀狀態(tài)MOVSBUF,40H;;本機機地址址發(fā)回回JNBTI,$CLRTIJNBRI,$CLRRIJBRB8,ENDII;;是復復位命命令,,恢復復監(jiān)聽聽MOVA,,SBUF;;不是是復位位命令令,判判是““發(fā)送送”還還是““接收收”XRLA,41HJZSERISE;;收到到“發(fā)發(fā)送””命令令,發(fā)發(fā)送處處理MOVA,,SBUFXRLA,,42HJZSERIRE;;收收到““接收收”命命令,,接收收處理理SJMPFFML;;非法法命令令,轉(zhuǎn)轉(zhuǎn)非法法處理理SERISE::JBTRDY,SEND;;從從機發(fā)發(fā)送是是否準準備好好MOVSBUF,#00HSJMPWAIT01SEND::MOVSBUF,,#02H;;返返回““發(fā)送送準備備好””WAIT01::JNBTI,$CLRTIJNBRI,,$CLRRIJBRB8,,ENDII;;主主機接接收是是否準準備就就緒LCALLSE_DATA;;發(fā)送送數(shù)據(jù)據(jù)LJMPENDFFML::MOVSBUF,,#80H;;發(fā)非非法命命令,,恢復復監(jiān)聽聽JNBTI,,$CLRTILJMPENDIISERIRE::JBRRDY,,RECE;;從機機接收收是否否準備備好MOVSBUF,#00HSJMPWAIT02RECE::MOVSBUF,,#01H;;返返回““接收收準備備好””WEIT02::JNBTI,,$CLRTIJNBRI,$CLRRIJBRB8,ENDII;;主機機發(fā)送送是否否就緒緒LCALLRE_DATA;;接接收數(shù)數(shù)據(jù)LJMPENDENDII:SETBSM2ENDI::SETBESEND:POPACCPOPPSWRETISE_DATA:CLRTRDY;;發(fā)發(fā)送數(shù)數(shù)據(jù)塊塊子程程序MOVR6,#00HMOVR0,#30HMOVR7,#10HLOOP2:MOVA,@R0MOVSBUF,AJNBTI,$CLRTIINCR0ADDA,,R6MOVR6,ADJNZR7,,LOOP2;;數(shù)據(jù)據(jù)塊發(fā)發(fā)送完完畢??MOVA,,R6MOVSBUF,AJNBTI,$;;發(fā)送送校驗驗和CLRTIJNBRI,$CLRRIMOVA,,SBUFXRLA,#00H;;判發(fā)送是是否正確JZSEND_OKSJMPSE_DATA;;發(fā)送錯錯誤,重發(fā)發(fā)SEND_OK:SETBSM2;;發(fā)送正正確,繼續(xù)續(xù)監(jiān)聽SETBESRETRE_DATA:CLRRRDY;;接收收數(shù)據(jù)塊子子程序MOVR6,#00HMOVR0,#30HMOVR7,#10HLOOP3:JNBRI,$CLRRIMOVA,SBUFMOV@R0,,AINCR0ADDA,R6MOVR6,ADJNZR7,,LOOP3;;接收數(shù)據(jù)據(jù)塊完畢??JNBRI,$;;接收收校驗和CLRRIMOVA,SBUFXRLA,R6;;判斷校校驗和是否否正確JZRECE_OKMOVSBUF,#0FFH;;校驗和錯錯誤,發(fā)FFHJNBTI,$CLRTILJMPRE_DATA;;重新新接收RECE_OK:MOVA,#00H;;校驗和和正確,發(fā)發(fā)00HMOVSBUF,AJNBTI,$CLRTISETBSM2;;繼繼續(xù)監(jiān)聽SETBESRET6.3.2單片片機與PC機的通信信在工控系統(tǒng)統(tǒng)(尤其是是多點現(xiàn)場場工控系統(tǒng)統(tǒng))設計實實踐中,單單片機與PC機組合合構(gòu)成分布布式控制系系統(tǒng)是一個個重要的發(fā)發(fā)展方向。。分布式系系統(tǒng)主從管管理,層層層控制。主主控計算機機監(jiān)督管理理各子系統(tǒng)統(tǒng)分機的運運行狀況。。子系統(tǒng)與與子系統(tǒng)可可以平等信信息交換,,也可以有有主從關(guān)系系。分布式式系統(tǒng)最明明顯的特點點是可靠性性高,某個個子系統(tǒng)的的故障不會會影響其它它子系統(tǒng)的的正常工作作。1臺PC機機即可以與與1個80C31單單片機應用用系統(tǒng)通信信,也可以以

溫馨提示

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

評論

0/150

提交評論