微機(jī)原理單片機(jī) 第6章 80C51單片機(jī)的串行口_第1頁
微機(jī)原理單片機(jī) 第6章 80C51單片機(jī)的串行口_第2頁
微機(jī)原理單片機(jī) 第6章 80C51單片機(jī)的串行口_第3頁
微機(jī)原理單片機(jī) 第6章 80C51單片機(jī)的串行口_第4頁
微機(jī)原理單片機(jī) 第6章 80C51單片機(jī)的串行口_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 第第6章章 80C51的串行口的串行口6.2 80C51的串行口的串行口6.1 計(jì)算機(jī)串行通信基礎(chǔ)計(jì)算機(jī)串行通信基礎(chǔ)6.3 單片機(jī)串行口應(yīng)用舉例單片機(jī)串行口應(yīng)用舉例 6.1 計(jì)算機(jī)串行通信基礎(chǔ)計(jì)算機(jī)串行通信基礎(chǔ) 隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計(jì)算機(jī)的通信功能愈來愈顯得技術(shù)的普及,計(jì)算機(jī)的通信功能愈來愈顯得重要。重要。計(jì)算機(jī)通信計(jì)算機(jī)通信是指計(jì)算機(jī)與外部設(shè)備或是指計(jì)算機(jī)與外部設(shè)備或計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換計(jì)算機(jī)與計(jì)算機(jī)之間的信息交換。 通信有通信有并行通信并行通信和和串行通信串行通信兩種方式。在兩種方式。在多微機(jī)系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信

2、息的交換多微機(jī)系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。多采用串行通信方式。 計(jì)算機(jī)通信計(jì)算機(jī)通信可以可以分為兩大類:并行通信與串行通信。分為兩大類:并行通信與串行通信。 1、并行通信:、并行通信:通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送據(jù)線同時(shí)進(jìn)行傳送 。優(yōu)點(diǎn):優(yōu)點(diǎn):控制簡單、傳輸速度快;控制簡單、傳輸速度快;缺點(diǎn):缺點(diǎn):由于傳輸線由于傳輸線較多,長距離傳送時(shí)成本高且接收方的各位同時(shí)接較多,長距離傳送時(shí)成本高且接收方的各位同時(shí)接收存在困難。收存在困難。 2、串行通信、串行通信: 是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。優(yōu)點(diǎn)優(yōu)點(diǎn):傳

3、輸線少,長距離傳送時(shí)成本低,且可:傳輸線少,長距離傳送時(shí)成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備;以利用電話網(wǎng)等現(xiàn)成的設(shè)備;缺點(diǎn):缺點(diǎn):數(shù)據(jù)的傳送控制比并行通信復(fù)雜,傳輸數(shù)據(jù)的傳送控制比并行通信復(fù)雜,傳輸速度慢。速度慢。 6.1.1 6.1.1 串行通信的基本概念串行通信的基本概念 一、異步通信與同步通信一、異步通信與同步通信 1 1、異步通信、異步通信 異步通信異步通信是指通信的是指通信的發(fā)送與接收設(shè)備使用各自的發(fā)送與接收設(shè)備使用各自的時(shí)鐘時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡

4、可能一致。 異步通信是異步通信是以字符(構(gòu)成的幀)為單位進(jìn)以字符(構(gòu)成的幀)為單位進(jìn)行傳輸行傳輸,字符與字符之間的間隙(時(shí)間間隔),字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個字符中的各位是以固定的是任意的,但每個字符中的各位是以固定的時(shí)間傳送的,即時(shí)間傳送的,即字符之間是異步的字符之間是異步的(字符之(字符之間不一定有間不一定有“位間隔位間隔”的整數(shù)倍的關(guān)系),的整數(shù)倍的關(guān)系),但但同一字符內(nèi)的各位是同步的同一字符內(nèi)的各位是同步的(各位之間的(各位之間的距離均為距離均為“位間隔位間隔”的整數(shù)倍)。的整數(shù)倍)。異步通信的數(shù)據(jù)格式異步通信的數(shù)據(jù)格式 :異步通信的特點(diǎn)異步通信的特點(diǎn):不要求收發(fā)

5、雙方時(shí)鐘的嚴(yán)格:不要求收發(fā)雙方時(shí)鐘的嚴(yán)格一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但每個字符一致,實(shí)現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加要附加23位用于起止位、校驗(yàn)位和停止位,位用于起止位、校驗(yàn)位和停止位,各幀之間還有間隔,因此傳輸效率不高。各幀之間還有間隔,因此傳輸效率不高。 2、同步通信、同步通信 同步通信時(shí)要建立發(fā)送方時(shí)鐘對接收方時(shí)鐘的直同步通信時(shí)要建立發(fā)送方時(shí)鐘對接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。傳輸數(shù)據(jù)的位之間的接控制,使雙方達(dá)到完全同步。傳輸數(shù)據(jù)的位之間的距離均為距離均為“位間隔位間隔”的整數(shù)倍,同時(shí)傳送的字符間不的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即留間隙,即保持位同步保持位同步關(guān)

6、系,關(guān)系,也保持字符同步也保持字符同步關(guān)系。關(guān)系。發(fā)送方對接收方的同步可以通過兩種方法實(shí)現(xiàn)。發(fā)送方對接收方的同步可以通過兩種方法實(shí)現(xiàn)。 外同步外同步 自同步自同步面向字符的同步格式面向字符的同步格式 : 此時(shí),傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字此時(shí),傳送的數(shù)據(jù)和控制信息都必須由規(guī)定的字符集(如符集(如ASCIIASCII碼)中的字符所組成。圖中碼)中的字符所組成。圖中幀頭為幀頭為1 1個個或或2 2個同步字符個同步字符SYNSYN(ASCIIASCII碼為碼為16H16H)。)。SOHSOH為序始為序始字字符(符(ASCIIASCII碼為碼為01H01H),表示標(biāo)題的開始,),表示標(biāo)題的開始

7、,標(biāo)題標(biāo)題中包含中包含源地址、目標(biāo)地址和路由指示等信息。源地址、目標(biāo)地址和路由指示等信息。STXSTX為文始為文始字字符(符(ASCIIASCII碼為碼為02H02H),表示傳送的數(shù)據(jù)塊開始。),表示傳送的數(shù)據(jù)塊開始。數(shù)據(jù)數(shù)據(jù)塊塊是傳送的正文內(nèi)容,由多個字符組成。是傳送的正文內(nèi)容,由多個字符組成。 數(shù)據(jù)塊后面是數(shù)據(jù)塊后面是組終字符組終字符ETBETB(ASCIIASCII碼為碼為17H17H)或)或文文終字符終字符ETXETX(ASCIIASCII碼為碼為03H03H)。然后是)。然后是校驗(yàn)碼校驗(yàn)碼。典型典型的面向字符的同步規(guī)程如的面向字符的同步規(guī)程如IBMIBM的二進(jìn)制同步規(guī)程的二進(jìn)制同步規(guī)

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

9、典型的面向位的同步協(xié)議如ISOISO的高級數(shù)據(jù)鏈路控的高級數(shù)據(jù)鏈路控制規(guī)程制規(guī)程HDLCHDLC和和IBMIBM的同步數(shù)據(jù)鏈路控制規(guī)程的同步數(shù)據(jù)鏈路控制規(guī)程SDLCSDLC。 同步通信的特點(diǎn)同步通信的特點(diǎn)是以特定的位組合是以特定的位組合“01111110”01111110”作作為幀的開始和結(jié)束標(biāo)志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任為幀的開始和結(jié)束標(biāo)志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實(shí)現(xiàn)的硬件設(shè)備比異意位。所以傳輸?shù)男瘦^高,但實(shí)現(xiàn)的硬件設(shè)備比異步通信復(fù)雜。步通信復(fù)雜。 二、串行通信的傳輸方向二、串行通信的傳輸方向1 1、單工、單工 是指數(shù)據(jù)傳輸僅能沿是指數(shù)據(jù)傳輸僅能沿一個方向一個

10、方向,不能實(shí)現(xiàn)反向傳輸。,不能實(shí)現(xiàn)反向傳輸。2 2、半雙工、半雙工 是指數(shù)據(jù)傳輸可以沿是指數(shù)據(jù)傳輸可以沿兩個方向兩個方向,但需要分時(shí)進(jìn)行。,但需要分時(shí)進(jìn)行。3 3、全雙工、全雙工全雙工全雙工是指數(shù)據(jù)可以是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向同時(shí)進(jìn)行雙向傳輸。傳輸。 單工 半雙工半雙工 全雙工全雙工 三、信號的調(diào)制與解調(diào)三、信號的調(diào)制與解調(diào) 利用調(diào)制器(利用調(diào)制器(ModulatorModulator)把數(shù)字信號轉(zhuǎn)換成模擬把數(shù)字信號轉(zhuǎn)換成模擬信號信號,然后送到通信線路上去,再由解調(diào)器,然后送到通信線路上去,再由解調(diào)器(DemodulatorDemodulator)把從通信線路上收到的)把從通信線路上收到的模擬

11、信號轉(zhuǎn)模擬信號轉(zhuǎn)換成數(shù)字信號換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器MODEMMODEM。 四、串行通信的錯誤校驗(yàn)四、串行通信的錯誤校驗(yàn) 1 1、奇偶校驗(yàn)、奇偶校驗(yàn) 在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的1 1位為奇偶校驗(yàn)位位為奇偶校驗(yàn)位(1 1或或0 0)。)。 奇校驗(yàn)時(shí),數(shù)據(jù)中奇校驗(yàn)時(shí),數(shù)據(jù)中“1”1”的個數(shù)與校驗(yàn)位的個數(shù)與校驗(yàn)位“1”1”的的個數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí),數(shù)據(jù)中個數(shù)之和應(yīng)為奇數(shù);偶校驗(yàn)時(shí),數(shù)據(jù)中“1”1”的個數(shù)的個數(shù)與校驗(yàn)位與校驗(yàn)位“1”1”的個數(shù)之和應(yīng)

12、為偶數(shù)。的個數(shù)之和應(yīng)為偶數(shù)。 接收字符時(shí),對接收字符時(shí),對“1”1”的個數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不的個數(shù)進(jìn)行校驗(yàn),若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。 2 2、代碼和校驗(yàn)、代碼和校驗(yàn) 代碼和校驗(yàn)是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)代碼和校驗(yàn)是發(fā)送方將所發(fā)數(shù)據(jù)塊求和(或各字節(jié)異或),產(chǎn)生一個字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到異或),產(chǎn)生一個字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對數(shù)據(jù)塊(除校驗(yàn)數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)同時(shí)對數(shù)據(jù)塊(除校驗(yàn)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)字節(jié)外)求和(或各字節(jié)異或),將所得的結(jié)果與發(fā)送方的送方的

13、“校驗(yàn)和校驗(yàn)和”進(jìn)行比較,相符則無差錯,否則即進(jìn)行比較,相符則無差錯,否則即認(rèn)為傳送過程中出現(xiàn)了差錯。認(rèn)為傳送過程中出現(xiàn)了差錯。 3 3、循環(huán)冗余校驗(yàn)、循環(huán)冗余校驗(yàn) 這種校驗(yàn)是通過某種數(shù)學(xué)運(yùn)算實(shí)現(xiàn)有效信息與校驗(yàn)這種校驗(yàn)是通過某種數(shù)學(xué)運(yùn)算實(shí)現(xiàn)有效信息與校驗(yàn)位之間的循環(huán)校驗(yàn),常用于對磁盤信息的傳輸、存儲位之間的循環(huán)校驗(yàn),常用于對磁盤信息的傳輸、存儲區(qū)的完整性校驗(yàn)等。這種校驗(yàn)方法糾錯能力強(qiáng)。區(qū)的完整性校驗(yàn)等。這種校驗(yàn)方法糾錯能力強(qiáng)。 五、傳輸速率與傳輸距離五、傳輸速率與傳輸距離 1 1、傳輸速率、傳輸速率 比特率比特率是是每秒鐘傳輸二進(jìn)制代碼的位數(shù)每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:,單位是:位秒(

14、位秒(bpsbps)。如每秒鐘傳送)。如每秒鐘傳送240240個字符,而每個字個字符,而每個字符格式包含符格式包含1010位位(1(1個起始位、個起始位、1 1個停止位、個停止位、8 8個數(shù)據(jù)個數(shù)據(jù)位位) ),這時(shí)的比特率為:,這時(shí)的比特率為: 1010位位240240個個/ /秒秒 = 2400 bps= 2400 bps 波特率波特率表示表示每秒鐘調(diào)制信號變化的次數(shù)每秒鐘調(diào)制信號變化的次數(shù),單位是:,單位是:波特(波特(BaudBaud)。)。 波特率和比特率不總是相同的,波特率和比特率不總是相同的,對于將數(shù)字信號對于將數(shù)字信號1 1或或0 0直接用兩種不同電壓表示的所謂直接用兩種不同電壓

15、表示的所謂基帶傳輸基帶傳輸,比特,比特率和波特率是相同的。率和波特率是相同的。所以,我們也經(jīng)常用波特率表所以,我們也經(jīng)常用波特率表示數(shù)據(jù)的傳輸速率。示數(shù)據(jù)的傳輸速率。 2 2、傳輸距離與傳輸速率的關(guān)系、傳輸距離與傳輸速率的關(guān)系 串行接口或終端直接傳送串行信息位流的最大距串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每用每0.3m0.3m(約(約1 1英尺)有英尺)有50PF50PF電容的非平衡屏蔽雙絞電容的非平衡屏蔽雙絞線時(shí),傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率線時(shí),傳輸距離隨傳輸速率的增加而減小。當(dāng)

16、比特率超過超過1000 bps 1000 bps 時(shí),最大傳輸距離迅速下降,如時(shí),最大傳輸距離迅速下降,如9600 9600 bpsbps時(shí)最大距離下降到只有時(shí)最大距離下降到只有76m76m(約(約250250英尺)。英尺)。 6.1.2 6.1.2 串行通信接口標(biāo)準(zhǔn)串行通信接口標(biāo)準(zhǔn) 一、一、RS-232CRS-232C接口接口 RS-232CRS-232C是是EIAEIA(美國電子工業(yè)協(xié)會)(美國電子工業(yè)協(xié)會)19691969年修訂年修訂的標(biāo)準(zhǔn)。的標(biāo)準(zhǔn)。RS-232CRS-232C定義了數(shù)據(jù)終端設(shè)備(定義了數(shù)據(jù)終端設(shè)備(DTEDTE)與數(shù))與數(shù)據(jù)通信設(shè)備(據(jù)通信設(shè)備(DCEDCE)之間的物理

17、接口標(biāo)準(zhǔn)。)之間的物理接口標(biāo)準(zhǔn)。 1 1、機(jī)械特性、機(jī)械特性 RS-232CRS-232C接口規(guī)定使用接口規(guī)定使用2525針連接器,連接器的尺針連接器,連接器的尺寸及每個插針的排列位置都有明確的定義。(陽頭)寸及每個插針的排列位置都有明確的定義。(陽頭) 2 2、功能特性、功能特性 3 3、電氣特性、電氣特性 RS-232采用負(fù)邏輯電平:-3- -25V為邏輯1,+3- +25V為邏輯0。 由于與TTL和MOS電平不兼容,連接時(shí)必須外加電平轉(zhuǎn)換電路。 發(fā)送和接受信號線建議采用多芯電纜,總負(fù)載電容不能超過2500F。 4 4、過程特性、過程特性 過程特性規(guī)定了信號之間的時(shí)序關(guān)系,以便正確過程特性

18、規(guī)定了信號之間的時(shí)序關(guān)系,以便正確地接收和發(fā)送數(shù)據(jù)地接收和發(fā)送數(shù)據(jù) 。遠(yuǎn)程通信連接遠(yuǎn)程通信連接 近程通信連接近程通信連接 5 5、RS-232CRS-232C電平與電平與TTLTTL電平轉(zhuǎn)換驅(qū)動電路電平轉(zhuǎn)換驅(qū)動電路 6 6、采用、采用RS-232CRS-232C接口存在的問題接口存在的問題 1 1、傳輸距離短,傳輸速率低傳輸距離短,傳輸速率低 RS-232CRS-232C總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳總線標(biāo)準(zhǔn)受電容允許值的約束,使用時(shí)傳輸距離一般不要超過輸距離一般不要超過1515米(線路條件好時(shí)也不超過幾米(線路條件好時(shí)也不超過幾十米)。最高傳送速率為十米)。最高傳送速率為20Kbps2

19、0Kbps。 2 2、有電平偏移有電平偏移 RS-232CRS-232C總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較總線標(biāo)準(zhǔn)要求收發(fā)雙方共地。通信距離較大時(shí),收發(fā)雙方的地電位差別較大,在信號地上將有大時(shí),收發(fā)雙方的地電位差別較大,在信號地上將有較大的地電流并產(chǎn)生壓降。較大的地電流并產(chǎn)生壓降。 3 3、抗干擾能力差抗干擾能力差 RS-232CRS-232C在電平轉(zhuǎn)換時(shí)采用單端輸入輸出,在傳輸在電平轉(zhuǎn)換時(shí)采用單端輸入輸出,在傳輸過程中干擾和噪聲會混在正常信號中。為提高信噪比,過程中干擾和噪聲會混在正常信號中。為提高信噪比,RS-232CRS-232C總線標(biāo)準(zhǔn)不得不采用較大的電壓擺幅??偩€標(biāo)準(zhǔn)不得不采用較大

20、的電壓擺幅。 二、二、RS-422ARS-422A接口接口 RS-422ARS-422A輸出驅(qū)動器為雙端平衡驅(qū)動器輸出驅(qū)動器為雙端平衡驅(qū)動器。如果其中。如果其中一條線為邏輯一條線為邏輯“1”1”狀態(tài),另一條線就為邏輯狀態(tài),另一條線就為邏輯“0”0”,比采用單端不平衡驅(qū)動對電壓的放大倍數(shù)大一倍。比采用單端不平衡驅(qū)動對電壓的放大倍數(shù)大一倍。 差分電路差分電路能從地線干擾中拾取有效信號,差分接能從地線干擾中拾取有效信號,差分接收器可以分辨收器可以分辨200mV200mV以上電位差。若傳輸過程中混入以上電位差。若傳輸過程中混入了干擾和噪聲,由于差分放大器的作用,可使干擾了干擾和噪聲,由于差分放大器的作

21、用,可使干擾和噪聲相互抵消。因此可以避免或大大減弱地線干和噪聲相互抵消。因此可以避免或大大減弱地線干擾和電磁干擾的影響。擾和電磁干擾的影響。RS-422ARS-422A傳輸速率(傳輸速率(90Kbps90Kbps)時(shí),傳輸距離可達(dá)時(shí),傳輸距離可達(dá)12001200米。米。 三、三、RS-485RS-485接口接口 RS-485RS-485是是RS-422ARS-422A的變型:的變型:RS-422ARS-422A用于全雙工,用于全雙工,而而RS-485RS-485則用于半雙工。則用于半雙工。RS-485RS-485是一種是一種多發(fā)送器多發(fā)送器標(biāo)標(biāo)準(zhǔn),在通信線路上最多可以使用準(zhǔn),在通信線路上最多可

22、以使用32 32 對差分驅(qū)動器對差分驅(qū)動器/ /接收器。如果在一個網(wǎng)絡(luò)中連接的設(shè)備超過接收器。如果在一個網(wǎng)絡(luò)中連接的設(shè)備超過3232個,個,還可以使用中繼器。還可以使用中繼器。 RS-485 RS-485的信號傳輸采用兩線間的電壓來表示邏輯的信號傳輸采用兩線間的電壓來表示邏輯1 1和邏輯和邏輯0 0。由于發(fā)送方需要。由于發(fā)送方需要兩根傳輸線兩根傳輸線,接收方也需,接收方也需要兩根傳輸線。傳輸線采用差動信道,所以它的干擾要兩根傳輸線。傳輸線采用差動信道,所以它的干擾抑制性極好,又因?yàn)樗淖杩沟停瑹o接地問題,所以抑制性極好,又因?yàn)樗淖杩沟停瑹o接地問題,所以傳輸距離可達(dá)傳輸距離可達(dá)12001200

23、米米,傳輸速率可達(dá),傳輸速率可達(dá)1Mbps1Mbps。 RS-485 RS-485是一點(diǎn)對多點(diǎn)的通信接口,一般采用是一點(diǎn)對多點(diǎn)的通信接口,一般采用雙絞雙絞線線的結(jié)構(gòu)。普通的的結(jié)構(gòu)。普通的PCPC機(jī)一般不帶機(jī)一般不帶RS485RS485接口,因此要接口,因此要使用使用RS-232C/RS-485RS-232C/RS-485轉(zhuǎn)換器。對于單片機(jī)可以通過轉(zhuǎn)換器。對于單片機(jī)可以通過芯片芯片MAX485MAX485來完成來完成TTL/RS-485TTL/RS-485的電平轉(zhuǎn)換。的電平轉(zhuǎn)換。 在計(jì)算機(jī)和單片機(jī)組成的在計(jì)算機(jī)和單片機(jī)組成的RS-485RS-485通信系統(tǒng)中,下通信系統(tǒng)中,下位機(jī)由單片機(jī)系統(tǒng)組成

24、,上位機(jī)為普通的位機(jī)由單片機(jī)系統(tǒng)組成,上位機(jī)為普通的PCPC機(jī),負(fù)責(zé)機(jī),負(fù)責(zé)監(jiān)視下位機(jī)的運(yùn)行狀態(tài),并對其狀態(tài)信息進(jìn)行集中處監(jiān)視下位機(jī)的運(yùn)行狀態(tài),并對其狀態(tài)信息進(jìn)行集中處理,以圖文方式顯示下位機(jī)的工作狀態(tài)以及工業(yè)現(xiàn)場理,以圖文方式顯示下位機(jī)的工作狀態(tài)以及工業(yè)現(xiàn)場被控設(shè)備的工作狀況。系統(tǒng)中各節(jié)點(diǎn)(包括上位機(jī))被控設(shè)備的工作狀況。系統(tǒng)中各節(jié)點(diǎn)(包括上位機(jī))的識別是通過設(shè)置不同的站地址來實(shí)現(xiàn)的。的識別是通過設(shè)置不同的站地址來實(shí)現(xiàn)的。6.2 80C516.2 80C51的串行口的串行口 有兩個物理上獨(dú)立的接收、發(fā)送緩沖器有兩個物理上獨(dú)立的接收、發(fā)送緩沖器SBUFSBUF,它們,它們占用同一地址占用同一地

25、址99H 99H ;接收器是雙緩沖結(jié)構(gòu);接收器是雙緩沖結(jié)構(gòu) ;發(fā)送緩沖;發(fā)送緩沖器,因?yàn)榘l(fā)送時(shí)器,因?yàn)榘l(fā)送時(shí)CPUCPU是主動的,不會產(chǎn)生重疊錯誤。是主動的,不會產(chǎn)生重疊錯誤。 6.2.1 80C516.2.1 80C51串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) SCONSCON 是一個特殊功能寄存器,用以設(shè)定串行口是一個特殊功能寄存器,用以設(shè)定串行口的工作方式、接收的工作方式、接收/ /發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志:發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志: 6.2.2 80C516.2.2 80C51串行口的控制寄存器串行口的控制寄存器 SM0SM0和和SM1SM1為工作方式選擇位,可選擇四種工作方式:為工作方式選擇位,可選

26、擇四種工作方式: SM2SM2:多機(jī)通信控制位多機(jī)通信控制位,用于方式,用于方式2 2和方式和方式3 3。當(dāng)。當(dāng)接接收機(jī)的收機(jī)的SM2=1SM2=1時(shí)處于地址幀篩選狀態(tài),此時(shí)可利用收時(shí)處于地址幀篩選狀態(tài),此時(shí)可利用收到的到的RB8RB8來控制是否激活來控制是否激活RIRI(RB8RB80 0時(shí)不激活時(shí)不激活RIRI,收,收到的信息丟棄;到的信息丟棄;RB8RB81 1時(shí)收到的數(shù)據(jù)進(jìn)入時(shí)收到的數(shù)據(jù)進(jìn)入SBUFSBUF,并激,并激活活RIRI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUFSBUF讀走)。讀走)。 當(dāng)當(dāng)SM2=0SM2=0時(shí),接收機(jī)處于地址幀篩選禁止?fàn)顟B(tài)。時(shí),接收機(jī)處于

27、地址幀篩選禁止?fàn)顟B(tài)。不論收到的不論收到的RB8RB8為為0 0和和1 1,均可使收到的數(shù)據(jù)進(jìn)入,均可使收到的數(shù)據(jù)進(jìn)入SBUFSBUF,并激活并激活RIRI(即此時(shí)(即此時(shí)RB8RB8不具有控制不具有控制RIRI激活的功能),激活的功能),此時(shí)此時(shí)RB8RB8通常為校驗(yàn)位。通過控制通常為校驗(yàn)位。通過控制SM2SM2,可實(shí)現(xiàn)多機(jī)通,可實(shí)現(xiàn)多機(jī)通信,方式信,方式0 0和和1 1是非多機(jī)通信,此兩種方式要置是非多機(jī)通信,此兩種方式要置SM2=0SM2=0。REN:REN:允許串行接收位允許串行接收位。由軟件置。由軟件置REN=1REN=1,則啟動串,則啟動串行口接收數(shù)據(jù);若軟件置行口接收數(shù)據(jù);若軟件置

28、REN=0REN=0,則禁止接收。,則禁止接收。 TB8TB8:在方式:在方式2 2或方式或方式3 3中,是發(fā)送數(shù)據(jù)的第中,是發(fā)送數(shù)據(jù)的第九位九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù),可以用軟件規(guī)定其作用。可以用作數(shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地?fù)?jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀址幀/ /數(shù)據(jù)幀的標(biāo)志位。數(shù)據(jù)幀的標(biāo)志位。 在方式在方式0 0和方式和方式1 1中,該位不用。中,該位不用。 RB8RB8:在方式:在方式2 2或方式或方式3 3中,是接收到數(shù)據(jù)中,是接收到數(shù)據(jù)的第九位的第九位,作為奇偶校驗(yàn)位或地址幀,作為奇偶校驗(yàn)位或地址幀/ /數(shù)據(jù)幀數(shù)據(jù)幀的標(biāo)志位。在方式的標(biāo)志位。在方

29、式0 0時(shí)不用時(shí)不用RB8RB8(置(置SM2=0SM2=0)。)。在方式在方式1 1時(shí)也不用該位(若時(shí)也不用該位(若SM2=0SM2=0,則,則RB8RB8是接是接收到的停止位)。收到的停止位)。 TITI:發(fā)送中斷標(biāo)志位發(fā)送中斷標(biāo)志位。在方式。在方式0 0時(shí),當(dāng)串行時(shí),當(dāng)串行發(fā)送第發(fā)送第8 8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TITI置置1 1,向向CPUCPU發(fā)中斷申請。在中斷服務(wù)程序中,必須發(fā)中斷申請。在中斷服務(wù)程序中,必須用軟件將其清用軟件將其清0 0,取消此中斷申請。,取消此中斷申請。RI

30、RI:接收中斷標(biāo)志位接收中斷標(biāo)志位。在方式。在方式0 0時(shí),當(dāng)串行時(shí),當(dāng)串行接收第接收第8 8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位時(shí),由內(nèi)部硬件使接收停止位時(shí),由內(nèi)部硬件使RIRI置置1 1,向,向CPUCPU發(fā)中斷申請。也必須在中斷服務(wù)程序中,用發(fā)中斷申請。也必須在中斷服務(wù)程序中,用軟件將其清軟件將其清0 0,取消此中斷申請。,取消此中斷申請。SCONSCON的設(shè)置方法:的設(shè)置方法: 例1:將串行口設(shè)置為工作方式1,發(fā)送 解: MOV SCON,#01000000B 例2: 將串行口設(shè)置為工作方式1,接收 解: MOV SCON,#01010000B 例

31、3: 將串行口設(shè)置為工作方式3,接收 解: MOV SCON,#11110000BPCONPCON中只有一位中只有一位SMODSMOD與串行口工作有關(guān)與串行口工作有關(guān) : SMODSMOD(PCON.7PCON.7) 波特率倍增位。在串行口方波特率倍增位。在串行口方式式1 1、方式、方式2 2、方式、方式3 3時(shí),波特率與時(shí),波特率與SMODSMOD有關(guān),當(dāng)有關(guān),當(dāng)SMOD=1SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0SMOD=0。 6.2.3 80C516.2.3 80C51串行口的工作方式串行口的工作方式 一、方式一、方式0 0 方式方式0 0時(shí),串行

32、口為同步移位寄存器的時(shí),串行口為同步移位寄存器的輸入輸入/ /輸出方式。主要用于擴(kuò)展并行輸入或輸出口。輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由數(shù)據(jù)由RXDRXD(P3.0P3.0)引腳輸入或輸出,同步移位脈沖)引腳輸入或輸出,同步移位脈沖由由TXDTXD(P3.1P3.1)引腳輸出。發(fā)送和接收均為)引腳輸出。發(fā)送和接收均為8 8位數(shù)據(jù),位數(shù)據(jù),低位在先,高位在后。波特率固定為低位在先,高位在后。波特率固定為fosc/12fosc/12。 1 1、方式、方式0 0數(shù)據(jù)輸出數(shù)據(jù)輸出 2 2、方式、方式0 0數(shù)據(jù)輸入數(shù)據(jù)輸入 方式方式0 0接收和發(fā)送電路接收和發(fā)送電路方式方式0 0應(yīng)用舉例:應(yīng)

33、用舉例:80C5180C51串行口工作在方式串行口工作在方式0 0,外接移位寄存器,外接移位寄存器CD4094RXDTXDP1.080C51STBCLKABGNDCD4094CD4094并接并接8 8個顯示燈,使個顯示燈,使顯示燈從右至左輪流顯示。顯示燈從右至左輪流顯示。解:硬件連接如下,解:硬件連接如下,STBSTB接接P1.0P1.0為控制端,為控制端,STB=1STB=1打開打開并行門數(shù)據(jù)輸出。串口采用并行門數(shù)據(jù)輸出。串口采用查詢方式工作。查詢方式工作。參考程序: org 0100hmain:mov scon,#00h mov A,#01hclr p1.0 start: mov sbuf

34、,A lop: jnb TI,lop setb p1.0acall delayclr TIrl Aclr p1.0sjmp startdelay:end 二、方式二、方式1 1 方式方式1 1是是1010位數(shù)據(jù)的異步通信口。位數(shù)據(jù)的異步通信口。TXDTXD為數(shù)據(jù)發(fā)送引為數(shù)據(jù)發(fā)送引腳,腳,RXDRXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中所示。其中1 1位起始位,位起始位,8 8位數(shù)據(jù)位,位數(shù)據(jù)位,1 1位停止位。位停止位。 1 1、方式、方式1 1輸出(串行發(fā)送)輸出(串行發(fā)送) 2 2、方式、方式1 1輸入(串行接收)輸入(串行接收) 在在RI

35、=0RI=0下,用軟件置下,用軟件置RENREN為為1 1時(shí),接收器以所選擇波特率的時(shí),接收器以所選擇波特率的1616倍速率采樣倍速率采樣RXDRXD引腳電平,檢測到引腳電平,檢測到RXDRXD引腳輸入電平發(fā)生負(fù)跳變引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)行最后一次移位。當(dāng)R

36、I=0RI=0,且,且SM2=0SM2=0(或接收到的停止位為(或接收到的停止位為1 1)時(shí),將接收到的時(shí),將接收到的9 9位數(shù)據(jù)的前位數(shù)據(jù)的前8 8位數(shù)據(jù)裝入接收位數(shù)據(jù)裝入接收SBUFSBUF,第,第9 9位位(停止位)進(jìn)入(停止位)進(jìn)入RB8RB8,并置,并置RI=1RI=1,向,向CPUCPU請求中斷。請求中斷。 三、方式三、方式2 2和方式和方式3 3 方式方式2 2或方式或方式3 3時(shí)為時(shí)為1111位數(shù)據(jù)的異步通信口。位數(shù)據(jù)的異步通信口。TXDTXD為為數(shù)據(jù)發(fā)送引腳,數(shù)據(jù)發(fā)送引腳,RXDRXD為數(shù)據(jù)接收引腳為數(shù)據(jù)接收引腳 。 方式方式2 2和方式和方式3 3時(shí)起始位時(shí)起始位1 1位,

37、數(shù)據(jù)位,數(shù)據(jù)9 9位(含位(含1 1位附加的第位附加的第9 9位,位,發(fā)送時(shí)為發(fā)送時(shí)為SCONSCON中的中的TB8TB8,接收時(shí)為,接收時(shí)為RB8RB8),停止位),停止位1 1位,一幀數(shù)據(jù)位,一幀數(shù)據(jù)為為1111位。方式位。方式2 2的波特率固定為晶振頻率的的波特率固定為晶振頻率的1/641/64或或1/321/32,方式,方式3 3的波特率由定時(shí)器的波特率由定時(shí)器T1T1的溢出率決定。的溢出率決定。 1 1、方式、方式2 2和方式和方式3 3輸出(串行發(fā)送)輸出(串行發(fā)送) 發(fā)送開始時(shí),先把起始位發(fā)送開始時(shí),先把起始位0 0輸出到輸出到TXDTXD引腳,然后發(fā)送移位引腳,然后發(fā)送移位寄存

38、器的輸出位(寄存器的輸出位(D0D0)到)到TXDTXD引腳。每一個移位脈沖都使輸出引腳。每一個移位脈沖都使輸出移位寄存器的各位右移一位,并由移位寄存器的各位右移一位,并由TXDTXD引腳輸出。引腳輸出。 第一次移位時(shí),停止位第一次移位時(shí),停止位“1”1”移入輸出移位寄存器的第移入輸出移位寄存器的第9 9位位上上 ,以后每次移位,左邊都移入,以后每次移位,左邊都移入0 0。當(dāng)停止位移至輸出位時(shí),。當(dāng)停止位移至輸出位時(shí),左邊其余位全為左邊其余位全為0 0,檢測電路檢測到這一條件時(shí),使控制電路,檢測電路檢測到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置進(jìn)行最后一次移位,并置TI=1TI=1,向,向

39、CPUCPU請求中斷。請求中斷。 2 2、方式、方式2 2和方式和方式3 3輸入(串行接收)輸入(串行接收) 接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位位0 0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0RI=0,且,且SM2=0SM2=0(或接收到的第(或接收到的第9 9位數(shù)據(jù)為位數(shù)據(jù)為1 1)時(shí),接)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器收到的數(shù)據(jù)裝入接收緩沖器SBUFSBUF和和RB8RB8(接收數(shù)據(jù)的(接收數(shù)據(jù)的第第9 9位),置位),置RI=1RI=1,向,向CPUCPU請求中斷。如果條件不滿足,

40、請求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位則數(shù)據(jù)丟失,且不置位RIRI,繼續(xù)搜索,繼續(xù)搜索RXDRXD引腳的負(fù)跳引腳的負(fù)跳變。變。 四、波特率的計(jì)算四、波特率的計(jì)算 在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對單片機(jī)串行口編程為四種工要有約定。通過軟件可對單片機(jī)串行口編程為四種工作方式,其中方式作方式,其中方式0 0和方式和方式2 2的波特率是固定的,而方的波特率是固定的,而方式式1 1和方式和方式3 3的波特率是可變的,由定時(shí)器的波特率是可變的,由定時(shí)器T1T1的溢出率的溢出率來決定。來決定。 串行口的四種工作方式對應(yīng)串行

41、口的四種工作方式對應(yīng)三種波特率三種波特率。由于輸入。由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。算公式也不相同。 方式方式0 0的波特率的波特率 = fosc/12= fosc/12 方式方式2 2的波特率的波特率 = =(2 2SMOD/64/64) fosc fosc 方式方式1 1的波特率的波特率 = =(2 2SMOD/32/32)(T1T1溢出率)溢出率) 方式方式3 3的波特率的波特率 = =(2 2SMOD/32/32)(T1T1溢出率)溢出率) 方式1的波特率可變,由下式?jīng)Q定 方式3的波特率可變,T1采用方

42、式2時(shí)由下式?jīng)Q定波特率 23212256soscfXmod()2(123221322modmodXfTKoscss波特率Xfoscs2562384()mod波特率 當(dāng)當(dāng)T1T1作為波特率發(fā)生器時(shí),最典型的用法是使作為波特率發(fā)生器時(shí),最典型的用法是使T1T1工作在自動再裝入的工作在自動再裝入的8 8位定時(shí)器方式(即方式位定時(shí)器方式(即方式2 2,且,且TCONTCON的的TR1=1TR1=1,以啟動定時(shí)器)。這時(shí)溢出率取決于,以啟動定時(shí)器)。這時(shí)溢出率取決于TH1TH1中的計(jì)數(shù)值。中的計(jì)數(shù)值。 T1 T1 溢出率溢出率 = fosc= fosc /12 /12256 256 (TH1TH1) 在

43、單片機(jī)的應(yīng)用中,常用的晶振頻率為:在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz12MHz和和11.0592MHz11.0592MHz。所以,選用的波特率也相對固定。常用。所以,選用的波特率也相對固定。常用的串行口波特率以及各參數(shù)的關(guān)系如表所示。的串行口波特率以及各參數(shù)的關(guān)系如表所示。 串行口工作之前,應(yīng)對其進(jìn)行初始化,主要是設(shè)串行口工作之前,應(yīng)對其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器置產(chǎn)生波特率的定時(shí)器1 1、串行口控制和中斷控制。、串行口控制和中斷控制。具體步驟如下:具體步驟如下: 確定確定T1T1的工作方式的工作方式(編程(編程TMODTMOD寄存器);寄存器); 計(jì)算計(jì)算T1T1的

44、初值的初值,裝載,裝載TH1TH1、TL1TL1; 啟動啟動T1T1(編程(編程TCONTCON中的中的TR1TR1位);位); 確定確定串行口工作方式串行口工作方式(編程(編程SCONSCON寄存器);寄存器); 串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編串行口在中斷方式工作時(shí),要進(jìn)行中斷設(shè)置(編程程IEIE、IPIP寄存器)。寄存器)。 雙機(jī)通信舉例雙機(jī)通信舉例 設(shè):甲機(jī)發(fā)送乙機(jī)接收,串行口工作在方式1,波特率為 1200 fosc=11.0592MHz 硬件連接如圖: 計(jì)算時(shí)間常數(shù): TXD RXD GNDRXDTXD GND T1作為波特率發(fā)生器,工作于方式2。由表查得時(shí)間常數(shù)為E8H

45、E8H。 圖 雙機(jī)通信乙甲 甲機(jī)發(fā)送程序甲機(jī)發(fā)送程序 開始T1方式2,裝入時(shí)間常數(shù) 啟動T1 置SCON方式1發(fā)送傳送數(shù)據(jù)首地址和字節(jié)數(shù) 取數(shù)據(jù) 置校驗(yàn)位 啟動發(fā)送 發(fā)完否? 清TI 修正地址和計(jì)數(shù) 全部發(fā)完?結(jié)束 甲機(jī)將內(nèi)部RAM單元20H3FH的32個字節(jié)的ASCII碼數(shù)據(jù),在最高位上加奇校驗(yàn)位后,由串行口TXD發(fā)送給乙機(jī)。 ORG 0030HSTART:MOV TMOD,#20H ;T1為方式2 MOV TL1,#0E8H ;時(shí)間常數(shù)低8位 MOV TH1,#0E8H SETB TR1 ;啟動T1工作 MOV SCON,#01000000B ;串行口方式1 MOV R0,#20H ;數(shù)據(jù)

46、首地址 MOV R7,#32 ;32字節(jié)數(shù)據(jù)LOOP: MOV A, R0 ;取數(shù)據(jù) MOV C, P ;置奇校驗(yàn)位 CPL C MOV ACC.7, C MOV SBUF,A ;啟動發(fā)送DONE: JNB TI, DONE ;等待發(fā)完一幀 CLR TI ;清TI,允許再發(fā)送 INC R0 ;指向下一數(shù)據(jù) DJNZ R7, LOOP ;未送完,送下一個數(shù) AJMP $ END返回 開始 T1方式2接收 啟動T1 置SCON方式1接收 接收數(shù)據(jù)首地址和字節(jié)數(shù)等待接收 清RI 接收數(shù)據(jù) 檢查校驗(yàn)位 偶校驗(yàn)? 存放數(shù)據(jù) 修正地址 接收完? 結(jié)束乙機(jī)接受程序乙機(jī)接受程序 乙機(jī)接收程序:接收器把接收到的

47、32個字節(jié)數(shù)據(jù)存放在內(nèi)部RAM的20H3FH中,波特率與晶振頻率同上。若奇校驗(yàn)出錯,則置進(jìn)位位1。程序如下: ORG 0030HSTART:MOV TMOD,#20H ;T1方式2 MOV TL1,#OE8H MOV TH1,#OE8H SETB TR1 MOV R0,#20H MOV R7,#32LOOP: MOV SCON,#01010000B ;串行口方式1,能接收DONE:JNB RI,DONE ;等待接收一幀 CLR RI ;清RI,再接收 MOV A,SBUF ;取數(shù)據(jù) JNB P, ERROR ;校驗(yàn)錯,轉(zhuǎn)出錯處理ANL A,#7FH ;去掉奇校驗(yàn)位MOV R0,A ;存數(shù)據(jù) I

48、NC R0 ;指向下一數(shù)據(jù) DJNZ R7,LOOP ;數(shù)據(jù)塊,未接收完,循環(huán) AJMP $ERROR: ;出錯處理從略 END返回 6.3 6.3 單片機(jī)串行口應(yīng)用舉例單片機(jī)串行口應(yīng)用舉例 在計(jì)算機(jī)分布式測控系統(tǒng)中,經(jīng)常要利用串行通在計(jì)算機(jī)分布式測控系統(tǒng)中,經(jīng)常要利用串行通信方式進(jìn)行數(shù)據(jù)傳輸。信方式進(jìn)行數(shù)據(jù)傳輸。80C5180C51單片機(jī)的串行口為計(jì)算單片機(jī)的串行口為計(jì)算機(jī)間的通信提供了極為便利的條件。機(jī)間的通信提供了極為便利的條件。 利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤和顯利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤和顯示器,對于簡單的應(yīng)用非常便利。這里僅介紹單片示器,對于簡單的應(yīng)用非常便利。

49、這里僅介紹單片機(jī)串行口在通信方面的應(yīng)用,關(guān)于鍵盤和顯示器的機(jī)串行口在通信方面的應(yīng)用,關(guān)于鍵盤和顯示器的擴(kuò)展將在下一章介紹。擴(kuò)展將在下一章介紹。6.3.1 6.3.1 單片機(jī)與單片機(jī)的通信單片機(jī)與單片機(jī)的通信 一、點(diǎn)對點(diǎn)的通信一、點(diǎn)對點(diǎn)的通信 1 1、硬件連接、硬件連接 2、應(yīng)用程序、應(yīng)用程序 設(shè)設(shè)1 1號機(jī)是發(fā)送方,號機(jī)是發(fā)送方,2 2號機(jī)是接收方。號機(jī)是接收方。當(dāng)當(dāng)1 1號機(jī)號機(jī)發(fā)送發(fā)送時(shí)時(shí),先發(fā)送一個,先發(fā)送一個“E1”E1”聯(lián)絡(luò)信號,聯(lián)絡(luò)信號,2 2號機(jī)收到后回答號機(jī)收到后回答一個一個“E2”E2”應(yīng)答信號,表示同意接收。當(dāng)應(yīng)答信號,表示同意接收。當(dāng)1 1號機(jī)收到號機(jī)收到應(yīng)答信號應(yīng)答信號

50、“E2”E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)后,開始發(fā)送數(shù)據(jù),每發(fā)送一個數(shù)據(jù)字節(jié)都要計(jì)算字節(jié)都要計(jì)算“校驗(yàn)和校驗(yàn)和”,假定數(shù)據(jù)塊長度為,假定數(shù)據(jù)塊長度為1616個字個字節(jié),起始地址為節(jié),起始地址為40H40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā),一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送送“校驗(yàn)和校驗(yàn)和”。2 2號機(jī)接收數(shù)據(jù)號機(jī)接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為起始地址也為40H40H,每接收到一個數(shù)據(jù)字節(jié)便計(jì)算一,每接收到一個數(shù)據(jù)字節(jié)便計(jì)算一次次“校驗(yàn)和校驗(yàn)和”,當(dāng)收到一個數(shù)據(jù)塊后,再接收,當(dāng)收到一個數(shù)據(jù)塊后,再接收1 1號機(jī)號機(jī)發(fā)來的發(fā)來的“校驗(yàn)和校驗(yàn)和”,并將它與,并將它與2 2號

51、機(jī)求出的校驗(yàn)和進(jìn)號機(jī)求出的校驗(yàn)和進(jìn)行比較。行比較。 若兩者相等,說明接收正確,若兩者相等,說明接收正確,2 2號機(jī)回答號機(jī)回答00H00H;若;若兩者不相等,說明接收不正確,兩者不相等,說明接收不正確,2 2號機(jī)回答號機(jī)回答0FFH0FFH,請,請求重發(fā)。求重發(fā)。1 1號機(jī)接到號機(jī)接到00H00H后結(jié)束發(fā)送后結(jié)束發(fā)送。 若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。雙方若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。雙方約定采用約定采用串行口方式串行口方式1 1進(jìn)行通信,進(jìn)行通信,一幀信息為一幀信息為1010位,位,其中有其中有1 1個起始位、個起始位、8 8個數(shù)據(jù)位和一個停止位;波特個數(shù)據(jù)位和一個停止位;波特

52、率為率為24002400波特,波特,T1T1工作在定時(shí)器方式工作在定時(shí)器方式2 2,振蕩頻率選,振蕩頻率選用用11.0592MHZ11.0592MHZ,查表可得,查表可得TH1=TL1=0F4HTH1=TL1=0F4H,PCONPCON寄存寄存器的器的SMODSMOD位為位為0 0。 發(fā)送程序清單如下: ASTART:CLR EA MOV TMOD,#20H ;定時(shí)器1置為方式2 MOV TH1,#0F4H ;裝載定時(shí)器初值,波特率2400 MOV TL1,#0F4H MOV PCON,#00H SETB TR1 ;啟動定時(shí)器 MOV SCON,#50H ;設(shè)定串口方式1,且準(zhǔn)備接收應(yīng)答信號

53、ALOOP1:MOV SBUF,#0E1H ;發(fā)聯(lián)絡(luò)信號 JNB TI,$ ;等待一幀發(fā)送完畢 CLR TI ;允許再發(fā)送 JNB RI,$ ;等待2號機(jī)的應(yīng)答信號 CLR RI ;允許再接收MOV A,SBUF ;2號機(jī)應(yīng)答后,讀至A XRL A,#0E2H ;判斷2號機(jī)是否準(zhǔn)備完畢 JNZ ALOOP1 ;2號機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò) ALOOP2:MOV R0,#40H ;2號機(jī)準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長度初值 MOV R6,#00H ;清校驗(yàn)和單元ALOOP3:MOV SBUF,R0 ;發(fā)送一個數(shù)據(jù)字節(jié) MOV A,R6 ADD A,R0 ;求校

54、驗(yàn)和 MOV R6,A ;保存校驗(yàn)和 INC R0 JNB TI,$ CLR TI DJNZ R7,ALOOP3 ;整個數(shù)據(jù)塊是否發(fā)送完畢 MOV SBUF,R6 ;發(fā)送校驗(yàn)和 JNB TI,$ CLR TI JNB RI,$ ;等待2號機(jī)的應(yīng)答信號 CLR RI MOV A,SBUF ;2號機(jī)應(yīng)答,讀至A JNZ ALOOP2 ;2號機(jī)應(yīng)答“錯誤”,轉(zhuǎn)重新發(fā)送 RET ;2號機(jī)應(yīng)答“正確”,返回接收程序清單如下: BSTART:CLR EA MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#5

55、0H ;設(shè)定串口方式1,且準(zhǔn)備接收 BLOOP1:JNB RI,$ ;等待1號機(jī)的聯(lián)絡(luò)信號 CLR RI MOV A,SBUF ;收到1號機(jī)信號 XRL A,#0E1H ;判是否為1號機(jī)聯(lián)絡(luò)信號 JNZ BLOOP1 ;不是1號機(jī)聯(lián)絡(luò)信號,再等待 MOV SBUF,#0E2H ;是1號機(jī)聯(lián)絡(luò)信號,發(fā)應(yīng)答信號 JNB TI,$ CLR TI MOV R0,#40H ;設(shè)定數(shù)據(jù)塊地址指針初值 MOV R7,#10H ;設(shè)定數(shù)據(jù)塊長度初值 MOV R6,#00H ;清校驗(yàn)和單元BLOOP2:JNB RI,$ CLR RI MOV A,SBUF MOV R0,A ;接收數(shù)據(jù)轉(zhuǎn)儲 INC R0 ADD

56、A,R6 ;求校驗(yàn)和 MOV R6,A DJNZ R7,BLOOP2 ;判數(shù)據(jù)塊是否接收完畢 JNB RI,$ ;完畢,接收1號機(jī)發(fā)來的校驗(yàn)和 CLR RI MOV A,SBUF XRL A,R6 ;比較校驗(yàn)和 JZ END1 ;校驗(yàn)和相等,跳至發(fā)正確標(biāo)志 MOV SBUF,#0FFH ;校驗(yàn)和不相等,發(fā)錯誤標(biāo)志 JNB TI,$ ;轉(zhuǎn)重新接收 CLR TI JMP BLOOP2END1:MOV SBUF,#00H RET二、多機(jī)通信二、多機(jī)通信 1 1、硬件連接、硬件連接 單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。所謂主從單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。所謂主從式,即在數(shù)個單片

57、機(jī)中,有一個是主機(jī),其余的是從機(jī),從機(jī)式,即在數(shù)個單片機(jī)中,有一個是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度、支配。要服從主機(jī)的調(diào)度、支配。80C5180C51單片機(jī)的串行口方式單片機(jī)的串行口方式2 2和方式和方式3 3適于這種主從式的通信結(jié)構(gòu)。當(dāng)然采用不同的通信標(biāo)準(zhǔn)時(shí),適于這種主從式的通信結(jié)構(gòu)。當(dāng)然采用不同的通信標(biāo)準(zhǔn)時(shí),還需進(jìn)行相應(yīng)的電平轉(zhuǎn)換,有時(shí)還要對信號進(jìn)行光電隔離。在還需進(jìn)行相應(yīng)的電平轉(zhuǎn)換,有時(shí)還要對信號進(jìn)行光電隔離。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用RS-485RS-485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。傳輸。 2 2、通信協(xié)議、通信協(xié)議 所有從

58、機(jī)的所有從機(jī)的SM2SM2位置位置1 1,處于接收地址幀狀態(tài)。,處于接收地址幀狀態(tài)。 主機(jī)發(fā)送一地址幀,其中主機(jī)發(fā)送一地址幀,其中8 8位是地址,第位是地址,第9 9位為地址位為地址/ /數(shù)據(jù)的區(qū)分標(biāo)志,該位置數(shù)據(jù)的區(qū)分標(biāo)志,該位置1 1表示該幀為地址幀。表示該幀為地址幀。 所有從機(jī)收到地址幀后,都將接收的地址與本機(jī)的所有從機(jī)收到地址幀后,都將接收的地址與本機(jī)的地址比較。對于地址相符的從機(jī),使自己的地址比較。對于地址相符的從機(jī),使自己的SM2SM2位置位置0 0(以接收主機(jī)隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)(以接收主機(jī)隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主機(jī)作為應(yīng)答;對于地址不符的從機(jī),仍保持

59、回主機(jī)作為應(yīng)答;對于地址不符的從機(jī),仍保持SM2=1SM2=1,對主機(jī)隨后發(fā)來的數(shù)據(jù)幀不予理睬。,對主機(jī)隨后發(fā)來的數(shù)據(jù)幀不予理睬。 從機(jī)發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)送一幀校驗(yàn)和,并置第從機(jī)發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)送一幀校驗(yàn)和,并置第9 9位(位(TB8TB8)為)為1 1,作為從機(jī)數(shù)據(jù)傳送結(jié)束的標(biāo)志。,作為從機(jī)數(shù)據(jù)傳送結(jié)束的標(biāo)志。 主機(jī)接收數(shù)據(jù)時(shí)先判斷數(shù)據(jù)接收標(biāo)志(主機(jī)接收數(shù)據(jù)時(shí)先判斷數(shù)據(jù)接收標(biāo)志(RB8RB8),若),若RB8=1RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗(yàn)和,若,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗(yàn)和,若正確則回送正確信號正確則回送正確信號00H00H,此信號命令該從機(jī)復(fù)位,此信號命令該從

60、機(jī)復(fù)位(即重新等待地址幀);若校驗(yàn)和出錯,則發(fā)送(即重新等待地址幀);若校驗(yàn)和出錯,則發(fā)送0FFH0FFH,命令該從機(jī)重發(fā)數(shù)據(jù)。若接收幀的命令該從機(jī)重發(fā)數(shù)據(jù)。若接收幀的RB8=0RB8=0,則存數(shù)據(jù),則存數(shù)據(jù)到緩沖區(qū),并準(zhǔn)備接收下幀信息。到緩沖區(qū),并準(zhǔn)備接收下幀信息。 主機(jī)收到從機(jī)應(yīng)答地址后,確認(rèn)地址是否相符,如主機(jī)收到從機(jī)應(yīng)答地址后,確認(rèn)地址是否相符,如果地址不符,發(fā)復(fù)位信號(數(shù)據(jù)幀中果地址不符,發(fā)復(fù)位信號(數(shù)據(jù)幀中TB8=1TB8=1);如果);如果地址相符,則清地址相符,則清TB8TB8,開始發(fā)送數(shù)據(jù)。,開始發(fā)送數(shù)據(jù)。 從機(jī)收到復(fù)位命令后回到監(jiān)聽地址狀態(tài)(從機(jī)收到復(fù)位命令后回到監(jiān)聽地址狀

溫馨提示

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

評論

0/150

提交評論