串行通信接口課件_第1頁(yè)
串行通信接口課件_第2頁(yè)
串行通信接口課件_第3頁(yè)
串行通信接口課件_第4頁(yè)
串行通信接口課件_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第8章串行通信接口第8章 串行通信接口學(xué)習(xí)目標(biāo): 掌握串行通信的基本概念; 掌握RS-232C串行接口標(biāo)準(zhǔn);了解RS-422、RS-423、RS-485串行接口標(biāo)準(zhǔn)的特點(diǎn)及應(yīng)用場(chǎng)合; 理解串行接口芯片INS 8250的內(nèi)部結(jié)構(gòu)及外部特性,掌握INS 8250的內(nèi)部寄存器及編程方法; 重點(diǎn)掌握利用INS 8250實(shí)現(xiàn)查詢方式和中斷方式下的串行通信編程應(yīng)用; 學(xué)會(huì)采用BIOS或DOS調(diào)用方式利用串行接口來(lái)發(fā)送/接收一個(gè)字符。第8章 串行通信接口本章目錄:8.1 串行通信的基本概念8.2 串行接口標(biāo)準(zhǔn)8.3 異步通信接口8.4 通信接口的BIOS調(diào)用及DOS調(diào)用習(xí)題與思考題8.1 串行通信的基本概念

2、8.1.1 串行通信的特點(diǎn)8.1.2 數(shù)據(jù)通信方式8.1.3 串行通信方式8.1.4 信息的校驗(yàn)方式8.1.5 傳輸速率與傳送距離8.1.6 信號(hào)的調(diào)制與解調(diào)8.1.7 串行接口的基本結(jié)構(gòu)和基本功能返回上一級(jí)8.1.1 串行通信的特點(diǎn)串行通信,就是使數(shù)據(jù)在一根傳輸線上一位一位地進(jìn)行傳輸而實(shí)現(xiàn)的通信。特點(diǎn):信息在一個(gè)方向上傳輸,只占用一根通信線,因此在這根傳輸線上既傳送數(shù)據(jù)信息又傳送聯(lián)絡(luò)控制信息;信息格式有固定的要求,需要進(jìn)行邏輯電平轉(zhuǎn)換。通信方式:異步通信和同步通信兩種。返回上一級(jí)8.1.2 數(shù)據(jù)通信方式串行通信中,數(shù)據(jù)通常是在兩個(gè)站(如終端和微機(jī))之間進(jìn)行傳送,按照同一時(shí)刻數(shù)據(jù)流的方向可分成

3、三種基本傳送模式返回上一級(jí)8.1.3 串行通信方式根據(jù)時(shí)鐘控制方式可分為:異步通信方式是指通信的發(fā)送設(shè)備與接收設(shè)備使用各自的時(shí)鐘控制工作,要求雙方的時(shí)鐘盡量一致,但接收端的時(shí)鐘完全獨(dú)立于發(fā)送端,由自己內(nèi)部的時(shí)鐘發(fā)生器產(chǎn)生,所以實(shí)際頻率總是有差異的。同步串行通信是指通信的雙方使用同一個(gè)時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收,發(fā)送端與接收端的時(shí)鐘必須嚴(yán)格一致。返回上一級(jí)通信協(xié)議是指通信雙方的一種約定。約定中包括對(duì)數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、糾錯(cuò)方式以及控制字符定義等問(wèn)題作出統(tǒng)一規(guī)定,通信雙方必須共同遵守。因此,也叫做通信控制規(guī)程,或稱傳輸控制規(guī)程,它屬于ISOS OSI七層參考模型中的數(shù)據(jù)鏈路層。通

4、信協(xié)議有兩類:異步協(xié)議和同步協(xié)議。同步協(xié)議又有面向字符(Character-Oriented)和面向比特(Bit-Oriented)兩種。返回上一級(jí)1起止式異步協(xié)議起止式異步協(xié)議的特點(diǎn)是一個(gè)字符一個(gè)字符傳輸,而且每傳送一個(gè)字符都是以起始位開(kāi)始,以停止位結(jié)束,字符之間沒(méi)有固定的時(shí)間間隔要求??科鹗嘉缓屯V刮粊?lái)實(shí)現(xiàn)字符的界定或同步,稱為起止式協(xié)議??煽啃愿撸桓郊游?,降低了傳輸效率返回上一級(jí)異步傳輸模式的字符格式1位起始位,58位數(shù)據(jù)1位校驗(yàn)位(可無(wú))1位、1.5位或2位的停止位返回上一級(jí)傳送時(shí),數(shù)據(jù)的低位在前,高位在后。比如要傳送一個(gè)字符“C“,C的ASCII碼為43H(1000011),要求一位

5、停止位,采用偶校驗(yàn),數(shù)據(jù)有效位7位,則一幀信息為:0110000。返回上一級(jí)2面向字符的同步協(xié)議IBM公司的二進(jìn)制同步通信協(xié)議(BSC)特點(diǎn)是一次傳送由若干個(gè)字符組成的數(shù)據(jù)塊,并規(guī)定了10個(gè)特殊字符作為這個(gè)數(shù)據(jù)塊的開(kāi)頭與結(jié)束標(biāo)志以及整個(gè)傳輸過(guò)程的控制信息,它們也叫做通信控制字。由于被傳送的數(shù)據(jù)塊是由字符組成,故被稱作面向字符的協(xié)議。傳輸效率大大提高。傳輸控制字,增強(qiáng)了通信控制能力和校驗(yàn)功能。返回上一級(jí)面向字符同步協(xié)議的幀格式SYN,是同步字符(Synchrunous Character)每一個(gè)幀開(kāi)始處都加有同步字符,加一個(gè)SYN同步字符的稱單同步,加兩個(gè)SYN同步字符的稱雙同步。設(shè)置同步字符的

6、目的是起聯(lián)絡(luò)作用,傳送數(shù)據(jù)時(shí),接收端不斷檢測(cè),一旦出現(xiàn)同步字符,就知道是一幀開(kāi)始了。SOH,是序始字符(Start OF Header),表示標(biāo)題的開(kāi)始。標(biāo)題,包括源地址、目標(biāo)地址和路由指示等信息。返回上一級(jí)STX,是文始字符(Start Of Text),它標(biāo)志著傳送的正文(數(shù)據(jù)塊)開(kāi)始。數(shù)據(jù)塊,就是被傳送的正文內(nèi)容,由多個(gè)字符組成。組終字符ETB(End of Trandmission Block)或文終字符ETX,其中ETB用在正文很長(zhǎng),需要分成若干個(gè)數(shù)據(jù)塊,分別在不同幀中發(fā)送的場(chǎng)合,這時(shí)在每個(gè)分?jǐn)?shù)據(jù)塊后面用組終字符ETB,而在最后一個(gè)分?jǐn)?shù)據(jù)塊后面用文終字符ETX。校驗(yàn)碼,對(duì)從SOH開(kāi)始

7、直到ETX(或ETB)字段進(jìn)行校驗(yàn),校驗(yàn)方式可以是縱橫奇偶校驗(yàn)或CRC校驗(yàn)。返回上一級(jí)轉(zhuǎn)義字符DLE將特定字符作為普通數(shù)據(jù)處理的能力,這種能力叫做“數(shù)據(jù)透明”。為此,協(xié)議中設(shè)置了轉(zhuǎn)義字符DLE(Data Link Escape)。接收器收到了一個(gè)DLE就可預(yù)知下一個(gè)字符是數(shù)據(jù)字符。DLE本身也是特定字符,當(dāng)它出現(xiàn)在數(shù)據(jù)塊中時(shí),也要在它前面再加上另一個(gè)DLE。這種方法叫字符填充。返回上一級(jí)3面向比特的同步協(xié)議最有代表性的面向比特的協(xié)議:IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC(Synchronous Data Conrtol)國(guó)際標(biāo)準(zhǔn)化組織ISO的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC(High Level

8、Data Link Conrtol)美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)的先進(jìn)數(shù)據(jù)通信規(guī)程ADCCP(Advancde Data Communications Control Procedure)特點(diǎn),所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來(lái)標(biāo)志幀的開(kāi)始和結(jié)束,故稱“面向比特”的協(xié)議。返回上一級(jí)面向比特同步協(xié)議的幀格式(1)SDLC/HDLC標(biāo)志字符SDLC/HDLC協(xié)議規(guī)定,所有信息傳輸必須以一標(biāo)志字符開(kāi)始,且以同一個(gè)字符結(jié)束。這個(gè)標(biāo)志字符是01111110,稱標(biāo)志場(chǎng)(F)。從開(kāi)始標(biāo)志到結(jié)束標(biāo)志之間構(gòu)成一個(gè)完整的信息單位,稱為一幀。所有信息是以幀的形式傳輸?shù)?,而?biāo)志字符提供了

9、每一幀的邊界。接收端可以通過(guò)搜索“01111110”來(lái)探知幀的開(kāi)頭和結(jié)束,以此建立幀同步。返回上一級(jí)(2)地址場(chǎng)和控制場(chǎng)地址場(chǎng)用來(lái)規(guī)定出與之通信的次站的地址??刂茍?chǎng)可規(guī)定若干個(gè)命令。SDLC規(guī)定A場(chǎng)和C場(chǎng)的寬度為8位或16位。接收方必須檢查每個(gè)地址字節(jié)的第一位,如果為“0”,則后邊跟著另一個(gè)地址字節(jié);若為“1”,則該字節(jié)就是最后一個(gè)地址字節(jié)。同樣,如果控制場(chǎng)第一個(gè)字節(jié)的第一位為“0”,則還有第二個(gè)控制場(chǎng)字節(jié),否則就只有一個(gè)字節(jié)。返回上一級(jí)(3)信息場(chǎng)(Information)包含有要傳送的數(shù)據(jù),并不是每一幀都必須有信息場(chǎng)。即數(shù)據(jù)場(chǎng)可以為0,當(dāng)它為0時(shí),則這一幀主要是控制命令。返回上一級(jí)(4)校

10、驗(yàn)場(chǎng)兩個(gè)字節(jié)長(zhǎng),幀校驗(yàn)場(chǎng)稱為FC(Frame Check)場(chǎng)或稱為幀校驗(yàn)序列FCS(Frame Check Sequence)。SDLC/HDLC均采用16位循環(huán)冗余校驗(yàn)碼CRC(Cylic Redundancy Code),其生成多項(xiàng)式為CCITT多項(xiàng)式X16+X12+X5+1。除了標(biāo)志場(chǎng)和自動(dòng)插入的“0”位外,所有的信息都參加CRC計(jì)算。返回上一級(jí)“0”位插入和刪除技術(shù):為了把信息場(chǎng)中同標(biāo)志字節(jié)相同的字符與標(biāo)志區(qū)分開(kāi)。具體作法是發(fā)送端在發(fā)送所有信息(除標(biāo)志字節(jié)外)時(shí),只要遇到連續(xù)5個(gè)“1”,就自動(dòng)插入一個(gè)“0”;當(dāng)接收端在接收數(shù)據(jù)時(shí)(除標(biāo)志字節(jié)外),如果連續(xù)接收到5個(gè)“1”,就自動(dòng)將其后的

11、一個(gè)“0”刪除,以恢復(fù)信息的原有形式。這種“0”位的插入和刪除過(guò)程是由硬件自動(dòng)完成的。返回上一級(jí)若在發(fā)送過(guò)程中出現(xiàn)錯(cuò)誤,則SDLC/HDLC協(xié)議是用異常結(jié)束(Abort)字符,或稱失效序列使本幀作廢。在失效序列中不使用“0”位插入/刪除技術(shù)。在HDLC規(guī)程中,7個(gè)連續(xù)的“1”被作為失效字符,而在SDLC中失效字符是8個(gè)連續(xù)的“1”。SDLC/HDLC協(xié)議規(guī)定,在一幀之內(nèi)不允許出現(xiàn)數(shù)據(jù)間隔。在兩幀信息之間,發(fā)送器可以連續(xù)輸出標(biāo)志字符序列,也可以輸出連續(xù)的高電平,它被稱為空閑(Idle)信號(hào)。返回上一級(jí)8.1.4 信息的校驗(yàn)方式通信中差錯(cuò)控制能力是衡量一個(gè)通信系統(tǒng)的重要內(nèi)容。發(fā)現(xiàn)傳輸中的錯(cuò)誤,叫檢

12、錯(cuò)。發(fā)現(xiàn)錯(cuò)誤之后,如何消除錯(cuò)誤,叫糾錯(cuò)。常用的校驗(yàn)方式有兩種:奇偶校驗(yàn)和循環(huán)冗余(CRC)校驗(yàn)。返回上一級(jí)1奇偶校驗(yàn)(Parity check)發(fā)送時(shí),在每個(gè)字符的數(shù)據(jù)最高有效位之后都附加一個(gè)奇偶校驗(yàn)位,這個(gè)校驗(yàn)位可為“1”或?yàn)椤?”,以便保證整個(gè)字符(包括校驗(yàn)位)中“1”的個(gè)數(shù)為偶數(shù)(偶校驗(yàn))或?yàn)槠鏀?shù)(奇校驗(yàn))。接收時(shí),接收方采用與發(fā)送方相同的通信格式,使用同樣的奇偶校驗(yàn),對(duì)接收到的每個(gè)字符進(jìn)行校驗(yàn)。返回上一級(jí)2循環(huán)冗余碼校驗(yàn)CRC發(fā)送時(shí),根據(jù)編碼理論對(duì)發(fā)送的串行二進(jìn)制序列按某種算法產(chǎn)生一些校驗(yàn)碼,并將這些校驗(yàn)碼放在數(shù)據(jù)信息后一同發(fā)出。在接收端將接收到的串行數(shù)據(jù)信息按同樣算法計(jì)算校驗(yàn)碼,當(dāng)信

13、息位接收完之后,接著接收CRC校驗(yàn)碼,并與接收端計(jì)算得出的校驗(yàn)碼進(jìn)行比較,若相等則無(wú)錯(cuò),否則說(shuō)明接收數(shù)據(jù)有錯(cuò)。接收器可用中斷或狀態(tài)標(biāo)志位的方法通知CPU,以便進(jìn)行出錯(cuò)處理。在通信控制規(guī)程中一般采用CRC檢錯(cuò),以自動(dòng)糾錯(cuò)方法來(lái)糾錯(cuò)。返回上一級(jí)8.1.5 傳輸速率與傳送距離1波特率串行通信中,每秒鐘傳送的位數(shù)(bit/s)。在串行通信中,所說(shuō)的傳輸速率是指波特率,而不是指字符速率,兩者的關(guān)系是:假如在某異步串行通信中,通信格式為1個(gè)起始位、8個(gè)數(shù)據(jù)位、1個(gè)偶數(shù)位、2個(gè)停止位,若傳輸速率是1200波特,那么,每秒所能傳送的字符數(shù)是1200/(1+8+1+2)=100個(gè)。返回上一級(jí)2發(fā)送時(shí)鐘和接收時(shí)鐘

14、在發(fā)送數(shù)據(jù)時(shí),發(fā)送器在發(fā)送時(shí)鐘(下降沿)作用下將移位寄存器中的數(shù)據(jù)按位串行移位輸出,數(shù)據(jù)位的時(shí)間間隔取決于發(fā)送時(shí)鐘周期。在接收數(shù)據(jù)時(shí),接收器在接收時(shí)鐘(上升沿)作用下對(duì)接收數(shù)據(jù)位采樣,并按位串行移入接收移位寄存器,最后裝配成并行數(shù)據(jù)。發(fā)送/接收時(shí)鐘頻率是根據(jù)所要求的傳輸波特率及所選擇的倍數(shù)N來(lái)確定。發(fā)送/接收時(shí)鐘頻率與波特率的關(guān)系為:發(fā)/接時(shí)鐘頻率=N.*發(fā)/收波特(其中 N=1,16,64)。返回上一級(jí)8.1.6 信號(hào)的調(diào)制與解調(diào)在進(jìn)行遠(yuǎn)程數(shù)據(jù)通信時(shí),將二進(jìn)制信號(hào)變換成適合電話網(wǎng)傳輸?shù)哪M信號(hào),這一過(guò)程稱為“調(diào)制”,對(duì)應(yīng)完成此過(guò)程的設(shè)備為調(diào)制器(Modulator);接收時(shí),將在電話網(wǎng)上傳輸

15、的音頻模擬信號(hào)進(jìn)行還原成原來(lái)的數(shù)字信號(hào),這一過(guò)程稱為“解調(diào)”,對(duì)應(yīng)完成此過(guò)程的設(shè)備為解調(diào)器(Demodulator)。大多數(shù)情況下,串行通信是雙向的,調(diào)制器和解調(diào)器一般合在一個(gè)裝置中,這就是調(diào)制解調(diào)器MODEM。返回上一級(jí)調(diào)制解調(diào)器的類型按照調(diào)制技術(shù)分為:振幅鍵控(ASK)、頻移鍵控(FSK)和相移鍵控(PSK)。當(dāng)波特率小于300時(shí),一般采用頻移鍵控(FSK)調(diào)制方式。其基本原理是把“0”和“1”的兩種數(shù)字信號(hào)分別調(diào)制成不同頻率的兩個(gè)音頻信號(hào)返回上一級(jí)8.1.7 串行接口的基本結(jié)構(gòu)和基本功能基本功能:1、實(shí)現(xiàn)串行與并行數(shù)據(jù)之間的相互變換2、根據(jù)串行通信協(xié)議完成串行數(shù)據(jù)的格式化在異步通信方式發(fā)

16、送時(shí)自動(dòng)添加啟/停位,接收時(shí)自動(dòng)刪除啟/停位等。面向字符的同步方式數(shù)據(jù)格式化時(shí),需要在數(shù)據(jù)塊前加同步字符,數(shù)據(jù)塊后加校驗(yàn)字符。3、具有出錯(cuò)檢測(cè)電路在發(fā)送時(shí),接口電路自動(dòng)生成奇偶校驗(yàn)位;在接收時(shí),接口電路檢查字符的奇偶校驗(yàn)位或其他校驗(yàn)碼,用來(lái)指示接收的數(shù)據(jù)是否正確。返回上一級(jí)1異步串行通信接口異步通信接口基本結(jié)構(gòu)圖返回上一級(jí)發(fā)送移位寄存器及發(fā)送控制邏輯:發(fā)送數(shù)據(jù)寄存器的數(shù)據(jù)并行送入發(fā)送移位寄存器,然后在發(fā)送時(shí)鐘控制下,將裝配好的數(shù)據(jù)逐位發(fā)送出去。接收移位寄存器及接收控制邏輯:在接收時(shí)鐘控制下,將串行數(shù)據(jù)輸入線上的串行數(shù)據(jù)逐位接收并移入接收移位寄存器。當(dāng)移位寄存器接收到規(guī)定的數(shù)據(jù)位后,將數(shù)據(jù)并行送

17、往接收數(shù)據(jù)寄存器。返回上一級(jí)發(fā)送數(shù)據(jù)寄存器:從CPU數(shù)據(jù)總線接收并行數(shù)據(jù)。接收數(shù)據(jù)寄存器:接收從接收移位寄存器送來(lái)的并行輸入數(shù)據(jù),再將數(shù)據(jù)送往CPU。數(shù)據(jù)總線緩沖器:它是CPU與數(shù)據(jù)寄存器(發(fā)送和接收)交換數(shù)據(jù)的雙向緩沖器,用來(lái)傳遞CPU對(duì)端口的控制信息、雙向傳遞數(shù)據(jù)、向CPU提供狀態(tài)信息。返回上一級(jí)常見(jiàn)的差錯(cuò)狀態(tài)位奇偶校驗(yàn)錯(cuò):接收器按照事先約定的方式(奇校驗(yàn)、偶校驗(yàn)或無(wú)校驗(yàn))進(jìn)行奇偶校驗(yàn),如果有錯(cuò)誤則將奇偶校驗(yàn)狀態(tài)位置位“1”。幀出錯(cuò):在異步串行通信中,一幀信息由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位(可選)和停止位組成。若接收端在任一字符的后面沒(méi)有檢測(cè)到規(guī)定的停止位,接收器便判為幀錯(cuò)誤,差錯(cuò)檢測(cè)邏輯將

18、使幀錯(cuò)誤狀態(tài)位置位。溢出錯(cuò):在接收數(shù)據(jù)過(guò)程中,當(dāng)接收移位寄存器接收到一個(gè)正確字符時(shí),就會(huì)把移位寄存器的數(shù)據(jù)并行裝入數(shù)據(jù)寄存器中,CPU要及時(shí)讀取這個(gè)數(shù)據(jù)。如果CPU不能及時(shí)將接收數(shù)據(jù)寄存器的數(shù)據(jù)讀走,下一個(gè)字符數(shù)據(jù)又被送入數(shù)據(jù)輸入寄存器,因此將上一個(gè)數(shù)據(jù)覆蓋,從而發(fā)生了溢出錯(cuò)誤,差錯(cuò)檢測(cè)邏輯會(huì)把相應(yīng)的溢出錯(cuò)標(biāo)志位置位。返回上一級(jí)2同步串行通信的接口同步通信端口基本結(jié)構(gòu)圖返回上一級(jí)FIFO(先進(jìn)先出緩沖器):它是由多個(gè)寄存器組成,因此發(fā)送時(shí),CPU一次可以將幾個(gè)字符預(yù)先裝入;接收時(shí)允許CPU一次連續(xù)取出幾個(gè)字符。發(fā)送FIFO:它接收CPU數(shù)據(jù)總線送來(lái)的并行數(shù)據(jù)。輸出移位寄存器:它從發(fā)送FIFO取

19、得并行數(shù)據(jù),以發(fā)送時(shí)鐘的速率串行發(fā)送數(shù)據(jù)信息。CRC發(fā)生器:它從發(fā)送數(shù)據(jù)流信息中獲得CRC校驗(yàn)碼。CRC校驗(yàn)器:它從接收數(shù)據(jù)流信息中提取CRC校驗(yàn)碼,并與接收到的校驗(yàn)碼相比較。 返回上一級(jí)輸入移位寄存器:它從串行輸入線上以時(shí)鐘分離器提取出來(lái)的時(shí)鐘速率接收串行數(shù)據(jù)流,每接收完一個(gè)字符數(shù)據(jù)將其送往接收FIFO。接收FIFO:接收輸入移位寄存器送來(lái)的并行輸入數(shù)據(jù),CPU從它取走接收數(shù)據(jù)。總線緩沖器:它是CPU與FIFO(發(fā)送和接收)交換數(shù)據(jù)的雙向緩沖器,用來(lái)傳遞CPU端口的控制信息、字符數(shù)據(jù)和向CPU提供狀態(tài)信息。時(shí)鐘分離器和鎖相環(huán):用來(lái)從串行輸入數(shù)據(jù)中提取時(shí)鐘信號(hào),以保證接收時(shí)鐘與發(fā)送時(shí)鐘的同頻同

20、相。返回上一級(jí)8.2 串行接口標(biāo)準(zhǔn)數(shù)據(jù)終端設(shè)備DTE與數(shù)據(jù)通信設(shè)備DCE串行連接時(shí)要解決兩個(gè)問(wèn)題:一、雙方要共同遵循物理接口標(biāo)準(zhǔn),包括連接電纜的機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程的定義,它屬于ISOS OSI七層參考模型中的物理層。二、按接口標(biāo)準(zhǔn)設(shè)進(jìn)行串行通信的接口電路。8.2.1 EIA-RS-232C接口標(biāo)準(zhǔn)8.2.2 RS-422、RS-423、RS-485接口標(biāo)準(zhǔn)返回上一級(jí)8.2.1 EIA-RS-232C接口標(biāo)準(zhǔn)RS-232C標(biāo)準(zhǔn)(協(xié)議)是美國(guó)EIA(電子工業(yè)協(xié)會(huì))于1969年公布的通信協(xié)議。適合數(shù)據(jù)傳輸速率020000bit/s范圍內(nèi)的通信。返回上一級(jí)1電氣特性(1)電平規(guī)定數(shù)據(jù)發(fā)

21、送TxD和數(shù)據(jù)接收RxD的信號(hào)電平:邏輯1(MARK)=-3-15V,典型值為-12V;邏輯0(SPACE)=+3+15V,典型值為+12V。RTS、CTS、DTR和DCD控制和狀態(tài)信號(hào)電平:信號(hào)有效(接通,ON狀態(tài))=+3+15V,典型值為+12V;信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài))=-3-15V,典型值為-12V。返回上一級(jí)(2)電平轉(zhuǎn)換必須在EIA-RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的轉(zhuǎn)換。目前較廣泛地使用集成電路轉(zhuǎn)換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平的轉(zhuǎn)換,而MC1489、SN75154芯片可實(shí)現(xiàn)EIA電平到TTL電平的轉(zhuǎn)換。MAX232芯片可

22、完成TTLEIA雙向電平轉(zhuǎn)換。返回上一級(jí)1488和1489的內(nèi)部結(jié)構(gòu)和引腳MC1488的引腳(2),(4,5),(9,10)和(12,13)接TTL電平輸入,引腳3,6,8,11輸出端接EIA-RS-232C。MC1489的1,4,10,13腳接EIA電平輸入,而3,6,8,11腳接TTL輸出返回上一級(jí)串行接口電路中的主芯片UART,處理的是TTL邏輯電平EIA-RS-232C連接器,處理的是EIA電平返回上一級(jí)(3)傳輸距離及通信速率RS-232C接口標(biāo)準(zhǔn)的電氣特性中規(guī)定,驅(qū)動(dòng)器的負(fù)載電容應(yīng)小于2500pF,直接傳送最大距離是15m,傳輸數(shù)據(jù)速率不能高于20kbit/s。返回上一級(jí)2接口信號(hào)

23、功能RS-232并未定義連接器的物理特性,因此,出現(xiàn)了DB-25、DB-15和DB-9各種類型的連接器DB-25/DB-9型連接器返回上一級(jí)RS-232C標(biāo)準(zhǔn)接口信號(hào)返回上一級(jí)常用聯(lián)絡(luò)控制信號(hào)線請(qǐng)求發(fā)送RTS(Request to send):表示DTE請(qǐng)求DCE發(fā)送數(shù)據(jù)。允許發(fā)送CTS(Clear to send):表示DCE準(zhǔn)備好接收DTE發(fā)來(lái)的數(shù)據(jù),是對(duì)請(qǐng)求發(fā)送信號(hào)RTS的響應(yīng)信號(hào)。這對(duì)RTS/CTS請(qǐng)求應(yīng)答聯(lián)絡(luò)信號(hào)適用于半雙工方式,用于MOEDM系統(tǒng)中作發(fā)送/接收方式之間的切換。返回上一級(jí)數(shù)據(jù)裝置準(zhǔn)備好DSR(Data Set Ready):由DCE發(fā)至DTE,表示DCE已與通信信道相

24、連接。數(shù)據(jù)終端準(zhǔn)備好DTR(Data Terminal Ready):由DTE發(fā)至DCE,有效(ON狀態(tài))時(shí)表明數(shù)據(jù)終端可以使用。這對(duì)信號(hào)有效只表示設(shè)備已準(zhǔn)備好,可以使用。所以,這兩個(gè)信號(hào)可以直接連到電源上,一上電就立即變得有效。 返回上一級(jí)接收線信號(hào)檢出RLSD(Received Line Signal Detection):表示DCE已接通通信信道,通知DTE準(zhǔn)備接收數(shù)據(jù)。此線也叫數(shù)據(jù)載波檢出DCD(Data Carrier Detection)線。振鈴指示RI(Ringing):當(dāng)MODEM檢測(cè)到線路上有振鈴呼叫信號(hào)時(shí),使該信號(hào)有效,通知終端,已被呼叫,每次振鈴期間RI為接通狀態(tài),而在兩

25、次振鈴期間,則為斷開(kāi)狀態(tài)。返回上一級(jí)數(shù)據(jù)發(fā)送與接收線發(fā)送數(shù)據(jù)TxD(Transimitted Data):通過(guò)TxD線數(shù)據(jù)終端設(shè)備串行發(fā)送數(shù)據(jù)到DCE。接收數(shù)據(jù)RxD(Received Data):通過(guò)RxD線數(shù)據(jù)終端設(shè)備接收從DCE送來(lái)的串行數(shù)據(jù)。返回上一級(jí)地線保護(hù)地PG:可接機(jī)器外殼,需要時(shí)可以直接接地,也可以不接。信號(hào)地SG:這是其它各信號(hào)電壓的參考點(diǎn)。無(wú)論電纜如何連接,這條線必不可少。返回上一級(jí)信號(hào)線的連接(1)在15m以上的遠(yuǎn)距離通信時(shí),一般要加調(diào)制解調(diào)器MODEM。若在通信雙方的MODEM之間采用專用線進(jìn)行通信則只要使用28號(hào)信號(hào)線進(jìn)行聯(lián)絡(luò)與控制;若采用普通電話線進(jìn)行通信,則還要增

26、加RI(22)和DTR(20)兩個(gè)信號(hào)線進(jìn)行聯(lián)絡(luò)。返回上一級(jí)(2)近距離通信時(shí),不采用調(diào)制解調(diào)器MODEM,又稱零MODEM方式。最簡(jiǎn)單的情況,在通信中只要使用3根線(發(fā)送線、接收線、信號(hào)地線)便可實(shí)現(xiàn)全雙工異步通信。返回上一級(jí)(3)如果在直接連接時(shí),需要考慮RS-232C的聯(lián)絡(luò)控制信號(hào),則采用零MODEM方式的標(biāo)準(zhǔn)連接方法,又稱為雙交叉環(huán)回接口。返回上一級(jí)8.2.2 RS-422、RS-423、RS-485接口標(biāo)準(zhǔn)EIA-RS-232C接口標(biāo)準(zhǔn)規(guī)定,最大傳輸距離為15m,最高數(shù)據(jù)傳輸速率不高于20kbit/s。為了解決傳輸距離不夠遠(yuǎn)、傳輸速率不夠快的問(wèn)題,EIA在RS-232C的基礎(chǔ)上,制訂

27、了更高性能的串行接口標(biāo)準(zhǔn)。返回上一級(jí)RS-422A標(biāo)準(zhǔn)RS-422A標(biāo)準(zhǔn)是一種以平衡方式傳輸?shù)臉?biāo)準(zhǔn)。平衡,是指雙端發(fā)送和雙端接收,所以,傳送信號(hào)要用兩條線AA和BB,發(fā)送端和接收端分別采用平衡發(fā)送器和差動(dòng)接收器。返回上一級(jí)RS-422A標(biāo)準(zhǔn)的電氣特性對(duì)邏輯電平的定義是根據(jù)兩條傳線之間的電位差值來(lái)決定 :當(dāng)AA電平比BB電平低-2V時(shí)表示邏輯“1”;當(dāng)AA線電平比BB線電平高+2V時(shí)表示邏輯“0”。RS-422A電路通過(guò)平衡發(fā)送器把邏輯電平變換成電位差,完成始端的信息傳送;通過(guò)差動(dòng)接收器把電位差變成邏輯電平,實(shí)現(xiàn)終端的信息接收。返回上一級(jí)RS-422A標(biāo)準(zhǔn)抗共模干擾的能力強(qiáng),最大數(shù)據(jù)速率可達(dá)10

28、Mbit(傳送15m時(shí))。若傳輸速率降到90kbit/s時(shí),則最大距離可達(dá)1200m。該標(biāo)準(zhǔn)規(guī)定電路中只許有1個(gè)發(fā)送器,可有多個(gè)接收器,允許驅(qū)動(dòng)器輸出為+2V+6V,接收器輸入電平可以低到+200mV。為了實(shí)現(xiàn)RS-422A標(biāo)準(zhǔn)的連接,許多公司推出了平衡驅(qū)動(dòng)器/接收器集成芯片,如MC3487/3486、SN75174/75175等。返回上一級(jí)2RS-423A標(biāo)準(zhǔn)RS-423A標(biāo)準(zhǔn)是非平衡方式傳輸?shù)?。即單端線傳送信號(hào),規(guī)定信號(hào)參考電平為地。該標(biāo)準(zhǔn)規(guī)定電路中只允許有1個(gè)單端發(fā)送器,但可有多個(gè)接收器。因此,允許在發(fā)送器和接收器之間有一個(gè)電位差。返回上一級(jí)標(biāo)準(zhǔn)規(guī)定的邏輯“1”電壓必須超過(guò)4V,但不能高

29、于6V;邏輯“0”電壓必須低于-4V,但不能低于-6V。RS-423A標(biāo)準(zhǔn)由于采用差動(dòng)接收,提高了抗共模干擾的能力,因而與RS-232C相比,具有傳輸距離更遠(yuǎn)、傳輸速率更快,當(dāng)傳輸距離為90m時(shí),最大數(shù)據(jù)速率可為100kbit/s,若降至1kbit/s時(shí),傳輸距離為1200m。返回上一級(jí)3RS-485接口標(biāo)準(zhǔn)RS-485是一種平衡傳輸方式的串行接口標(biāo)準(zhǔn),和RS-422A兼容,且擴(kuò)展了其功能,是一個(gè)多發(fā)送器的標(biāo)準(zhǔn),允許一個(gè)發(fā)送器驅(qū)動(dòng)多個(gè)負(fù)載設(shè)備。RS-485的共線電路結(jié)構(gòu)是在一對(duì)平衡傳輸線的兩端都配置終端電阻,其發(fā)送器、接收器、組合收發(fā)器可掛在平衡傳輸線上的任何位置。返回上一級(jí)RS-485標(biāo)準(zhǔn)抗

30、干擾能力強(qiáng),傳輸速率高,傳送距離遠(yuǎn)。RS-485允許平衡電纜上連接32個(gè)發(fā)送器/接收器對(duì),目前已在許多方面得到應(yīng)用,尤其是在多點(diǎn)通信系統(tǒng)中。為了實(shí)現(xiàn)RS-485標(biāo)準(zhǔn)串行傳送,可采用大規(guī)模集成芯片,如MAXIM公司的MAX485/491芯片。返回上一級(jí)8.3 異步通信接口IBM-PC機(jī)系統(tǒng)可配有同步和異步通信接口,一般系統(tǒng)只配置了異步通信接口,系統(tǒng)提供有兩個(gè)通信端口:COM1和COM2。PC/XT異步通信適配器提供RS-232C標(biāo)準(zhǔn)的EIA電壓接口和20mA電流環(huán)接口兩種操作方式。8.3.1 異步通信適配器的組成8.3.2 INS 8250的結(jié)構(gòu)和外部特性8.3.3 INS8250內(nèi)部寄存器及其

31、編程方法8.3.4 INS 8250應(yīng)用實(shí)例返回上一級(jí)8.3.1 異步通信適配器的組成返回上一級(jí)1電平轉(zhuǎn)換INS 8250芯片處理電平為TTL電平,要與25芯連接器相連接,必須經(jīng)過(guò)電平轉(zhuǎn)換。前圖中,INS 8250和連接器的信號(hào)線是分別通過(guò)了電平轉(zhuǎn)換器SN75150和SN75154才送到對(duì)方的。返回上一級(jí)2地址譯碼電路系統(tǒng)地址總線低10位(A0A9)用于端口地址譯碼,其中高位地址(A3A9)經(jīng)譯碼器U2產(chǎn)生選片信號(hào),送到8250的CS2端;低位地址(A0A2)直接送到8250的(A0A2)端,作為芯片內(nèi)部寄存器的選擇線。I/O地址譯碼部分是由8輸入端與非門U2及反相器U3組成的??诘刂酚袃蓚€(gè),

32、由跳接開(kāi)關(guān)U15的J10和J12端子進(jìn)行切換。中斷請(qǐng)求由跳線開(kāi)關(guān)U15控制連接IRQ3/IRQ4 。返回上一級(jí)8.3.2 INS 8250的結(jié)構(gòu)和外部特性INS 8250的外部引腳及內(nèi)部結(jié)構(gòu)圖返回上一級(jí)片選信號(hào)CS0=1,CS1=1,CS2=0時(shí),選中INS 8250芯片,并由A0A2選擇訪問(wèn)哪個(gè)內(nèi)部寄存器。DISTR或DISTR和DOSTR或DOSTR,讀寫(xiě)控制信號(hào)兩對(duì)。DDIS,(數(shù)據(jù)總線)驅(qū)動(dòng)器禁止信號(hào)引腳,在CPU從8250讀取數(shù)據(jù)時(shí)為低電平,其它時(shí)間為高電平,禁止外部收發(fā)器對(duì)系統(tǒng)總線的驅(qū)動(dòng),PC/XT異步適配器未使用此信號(hào)。返回上一級(jí)中斷請(qǐng)求引腳INTRPT,OUT1和OUT2兩個(gè)輸

33、出引腳用來(lái)控制INTRPT的輸出。XTAL1 XTAL2 ,輸入外部晶體振蕩電路產(chǎn)生的1.8432MHz信號(hào),作為8250的基準(zhǔn)工作時(shí)鐘。BAUDOUT,輸出外部輸入的基準(zhǔn)時(shí)鐘經(jīng)內(nèi)部波特率發(fā)生器(分頻器)分頻后產(chǎn)生的發(fā)送時(shí)鐘。RCLK可接收由外部提供的接收時(shí)鐘信號(hào)。MR,主復(fù)位端,接系統(tǒng)RESET信號(hào)。返回上一級(jí)8.3.3 INS8250內(nèi)部寄存器及其編程方法8250芯片只有3根地址選擇線A0A2,而內(nèi)部有10個(gè)可訪問(wèn)的寄存器,所以有些寄存器的端口地址必須重復(fù)8250內(nèi)部寄存器地址返回上一級(jí)1波特率因子寄存器(DLL/DLH)8250芯片串行數(shù)據(jù)傳輸?shù)乃俾适怯刹ㄌ芈室蜃蛹拇嫫鱀LL/DLH控制

34、,在初始化時(shí)將選用的波特率因子值的高、低字節(jié)分別寫(xiě)入DLH和DLL。外接1.8432MHz基準(zhǔn)時(shí)鐘,通過(guò)除以波特率因子寄存器給定的分頻值,在8250內(nèi)部產(chǎn)生不同的波特率,通過(guò)BAUDOUT引腳輸出接到RCLK端,控制收發(fā)數(shù)據(jù)的傳輸速率。即分頻值的計(jì)算公式是:波特率因子=1843200(16*波特率)返回上一級(jí)波特率因子與波特率對(duì)照表返回上一級(jí)若設(shè)定通信波特率為1200BPS,則波特率因子值為00H(高8位)和60H(低8位),其裝入程序段為:MOV DX,3FBH ;置LCR口地址,DLAB=1MOV AL,80HOUT DX,ALMOV DX,3F8H ;DLL的口地址MOV AL,60H

35、;波特率因子低字節(jié)MOV DX,3F9H ;DLH的口地址MOV AL,00H ;波特率因子高字節(jié)OUT DX,AL例:設(shè)置INS8250波特率因子寄存器2通信線路控制寄存器(LCR)主要用來(lái)指定異步通信數(shù)據(jù)格式,即字符長(zhǎng)度、停止位位數(shù)、奇偶校驗(yàn)。LCR的最高位DLAB用來(lái)指定允許訪問(wèn)波特率因子寄存器。內(nèi)容不僅可以寫(xiě)入而且可以讀出。返回上一級(jí)D0D1位:字長(zhǎng)選擇,用來(lái)設(shè)置數(shù)據(jù)有效位數(shù)。WLS1WLS0=00,為5位;WLS1WLS0=01,為6位;WLS1WLS0=10,為7位;WLS1WLS0=11,為8位。D2位:停止位選擇,用來(lái)設(shè)置停止位位數(shù)。STB=0,為1位;STB=1,為1位(字符

36、長(zhǎng)為5位時(shí));或STB=1,為2位(字符長(zhǎng)度為6,7或8位時(shí))。D3位:奇偶校驗(yàn)允許位,用來(lái)設(shè)置是否要奇偶校驗(yàn)。PEN=0,不要校驗(yàn);PEN=1,要校驗(yàn)。返回上一級(jí)D4位:偶校驗(yàn)選擇,用來(lái)設(shè)置偶校驗(yàn)或奇校驗(yàn)EPS=0,要奇校驗(yàn);EPS=1,要偶校驗(yàn)。D5位:附加奇偶標(biāo)志位選擇。SP=0,不附加;SP=1,附加1位。D6位:中止設(shè)定。指定發(fā)正常信號(hào)還是連續(xù)發(fā)空號(hào)(邏輯0)。SB=0,正常;SB=1,中止。D7位:波特率因子寄存器訪問(wèn)允許控制位。DLAB=1,允許訪問(wèn)波特率因子寄存器;DLAB=0,訪問(wèn)其他寄存器。返回上一級(jí)PEN=1 SP=1時(shí),說(shuō)明在奇偶校驗(yàn)位和停止位之間插入一位奇偶標(biāo)志位:“

37、0”,采用偶校驗(yàn);“1”,則采用奇校驗(yàn)。作用是發(fā)送設(shè)備把采用何種奇偶校驗(yàn)方式通過(guò)數(shù)據(jù)流告訴接收設(shè)備例,設(shè)發(fā)送數(shù)據(jù)字長(zhǎng)為7位,1位停止位,偶校驗(yàn),其程序段為: MOV DX,3FBH ;LCR口地址 MOV AL,00011010B ;LCR的內(nèi)容,數(shù)據(jù)格式參數(shù) OUT DX,AL返回上一級(jí)3通信線路狀態(tài)寄存器(LSR)表示數(shù)據(jù)接收和數(shù)據(jù)發(fā)送時(shí)8250的狀態(tài)。若出錯(cuò),則指出出錯(cuò)的類型。CPU可以采用查詢方式查詢這些狀態(tài),也可以采用中斷方式獲得出錯(cuò)的原因。對(duì)LSR不僅可讀,而且可寫(xiě)(除6位外),寫(xiě)LSR是為了人為地設(shè)置某些錯(cuò)誤狀態(tài),供系統(tǒng)自檢時(shí)使用。返回上一級(jí)D0位:接收數(shù)據(jù)準(zhǔn)備好(接收緩沖器滿)

38、。DR=1,表示接收器已接收到一個(gè)數(shù)據(jù)字符,并且接收移位寄存器的內(nèi)容已送到接收緩沖器中;當(dāng)CPU從接收緩沖器讀走一個(gè)數(shù)據(jù)時(shí),DR位自動(dòng)置“0”。D1D3位:出錯(cuò)標(biāo)志位。OE溢出錯(cuò)標(biāo)志位:PE 奇偶校驗(yàn)出錯(cuò)標(biāo)志位:FE 幀出錯(cuò)標(biāo)志位:返回上一級(jí)D4位:中止識(shí)別指示。BI=1,指示發(fā)送設(shè)備進(jìn)入中止?fàn)顟B(tài);發(fā)送端發(fā)送正常時(shí),BI=0。D5位:發(fā)送保持器空。THRE=1,一旦數(shù)據(jù)從發(fā)送保持寄存器送到發(fā)送移位寄存器,發(fā)送保持寄存器就變?yōu)榭眨划?dāng)CPU將數(shù)據(jù)寫(xiě)入發(fā)送保持器中,THRE自動(dòng)置“0”。D6位:發(fā)送移位寄存器空(只讀)。TSRE=1,表示數(shù)據(jù)從發(fā)送移位寄存器送到發(fā)送數(shù)據(jù)上;當(dāng)發(fā)送保持寄存器的內(nèi)容被送

39、入發(fā)送移位寄存器時(shí),TSRE自動(dòng)置“0”。返回上一級(jí)START:MOVDX,3FDH;LSR口地址 INAL,DX;讀取LSR的內(nèi)容TESTAL,00011110B;查詢有無(wú)數(shù)據(jù)接收錯(cuò)誤JNZERR;有錯(cuò),轉(zhuǎn)出錯(cuò)處理TESTAL,01H;無(wú)錯(cuò),查詢接收數(shù)據(jù)是否;準(zhǔn)備好,DR=1?JNZRECEIVE;已準(zhǔn)備好,則轉(zhuǎn)到接收程序TESTAL,20H;未準(zhǔn)備好,再查發(fā)送保持;寄存器是否空,THRE=1?JNZTRANS;已空,則轉(zhuǎn)到發(fā)送程序JMPSTART;不空,循環(huán)等待ERR: TRANS : RECEIVE: 例:利用LSR的狀態(tài)位進(jìn)行收發(fā)數(shù)據(jù)處理4中斷允許寄存器(IER)控制中斷源提出的中斷請(qǐng)

40、求被允許還是被禁止。該寄存器控制了8250的4個(gè)中斷,若對(duì)應(yīng)位置“1”,則允許相應(yīng)的中斷請(qǐng)求;若對(duì)應(yīng)位置“0”,就禁止相應(yīng)的中斷請(qǐng)求。返回上一級(jí)D0位:ERBFI=1,允許接收緩沖器滿中斷;ERBFI=0,禁止接收緩沖器滿中斷D1位:ETBEI=1,允許發(fā)送保持寄存器空中斷;ETBEI=0,禁止發(fā)送保持寄存器空中斷D2位:ELSI=1, 允許接收數(shù)據(jù)出錯(cuò)中斷;ELSI=0,禁止接收數(shù)據(jù)出錯(cuò)中斷D3位:EMSI=1,允許調(diào)制解調(diào)器狀態(tài)改變中斷;EMSI=0,禁止調(diào)制解調(diào)器狀態(tài)改變中斷D4D7位:標(biāo)志位,D4D7=0返回上一級(jí)5中斷識(shí)別寄存器(IIR)8250內(nèi)部設(shè)有4個(gè)中斷優(yōu)先級(jí),按從高到低的順

41、序排列為:接收數(shù)據(jù)出錯(cuò)中斷、接收緩沖器滿中斷、發(fā)送保持寄存器空中斷、MODEM控制信號(hào)狀態(tài)改變引起的中斷。8250內(nèi)部設(shè)置了中斷識(shí)別寄存器IIR,用來(lái)保存優(yōu)先級(jí)最高的中斷類型編碼,直到該中斷請(qǐng)求被CPU響應(yīng)并服務(wù)之后,才能接受其它的中斷請(qǐng)求。IIR是只讀寄存器,它的內(nèi)容隨中斷源而改變。最高5位為標(biāo)志位,規(guī)定為低電平“0”。返回上一級(jí)D0位:IP=0,表示還有其它中斷等待處理;IP=1,表示無(wú)其它中斷等待處理。D1D2位:中斷類型標(biāo)識(shí)碼ID1ID2,表示申請(qǐng)中斷的中斷源的中斷類型編碼。ID1ID2=00時(shí),調(diào)制解調(diào)器狀態(tài)改變引起的中斷ID1ID2=01時(shí),發(fā)送保持寄存器空(THRE=1)中斷ID

42、1ID2=10時(shí),接收緩沖器滿(RBFI=1)中斷ID1ID2=11時(shí),接收數(shù)據(jù)出錯(cuò)(包括OE=1,PE=1,F(xiàn)E=1,BI=1)中斷返回上一級(jí)6調(diào)制解調(diào)控制寄存器(MCR)調(diào)制解調(diào)控制寄存器(MCR)設(shè)置對(duì)MODEM的聯(lián)絡(luò)控制信號(hào)和芯片自檢返回上一級(jí)D0位:D0=1,數(shù)據(jù)終端準(zhǔn)備好(DTR=1)有效D1位:D1=1,請(qǐng)求發(fā)送有效(RTS=1)D2位:D2=1,使OUT1輸出有效(OUT1=1),未使用D3位:D3=1,中斷控制,為使8250能發(fā)出中斷控制信號(hào),此位必須置“1”(OUT2=1)D4位:LOOP位是供8250本身自檢診斷而設(shè)置的。當(dāng)這位置“1”時(shí),8250處于診斷方式。在正常通信

43、時(shí),LOOP位置“0”。返回上一級(jí)若要使MCR的DTR、 RTS有效,OUT1、OUT2以及LOOP無(wú)效,則可用下程序 MOV DX,3FCH;MCR口地址MOV AL,00000011B;MCR的控制字OUT DX,AL若要自發(fā)自收進(jìn)行診斷,則程序段為: MOV DX,3FCH;MCR口地址MOV AL,00010011B;LOOP位置“1”O(jiān)UT DX,AL例:設(shè)置MCR7MODEM狀態(tài)寄存器(MSR)MODEM狀態(tài)寄存器用來(lái)檢測(cè)和記錄來(lái)自MODEM的聯(lián)絡(luò)控制信號(hào)及其狀態(tài)的變化返回上一級(jí)MSR的低4位表示來(lái)自MODEM聯(lián)絡(luò)控制信號(hào)狀態(tài)的改變情況。任意一位為“1”,且在中斷允許時(shí)(IER中D

44、3=1),均產(chǎn)生MODEM狀態(tài)中斷。MSR的高4位,分別表示收到了來(lái)自MODEM的控制信號(hào),供CPU進(jìn)行處理。返回上一級(jí)8發(fā)送保持寄存器(THR)發(fā)送時(shí),CPU首先將待發(fā)送的字符寫(xiě)到8250的發(fā)送保持寄存器THR中,然后進(jìn)入發(fā)送移位寄存器,在發(fā)送時(shí)鐘的作用下,從SOUT引腳輸出。返回上一級(jí)接收緩沖寄存器(RBR)接收時(shí),串行數(shù)據(jù)在接收時(shí)鐘作用下,從SIN引腳先輸入到接收移位寄存器RSR,然后由RSR并行輸入到接收緩沖器RBR,一旦RBR變滿,將LSR的DR位置“1”,產(chǎn)生中斷請(qǐng)求,要求CPU讀取數(shù)據(jù)字符。返回上一級(jí)8.3.4 INS 8250應(yīng)用實(shí)例異步通信編程一般有三個(gè)部分:初始化串行通信口

45、、發(fā)送一個(gè)字符以及接收一個(gè)字符。返回上一級(jí)1初始化串行通信口COM1初始化串行通信口COM1(端口基址3F8H):確定數(shù)據(jù)傳輸幀格式、確定傳輸波特率以及確定8250操作方式。8250操作方式:自發(fā)自收的循環(huán)反饋通信方式程序查詢方式傳送中斷方式傳送返回上一級(jí)初始化方法有兩種:一種是按步驟分別對(duì)線路控制寄存器、波特率因子寄存器和MODEM的控制寄存器等進(jìn)行參數(shù)寫(xiě)入操作,其參數(shù)是在程序中由指令分散設(shè)定的;二是專門編制一個(gè)初始化串行口的子程序,其初始化參數(shù)作為子程序的入口參數(shù)集中給出,可由調(diào)用者按要求設(shè)置不同參數(shù)來(lái)完成相應(yīng)的初始化。返回上一級(jí)入口參數(shù):AL=初始化參數(shù)其中,D4D0各位的定義與線路控制

46、寄存器相對(duì)應(yīng)的位定義相同,而D7D5的各位則為波特率選擇。返回上一級(jí);波特率因子表;D7D6D5 波特率BAUD-TABLEDW1047;0 0 0 110DW768;0 0 1 150DW384;0 1 0 300DW192;0 1 1 600DW96;1 0 0 1200DW48;1 0 1 2400DW24;1 1 0 4800DW12;1 1 1 9600SERIAL-INITPROC NEARMOVAH,AL;入口參數(shù)保存到AHMOVDX,3FBH;線路控制寄存器端口MOVAL,80H;置DLAB=1OUTDX,ALMOVDL,AH;獲取波特率因子MOVCL,4ROLDL,CL;波特

47、率因子移低4位串行口初始化的子程序下頁(yè)上頁(yè)ANDDX,0EH;因子值乘2,存放在DXMOVDI,OFFSET BAUD-TABLEADDDI,DX;DI為波特率因子表索引MOVDX,3F9H;波特率因子高字節(jié)端口MOVAL,CS:DI+1OUTDX,AL ;寫(xiě)入因子高字節(jié)MOVDX,3F8H ;波特率因子低字節(jié)端口MOVAL,CS:DI OUTDX,AL ;寫(xiě)入低字節(jié)MOVDX,3FBH ;線路控制寄存器端口MOVAL,AHANDAL,1FH ;保留數(shù)據(jù)格式參數(shù)OUTDX,AL ;寫(xiě)入數(shù)據(jù)格式MOVAL,0 ;屏蔽4種中斷源類型MOVDX,3F9H ;中斷允許寄存器端口OUTDX,AL ;采用

48、查詢I/ORET ;正常通信,返回SERIAL-INIT ENDP串行口初始化的子程序(續(xù))下頁(yè)上頁(yè)2查詢方式下的PC機(jī)間相互通信要求:在A機(jī)上敲鍵盤(pán)字符,并且在A機(jī)的屏幕上顯示該字符,然后通過(guò)串行口將該字符發(fā)送給B機(jī),并且也在B機(jī)上顯示,即實(shí)現(xiàn)A機(jī)與B機(jī)間通信,通信波特率為1200BPS。以敲擊字符“P”作為結(jié)束,(使用COM2端口)。分析:為了實(shí)現(xiàn)PC機(jī)間相互通信,兩機(jī)通過(guò)RS-232C的三根信號(hào)線(TXD、RXD、GND)進(jìn)行相連。為實(shí)現(xiàn)一端向另一端傳送數(shù)據(jù),采用查詢方式分別編寫(xiě)發(fā)送程序和接收程序。返回上一級(jí)查詢方式的PC機(jī)間通信程序流程圖返回上一級(jí)datasegmentdispdb t

49、ransmission start:,0ah,0dh,$DATA ENDSSTACK SEGMENT PARA STACK STACK DB 200 DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV DX,2FBH;置DLAB=1MOVAL,80HOUT DX,ALMOV DX,2F8H;置波特率因子寄存器MOV AL,60H;波特率因子低字節(jié)OUTDX,ALMOV DX,2F9HMOV AL,0;波特率因子高字節(jié)OUT D

50、X,ALMOV DX,2FBH;置線路控制寄存器MOV AL,0AH;數(shù)據(jù)位7位、停止位1位、奇校驗(yàn)OUT DX,AL查詢方式的PC機(jī)間相互通信發(fā)送程序下頁(yè)上頁(yè)MOV DX,2FCH;置MODEM控制寄存器MOV AL,02H;禁止中斷OUT DX,ALMOV DX,2F9H;置中斷允許寄存器MOV AL,0;屏蔽所有中斷OUTDX,ALMOV DX,OFFSET DISP;顯示發(fā)送提示信息MOV AH,9INT 21HCODE ENDSENDSTARTLOP: MOVDX,2FDH;讀線路狀態(tài)寄存器INAL,DXTESTAL,20H;測(cè)試發(fā)送保持寄存器空?JZ LOP;不空,則循環(huán)測(cè)試MOV

51、AH,1;讀取按鍵字符,并顯示INT 21HMOV DX,2F8H;發(fā)送該字符OUT DX,ALCMP AL,P;判斷按下字符“P”嗎?JZOVER;是,則結(jié)束JMPLOP;不是。繼續(xù)循環(huán)OVER:MOVAH,4CH;返回DOSINT 21H查詢方式的PC機(jī)間相互通信發(fā)送程序(續(xù))下頁(yè)上頁(yè)DATA SEGMENTRBUF DB 30 DUP(0)DISP DB RECEIVE START:,0AH,0DH,$ERROR DB RECEIVE ERROR!,0AH,0DH,$DATAENDSSTACK SEGMENT PARA STACK STACK DB 200 DUP(0)STACK END

52、SCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AXLEASI,RBUF;置接收緩沖區(qū)地址指針MOVDX,2FBH;置DLAB=1MOVAL,80HOUTDX,ALMOVDX,2F8H;置波特率因子寄存器MOVAL,60H;波特率因子低字節(jié)OUTDX,ALMOVDX,2F9HMOVAL,0;波特率因子高字節(jié)OUTDX,AL查詢方式的PC機(jī)間相互通信接收程序下頁(yè)上頁(yè)MOVDX,2FBH;置通信線路控制寄存器MOVAL,0AH;數(shù)據(jù)位7位、停止位1 位、奇校驗(yàn)OUTDX,A

53、LMOV DX,2FCH;置MODEM控制寄存器MOV AL,02;禁止中斷OUT DX,ALMOV DX,2F9H;置中斷允許寄存器MOV AL,0;屏蔽所有中斷OUT DX,ALMOV DX,OFFSET DISP;顯示接收提示信息MOV AH,9INT 21HMOV DX,2F8H;讀接收緩沖器內(nèi)容,不處理IN AL,DXLOP: MOV DX,2FDH;讀線路狀態(tài)寄存器IN AL,DXTESTAL,1EH;測(cè)試接收錯(cuò)誤?JNZ ER;有,轉(zhuǎn)錯(cuò)誤顯示TEST AL,01H;無(wú),則測(cè)試接收數(shù)據(jù)準(zhǔn)備好?JZ LOP查詢方式的PC機(jī)間相互通信接收程序(續(xù)1)下頁(yè)上頁(yè)MOV DX,2F8H;準(zhǔn)備

54、好則接收字符IN AL,DXAND AL,7FHCMP AL,P;判斷接收結(jié)束嗎?JZOVER;結(jié)束轉(zhuǎn)OVERMOV SI,AL;未結(jié)束則存入緩沖區(qū)INC SIMOVDL,AL;顯示該字符MOVAH,02INT 21HJMP LOPER:MOV DX,2F8H;清標(biāo)志位IN AL,DXMOV DX,OFFSET ERROR;顯示錯(cuò)誤信息MOV AH,9INT21HJMP LOPOVER:MOV DL,ALMOVAH,2INT 21HMOV AH,4CH;返回DOSINT 21HCODE ENDSEND START下頁(yè)上頁(yè)查詢方式的PC機(jī)間相互通信接收程序(續(xù)2)3中斷方式下的PC機(jī)間相互通信要

55、求:采用中斷方式在PC機(jī)間發(fā)送和接收信息。(使用COM2端口)發(fā)送方:在發(fā)送主程序中,接收鍵盤(pán)輸入信息,以回車符作為結(jié)束,鍵入信息并存入發(fā)送緩沖區(qū)中。能否發(fā)送是由用戶確認(rèn)后才能發(fā)送,發(fā)送過(guò)程中允許中斷,發(fā)送保持寄存器空引起中斷。接收方:以中斷方式接收發(fā)送方送來(lái)的字符信息。接收時(shí),使用接收數(shù)據(jù)準(zhǔn)備好方式中斷,將接收到的字符信息存入接收緩沖區(qū)中,并且在屏幕上顯示。返回上一級(jí)返回上一級(jí)DATA SEGMENTSBUF DB 100 DUP(?);發(fā)送緩沖區(qū)DISP1 DB 0DH,0AH,SEND MESSAGE:$DISP2 DB 0DH,0AH,TRANSMISSION MESSAGE?Y/N:

56、$SENDPTR DW ?ENDFLAG DB ?DATA ENDSCODE SEGMENTASSUMECS:CODE ,DS:DATASTART:MOVAX,DATAMOVDS,AXCLI;關(guān)中斷MOVAX,0;設(shè)置IRQ3中斷向量MOV ES,AXMOV DI ,0BH*4MOV AX,OFFSET SENDINTCLDSTOSW MOV AX,CS STOSW MOV AL,0FFH;屏蔽8259A所有中斷 OUT 21H,ALMOV DX,2FBH;置DLAB=1 MOV AL,80H OUT DX,AL MOV DX,2F8H;設(shè)置通信波特率2400BPS MOV AL,30H;波特

57、率因子低字節(jié) OUT DX,AL中斷方式PC機(jī)間相互通信發(fā)送程序下頁(yè)上頁(yè)MOV DX,2F9H MOV AL,0;波特率因子高字節(jié) OUT DX,ALMOV DX,2FBH;設(shè)置通信線路控制寄存器 MOV AL,0AH;數(shù)據(jù)位7位、停止位1位、奇校驗(yàn) OUT DX,AL MOV DX,2FCH;設(shè)置MODEM控制寄存器MOV AL,0BH;允許8250發(fā)中斷 OUT DX,AL MOV AL,0;置8259A中斷屏蔽寄存器 OUT 21H,AL;所有中斷源不屏蔽NEXT:MOV AL,0;置發(fā)送結(jié)束標(biāo)志為未結(jié)束 MOV ENDFLAG,AL;存入保護(hù)單元 MOV DX,2F9H;設(shè)置中斷允許寄

58、存器 MOV AL,0;禁止所有中斷 OUT DX,AL STI;CPU開(kāi)中斷 MOV SI,OFFSET SBUF;置發(fā)送緩沖區(qū)指針 MOV SENDPTR,SI;保護(hù)指針 MOV DX,OFFSET DISP1;顯示接收提示信息 MOV AH,9 INT 21HLP: MOV AH,1;接收鍵入字符并顯示 INT 21H MOV SI,AL;存入發(fā)送緩沖區(qū) INC SI;修改指針中斷方式PC機(jī)間相互通信發(fā)送程序(續(xù)1)下頁(yè)上頁(yè) CMP AL,0DH;判斷是回車鍵嗎? JNZ LP;不是,則繼續(xù)接收字符LEA DX,DISP2;顯示發(fā)送提示信息 MOV AH,9 INT 21HMOV AH,

59、1INT 21H CMP AL,N;判斷是“N”嗎? JZ NEXT;不是,則重新輸入 MOV SI,OFFSET SBUF;恢復(fù)發(fā)送緩沖區(qū)指針初值 MOV DX,2F9H;設(shè)置中斷允許寄存器 MOV AL,2;允許發(fā)送保持寄存器空中斷 OUT DX,ALWINT:HLT;等待中斷 MOV AL,ENDFLAG CMP AL,0FFH;判斷發(fā)送結(jié)束嗎? JZ NEXT;結(jié)束,轉(zhuǎn)重新接收 JMP WINT;未結(jié)束,等待發(fā)送SENDINT PROC NEAR;中斷方式發(fā)送子程序 PUSH DS;寄存器保護(hù) PUSH SI PUSH AX PUSH DX中斷方式PC機(jī)間相互通信發(fā)送程序(續(xù)2)下頁(yè)上

60、頁(yè)MOV AX,DATA MOV DS,AX MOV SI ,SENDPTR;發(fā)送緩沖區(qū)當(dāng)前指針 STI ;CPU開(kāi)中斷MOV AL,SI;發(fā)送字符 MOV DX,2F8H OUT DX,AL INC SI ;修改指針 MOV SENDPTR,SI CMPAL,0DH;判斷發(fā)送結(jié)束嗎? JZ SEND;結(jié)束轉(zhuǎn)SEND MOVAL,0;置未發(fā)送結(jié)束標(biāo)志 JMPNENDSEND:MOVAL,0FFH;置發(fā)送結(jié)束標(biāo)志NEND:MOVENDFLAG,AL MOVAL,20H;結(jié)束中斷(EOI) OUT20H,AL POPDX;恢復(fù)寄存器 POPAX POPSI POPDS IRETSENDINTEND

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論