




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本章分為三節(sānjié),主要介紹:6.280C51的串行口6.1計算機串行通信(tōngxìn)基礎6.3單片機串行口應用(yìngyòng)舉例第一頁,共73頁。6.1計算機串行通信(tōngxìn)基礎隨著多微機系統的廣泛應用和計算機網絡技術的普及,計算機的通信(tōngxìn)功能愈來愈顯得重要。計算機通信(tōngxìn)是指計算機與外部設備或計算機與計算機之間的信息交換。通信(tōngxìn)有并行通信(tōngxìn)和串行通信(tōngxìn)兩種方式。在多微機系統以及現代測控系統中信息的交換多采用串行通信(tōngxìn)方式。第二頁,共73頁。計算機通信是將計算機技術和通信技術的相結合,完成計算機與外部設備或計算機與計算機之間的信息交換。可以分為兩大類:并行通信與串行通信。并行通信通常是將數據字節(zìjié)的各位用多條數據線同時進行傳送并行通信控制(kòngzhì)簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。第三頁,共73頁。串行通信是將數據字節分成一位一位的形式在一條(yītiáo)傳輸線上逐個地傳送。串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網等現成的設備,但數據(shùjù)的傳送控制比并行通信復雜。第四頁,共73頁。6.1.1串行通信的基本概念一、異步通信與同步通信1、異步通信異步通信是指通信的發送與接收設備使用各自的時鐘控制數據的發送和接收過程。為使雙方的收發協調,要求(yāoqiú)發送和接收設備的時鐘盡可能一致。第五頁,共73頁。異步通信是以字符(構成的幀)為單位進行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定(gùdìng)的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數倍的關系),但同一字符內的各位是同步的(各位之間的距離均為“位間隔”的整數倍)。第六頁,共73頁。異步通信(tōngxìn)的數據格式:異步通信的特點:不要求收發雙方時鐘的嚴格一致(yīzhì),實現容易,設備開銷較小,但每個字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。第七頁,共73頁。2、同步通信同步通信時要建立發送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步。此時,傳輸數據的位之間的距離均為“位間隔”的整數倍,同時傳送的字符間不留間隙,即保持位同步關系,也保持字符同步關系。發送方對接收方的同步可以通過兩種方法(fāngfǎ)實現。外同步(tóngbù)自同步(tóngbù)第八頁,共73頁。面向字符的同步(tóngbù)格式:此時,傳送的數據和控制信息都必須(bìxū)由規定的字符集(如ASCII碼)中的字符所組成。圖中幀頭為1個或2個同步字符SYN(ASCII碼為16H)。SOH為序始字符(ASCII碼為01H),表示標題的開始,標題中包含源地址、目標地址和路由指示等信息。STX為文始字符(ASCII碼為02H),表示傳送的數據塊開始。數據塊是傳送的正文內容,由多個字符組成。數據塊后面是組終字符ETB(ASCII碼為17H)或文終字符ETX(ASCII碼為03H)。然后是校驗碼。典型的面向字符的同步規程如IBM的二進制同步規程BSC。第九頁,共73頁。面向(miànxiànɡ)位的同步格式:此時,將數據塊看作數據流,并用序列01111110作為開始和結束標志。為了避免在數據流中出現序列01111110時引起的混亂,發送方總是在其發送的數據流中每出現5個連續的1就插入一個附加的0;接收方則每檢測到5個連續的1并且其后有一個0時,就刪除該0。典型的面向位的同步協議如ISO的高級數據鏈路控制規程HDLC和IBM的同步數據鏈路控制規程SDLC。同步通信的特點是以特定(tèdìng)的位組合“01111110”作為幀的開始和結束標志,所傳輸的一幀數據可以是任意位。所以傳輸的效率較高,但實現的硬件設備比異步通信復雜。第十頁,共73頁。二、串行通信的傳輸方向1、單工單工是指數據傳輸僅能沿一個方向,不能實現反向傳輸。2、半雙工半雙工是指數據傳輸可以沿兩個方向,但需要(xūyào)分時進行。3、全雙工全雙工是指數據可以同時進行雙向傳輸。單工半雙工全雙工第十一頁,共73頁。三、信號的調制與解調利用調制器(Modulator)把數字信號轉換成模擬信號,然后送到通信線路上去(shàngqù),再由解調器(Demodulator)把從通信線路上收到的模擬信號轉換成數字信號。由于通信是雙向的,調制器和解調器合并在一個裝置中,這就是調制解調器MODEM。第十二頁,共73頁。四、串行通信的錯誤校驗1、奇偶校驗在發送數據(shùjù)時,數據(shùjù)位尾隨的1位為奇偶校驗位(1或0)。奇校驗時,數據(shùjù)中“1”的個數與校驗位“1”的個數之和應為奇數;偶校驗時,數據(shùjù)中“1”的個數與校驗位“1”的個數之和應為偶數。接收字符時,對“1”的個數進行校驗,若發現不一致,則說明傳輸數據(shùjù)過程中出現了差錯。3、循環冗余校驗這種校驗是通過某種數學運算實現有效(yǒuxiào)信息與校驗位之間的循環校驗,常用于對磁盤信息的傳輸、存儲區的完整性校驗等。這種校驗方法糾錯能力強,廣泛應用于同步通信中。2、代碼和校驗代碼和校驗是發送方將所發數據塊求和(或各字節異或),產生一個字節的校驗字符(校驗和)附加到數據塊末尾(mòwěi)。接收方接收數據同時對數據塊(除校驗字節外)求和(或各字節異或),將所得的結果與發送方的“校驗和”進行比較,相符則無差錯,否則即認為傳送過程中出現了差錯。第十三頁,共73頁。五、傳輸速率與傳輸距離1、傳輸速率比特率是每秒鐘傳輸二進制代碼的位數,單位是:位/秒(bps)。如每秒鐘傳送240個字符,而每個字符格式包含(bāohán)10位(1個起始位、1個停止位、8個數據位),這時的比特率為:10位×240個/秒=2400bps波特率表示每秒鐘調制信號變化的次數,單位是:波特(Baud)。波特率和比特率不總是相同(xiānɡtónɡ)的,對于將數字信號1或0直接用兩種不同電壓表示的所謂基帶傳輸,比特率和波特率是相同(xiānɡtónɡ)的。所以,我們也經常用波特率表示數據的傳輸速率。第十四頁,共73頁。2、傳輸距離與傳輸速率的關系串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關。當傳輸線使用每(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當比特率超過1000bps時,最大傳輸距離迅速下降(xiàjiàng),如9600bps時最大距離下降(xiàjiàng)到只有76m(約250英尺)。第十五頁,共73頁。6.1.2串行通信接口標準一、RS-232C接口RS-232C是EIA(美國電子工業協會)1969年修訂RS-232C標準。RS-232C定義了數據終端設備(DTE)與數據通信設備(DCE)之間的物理接口標準。1、機械特性(tèxìng)RS-232C接口規定使用25針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)第十六頁,共73頁。2、功能(gōngnéng)特性第十七頁,共73頁。4、過程特性過程特性規定了信號(xìnhào)之間的時序關系,以便正確地接收和發送數據。遠程(yuǎnchéng)通信連接第十八頁,共73頁。近程通信(tōngxìn)連接第十九頁,共73頁。5、RS-232C電平(diànpínɡ)與TTL電平(diànpínɡ)轉換驅動電路第二十頁,共73頁。6、采用RS-232C接口存在的問題1、傳輸距離短,傳輸速率低RS-232C總線(zǒnɡxiàn)標準受電容允許值的約束,使用時傳輸距離一般不要超過15米(線路條件好時也不超過幾十米)。最高傳送速率為20Kbps。2、有電平偏移RS-232C總線標準(biāozhǔn)要求收發雙方共地。通信距離較大時,收發雙方的地電位差別較大,在信號地上將有比較大的地電流并產生壓降。3、抗干擾能力差RS-232C在電平轉換時采用單端輸入輸出,在傳輸過程中當干擾和噪聲混在正常的信號中。為了提高(tígāo)信噪比,RS-232C總線標準不得不采用比較大的電壓擺幅。第二十一頁,共73頁。二、RS-422A接口(jiēkǒu)RS-422A輸出驅動器為雙端平衡(pínghéng)驅動器。如果其中一條線為邏輯“1”狀態,另一條線就為邏輯“0”,比采用單端不平衡(pínghéng)驅動對電壓的放大倍數大一倍。差分電路能從地線干擾中拾取有效信號,差分接收器可以分辨200mV以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。RS-422A傳輸速率(90Kbps)時,傳輸距離可達1200米。第二十二頁,共73頁。三、RS-485接口(jiēkǒu)RS-485是RS-422A的變型:RS-422A用于全雙工,而RS-485則用于半雙工。RS-485是一種多發送器標準,在通信線路上最多可以使用32對差分驅動器/接收器。如果在一個網絡中連接的設備超過32個,還可以使用中繼器。RS-485的信號傳輸采用(cǎiyòng)兩線間的電壓來表示邏輯1和邏輯0。由于發送方需要兩根傳輸線,接收方也需要兩根傳輸線。傳輸線采用(cǎiyòng)差動信道,所以它的干擾抑制性極好,又因為它的阻抗低,無接地問題,所以傳輸距離可達1200米,傳輸速率可達1Mbps。第二十三頁,共73頁。RS-485是一點對多點的通信接口,一般采用雙絞線的結構。普通的PC機一般不帶RS485接口,因此要使用RS-232C/RS-485轉換器。對于單片機可以通過芯片MAX485來完成TTL/RS-485的電平轉換。在計算機和單片機組成的RS-485通信系統中,下位機由單片機系統組成,上位(shànɡwèi)機為普通的PC機,負責監視下位機的運行狀態,并對其狀態信息進行集中處理,以圖文方式顯示下位機的工作狀態以及工業現場被控設備的工作狀況。系統中各節點(包括上位(shànɡwèi)機)的識別是通過設置不同的站地址來實現的。第二十四頁,共73頁。6.280C51的串行口
有兩個物理上獨立的接收、發送緩沖器SBUF,它們占用同一(tóngyī)地址99H;接收器是雙緩沖結構;發送緩沖器,因為發送時CPU是主動的,不會產生重疊錯誤。6.2.180C51串行口的結構(jiégòu)第二十五頁,共73頁。SCON是一個特殊功能寄存器,用以設定串行口的工作方式、接收(jiēshōu)/發送控制以及設置狀態標志:6.2.280C51串行口的控制(kòngzhì)寄存器SM0和SM1為工作方式選擇(xuǎnzé)位,可選擇(xuǎnzé)四種工作方式:第二十六頁,共73頁。●SM2,多機通信控制位,主要(zhǔyào)用于方式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,則禁止接收。第二十七頁,共73頁。●TB8,在方式2或方式3中,是發送數據的第九位,可以用軟件規定(guīdìng)其作用。可以用作數據的奇偶校驗位,或在多機通信中,作為地址幀/數據幀的標志位。在方式0和方式1中,該位未用。●RB8,在方式2或方式3中,是接收到數據的第九位,作為奇偶校驗位或地址幀/數據幀的標志位。在方式1時,若SM2=0,則RB8是接收到的停止位。第二十八頁,共73頁。●TI,發送中斷標志位。在方式0時,當串行發送第8位數據結束(jiéshù)時,或在其它方式,串行發送停止位的開始時,由內部硬件使TI置1,向CPU發中斷申請。在中斷服務程序中,必須用軟件將其清0,取消此中斷申請。●RI,接收中斷標志位。在方式0時,當串行接收第8位數據結束(jiéshù)時,或在其它方式,串行接收停止位的中間時,由內部硬件使RI置1,向CPU發中斷申請。也必須在中斷服務程序中,用軟件將其清0,取消此中斷申請。第二十九頁,共73頁。PCON中只有(zhǐyǒu)一位SMOD與串行口工作有關:SMOD()波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關,當SMOD=1時,波特率提高(tígāo)一倍。復位時,SMOD=0。第三十頁,共73頁。
6.2.380C51串行口的工作(gōngzuò)方式一、方式0方式0時,串行口為同步移位寄存器的輸入輸出方式。主要用于擴展并行輸入或輸出口。數據由RXD()引腳輸入或輸出,同步移位脈沖由TXD()引腳輸出。發送(fāsònɡ)和接收均為8位數據,低位在先,高位在后。波特率固定為fosc/12。1、方式0輸出第三十一頁,共73頁。
2、方式(fāngshì)0輸入方式0接收和發送(fāsònɡ)電路第三十二頁,共73頁。
二、方式1方式1是10位數據的異步通信口。TXD為數據發送(fāsònɡ)引腳,RXD為數據接收引腳,傳送一幀數據的格式如圖所示。其中1位起始位,8位數據位,1位停止位。1、方式(fāngshì)1輸出第三十三頁,共73頁。
2、方式(fāngshì)1輸入用軟件置REN為1時,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發生負跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數據從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位數據的前8位數據裝入接收SBUF,第9位(停止位)進入(jìnrù)RB8,并置RI=1,向CPU請求中斷。第三十四頁,共73頁。
三、方式(fāngshì)2和方式(fāngshì)3方式(fāngshì)2或方式(fāngshì)3時為11位數據的異步通信口。TXD為數據發送引腳,RXD為數據接收引腳。方式2和方式3時起始位1位,數據9位(含1位附加的第9位,發送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數據為11位。方式2的波特率固定為晶振頻率(pínlǜ)的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。第三十五頁,共73頁。
1、方式(fāngshì)2和方式(fāngshì)3輸出發送開始時,先把起始位0輸出到TXD引腳,然后發送移位寄存器的輸出位(D0)到TXD引腳。每一個移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位上,以后每次移位,左邊都移入0。當停止位移(wèiyí)至輸出位時,左邊其余位全為0,檢測電路檢測到這一條件時,使控制電路進行最后一次移位,并置TI=1,向CPU請求中斷。第三十六頁,共73頁。
2、方式(fāngshì)2和方式(fāngshì)3輸入接收時,數據從右邊移入輸入移位寄存器,在起始位0移到最左邊時,控制電路進行最后一次移位。當RI=0,且SM2=0(或接收到的第9位數據為1)時,接收到的數據裝入接收緩沖器SBUF和RB8(接收數據的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數據丟失,且不置位RI,繼續(jìxù)搜索RXD引腳的負跳變。第三十七頁,共73頁。四、波特率的計算在串行通信中,收發雙方對發送或接收數據的速率要有約定。通過軟件可對單片機串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。串行口的四種工作方式對應三種波特率。由于輸入的移位時鐘的來源不同,所以,各種(ɡèzhǒnɡ)方式的波特率計算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)第三十八頁,共73頁。當T1作為波特率發生器時,最典型的用法是使T1工作在自動再裝入的8位定時器方式(即方式2,且TCON的TR1=1,以啟動定時器)。這時溢出率取決于TH1中的計數值。T1溢出率=fosc/{12×[256-(TH1)]}在單片機的應用(yìngyòng)中,常用的晶振頻率為:12MHz和。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數的關系如表所示。第三十九頁,共73頁。串行口工作(gōngzuò)之前,應對其進行初始化,主要是設置產生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:確定T1的工作(gōngzuò)方式(編程TMOD寄存器);計算T1的初值,裝載TH1、TL1;啟動T1(編程TCON中的TR1位);確定串行口控制(編程SCON寄存器);串行口在中斷方式工作(gōngzuò)時,要進行中斷設置(編程IE、IP寄存器)。第四十頁,共73頁。6.3單片機串行口應用(yìngyòng)舉例在計算機分布式測控系統中,經常要利用串行通信方式進行數據傳輸。80C51單片機的串行口為計算機間的通信提供了極為便利的條件。利用單片機的串行口還可以方便地擴展鍵盤和顯示器,對于簡單的應用非常便利。這里僅介紹單片機串行口在通信方面的應用,關于(guānyú)鍵盤和顯示器的擴展將在下一章介紹。第四十一頁,共73頁。6.3.1單片機與單片機的通信(tōngxìn)一、點對點的通信(tōngxìn)1、硬件連接第四十二頁,共73頁。二、應用程序
第四十三頁,共73頁。設1號機是發送方,2號機是接收方。當1號機發送時,先發送一個“E1”聯絡信號,2號機收到后回答一個“E2”應答信號,表示同意接收。當1號機收到應答信號“E2”后,開始發送數據,每發送一個數據字節都要計算“校驗和”,假定數據塊長度為16個字節,起始地址為40H,一個數據塊發送完畢后立即(lìjí)發送“校驗和”。2號機接收數據并轉存到數據緩沖區,起始地址也為40H,每接收到一個數據字節便計算一次“校驗和”,當收到一個數據塊后,再接收1號機發來的“校驗和”,并將它與2號機求出的校驗和進行比較。若兩者相等,說明接收正確,2號機回答00H;若兩者不相等,說明接收不正確,2號機回答0FFH,請求重發。1號機接到00H后結束發送。若收到的答復非零,則重新發送數據一次。雙方約定采用串行口方式1進行通信,一幀信息為10位,其中有1個起始位、8個數據位和一個停止位;波特率為2400波特,T1工作在定時器方式2,振蕩頻率選用,查表可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。第四十四頁,共73頁。發送程序清單如下:ASTART:CLREAMOVTMOD,#20H;定時器1置為方式2MOVTH1,#0F4H;裝載定時器初值,波特率2400MOVTL1,#0F4HMOVPCON,#00HSETBTR1;啟動定時器MOVSCON,#50H;設定串口方式1,且準備(zhǔnbèi)接收應答信號ALOOP1:MOVSBUF,#0E1H;發聯絡信號JNBTI,$;等待一幀發送完畢CLRTI;允許再發送JNBRI,$;等待2號機的應答信號CLRRI;允許再接收MOVA,SBUF;2號機應答后,讀至AXRLA,#0E2H;判斷2號機是否準備(zhǔnbèi)完畢JNZALOOP1;2號機未準備(zhǔnbèi)好,繼續聯絡ALOOP2:MOVR0,#40H;2號機準備(zhǔnbèi)好,設定數據塊地址指針初值MOVR7,#10H;設定數據塊長度初值MOVR6,#00H;清校驗和單元第四十五頁,共73頁。ALOOP3:MOVSBUF,@R0;發送一個數據字節MOVA,R6ADDA,@R0;求校驗(xiàoyàn)和MOVR6,A;保存校驗(xiàoyàn)和INCR0JNBTI,$CLRTIDJNZR7,ALOOP3;整個數據塊是否發送完畢MOVSBUF,R6;發送校驗(xiàoyàn)和JNBTI,$CLRTIJNBRI,$;等待2號機的應答信號CLRRIMOVA,SBUF;2號機應答,讀至AJNZALOOP2;2號機應答“錯誤”,轉重新發送RET;2號機應答“正確”,返回第四十六頁,共73頁。接收(jiēshōu)程序清單如下:BSTART:CLREAMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HMOVPCON,#00HSETBTR1MOVSCON,#50H;設定串口方式1,且準備接收(jiēshōu)BLOOP1:JNBRI,$;等待1號機的聯絡信號CLRRIMOVA,SBUF;收到1號機信號XRLA,#0E1H;判是否為1號機聯絡信號JNZBLOOP1;不是1號機聯絡信號,再等待MOVSBUF,#0E2H;是1號機聯絡信號,發應答信號JNBTI,$CLRTIMOVR0,#40H;設定數據塊地址指針初值MOVR7,#10H;設定數據塊長度初值MOVR6,#00H;清校驗和單元第四十七頁,共73頁。BLOOP2:JNBRI,$CLRRIMOVA,SBUFMOV@R0,A;接收(jiēshōu)數據轉儲INCR0ADDA,R6;求校驗和MOVR6,ADJNZR7,BLOOP2;判數據塊是否接收(jiēshōu)完畢JNBRI,$;完畢,接收(jiēshōu)1號機發來的校驗和CLRRIMOVA,SBUFXRLA,R6;比較校驗和JZEND1;校驗和相等,跳至發正確標志MOVSBUF,#0FFH;校驗和不相等,發錯誤標志JNBTI,$;轉重新接收(jiēshōu)CLRTIEND1:MOVSBUF,#00HRET第四十八頁,共73頁。二、多機通信1、硬件連接單片機構成的多機系統常采用總線型主從式結構。所謂主從式,即在數個單片機中,有一個是主機,其余的是從機,從機要服從主機的調度、支配。80C31單片機的串行口方式2和方式3適于這種主從式的通信結構。當然采用不同的通信標準時,還需進行相應的電平轉換,有時還要對信號(xìnhào)進行光電隔離。在實際的多機應用系統中,常采用RS-485串行標準總線進行數據傳輸。第四十九頁,共73頁。2、通信協議所有從機的SM2位置1,處于接收地址幀狀態。主機發送一地址幀,其中(qízhōng)8位是地址,第9位為地址/數據的區分標志,該位置1表示該幀為地址幀。所有從機收到地址幀后,都將接收的地址與本機的地址比較。對于地址相符的從機,使自己的SM2位置0(以接收主機隨后發來的數據幀),并把本站地址發回主機作為應答;對于地址不符的從機,仍保持SM2=1,對主機隨后發來的數據幀不予理睬。從機發送數據結束后,要發送一幀校驗和,并置第9位(TB8)為1,作為從機數據傳送結束的標志。第五十頁,共73頁。主機接收數據時先判斷數據接收標志(RB8),若RB8=1,表示數據傳送結束,并比較此幀校驗和,若正確則回送正確信號00H,此信號命令該從機復位(即重新等待地址幀);若校驗和出錯,則發送0FFH,命令該從機重發數據。若接收幀的RB8=0,則存數據到緩沖區,并準備接收下幀信息。主機收到從機應答地址后,確認地址是否(shìfǒu)相符,如果地址不符,發復位信號(數據幀中TB8=1);如果地址相符,則清TB8,開始發送數據。從機收到復位命令后回到監聽地址狀態(SM2=1)。否則開始接收數據和命令。第五十一頁,共73頁。3、應用程序主機(zhǔjī)發送的地址聯絡信號為:00H,01H,02H,……(即從機設備地址),地址FFH為命令各從機復位,即恢復SM2=1。主機(zhǔjī)命令編碼為:01H,主機(zhǔjī)命令從機接收數據;02H,主機(zhǔjī)命令從機發送數據。其它都按02H對待。RRDY=1:表示從機準備好接收。TRDY=1:表示從機準備好發送。ERR=1:表示從機接收的命令是非法的。程序分為(fēnwéi)主機程序和從機程序。約定一次傳遞數據為16個字節,以01H地址的從機為例。第五十二頁,共73頁。主機程序清單:設從機地址號存于40H單元,命令(mìnglìng)存于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_OK第五十三頁,共73頁。AD_ERR:MOVSBUF,#0FFH;應答錯誤,發命令FFHJNBTI,$CLRTISJMPLOOP1;返回重新發送聯絡信號AD_OK:CLRTB8;應答正確(zhèngquè) MOVSBUF,41H;發送命令字JNBTI,$ CLRTIJNBRI,$ ;等待從機對命令應答 CLRRIMOVA,SBUF;接收應答,讀至A XRLA,#80H;判斷應答是否正確(zhèngquè)JNZCO_OK SETBTB8SJMPAD_ERR;錯誤處理第五十四頁,共73頁。CO_OK:MOVA,SBUF;應答正確,判是發送還是接收命令 XRLA,#01H JZSE_DATA;從機準備(zhǔnbèi)好接收,可以發送 MOVA,SBUF XRLA,#02H JZRE_DATA;從機準備(zhǔnbèi)好發送,可以接收 LJMPSE_DATARE_DATA:MOVR6,#00H;清校驗和接收16個字節數據 MOVR0,#30H MOVR7,#10H第五十五頁,共73頁。LOOP2:JNBRI,$CLRRIMOVA,SBUF MOV@R0,A INCR0 ADDA,R6 MOVR6,ADJNZR7,LOOP2JNBRI,$ CLRRIMOVA,SBUF;接收校驗(xiàoyàn)和并判斷 XRLA,R6 JZXYOK;校驗(xiàoyàn)正確 MOVSBUF,#0FFH;校驗(xiàoyàn)錯誤JNBTI,$ CLRTILJMPRE_DATA第五十六頁,共73頁。XYOK:MOVSBUF,#00H;校驗和正確,發00HJNBTI,$ CLRTISETBTB8;置地址標志 LJMPRETENDSE_DATA:MOVR6,#00H;發送16個字節(zìjié)數據 MOVR0,#30H MOVR7,#10HLOOP3:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP3第五十七頁,共73頁。MOVA,R6 MOVSBUF,A;發校驗(xiàoyàn)和JNBTI,$ CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H JZRET_END;從機接收正確SJMPSE_DATA;從機接收不正確,重新發送RET_END:RET第五十八頁,共73頁。從機程序清單:設本機號存于40H單元,41H單元存放“發送(fāsònɡ)”命令,42H單元存放“接收”命令。MAIN:MOVTMOD,#20H;初始化串行口MOVTH1,#0FDH MOVTL1,#0FDHMOVPCON,#00H SETBTR1MOVSCON,#0F0HLOOP1:SETBEA;開中斷 SETBES SETBRRDY;發送(fāsònɡ)與接收準備就緒 SETBTRDY SJMPLOOP1第五十九頁,共73頁。SERVE:PUSHPSW;中斷服務程序PUSHACC CLRESCLRRI MOVA,SBUF XRLA,40H;判斷是否本機地址JZSER_OK LJMPENDI;非本機地址,繼續監聽SER_OK:CLRSM2;是本機地址,取消監聽狀態MOVSBUF,40H;本機地址發回JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;是復位命令,恢復監聽 MOVA,SBUF;不是復位命令,判是“發送”還是“接收(jiēshōu)” XRLA,41H JZSERISE;收到“發送”命令,發送處理 MOVA,SBUF XRLA,42H JZSERIRE;收到“接收(jiēshōu)”命令,接收(jiēshōu)處理 SJMPFFML;非法命令,轉非法處理第六十頁,共73頁。SERISE:JBTRDY,SEND;從機發送(fāsònɡ)是否準備好MOVSBUF,#00HSJMPWAIT01SEND:MOVSBUF,#02H;返回“發送(fāsònɡ)準備好”WAIT01:JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機接收是否準備就緒 LCALLSE_DATA;發送(fāsònɡ)數據 LJMPENDFFML:MOVSBUF,#80H;發非法命令,恢復監聽JNBTI,$ CLRTILJMPENDIISERIRE:JBRRDY,RECE;從機接收是否準備好 MOVSBUF,#00H SJMPWAIT02第六十一頁,共73頁。RECE:MOVSBUF,#01H;返回“接收準備好”WEIT02:JNBTI,$CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機發送(fāsònɡ)是否就緒 LCALLRE_DATA;接收數據 LJMPENDENDII:SETBSM2ENDI:SETBESEND:POPACC POPPSW RETI第六十二頁,共73頁。SE_DATA:CLRTRDY;發送數據(shùjù)塊子程序 MOVR6,#00H MOVR0,#30HMOVR7,#10HLOOP2:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP2;數據(shùjù)塊發送完畢? MOVA,R6 MOVSBUF,AJNBTI,$;發送校驗和 CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H;判發送是否正確 JZSEND_OK SJMPSE_DATA;發送錯誤,重發第六十三頁,共73頁。SEND_OK:SETBSM2;發送正確(zhèngquè),繼續監聽 SETBES RETRE_DATA:CLRRRDY;接收數據塊子程序 MOVR6,#00HMOVR0,#30HMOVR7,#10H第六十四頁,共73頁。LOOP3:JNBRI,$ CLRRIMOVA,SBUFMOV@R0,A INCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP3;接收數據塊完畢?JNBRI,$;接收校驗和 CLRRIMOVA,SBUF XRLA,R6;判斷校驗和是否(shìfǒu)正確 JZRECE_OK MOVSBUF,#0FFH;校驗和錯誤,發FFHJNBTI,$ CLRTILJMPRE_DATA;重新接收第六十五頁,共73頁。RECE_OK:MOVA,#00H;校驗和正確,發00H MOVSBUF,AJNBTI,$ CLRTISETBSM2;繼續(jìxù)監聽 SETBES RET第六十六頁,共73頁。
6.3.2單片機與PC機的通信在工控系統(尤其是多點現場工控系統)設計實踐中,單片機與PC機組合構成分布式控制系統是一個重要的發展方向。分布式系統主從管理,層層控制。主控計算機監督管理各子系統分機的運行狀況。子系統與子系統可以平等信息交換,也可以有主從關系。分布式系統最明顯的特點是可靠性高,某個子系統的故障(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農小蜂年度中國肉類生產及分布數據分析報告
- 2025年工業互聯網平臺SDN優化與5G通信技術在工業互聯網中的應用報告
- 2025年農業灌溉用水高效利用與水資源優化配置報告
- 2025年綠色供應鏈管理在調味品制造業的應用與推廣研究報告
- 智能礦山無人作業系統在煤炭開采中的應用研究與發展報告
- 2025年線下演出市場復蘇后的經濟效益與社會影響研究報告
- 基于區塊鏈技術的2025年零售企業數字化供應鏈協同安全報告
- 06年司法局上半年工作總結
- 2025年裝配式建筑部品部件生產流程優化與標準化創新案例分析報告
- 核電項目日常管理制度
- 提貨申請單表
- 做自己人生的設計師 課件-2022-2023學年高一下學期職業生涯規劃主題教育班會
- DB31∕T 1249-2020 醫療廢物衛生管理規范
- 采購預付款合同
- 五年級上冊英語人教PEP版課件Unit 1
- GMP衛生管理及微生物基礎知識培訓課件
- 2023年北京市朝陽區招聘社區工作者3500人筆試備考題庫及答案解析
- 非標自動化設備項目進度表
- 關于石油和化學工業專用涂料、顏料質量檢驗中心檢驗范圍的通知
- 20S517 排水管道出水口
- 企業招標投標法律實務講座課件
評論
0/150
提交評論