




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2012年下第七章串行口1025(14,15)第一頁,共83頁。一、計算機(jī)串行通信基礎(chǔ)隨著多微機(jī)系統(tǒng)的廣泛應(yīng)用和計算機(jī)網(wǎng)絡(luò)技術(shù)的普及,計算機(jī)的通信功能愈來愈顯得重要。計算機(jī)通信是將計算機(jī)技術(shù)和通信技術(shù)的相結(jié)合,完成計算機(jī)與外部設(shè)備或計算機(jī)與計算機(jī)之間的信息交換??梢苑譃閮纱箢悾翰⑿型ㄐ排c串行通信。在多微機(jī)系統(tǒng)以及現(xiàn)代測控系統(tǒng)中信息的交換多采用串行通信方式。2第二頁,共83頁。
并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時進(jìn)行傳送。并行通信控制簡單、傳輸速度快;由于傳輸線較多,長距離傳送時成本高且接收方的各位同時接收存在困難。
3第三頁,共83頁。
串行通信是將數(shù)據(jù)字節(jié)分成一位一位的形式在一條傳輸線上逐個地傳送。串行通信的特點:傳輸線少,長距離傳送時成本低,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,但數(shù)據(jù)的傳送控制比并行通信復(fù)雜。
4第四頁,共83頁。串行通信的基本概念(一)、異步通信與同步通信(二)、串行通信的傳輸方式(三)、信號的調(diào)制與解調(diào)(四)、傳輸速率與傳輸距離(五)、串行通信的過程及通信協(xié)議5第五頁,共83頁。1、異步通信
異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時鐘盡可能一致。
串行通信的基本概念(一)、異步通信與同步通信6第六頁,共83頁。
異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時間間隔)是任意的,但每個字符中的各位是以固定的時間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。異步通信的特點:不要求收發(fā)雙方時鐘的嚴(yán)格一致,實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加2~3位用于起止位,各幀之間還有間隔,因此傳輸效率不高。7第七頁,共83頁。異步通信的數(shù)據(jù)格式:在幀格式中,一個字符由四個部分組成:起始位、數(shù)據(jù)位、奇偶校驗位和停止位。首先是一個起始為(0),然后是5位--8位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來是奇偶校驗位(可省略),最后是停止位(1)。8第八頁,共83頁。2、同步通信同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達(dá)到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對接收方的同步可以通過兩種方法實現(xiàn)。
外同步自同步9第九頁,共83頁。同步通信的特點:是以特定的位組合(SYN)作為幀的開始和結(jié)束標(biāo)志,所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位。所以傳輸?shù)男瘦^高,但實現(xiàn)的硬件設(shè)備比異步通信復(fù)雜。
同步通信的數(shù)據(jù)格式:10第十頁,共83頁。1、單工單工是指數(shù)據(jù)傳輸僅能沿一個方向,不能實現(xiàn)反向傳輸。2、半雙工半雙工是指數(shù)據(jù)傳輸可以沿兩個方向,但需要分時進(jìn)行。3、全雙工全雙工是指數(shù)據(jù)可以同時進(jìn)行雙向傳輸。
(二)、串行通信的傳輸方式11第十一頁,共83頁。12第十二頁,共83頁。單片機(jī)能實現(xiàn)全雙工的串行通信AT89S51AT89S5113第十三頁,共83頁。
利用調(diào)制器(Modulator)把數(shù)字信號轉(zhuǎn)換成模擬信號,然后送到通信線路上去,再由解調(diào)器(Demodulator)把從通信線路上收到的模擬信號轉(zhuǎn)換成數(shù)字信號。由于通信是雙向的,調(diào)制器和解調(diào)器合并在一個裝置中,這就是調(diào)制解調(diào)器MODEM。(三)、信號的調(diào)制與解調(diào)14第十四頁,共83頁。
波特率,即數(shù)據(jù)傳送速率,表示每秒鐘傳送二進(jìn)制代碼的位數(shù),它的單位是b/s。假設(shè)數(shù)據(jù)傳送速率是120字符/s,而每個字符格式包含1個代碼位(1個起始位、1個終止位、8個數(shù)據(jù)位)。這時,傳送的波特率為:10b/字符×120字符/s=1200b/s
每一位代碼的傳送時間Td為波特率的倒數(shù)。
Td=1b/(1200bs)=0.833ms異步通信的傳送速率在50b/s--19200b/s之間,常用于計算機(jī)到終端機(jī)和打印機(jī)之間的通信、直通電報以及無線電通信的數(shù)據(jù)發(fā)送等。(四)、傳輸速率與傳輸距離
1、波特率(Baudrate)15第十五頁,共83頁。
串行接口或終端直接傳送串行信息位流的最大距離與傳輸速率及傳輸線的電氣特性有關(guān)。當(dāng)傳輸線使用每0.3m(約1英尺)有50PF電容的非平衡屏蔽雙絞線時,傳輸距離隨傳輸速率的增加而減小。當(dāng)比特率超過1000bps時,最大傳輸距離迅速下降,如9600bps時最大距離下降到只有76m(約250英尺)。2、傳輸距離與傳輸速率的關(guān)系16第十六頁,共83頁。1、串←→并轉(zhuǎn)換與設(shè)備同步兩個通信設(shè)備在串行線路上成功地實現(xiàn)通信必須解決兩個問題:一是串←→并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)據(jù)串行化,把接收的串行數(shù)據(jù)并行化;二是設(shè)備同步,即同步發(fā)送設(shè)備與接收設(shè)備的工作節(jié)拍,以確保發(fā)送數(shù)據(jù)在接收端被正確讀出。(五)、串行通信的過程及通信協(xié)議在計算機(jī)串行發(fā)送數(shù)據(jù)之前,計算機(jī)內(nèi)部的并行數(shù)據(jù)被送入移位寄存器并一位一位地輸出,將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)。在接收數(shù)據(jù)時,來自通信線路的串行數(shù)據(jù)被壓入移位寄存器,滿8位后并行送到計算機(jī)內(nèi)部。17第十七頁,共83頁。18第十八頁,共83頁。在串行通信控制電路中,串--并、并--串轉(zhuǎn)換邏輯被集成在串行異步通信控制器芯片中。89S51單片機(jī)的串行口和IBM-PC相同。19第十九頁,共83頁。進(jìn)行串行通信的兩臺設(shè)備必須同步工作才能有效地檢測通信線路上的信號變化,從而采樣傳送數(shù)據(jù)脈沖。設(shè)備同步對通信雙方有兩個共同要求:一是通信雙方必須采用統(tǒng)一的編碼方法;二是通信雙方必須能產(chǎn)生相同的傳送速率。設(shè)備同步20第二十頁,共83頁。2、串行通信協(xié)議通信協(xié)議是對數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。(1)起始位約定(2)數(shù)據(jù)位約定(3)奇偶校驗位約定(4)停止位約定(5)波特率設(shè)置21第二十一頁,共83頁。(1)起始位通信線上沒有數(shù)據(jù)被傳送時處于邏輯1狀態(tài)。當(dāng)發(fā)送設(shè)備要發(fā)送一個字符數(shù)據(jù)時,首先發(fā)出一個邏輯0信號,這個邏輯低電平就是起始位。起始位通過通信線傳向接收設(shè)備,接收設(shè)備檢測到這個邏輯低電平后,就開始準(zhǔn)備接收數(shù)據(jù)位信號。起始位所起的作用就是設(shè)備同步,通信雙方必須在傳送數(shù)據(jù)位前協(xié)調(diào)同步。(2)數(shù)據(jù)位當(dāng)接收設(shè)備收到起始位后,緊接著就會收到數(shù)據(jù)位。數(shù)據(jù)位的個數(shù)可以是5、6、7或8。IBM-PC中經(jīng)常采用7位或8位數(shù)據(jù)傳送,89C51串行口采用8位或9位數(shù)據(jù)傳送。這些數(shù)據(jù)位被接收到移位寄存器中,構(gòu)成傳送數(shù)據(jù)字符。在字符數(shù)據(jù)傳送過程中,數(shù)據(jù)位從最低有效位開始發(fā)送,依次順序在接收設(shè)備中被轉(zhuǎn)換為并行數(shù)據(jù)。第二十二頁,共83頁。(3)奇偶校驗位
數(shù)據(jù)位發(fā)送完之后,可以發(fā)送奇偶校驗位。奇偶校驗用于有限差錯檢測,通信雙方需約定已知的奇偶校驗方式。如果選擇偶校驗,那么組成數(shù)據(jù)位和奇偶位的邏輯1的個數(shù)必須是偶數(shù);如果選擇奇校驗,那么邏輯1的個數(shù)必須是奇數(shù)。(4)停止位約定在奇偶位或數(shù)據(jù)位(當(dāng)無奇偶校驗時)之后發(fā)送的是停止位。停止位是一個字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位,1.5位或2位的高電平。接收設(shè)備收到停止位之后,通信線路上便又恢復(fù)邏輯1狀態(tài),直至下一個字符數(shù)據(jù)的起始位到來。第二十三頁,共83頁。(5)波特率設(shè)置
通信線上傳送的所有位信號都保持一致的信號持續(xù)時間,每一位的信號持續(xù)時間都由數(shù)據(jù)傳送速度確定,而傳送速度是以每秒多少個二進(jìn)制位來衡量的,這個速度叫波特率。如果數(shù)據(jù)以300個二進(jìn)制位每秒在通信線上傳送,那么傳送速度為300波特,通常記為300b/s。第二十四頁,共83頁。2、串行口控制字及控制寄存器1、串行口結(jié)構(gòu)框圖3、波特率設(shè)計4、串行通信工作方式及舉例7.1串行口的結(jié)構(gòu)25第二十五頁,共83頁。發(fā)送接收1、串行口結(jié)構(gòu)框圖26第二十六頁,共83頁。串行口的發(fā)送和接收都是以特殊功能寄存器SBUF的名義進(jìn)行讀或?qū)懙?。?dāng)向SBUF發(fā)“寫”命令時(執(zhí)行“MOVSBUF,A”指令),即是向發(fā)送緩沖器SBUF裝載并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完便使發(fā)送中斷標(biāo)志位TI=1。從圖中可看出,接收器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被從接收緩沖器SBUF讀出之前,第二個字節(jié)即開始被接收(串行輸入至移位寄存器),但是,在第二個字節(jié)接收完畢而前一個字節(jié)CPU未讀取時,會丟失前一個字節(jié)。27第二十七頁,共83頁。在滿足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時使RI=1。當(dāng)發(fā)讀SBUF命令時(執(zhí)行“MOVA,SBUF”命令),便由接收緩沖器(SBUF)取出信息,通過89C51內(nèi)部總線送CPU。對于發(fā)送緩沖器,因為發(fā)送時CPU是主動的,不會產(chǎn)生重疊錯誤,一般不需要用雙緩沖器結(jié)構(gòu)來保持最大傳送速率。28第二十八頁,共83頁。2、串行口控制字及控制寄存器89S51串行口是可編程接口,對它初始化編程只用兩個控制字分別寫入特殊功能寄存器SCON(98H)和電源控制寄存器PCON(87H)中即可。(1)SCON(98H)
89S51串行通信的方式選擇、接收和發(fā)送控制以及串行口的狀態(tài)標(biāo)志等均由特殊功能寄存器SCON控制和指示,其控制字格式如圖7-2所示。29第二十九頁,共83頁。30第三十頁,共83頁。①SM0和SM1(SCON.7,SCON.6)——串行口工作方式選擇位。兩個選擇位對應(yīng)4種通信方式,如表7-1所示。其中,fosc是振蕩頻率。波特率幀格式31第三十一頁,共83頁。
多機(jī)通信時,SM2必須置1。雙機(jī)通信時,通常使SM2=0。②SM2:多機(jī)通信控制位,主要用于方式2和3。若置SM2=1,則允許多機(jī)通信。當(dāng)一片89S51(主機(jī))與多片89S51(從機(jī))通信時,所有從機(jī)的SM2位都置1。主機(jī)首先發(fā)送的一幀數(shù)據(jù)為地址,即從機(jī)機(jī)號,其中第9位為1,所有的從機(jī)接收到數(shù)據(jù)后,將其中第9位裝入RB8中。SM2=1SM2=1SM2=1SM2=189S5189S5189S5189S5189S51000000011第三十二頁,共83頁。若SM2=0,即不屬于多機(jī)通信情況,則接收一幀數(shù)據(jù)后,不管第九位數(shù)據(jù)是0還是1,都置RI=1,接收到的數(shù)據(jù)裝入SBUF。根據(jù)SM2這個功能,可實現(xiàn)多個AT89S51應(yīng)用系統(tǒng)的串行通信。在方式1時,若SM2=1,則只有接收到有效停止位時,RI才制1,以便接收下一貞數(shù)據(jù)。在方式0時,SM2必須是0。在方式0、1通信時,SM2通常置0;在方式2、3的雙機(jī)通信中,SM2也置0。只有在方式2、3的多機(jī)通信中,SM2才置1。各個從機(jī)根據(jù)收到的第9位數(shù)據(jù)(RB8中)的值來決定從機(jī)可否再接收主機(jī)的信息。若(RB8)=0,說明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位RI=0,信息丟失;若(RB8)=1,說明是地址幀,數(shù)據(jù)裝入SBUF并置RI=1,中斷所有從機(jī),被尋址的目標(biāo)從機(jī)清除SM2以接收主機(jī)發(fā)來的一幀數(shù)據(jù)。其他從機(jī)仍然保持SM2=1。33第三十三頁,共83頁。③REN——允許接收控制位。由軟件置1或清0。在串行通信接收控制過程中,如果滿足RI=0和REN=1(允許接收)的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收SBUF中。④TB8——發(fā)送數(shù)據(jù)的第9位(D8)裝入TB8中。在方式2或方式3中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。在許多通信協(xié)議中可用作奇偶校驗位,也可在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。對于后者,TB8=1,說明該幀數(shù)據(jù)為地址;TB8=0,說明該幀數(shù)據(jù)為數(shù)據(jù)字節(jié)。在方式0或方式1中,該位未用。34第三十四頁,共83頁。⑤RB8——接收數(shù)據(jù)的第9位。在方式2或方式3中,接收到的第9位數(shù)據(jù)放在RB8位。它或是約定的奇/偶校驗位,或是約定的地址/數(shù)據(jù)標(biāo)識位。在方式2和方式3多機(jī)通信中,若SM2=1,如果RB8=1,說明收到的數(shù)據(jù)為地址幀。⑥TI——發(fā)送中斷標(biāo)志。在一幀數(shù)據(jù)發(fā)送完時被置位。在方式0串行發(fā)送第8位結(jié)束或其他方式串行發(fā)送到停止位的開始時由硬件置位,可用軟件查詢。它同時也申請中斷,TI置位意味著向CPU提供“發(fā)送緩沖器SBUF已空”的信息,CPU可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。串行口發(fā)送中斷被響應(yīng)后,TI不會自動清0,必須由軟件清0。35第三十五頁,共83頁。⑦RI——接收中斷標(biāo)志。在接收到一幀有效數(shù)據(jù)后由硬件置位。在方式0中,第8位數(shù)據(jù)發(fā)送結(jié)束時,由硬件置位;在其他三種方式中,當(dāng)接收到停止位中間時由硬件置位。RI=1,申請中斷,表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收SBUF中,要求CPU取走數(shù)據(jù)。CPU響應(yīng)中斷,取走數(shù)據(jù)。RI也必須由軟件清0,清除中斷申請,并準(zhǔn)備接收下一幀數(shù)據(jù)。串行發(fā)送中斷標(biāo)志TI和接收中斷標(biāo)志RI是同一個中斷源,CPU事先不知道是發(fā)送中斷TI還是接收中斷RI產(chǎn)生的中斷請求,所以,在全雙工通信時,必須由軟件來判別。復(fù)位時,SCON所有位均清0。36第三十六頁,共83頁。(2)PCON(87H)電源控制寄存器PCON中只有SMOD位與串行口工作有關(guān),
電源控制寄存器PCON不可位尋址。37第三十七頁,共83頁。
在串行通信中,收發(fā)雙方對發(fā)送或接收的數(shù)據(jù)速率有一定的約定,通過軟件對AT89S51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的;而方式1和方式3的波特率是可變的,由定時器T1的溢出率來決定。3、波特率設(shè)計串行口的四種工作方式對應(yīng)著三種波特率。由于輸入的移位時鐘來源不同,因此,各種方式的波特率計算公式也不同。38第三十八頁,共83頁。方式0波特率≌fosc/12注意,符號“≌”表示左面的表達(dá)式只是引擁右面表達(dá)式的數(shù)值,即右面的表達(dá)式是提供了一種計算的方法。39第三十九頁,共83頁。(2)方式2的波特率
SMOD=0時,波特率為fosc的1/64;SMOD=1時,波特率為fosc的1/32。即方式2波特率≌2SMOD/64×fosc40第四十頁,共83頁。(3)方式1和方式3的波特率AT89S51串行口方式1和方式3的波特率由定時器T1的溢出率與SMOD值同時決定。波特率≌2SMOD/32×(T1溢出率)T1溢出率取決于T1的計數(shù)速率(計數(shù)速率≌fosc/12)和T1預(yù)置的初值,T1在此相當(dāng)于進(jìn)行m次分頻。若定時器T1采用模式1時,波特率公式如下:方式1、方式3波特率≌2SMOD/32×(fosc/12)/(216-初值)41第四十一頁,共83頁。定時器T1用作波特率發(fā)生器時,通常選用定時器模式2(自動重裝初值定時器)比較實用。要設(shè)置定時器T1為定時方式(使C/T=0),讓T1計數(shù)內(nèi)部振蕩脈沖,即計數(shù)速率為fosc/12(注意應(yīng)禁止T1中斷,以免溢出而產(chǎn)生不必要的中斷)。先設(shè)定TH1和TL1定時即輸初值為X,那么每過“28-X”個機(jī)器周期,定時器T1就會產(chǎn)生一次溢出。表7-2列出了串行口方式1、方式3常用波特率及其初值。42第四十二頁,共83頁。波特率foscSMOD位方式初值X62.5kbit/s12MHz12FFH19.2kbit/s11.0592MHz12FDH9.6kbit/s11.0592MHz02FDH4.8kbit/s11.0592MHz02FAH2.4kbit/s11.0592MHz02F4H1.2kbit/s11.0592MHz02E8H(1)在使用的時鐘振蕩頻率fosc為12MHz或6MHz時,將初值X和fosc計算出的波特率有一定誤差。消除誤差可采用時鐘頻率11.0592MHz。(2)如果選用很低的波特率,如波特率選為55,可將定時器T1設(shè)置為方式1定時。但在這種情況下,T1溢出時,需在中斷服務(wù)程序中重新裝入初值。中斷響應(yīng)時間和執(zhí)行指令時間會使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。第四十三頁,共83頁。例7-3:AT89S51單片機(jī)時鐘振蕩頻率為11.0592MHz,選用定時器T1工作模式2作為波特率發(fā)生器,波特率為2400b/s,求初值。解:設(shè)置波特率控制為(SMOD)=0所以,(TH1)=(TL1)=F4H。為什么是它?系統(tǒng)晶體振蕩頻率選為11.0592MHz就是為了使初值為整數(shù),從而產(chǎn)生精確的波特率。相應(yīng)的四條指令:MOVTMOD,#00100000B MOVTH1,#0F4HMOVTL1,#0F4HSETBTR144第四十四頁,共83頁。7.2串行口的4種工作方式方式0
方式0時,串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。SM2必為0。(1)方式0輸出45第四十五頁,共83頁。
(2)方式0輸入擴(kuò)展并行輸入或輸出口46第四十六頁,共83頁。74LS165SBUFSBUF74LS164RXDTXDfosc/12MOVSBUF,ARXDTXD并出并入fosc/12先接收低位示意圖MOVA,SBUFTIRI先發(fā)送低位示意圖47第四十七頁,共83頁。方式1
方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。48第四十八頁,共83頁。(1)方式1輸出(2)方式1輸入49第四十九頁,共83頁。
用軟件置REN為1時,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)生負(fù)跳變時,則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時,控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時,將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請求中斷。50第五十頁,共83頁。
方式2和方式3
方式2或方式3時為11位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。
方式2和方式3時起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時為SCON中的TB8,接收時為RB8),停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時器T1的溢出率決定。
51第五十一頁,共83頁。
(1)方式2和方式3輸出
發(fā)送開始時,先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出。第一次移位時,停止位“1”移入輸出移位寄存器的第9位上,以后每次移位,左邊都移入0。當(dāng)停止位移至輸出位時,左邊其余位全為0,檢測電路檢測到這一條件時,使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請求中斷。52第五十二頁,共83頁。
(2)方式2和方式3輸入
接收時,數(shù)據(jù)從右邊移入輸入移位寄存器。當(dāng)位檢測邏輯采樣到RXD上的負(fù)跳變,便開始接收1幀數(shù)據(jù)。在接收完第九位數(shù)據(jù)后,滿足下列條件,才能真正接收到1個字符。當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時,接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。53第五十三頁,共83頁。AT89S51串行口的應(yīng)用舉例
方式0時,串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。
74LS164可用于擴(kuò)展并行輸出口,74LS165可用于擴(kuò)展輸入口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。
1、串行口方式0的應(yīng)用54第五十四頁,共83頁。補例7-1:用AT89S51串行口外接164串入——并出移位寄存器擴(kuò)展8位并行口;8位并行口的每位都接一個發(fā)光二極管,要求發(fā)光二極管從左到右以一定延遲輪流顯示,并不斷循環(huán)。設(shè)發(fā)光二極管為共陰極接法,如圖所示。解:設(shè)數(shù)據(jù)串行發(fā)送采用中斷方式,顯示的延遲通過調(diào)用延遲程序DELAY來實現(xiàn)。AT89S5155第五十五頁,共83頁。中斷方式程序清單:
ORG0023H ;串行口中斷入口
AJMPSBR ;轉(zhuǎn)入串行口中斷服務(wù)程序
ORG2000H ;主程序起始地址
MOVSCON,#00H ;串行口方式0初始化
MOVIE,#10010000B MOVA,#80H ;最左一位發(fā)光二極管先亮
CLRP1.0 ;關(guān)閉并行輸出
MOVSBUF,A ;開始串行輸出LOOP:SJMPLOOP ;等待中斷SBR:
SETBP1.0 ;啟動并行輸出
ACALLDELAY ;顯示延遲一段時間
CLRTI ;清發(fā)送中斷標(biāo)志
RRA 準(zhǔn)備右邊一位顯示
CLRP1.0 ;關(guān)閉并行輸出
MOVSBUF,A ;再一次串行輸出
RETI ;中斷返回56第五十六頁,共83頁。用方式0加上并入——串出移位寄存器可擴(kuò)展一個8位并行輸入口。移位寄存器必須帶有預(yù)置/移位的控制端,由單片機(jī)的一個輸出端子加以控制,以實現(xiàn)先由8位輸入口置數(shù)到移位寄存器,然后再串行移位從單片機(jī)的串行口輸入到接收緩沖器,最后再讀入到CPU中。1、串行口方式0的應(yīng)用57第五十七頁,共83頁。補例7-2:用89S51串行口外加移位寄存器165或166擴(kuò)展8位輸入口,輸入數(shù)據(jù)由8個開關(guān)提供,另有一個開關(guān)K提供聯(lián)絡(luò)信號。當(dāng)K=0時,表示要求輸入數(shù)據(jù),輸入的8位為開關(guān)量,提供邏輯模擬子程序的輸入信號。74LS165讀圖所得:置數(shù)和移位由引腳shift控制,低為置數(shù),高位移位。跨接在H上的開關(guān)量最先移出;而方式0的數(shù)據(jù)傳送規(guī)則是低位在先,所以,最后移入SBUF中的數(shù)據(jù)為:A在最高位、H在最低位。HAB58第五十八頁,共83頁。
用方式0外加移位寄存器來擴(kuò)展8位輸出口時,要求移位寄存器帶有輸出控制,否則串行移位過程也會反映到并行輸出口;另外,輸出口最好再接一個寄存器或鎖存器,以免在輸出門關(guān)閉使(STB=0)輸出又發(fā)生變化。
用方式0加上并入——串出移位寄存器可擴(kuò)展一個8位并行輸入口。移位寄存器必須帶有預(yù)置/移位的控制端,由單片機(jī)的一個輸出端子加以控制,以實現(xiàn)先由8位輸入口置數(shù)到移位寄存器,然后再串行移位從單片機(jī)的串行口輸入到接收緩沖器,最后再讀入到CPU中。59第五十九頁,共83頁。例7-1
方式2發(fā)送在雙機(jī)通訊中的應(yīng)用。下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通訊中,以TB8作為奇偶校驗位,處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的奇偶校驗位寫入TB8,以保證采用偶校驗發(fā)送。
2、串行口方式2的應(yīng)用
9位共偶數(shù)個1,通過TB8補0或補1來實現(xiàn)什么是偶校驗?當(dāng)數(shù)據(jù)本身為偶數(shù)個1時(P=0)補0;
當(dāng)數(shù)據(jù)本身為奇數(shù)個1時(P=1)補1;
結(jié)論:令TB8=P7.2、串行口的四種工作方式60第六十頁,共83頁。PIPTI:PUSHPSW;現(xiàn)場保護(hù)
PUSHAccSETBRS1;選擇第2組工作寄存器區(qū)
CLRRS0CLRTI;發(fā)送中斷標(biāo)志清“0”MOVA,@R0;取數(shù)據(jù)
MOVC,P;校驗位送TB8,采用偶校驗
MOVTB8,CMOVSBUF,A;啟動發(fā)送
INCR0;數(shù)據(jù)指針加1POPAcc;恢復(fù)現(xiàn)場
POPPSWRETI ;中斷返回7.2、串行口的四種工作方式發(fā)送中斷服務(wù)程序61第六十一頁,共83頁。例7-2
方式2接收在雙機(jī)通訊中的應(yīng)用本例與上例相對應(yīng)。若第9位數(shù)據(jù)為校驗位,在接收程序中作偶校驗處理,設(shè)1組寄存器區(qū)的R0為數(shù)據(jù)緩沖器指針。PIRI: PUSHPSW PUSHAcc SETBRS0 ;選擇1組寄存器區(qū)
CLRRS1 CLRRI MOVA,SBUF;收到數(shù)據(jù)送A
MOVC,P JNCL1 ;C=0。跳L1 JNBRB8,ERP;ERP為出錯處理程序
AJMPL2L1: JBRB8,ERP ;RB8=1,跳ERPL2: MOV@R0,A INCR0 POPAcc POPPSW
AJMPL3ERP:……… ;出錯處理程序段
………L3: RETIRB8=0?P=0?YRB8=1?YNYYERPN7.2、串行口的四種工作方式62第六十二頁,共83頁。數(shù)據(jù)塊的發(fā)送補例7-3:編制一個發(fā)送程序,將片內(nèi)RAM中50H~5FH的數(shù)據(jù)串行發(fā)送。串行口設(shè)定為工作方式2,TB8作偶校驗位。7.2、串行口的四種工作方式(1)采用中斷方式的流程圖數(shù)據(jù)發(fā)送完?是初始化串口初始化數(shù)據(jù)區(qū)中斷初始化
發(fā)送第一個數(shù)據(jù)開始
主程序等待中斷清中斷標(biāo)志發(fā)送下一個數(shù)據(jù)
關(guān)中斷中斷入口
中斷服務(wù)子程序返回寫寫看! ;發(fā)送一個數(shù)據(jù)MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;63第六十三頁,共83頁。
ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序
ORG0023H;串行口的中斷入口地址
AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序
ORG0100H;主程序MAIN:MOVSCON,#80HMOVPCON,#80HMOVR0,#50HMOVR7,#0FH;?夠嗎
SETBES;允許串行口中斷
SETBEA;CPU允許中斷
MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;發(fā)送第一個數(shù)據(jù)HERE:
SJMPHERESERVE:
CLRTI;清除發(fā)送中斷標(biāo)志
INCR0;修改數(shù)據(jù)地址
MOVA,@R0MOVC,PSW.0;P→CMOVTB8,CMOVSBUF,A;發(fā)送數(shù)據(jù)
DJNZR7,ENDT;判斷數(shù)據(jù)塊發(fā)送完否;若未發(fā)送完,則轉(zhuǎn)ENDTCLRES;若發(fā)送完,則禁止串行口中斷ENDT:RETI;中斷返回
END(1)采用中斷方式的程序段64第六十四頁,共83頁。
ORG0000H AJMPMAIN ;上電,轉(zhuǎn)向主程序
ORG0100H ;主程序MAIN: MOVSCON,#80H ;設(shè)工作方式2 MOVPCON,#80H ;取波特率為fosc/32 MOVR0,#50H ;首址50H送R0 MOVR7,#10H ;數(shù)值長度送R7LOOP: MOVA,@R0 ;取數(shù)據(jù)
MOVC,PSW.0 ;P→C MOVTB8,C ;奇偶標(biāo)志送TB8 MOVSBUF,A ;發(fā)送數(shù)據(jù)WAIT: JBCTI,CONT AJMPWAIT ;等待中斷標(biāo)志TI=1CONT: INCR0 DJNZR7,LOOP ;數(shù)值尚未發(fā)送完,繼續(xù)發(fā)送下一個數(shù)據(jù)HERE:
SJMPHERE END(2)采用查詢方式的程序段65第六十五頁,共83頁。解:方式3為11位異步通信方式,波特率取決于TI的溢出率。查表7-2(P129)可知,當(dāng)晶振為11.059MHz,波特率為2400b/s時,可取SMOD=0,定時器選擇模式2:初值為F4H補例7-4:編制一個接收程序,將接收的16B數(shù)據(jù)送入片內(nèi)RAM的50H—5FH單元中。設(shè)串行口工作于方式3,波特率為2400b/s。(晶振為11.059MHz)3、串行口方式3的應(yīng)用(雙機(jī)通信)7.2、串行口的四種工作方式RB8=0?P=0?YRB8=1?YNYYERPN66第六十六頁,共83頁。源程序如下(查詢方式):SUBR: MOVTMOD,#20H ;設(shè)TI工作于模式2 MOVTH1,#0F4H ;賦循環(huán)計數(shù)初值
MOVTL1,#0F4H ;賦計數(shù)值
SETBTR1 ;啟動定時器TI MOVR0,#50H ;首地址送R0 MOVR7,#10H ;數(shù)據(jù)長度送R7
MOVSCON,#0D0H ;串行口工作與方式3,可接收
MOVPCON,#00H ;設(shè)SMOD=0WAIT: JBCRI,PR1 ;接收完一幀數(shù)據(jù),清RI,轉(zhuǎn)PR1 SJMPWAIT ;否則等待PR1: MOVA,SBUF ;讀入數(shù)據(jù)
JNBP,PNP ;P=0,轉(zhuǎn)PNP JNBRB8,PER ;P=1,RB8=0,轉(zhuǎn)出錯處理
SJMPRIGHTPNP: JBRB8,PER ;P=0,RB8=1,轉(zhuǎn)出錯處理RIGHT: MOV@R0,A ;數(shù)據(jù)送內(nèi)存
INCR0 ;修改地址指針
DJNZR7,WAIT ;數(shù)據(jù)未接收完,繼續(xù)接收下一個數(shù)據(jù)
CLRPSW.5 ;置正確接收完畢標(biāo)志F0=0 RETPER: SETBPSW.5 RET67第六十七頁,共83頁。主機(jī)與從機(jī),每個從機(jī)有一個唯一的地址碼。主機(jī)可與每個從機(jī)通信,從機(jī)之間不能通信。主機(jī)每一時段只能與一個從機(jī)通信。先叫地址,然后再通信。7.3串口的多機(jī)通信要保證主機(jī)與所選擇的從機(jī)實現(xiàn)可靠地通訊,必須保證串口具有識別功能。SCON中的SM2位就是滿足這一條件而設(shè)置的多機(jī)通訊控制位。68第六十八頁,共83頁。SM2=0、RB8=0 RB8=1RI可以置位SM2=1、RB8=1SM2=1、RB8=0RI可以置位RI不能置位應(yīng)用這些特性來安排多機(jī)通訊的工作過程:(2)主機(jī)先將從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))發(fā)給各從機(jī),希望每個從機(jī)都能收到。主機(jī)發(fā)出的地址信息,以第9位為1為特征。(1)從機(jī)串行口編程為方式2或方式3接收,且置SM2和REN位為“1”,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)(監(jiān)聽狀態(tài))。(3)各從機(jī)接收到地址后,判斷是否和本機(jī)地址相符合。相符則該從機(jī)清“0”SM2位(解除監(jiān)聽狀態(tài)),準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若不符,則保持SM2=1狀態(tài)(仍處于監(jiān)聽狀態(tài),無法接收主機(jī)的數(shù)據(jù))。(4)接著主機(jī)發(fā)送數(shù)據(jù)幀,以第9位為0為特征.此時各從機(jī)串行口接收到的RB8=0,只有地址相符合的從機(jī)系統(tǒng)(即已清“0”SM2位的從機(jī))才能激活RI,真正收到數(shù)據(jù)。被叫未被叫(5)當(dāng)主機(jī)與從機(jī)的數(shù)據(jù)通信結(jié)束時,主機(jī)將發(fā)送廣播地址。當(dāng)從機(jī)收到“廣播地址”后,便將從機(jī)的通信模式再設(shè)置成多機(jī)模式(SM2位置1,回到監(jiān)聽狀態(tài)),為下一次的多機(jī)通信做好準(zhǔn)備。69第六十九頁,共83頁。7.4雙機(jī)串行通信的硬件連接AT89S51串行口的輸入、輸出均為TTL電平。抗干擾性差,傳輸距離短,傳輸速率低。為提高串行通信的可靠性,增大串行通信的距離和提高傳輸速率,都采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422A、RS-485等。1.TTL電平通信接口如果兩個單片機(jī)相距在1.5m之內(nèi),它們的串行口可直接相連,接口如圖所示。甲機(jī)RXD與乙機(jī)TXD端相連,乙機(jī)RXD與甲機(jī)TXD端相連。70第七十頁,共83頁。2.RS-232C雙機(jī)通信接口如果雙機(jī)通信距離在1.5~15m之間時,可用RS-232C標(biāo)準(zhǔn)接口實現(xiàn)點對點的雙機(jī)通信,接口如圖。MAX232A是美國MAXIM(美信)公司生產(chǎn)的RS-232C雙工發(fā)送器/接收器電路芯片。7.4雙機(jī)串行通信的硬件連接71第七十一頁,共83頁。(1)
電氣特性RS-232C上傳送的數(shù)字量采用負(fù)邏輯,且與地對稱。邏輯“1”:-3~-15V;邏輯“0”:+3~+15V。RS-232C標(biāo)準(zhǔn)的信號傳輸?shù)淖畲箅娎|長度為30米,最高數(shù)傳速率為20kbit/s。(2)
電平轉(zhuǎn)換由于TTL電平和RS-232C電平互不兼容,所以兩者對接時,必須進(jìn)行電平轉(zhuǎn)換。常用的轉(zhuǎn)換芯片有MAX232C、MC1488、MC1489。各廠商生產(chǎn)的此類芯片雖然不同,但原理相似。7.4雙機(jī)串行通信的硬件連接72第七十二頁,共83頁。3、RS-422A接口RS-232C雖然應(yīng)用很廣泛,但其推出較早,在現(xiàn)代網(wǎng)絡(luò)通訊中已暴露出明顯的缺點:傳輸速率低、通訊距離短、接口處信號容易產(chǎn)生串?dāng)_等。因此,EIA又制定了RS-422A標(biāo)準(zhǔn)。RS-232C即是一種電氣標(biāo)準(zhǔn),又是一種物理接口功能標(biāo)準(zhǔn),而RS-422A僅僅是一種電氣標(biāo)準(zhǔn)。PC機(jī)不帶RS-422A接口,因此要使用RS-232/RS-422A轉(zhuǎn)換器,把RS-232C接口轉(zhuǎn)換成RS-422A接口。RS-422A能在長距離、高速率下傳輸數(shù)據(jù)。它的最大傳輸率為10Mbit/s,在此速率下,電纜允許長度為12m,如果采用較低傳輸速率時,最大傳輸距離可達(dá)1200m。7.4雙機(jī)串行通信的硬件連接73第七十三頁,共83頁。TTL電平與RS-422A電平轉(zhuǎn)換電路如圖所示。TTL電平轉(zhuǎn)換成RS-422A電平的常用芯片:SN75174、MC3487等。RS-422A電平轉(zhuǎn)換成TTL電平的常用芯片:SN75175、MC3486等。SN75174、SN75175是分別是具有三態(tài)輸出的單片四差分驅(qū)動器和接收器,采用+5V電源供電。7.4雙機(jī)串行通信的硬件連接74第七十四頁,共83頁。三、RS-485接口RS-422A雙機(jī)通訊需四芯傳輸線,這對長距離通訊是很不經(jīng)濟(jì)的,故在工業(yè)現(xiàn)場,通常采用雙絞線傳輸?shù)腞S-485串行
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 增資擴(kuò)股入股協(xié)議
- 電子商務(wù)平臺運營銷售合作協(xié)議
- 股份制企業(yè)合同文書范例與解析
- 網(wǎng)絡(luò)直播行業(yè)版權(quán)使用許可協(xié)議
- 教育信息化產(chǎn)品采購安裝協(xié)議
- 經(jīng)典個人手車轉(zhuǎn)讓合同
- 海洋資源開發(fā)項目合作框架協(xié)議
- 電子發(fā)票開具專項協(xié)議
- 粵教版高中信息技術(shù)必修教學(xué)設(shè)計:4.1編制計算機(jī)程序解決問題
- Unit 5 There is a big bed 單元整體(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語五年級上冊
- (完整版)蘇教版六年級下數(shù)學(xué)比例重難點練習(xí)
- 熱能與動力工程測試技術(shù)- 流量測量
- 中國古代文學(xué)史 建安文學(xué)與正始文學(xué)
- 課堂嵌入式評價及其應(yīng)用
- 高中物理課程標(biāo)準(zhǔn)
- 化工原理傳質(zhì)導(dǎo)論
- 環(huán)境與可持續(xù)發(fā)展ppt課件(完整版)
- Linux操作系統(tǒng)課件(完整版)
- 跨境電商亞馬遜運營實務(wù)完整版ppt課件-整套課件-最全教學(xué)教程
- 中國傳媒大學(xué)《當(dāng)代電視播音主持教程》課件
- 浙美版小學(xué)六年級美術(shù)下冊全冊精品必備教學(xué)課件
評論
0/150
提交評論