版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章串行通信接口第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)合;◆理解串行接口芯片INS8250的內(nèi)部結(jié)構(gòu)及外部特性,掌握INS8250的內(nèi)部寄存器及編程方法;◆重點(diǎn)掌握利用INS8250實(shí)現(xiàn)查詢方式和中斷方式下的串行通信編程應(yīng)用;◆學(xué)會(huì)采用BIOS或DOS調(diào)用方式利用串行接口來(lái)發(fā)送/接收一個(gè)字符。第8章串行通信接口 學(xué)習(xí)目標(biāo):第8章串行通信接口本章目錄:
8.1串行通信的基本概念
8.2串行接口標(biāo)準(zhǔn)
8.3異步通信接口
8.4通信接口的BIOS調(diào)用及DOS調(diào)用
習(xí)題與思考題第8章串行通信接口本章目錄:8.1串行通信的基本概念
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串行通信的基本概念返回上一級(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.1串行通信的特點(diǎn)串行通信,就是使數(shù)據(jù)在一根傳輸線上8.1.2數(shù)據(jù)通信方式 串行通信中,數(shù)據(jù)通常是在兩個(gè)站(如終端和微機(jī))之間進(jìn)行傳送,按照同一時(shí)刻數(shù)據(jù)流的方向可分成三種基本傳送模式返回上一級(jí)8.1.2數(shù)據(jù)通信方式 串行通信中,數(shù)據(jù)通常是在兩個(gè)站(如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í)8.1.3串行通信方式根據(jù)時(shí)鐘控制方式可分為:返回上一級(jí)通信協(xié)議是指通信雙方的一種約定。約定中包括對(duì)數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、糾錯(cuò)方式以及控制字符定義等問題作出統(tǒng)一規(guī)定,通信雙方必須共同遵守。因此,也叫做通信控制規(guī)程,或稱傳輸控制規(guī)程,它屬于ISO’SOSI七層參考模型中的數(shù)據(jù)鏈路層。通信協(xié)議有兩類:異步協(xié)議和同步協(xié)議。 同步協(xié)議又有面向字符(Character--Oriented)和面向比特(Bit--Oriented)兩種。返回上一級(jí)通信協(xié)議是指通信雙方的一種約定。約定中包括對(duì)數(shù)據(jù)格式、同步方1.起止式異步協(xié)議 起止式異步協(xié)議的特點(diǎn)是一個(gè)字符一個(gè)字符傳輸,而且每傳送一個(gè)字符都是以起始位開始,以停止位結(jié)束,字符之間沒有固定的時(shí)間間隔要求。 靠起始位和停止位來(lái)實(shí)現(xiàn)字符的界定或同步,稱為起止式協(xié)議。 可靠性高;附加位,降低了傳輸效率返回上一級(jí)1.起止式異步協(xié)議 起止式異步協(xié)議的特點(diǎn)是一個(gè)字符一個(gè)字符異步傳輸模式的字符格式 1位起始位,5~8位數(shù)據(jù)
1位校驗(yàn)位(可無(wú))
1位、1.5位或2位的停止位返回上一級(jí)異步傳輸模式的字符格式 1位起始位,5~8位數(shù)據(jù)返回上一級(jí) 傳送時(shí),數(shù)據(jù)的低位在前,高位在后。比如要傳送一個(gè)字符“C“,C的ASCII碼為43H(1000011),要求一位停止位,采用偶校驗(yàn),數(shù)據(jù)有效位7位,則一幀信息為:0110000。返回上一級(jí)返回上一級(jí)2.面向字符的同步協(xié)議 IBM公司的二進(jìn)制同步通信協(xié)議(BSC) 特點(diǎn)是一次傳送由若干個(gè)字符組成的數(shù)據(jù)塊,并規(guī)定了10個(gè)特殊字符作為這個(gè)數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個(gè)傳輸過(guò)程的控制信息,它們也叫做通信控制字。 由于被傳送的數(shù)據(jù)塊是由字符組成,故被稱作面向字符的協(xié)議。 傳輸效率大大提高。傳輸控制字,增強(qiáng)了通信控制能力和校驗(yàn)功能。返回上一級(jí)2.面向字符的同步協(xié)議 IBM公司的二進(jìn)制同步通信協(xié)議(BS面向字符同步協(xié)議的幀格式SYN,是同步字符(SynchrunousCharacter)每一個(gè)幀開始處都加有同步字符,加一個(gè)SYN同步字符的稱單同步,加兩個(gè)SYN同步字符的稱雙同步。設(shè)置同步字符的目的是起聯(lián)絡(luò)作用,傳送數(shù)據(jù)時(shí),接收端不斷檢測(cè),一旦出現(xiàn)同步字符,就知道是一幀開始了。SOH,是序始字符(StartOFHeader),表示標(biāo)題的開始。標(biāo)題,包括源地址、目標(biāo)地址和路由指示等信息。返回上一級(jí)面向字符同步協(xié)議的幀格式SYN,是同步字符(SynchrunSTX,是文始字符(StartOfText),它標(biāo)志著傳送的正文(數(shù)據(jù)塊)開始。數(shù)據(jù)塊,就是被傳送的正文內(nèi)容,由多個(gè)字符組成。組終字符ETB(EndofTrandmissionBlock)或文終字符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開始直到ETX(或ETB)字段進(jìn)行校驗(yàn),校驗(yàn)方式可以是縱橫奇偶校驗(yàn)或CRC校驗(yàn)。返回上一級(jí)STX,是文始字符(StartOfText),它標(biāo)志著傳轉(zhuǎn)義字符DLE 將特定字符作為普通數(shù)據(jù)處理的能力,這種能力叫做“數(shù)據(jù)透明”。為此,協(xié)議中設(shè)置了轉(zhuǎn)義字符DLE(DataLinkEscape)。 接收器收到了一個(gè)DLE就可預(yù)知下一個(gè)字符是數(shù)據(jù)字符。 DLE本身也是特定字符,當(dāng)它出現(xiàn)在數(shù)據(jù)塊中時(shí),也要在它前面再加上另一個(gè)DLE。這種方法叫字符填充。返回上一級(jí)轉(zhuǎn)義字符DLE 將特定字符作為普通數(shù)據(jù)處理的能力,這種能力3.面向比特的同步協(xié)議最有代表性的面向比特的協(xié)議:IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC (SynchronousDataConrtol)國(guó)際標(biāo)準(zhǔn)化組織ISO的高級(jí)數(shù)據(jù)鏈路控制規(guī)程HDLC (HighLevelDataLinkConrtol)美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)的先進(jìn)數(shù)據(jù)通信規(guī)程ADCCP (AdvancdeDataCommunicationsControlProcedure)特點(diǎn),所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來(lái)標(biāo)志幀的開始和結(jié)束,故稱“面向比特”的協(xié)議。返回上一級(jí)3.面向比特的同步協(xié)議最有代表性的面向比特的協(xié)議:返回上一級(jí)面向比特同步協(xié)議的幀格式(1)SDLC/HDLC標(biāo)志字符 SDLC/HDLC協(xié)議規(guī)定,所有信息傳輸必須以一標(biāo)志字符開始,且以同一個(gè)字符結(jié)束。這個(gè)標(biāo)志字符是01111110,稱標(biāo)志場(chǎng)(F)。 從開始標(biāo)志到結(jié)束標(biāo)志之間構(gòu)成一個(gè)完整的信息單位,稱為一幀。所有信息是以幀的形式傳輸?shù)模鴺?biāo)志字符提供了每一幀的邊界。接收端可以通過(guò)搜索“01111110”來(lái)探知幀的開頭和結(jié)束,以此建立幀同步。返回上一級(jí)面向比特同步協(xié)議的幀格式(1)SDLC/HDLC標(biāo)志字符返回(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í)(2)地址場(chǎng)和控制場(chǎng)返回上一級(jí)(3)信息場(chǎng)(Information) 包含有要傳送的數(shù)據(jù),并不是每一幀都必須有信息場(chǎng)。即數(shù)據(jù)場(chǎng)可以為0,當(dāng)它為0時(shí),則這一幀主要是控制命令。返回上一級(jí)(3)信息場(chǎng)(Information)返回上一級(jí)(4)校驗(yàn)場(chǎng)
兩個(gè)字節(jié)長(zhǎng),幀校驗(yàn)場(chǎng)稱為FC(FrameCheck)場(chǎng)或稱為幀校驗(yàn)序列FCS(FrameCheckSequence)。 SDLC/HDLC均采用16位循環(huán)冗余校驗(yàn)碼CRC(CylicRedundancyCode),其生成多項(xiàng)式為CCITT多項(xiàng)式X16+X12+X5+1。除了標(biāo)志場(chǎng)和自動(dòng)插入的“0”位外,所有的信息都參加CRC計(jì)算。返回上一級(jí)(4)校驗(yàn)場(chǎng)返回上一級(jí)“0”位插入和刪除技術(shù): 為了把信息場(chǎng)中同標(biāo)志字節(jié)相同的字符與標(biāo)志區(qū)分開。 具體作法是發(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)將其后的一個(gè)“0”刪除,以恢復(fù)信息的原有形式。這種“0”位的插入和刪除過(guò)程是由硬件自動(dòng)完成的。返回上一級(jí)“0”位插入和刪除技術(shù):返回上一級(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í) 若在發(fā)送過(guò)程中出現(xiàn)錯(cuò)誤,則SDLC/HDLC協(xié)議是用異常8.1.4信息的校驗(yàn)方式 通信中差錯(cuò)控制能力是衡量一個(gè)通信系統(tǒng)的重要內(nèi)容。 發(fā)現(xiàn)傳輸中的錯(cuò)誤,叫檢錯(cuò)。 發(fā)現(xiàn)錯(cuò)誤之后,如何消除錯(cuò)誤,叫糾錯(cuò)。 常用的校驗(yàn)方式有兩種: 奇偶校驗(yàn)和循環(huán)冗余(CRC)校驗(yàn)。返回上一級(jí)8.1.4信息的校驗(yàn)方式 通信中差錯(cuò)控制能力是衡量一個(gè)通1.奇偶校驗(yàn)(Paritycheck) 發(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í)1.奇偶校驗(yàn)(Paritycheck) 發(fā)送時(shí),在每個(gè)字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)信息位接收完之后,接著接收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í)2.循環(huán)冗余碼校驗(yàn)CRC 發(fā)送時(shí),根據(jù)編碼理論對(duì)發(fā)送的串行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í)8.1.5傳輸速率與傳送距離1.波特率返回上一級(jí)2.發(fā)送時(shí)鐘和接收時(shí)鐘 在發(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í)2.發(fā)送時(shí)鐘和接收時(shí)鐘返回上一級(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)上傳輸?shù)囊纛l模擬信號(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í)8.1.6信號(hào)的調(diào)制與解調(diào) 在進(jìn)行遠(yuǎn)程數(shù)據(jù)通信時(shí),將二進(jìn) 調(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í) 調(diào)制解調(diào)器的類型按照調(diào)制技術(shù)分為:振幅鍵控(ASK)、頻8.1.7串行接口的基本結(jié)構(gòu)和基本功能基本功能:1、實(shí)現(xiàn)串行與并行數(shù)據(jù)之間的相互變換2、根據(jù)串行通信協(xié)議完成串行數(shù)據(jù)的格式化
在異步通信方式發(fā)送時(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í)8.1.7串行接口的基本結(jié)構(gòu)和基本功能基本功能:返回上一1.異步串行通信接口異步通信接口基本結(jié)構(gòu)圖返回上一級(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ù)并行送往接收數(shù)據(jù)寄存器。返回上一級(jí)發(fā)送移位寄存器及發(fā)送控制邏輯:發(fā)送數(shù)據(jù)寄存器的數(shù)據(jù)并行送入發(fā)發(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í)發(fā)送數(shù)據(jù)寄存器:從CPU數(shù)據(jù)總線接收并行數(shù)據(jù)。返回上一級(jí)常見的差錯(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)位(可選)和停止位組成。若接收端在任一字符的后面沒有檢測(cè)到規(guī)定的停止位,接收器便判為幀錯(cuò)誤,差錯(cuò)檢測(cè)邏輯將使幀錯(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í)常見的差錯(cuò)狀態(tài)位①奇偶校驗(yàn)錯(cuò):接收器按照事先約定的方式(奇校2.同步串行通信的接口同步通信端口基本結(jié)構(gòu)圖返回上一級(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取得并行數(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í)FIFO(先進(jìn)先出緩沖器):它是由多個(gè)寄存器組成,因此發(fā)送時(shí)輸入移位寄存器:它從串行輸入線上以時(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í)鐘的同頻同相。返回上一級(jí)輸入移位寄存器:它從串行輸入線上以時(shí)鐘分離器提取出來(lái)的時(shí)鐘速8.2串行接口標(biāo)準(zhǔn) 數(shù)據(jù)終端設(shè)備DTE與數(shù)據(jù)通信設(shè)備DCE串行連接時(shí)要解決兩個(gè)問題: 一、雙方要共同遵循物理接口標(biāo)準(zhǔn),包括連接電纜的機(jī)械、電氣特性、信號(hào)功能及傳送過(guò)程的定義,它屬于ISO’SOSI七層參考模型中的物理層。 二、按接口標(biāo)準(zhǔn)設(shè)進(jìn)行串行通信的接口電路。
8.2.1EIA-RS-232C接口標(biāo)準(zhǔn)
8.2.2RS-422、RS-423、RS-485接口標(biāo)準(zhǔn)返回上一級(jí)8.2串行接口標(biāo)準(zhǔn) 數(shù)據(jù)終端設(shè)備DTE與數(shù)據(jù)通信設(shè)備DC8.2.1EIA-RS-232C接口標(biāo)準(zhǔn)RS-232C標(biāo)準(zhǔn)(協(xié)議)是美國(guó)EIA(電子工業(yè)協(xié)會(huì))于1969年公布的通信協(xié)議。適合數(shù)據(jù)傳輸速率0~20000bit/s范圍內(nèi)的通信。返回上一級(jí)8.2.1EIA-RS-232C接口標(biāo)準(zhǔn)返回上一級(jí)1.電氣特性(1)電平規(guī)定數(shù)據(jù)發(fā)送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ú)效(斷開,OFF狀態(tài))=-3~-15V,典型值為-12V。返回上一級(jí)1.電氣特性(1)電平規(guī)定返回上一級(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芯片可完成TTL<->EIA雙向電平轉(zhuǎn)換。返回上一級(jí)(2)電平轉(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í)1488和1489的內(nèi)部結(jié)構(gòu)和引腳 MC1488的引腳(2) 串行接口電路中的主芯片UART,處理的是TTL邏輯電平EIA-RS-232C連接器,處理的是EIA電平返回上一級(jí) 串行接口電路中的主芯片UART,處理的是TTL邏輯電平EI(3)傳輸距離及通信速率 RS-232C接口標(biāo)準(zhǔn)的電氣特性中規(guī)定,驅(qū)動(dòng)器的負(fù)載電容應(yīng)小于2500pF,直接傳送最大距離是15m,傳輸數(shù)據(jù)速率不能高于20kbit/s。返回上一級(jí)(3)傳輸距離及通信速率返回上一級(jí)2.接口信號(hào)功能 RS-232并未定義連接器的物理特性,因此,出現(xiàn)了DB-25、DB-15和DB-9各種類型的連接器DB-25/DB-9型連接器返回上一級(jí)2.接口信號(hào)功能 RS-232并未定義連接器的物理特性,因此RS-232C標(biāo)準(zhǔn)接口信號(hào)返回上一級(jí)RS-232C標(biāo)準(zhǔn)接口信號(hào)返回上一級(jí)①常用聯(lián)絡(luò)控制信號(hào)線請(qǐng)求發(fā)送RTS(Requesttosend):表示DTE請(qǐng)求DCE發(fā)送數(shù)據(jù)。允許發(fā)送CTS(Cleartosend):表示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í)①常用聯(lián)絡(luò)控制信號(hào)線請(qǐng)求發(fā)送RTS(Requesttos數(shù)據(jù)裝置準(zhǔn)備好DSR(DataSetReady):由DCE發(fā)至DTE,表示DCE已與通信信道相連接。數(shù)據(jù)終端準(zhǔn)備好DTR(DataTerminalReady):由DTE發(fā)至DCE,有效(ON狀態(tài))時(shí)表明數(shù)據(jù)終端可以使用。 這對(duì)信號(hào)有效只表示設(shè)備已準(zhǔn)備好,可以使用。所以,這兩個(gè)信號(hào)可以直接連到電源上,一上電就立即變得有效。
返回上一級(jí)數(shù)據(jù)裝置準(zhǔn)備好DSR(DataSetReady):由DC接收線信號(hào)檢出RLSD(ReceivedLineSignalDetection):表示DCE已接通通信信道,通知DTE準(zhǔn)備接收數(shù)據(jù)。此線也叫數(shù)據(jù)載波檢出DCD(DataCarrierDetection)線。振鈴指示RI(Ringing):當(dāng)MODEM檢測(cè)到線路上有振鈴呼叫信號(hào)時(shí),使該信號(hào)有效,通知終端,已被呼叫,每次振鈴期間RI為接通狀態(tài),而在兩次振鈴期間,則為斷開狀態(tài)。返回上一級(jí)接收線信號(hào)檢出RLSD(ReceivedLineSign②數(shù)據(jù)發(fā)送與接收線發(fā)送數(shù)據(jù)TxD(TransimittedData):通過(guò)TxD線數(shù)據(jù)終端設(shè)備串行發(fā)送數(shù)據(jù)到DCE。接收數(shù)據(jù)RxD(ReceivedData):通過(guò)RxD線數(shù)據(jù)終端設(shè)備接收從DCE送來(lái)的串行數(shù)據(jù)。返回上一級(jí)②數(shù)據(jù)發(fā)送與接收線發(fā)送數(shù)據(jù)TxD(Transimitted③地線保護(hù)地PG:可接機(jī)器外殼,需要時(shí)可以直接接地,也可以不接。信號(hào)地SG:這是其它各信號(hào)電壓的參考點(diǎn)。無(wú)論電纜如何連接,這條線必不可少。返回上一級(jí)③地線保護(hù)地PG:可接機(jī)器外殼,需要時(shí)可以直接接地,也可以不信號(hào)線的連接(1)在15m以上的遠(yuǎn)距離通信時(shí),一般要加調(diào)制解調(diào)器MODEM。 若在通信雙方的MODEM之間采用專用線進(jìn)行通信則只要使用2~8號(hào)信號(hào)線進(jìn)行聯(lián)絡(luò)與控制;若采用普通電話線進(jìn)行通信,則還要增加RI(22)和DTR(20)兩個(gè)信號(hào)線進(jìn)行聯(lián)絡(luò)。返回上一級(jí)信號(hào)線的連接(1)在15m以上的遠(yuǎn)距離通信時(shí),一般要加調(diào)制解(2)近距離通信時(shí),不采用調(diào)制解調(diào)器MODEM,又稱零MODEM方式。 最簡(jiǎn)單的情況,在通信中只要使用3根線(發(fā)送線、接收線、信號(hào)地線)便可實(shí)現(xiàn)全雙工異步通信。返回上一級(jí)(2)近距離通信時(shí),不采用調(diào)制解調(diào)器MODEM,又稱零MOD(3)如果在直接連接時(shí),需要考慮RS-232C的聯(lián)絡(luò)控制信號(hào),則采用零MODEM方式的標(biāo)準(zhǔn)連接方法,又稱為雙交叉環(huán)回接口。返回上一級(jí)(3)如果在直接連接時(shí),需要考慮RS-232C的聯(lián)絡(luò)控制信號(hào)8.2.2RS-422、RS-423、RS-485接口標(biāo)準(zhǔn) EIA-RS-232C接口標(biāo)準(zhǔn)規(guī)定,最大傳輸距離為15m,最高數(shù)據(jù)傳輸速率不高于20kbit/s。 為了解決傳輸距離不夠遠(yuǎn)、傳輸速率不夠快的問題,EIA在RS-232C的基礎(chǔ)上,制訂了更高性能的串行接口標(biāo)準(zhǔn)。返回上一級(jí)8.2.2RS-422、RS-423、RS-485接口標(biāo)1.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í)1.RS-422A標(biāo)準(zhǔn) RS-422A標(biāo)準(zhǔn)是一種以平衡方式 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)的電氣特性對(duì)邏輯電平的定義是根據(jù)兩條傳 RS-422A標(biāo)準(zhǔn)抗共模干擾的能力強(qiáng),最大數(shù)據(jù)速率可達(dá)10Mbit(傳送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í) RS-422A標(biāo)準(zhǔn)抗共模干擾的能力強(qiáng),最大數(shù)據(jù)速率可達(dá)12.RS-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í)2.RS-423A標(biāo)準(zhǔn) RS-423A標(biāo)準(zhǔn)是非平衡方式傳輸 標(biāo)準(zhǔn)規(guī)定的邏輯“1”電壓必須超過(guò)4V,但不能高于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í) 標(biāo)準(zhǔn)規(guī)定的邏輯“1”電壓必須超過(guò)4V,但不能高于6V;邏3.RS-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í)3.RS-485接口標(biāo)準(zhǔn) RS-485是一種平衡傳輸方式的 RS-485標(biāo)準(zhǔn)抗干擾能力強(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í) RS-485標(biāo)準(zhǔn)抗干擾能力強(qiáng),傳輸速率高,傳送距離遠(yuǎn)。。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.2INS8250的結(jié)構(gòu)和外部特性
8.3.3INS8250內(nèi)部寄存器及其編程方法
8.3.4INS8250應(yīng)用實(shí)例返回上一級(jí)8.3異步通信接口 IBM-PC機(jī)系統(tǒng)可配有同步和異步通8.3.1異步通信適配器的組成返回上一級(jí)8.3.1異步通信適配器的組成返回上一級(jí)1.電平轉(zhuǎn)換 INS8250芯片處理電平為TTL電平,要與25芯連接器相連接,必須經(jīng)過(guò)電平轉(zhuǎn)換。 前圖中,INS8250和連接器的信號(hào)線是分別通過(guò)了電平轉(zhuǎn)換器SN75150和SN75154才送到對(duì)方的。返回上一級(jí)1.電平轉(zhuǎn)換 INS8250芯片處理電平為TTL電平,要2.地址譯碼電路系統(tǒng)地址總線低10位(A0~A9)用于端口地址譯碼,其中高位地址(A3~A9)經(jīng)譯碼器U2產(chǎn)生選片信號(hào),送到8250的CS2端;低位地址(A0~A2)直接送到8250的(A0~A2)端,作為芯片內(nèi)部寄存器的選擇線。I/O地址譯碼部分是由8輸入端與非門U2及反相器U3組成的。口地址有兩個(gè),由跳接開關(guān)U15的J10和J12端子進(jìn)行切換。中斷請(qǐng)求由跳線開關(guān)U15控制連接IRQ3/IRQ4。返回上一級(jí)2.地址譯碼電路系統(tǒng)地址總線低10位(A0~A9)用于端口地8.3.2INS8250的結(jié)構(gòu)和外部特性INS8250的外部引腳及內(nèi)部結(jié)構(gòu)圖返回上一級(jí)8.3.2INS8250的結(jié)構(gòu)和外部特性INS8250片選信號(hào)CS0=1,CS1=1,CS2=0時(shí),選中INS8250芯片,并由A0~A2選擇訪問哪個(gè)內(nèi)部寄存器。DISTR或DISTR和DOSTR或DOSTR,讀寫控制信號(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í)片選信號(hào)CS0=1,CS1=1,CS2=0時(shí),選中INS8中斷請(qǐng)求引腳INTRPT,OUT1和OUT2兩個(gè)輸出引腳用來(lái)控制INTRPT的輸出。XTAL1XTAL2
,輸入外部晶體振蕩電路產(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í)中斷請(qǐng)求引腳INTRPT,OUT1和OUT2兩個(gè)輸出引腳用來(lái)8.3.3INS8250內(nèi)部寄存器及其編程方法 8250芯片只有3根地址選擇線A0~A2,而內(nèi)部有10個(gè)可訪問的寄存器,所以有些寄存器的端口地址必須重復(fù)8250內(nèi)部寄存器地址返回上一級(jí)8.3.3INS8250內(nèi)部寄存器及其編程方法 82501.波特率因子寄存器(DLL/DLH) 8250芯片串行數(shù)據(jù)傳輸?shù)乃俾适怯刹ㄌ芈室蜃蛹拇嫫鱀LL/DLH控制,在初始化時(shí)將選用的波特率因子值的高、低字節(jié)分別寫入DLH和DLL。 外接1.8432MHz基準(zhǔn)時(shí)鐘,通過(guò)除以波特率因子寄存器給定的分頻值,在8250內(nèi)部產(chǎn)生不同的波特率,通過(guò)BAUDOUT引腳輸出接到RCLK端,控制收發(fā)數(shù)據(jù)的傳輸速率。 即分頻值的計(jì)算公式是: 波特率因子=1843200÷(16*波特率)返回上一級(jí)1.波特率因子寄存器(DLL/DLH) 8250芯片串行數(shù)波特率因子與波特率對(duì)照表返回上一級(jí)波特率因子與波特率對(duì)照表返回上一級(jí)若設(shè)定通信波特率為1200BPS,則波特率因子值為00H(高8位)和60H(低8位),其裝入程序段為:MOVDX,3FBH;置LCR口地址,DLAB=1MOVAL,80HOUTDX,ALMOVDX,3F8H;DLL的口地址MOVAL,60H;波特率因子低字節(jié)MOVDX,3F9H;DLH的口地址MOVAL,00H;波特率因子高字節(jié)OUTDX,AL例:設(shè)置INS8250波特率因子寄存器若設(shè)定通信波特率為1200BPS,則波特率因子值為00H(高2.通信線路控制寄存器(LCR) 主要用來(lái)指定異步通信數(shù)據(jù)格式,即字符長(zhǎng)度、停止位位數(shù)、奇偶校驗(yàn)。 LCR的最高位DLAB用來(lái)指定允許訪問波特率因子寄存器。 內(nèi)容不僅可以寫入而且可以讀出。返回上一級(jí)2.通信線路控制寄存器(LCR)返回上一級(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?位(字符長(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í)D0D1位:字長(zhǎng)選擇,用來(lái)設(shè)置數(shù)據(jù)有效位數(shù)。返回上一級(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位:波特率因子寄存器訪問允許控制位。
DLAB=1,允許訪問波特率因子寄存器;DLAB=0,訪問其他寄存器。返回上一級(jí)D4位:偶校驗(yàn)選擇,用來(lái)設(shè)置偶校驗(yàn)或奇校驗(yàn)返回上一級(jí)
PEN=1SP=1時(shí),說(shuō)明在奇偶校驗(yàn)位和停止位之間插入一位奇偶標(biāo)志位: “0”,采用偶校驗(yàn);“1”,則采用奇校驗(yàn)。 作用是發(fā)送設(shè)備把采用何種奇偶校驗(yàn)方式通過(guò)數(shù)據(jù)流告訴接收設(shè)備例,設(shè)發(fā)送數(shù)據(jù)字長(zhǎng)為7位,1位停止位,偶校驗(yàn),其程序段為:
MOVDX,3FBH;LCR口地址MOV AL,00011010B;LCR的內(nèi)容,數(shù)據(jù)格式參數(shù)OUT DX,AL返回上一級(jí) PEN=1SP=1時(shí),說(shuō)明在奇偶校驗(yàn)位和停止位之間插入3.通信線路狀態(tài)寄存器(LSR) 表示數(shù)據(jù)接收和數(shù)據(jù)發(fā)送時(shí)8250的狀態(tài)。若出錯(cuò),則指出出錯(cuò)的類型。 CPU可以采用查詢方式查詢這些狀態(tài),也可以采用中斷方式獲得出錯(cuò)的原因。對(duì)LSR不僅可讀,而且可寫(除6位外),寫LSR是為了人為地設(shè)置某些錯(cuò)誤狀態(tài),供系統(tǒng)自檢時(shí)使用。返回上一級(jí)3.通信線路狀態(tài)寄存器(LSR) 表示數(shù)據(jù)接收和數(shù)據(jù)發(fā)送時(shí)D0位:接收數(shù)據(jù)準(zhǔn)備好(接收緩沖器滿)。 DR=1,表示接收器已接收到一個(gè)數(shù)據(jù)字符,并且接收移位寄存器的內(nèi)容已送到接收緩沖器中;當(dāng)CPU從接收緩沖器讀走一個(gè)數(shù)據(jù)時(shí),DR位自動(dòng)置“0”。D1~D3位:出錯(cuò)標(biāo)志位。 OE溢出錯(cuò)標(biāo)志位: PE奇偶校驗(yàn)出錯(cuò)標(biāo)志位: FE幀出錯(cuò)標(biāo)志位:返回上一級(jí)D0位:接收數(shù)據(jù)準(zhǔn)備好(接收緩沖器滿)。返回上一級(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ù)寫入發(fā)送保持器中,THRE自動(dòng)置“0”。D6位:發(fā)送移位寄存器空(只讀)。 TSRE=1,表示數(shù)據(jù)從發(fā)送移位寄存器送到發(fā)送數(shù)據(jù)上;當(dāng)發(fā)送保持寄存器的內(nèi)容被送入發(fā)送移位寄存器時(shí),TSRE自動(dòng)置“0”。返回上一級(jí)D4位:中止識(shí)別指示。返回上一級(jí)START:
MOV DX,3FDH ;LSR口地址 IN AL,DX ;讀取LSR的內(nèi)容 TEST AL,00011110B ;查詢有無(wú)數(shù)據(jù)接收錯(cuò)誤 JNZ ERR ;有錯(cuò),轉(zhuǎn)出錯(cuò)處理 TEST AL,01H ;無(wú)錯(cuò),查詢接收數(shù)據(jù)是否 ;準(zhǔn)備好,DR=1? JNZ RECEIVE ;已準(zhǔn)備好,則轉(zhuǎn)到接收程序 TEST AL,20H ;未準(zhǔn)備好,再查發(fā)送保持 ;寄存器是否空,THRE=1? JNZ TRANS ;已空,則轉(zhuǎn)到發(fā)送程序 JMP START ;不空,循環(huán)等待ERR:
……TRANS:
……RECEIVE: ……例:利用LSR的狀態(tài)位進(jìn)行收發(fā)數(shù)據(jù)處理START:例:利用LSR的狀態(tài)位進(jìn)行收發(fā)數(shù)據(jù)處理4.中斷允許寄存器(IER) 控制中斷源提出的中斷請(qǐng)求被允許還是被禁止。 該寄存器控制了8250的4個(gè)中斷,若對(duì)應(yīng)位置“1”,則允許相應(yīng)的中斷請(qǐng)求;若對(duì)應(yīng)位置“0”,就禁止相應(yīng)的中斷請(qǐng)求。返回上一級(jí)4.中斷允許寄存器(IER)返回上一級(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)改變中斷D4~D7位:標(biāo)志位,D4~D7=0返回上一級(jí)D0位:ERBFI=1,允許接收緩沖器滿中斷;ERBFI=05.中斷識(shí)別寄存器(IIR) 8250內(nèi)部設(shè)有4個(gè)中斷優(yōu)先級(jí),按從高到低的順序排列為:接收數(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í)5.中斷識(shí)別寄存器(IIR) 8250內(nèi)部設(shè)有4個(gè)中斷優(yōu)先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)中斷ID1ID2=10時(shí),接收緩沖器滿(RBFI=1)中斷ID1ID2=11時(shí),接收數(shù)據(jù)出錯(cuò)(包括OE=1,PE=1,F(xiàn)E=1,BI=1)中斷返回上一級(jí)D0位:IP=0,表示還有其它中斷等待處理;IP=1,表示無(wú)6.調(diào)制解調(diào)控制寄存器(MCR)調(diào)制解調(diào)控制寄存器(MCR)設(shè)置對(duì)MODEM的聯(lián)絡(luò)控制信號(hào)和芯片自檢返回上一級(jí)6.調(diào)制解調(diào)控制寄存器(MCR)返回上一級(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處于診斷方式。在正常通信時(shí),LOOP位置“0”。返回上一級(jí)D0位:D0=1,數(shù)據(jù)終端準(zhǔn)備好(DTR=1)有效返回上一級(jí)若要使MCR的DTR、RTS有效,OUT1、OUT2以及LOOP無(wú)效,則可用下程序
MOVDX,3FCH ;MCR口地址MOVAL,00000011B ;MCR的控制字OUTDX,AL若要自發(fā)自收進(jìn)行診斷,則程序段為:
MOVDX,3FCH ;MCR口地址MOVAL,00010011B ;LOOP位置“1”O(jiān)UTDX,AL例:設(shè)置MCR若要使MCR的DTR、RTS有效,OUT1、OUT2以及L7.MODEM狀態(tài)寄存器(MSR) MODEM狀態(tài)寄存器用來(lái)檢測(cè)和記錄來(lái)自MODEM的聯(lián)絡(luò)控制信號(hào)及其狀態(tài)的變化返回上一級(jí)7.MODEM狀態(tài)寄存器(MSR)返回上一級(jí) MSR的低4位表示來(lái)自MODEM聯(lián)絡(luò)控制信號(hào)狀態(tài)的改變情況。任意一位為“1”,且在中斷允許時(shí)(IER中D3=1),均產(chǎn)生MODEM狀態(tài)中斷。 MSR的高4位,分別表示收到了來(lái)自MODEM的控制信號(hào),供CPU進(jìn)行處理。返回上一級(jí) MSR的低4位表示來(lái)自MODEM聯(lián)絡(luò)控制信號(hào)狀態(tài)的改變情8.發(fā)送保持寄存器(THR) 發(fā)送時(shí),CPU首先將待發(fā)送的字符寫到8250的發(fā)送保持寄存器THR中,然后進(jìn)入發(fā)送移位寄存器,在發(fā)送時(shí)鐘的作用下,從SOUT引腳輸出。返回上一級(jí)8.發(fā)送保持寄存器(THR)返回上一級(jí)接收緩沖寄存器(RBR) 接收時(shí),串行數(shù)據(jù)在接收時(shí)鐘作用下,從SIN引腳先輸入到接收移位寄存器RSR,然后由RSR并行輸入到接收緩沖器RBR,一旦RBR變滿,將LSR的DR位置“1”,產(chǎn)生中斷請(qǐng)求,要求CPU讀取數(shù)據(jù)字符。返回上一級(jí)接收緩沖寄存器(RBR)返回上一級(jí)8.3.4INS8250應(yīng)用實(shí)例異步通信編程一般有三個(gè)部分:初始化串行通信口、發(fā)送一個(gè)字符以及接收一個(gè)字符。返回上一級(jí)8.3.4INS8250應(yīng)用實(shí)例返回上一級(jí)1.初始化串行通信口COM1初始化串行通信口COM1(端口基址3F8H): 確定數(shù)據(jù)傳輸幀格式、確定傳輸波特率以及確定8250操作方式。8250操作方式: 自發(fā)自收的循環(huán)反饋通信方式 程序查詢方式傳送 中斷方式傳送返回上一級(jí)1.初始化串行通信口COM1初始化串行通信口COM1(端口基初始化方法有兩種:一種是按步驟分別對(duì)線路控制寄存器、波特率因子寄存器和MODEM的控制寄存器等進(jìn)行參數(shù)寫入操作,其參數(shù)是在程序中由指令分散設(shè)定的;二是專門編制一個(gè)初始化串行口的子程序,其初始化參數(shù)作為子程序的入口參數(shù)集中給出,可由調(diào)用者按要求設(shè)置不同參數(shù)來(lái)完成相應(yīng)的初始化。返回上一級(jí)初始化方法有兩種:返回上一級(jí)入口參數(shù):AL=初始化參數(shù)其中,D4~D0各位的定義與線路控制寄存器相對(duì)應(yīng)的位定義相同,而D7~D5的各位則為波特率選擇。返回上一級(jí)入口參數(shù):AL=初始化參數(shù)返回上一級(jí) ;波特率因子表 ;D7D6D5波特率BAUD-TABLE DW 1047 ;000110 DW 768 ;001150 DW 384 ;010300 DW 192 ;011600 DW 96 ;1001200 DW 48 ;1012400 DW 24 ;1104800 DW 12 ;1119600SERIAL-INIT PROC NEAR MOV AH,AL ;入口參數(shù)保存到AH MOV DX,3FBH ;線路控制寄存器端口 MOV AL,80H ;置DLAB=1 OUT DX,AL MOV DL,AH ;獲取波特率因子 MOV CL,4 ROL DL,CL ;波特率因子移低4位串行口初始化的子程序下頁(yè)上頁(yè) ;波特率因子表串行口初始化的子程序下頁(yè)上頁(yè) AND DX,0EH ;因子值乘2,存放在DX MOV DI,OFFSETBAUD-TABLE ADD DI,DX ;DI為波特率因子表索引 MOV DX,3F9H ;波特率因子高字節(jié)端口 MOV AL,CS:[DI]+1 OUT DX,AL ;寫入因子高字節(jié) MOV DX,3F8H;波特率因子低字節(jié)端口 MOV AL,CS:[DI] OUT DX,AL;寫入低字節(jié) MOV DX,3FBH;線路控制寄存器端口 MOV AL,AH AND AL,1FH;保留數(shù)據(jù)格式參數(shù) OUT DX,AL;寫入數(shù)據(jù)格式 MOV AL,0;屏蔽4種中斷源類型 MOV DX,3F9H;中斷允許寄存器端口 OUT DX,AL ;采用查詢I/O RET;正常通信,返回SERIAL-INITENDP串行口初始化的子程序(續(xù))下頁(yè)上頁(yè) AND DX,0EH ;因子值乘2,存放在DX串行口初始化2.查詢方式下的PC機(jī)間相互通信要求:在A機(jī)上敲鍵盤字符,并且在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ù),采用查詢方式分別編寫發(fā)送程序和接收程序。返回上一級(jí)2.查詢方式下的PC機(jī)間相互通信要求:在A機(jī)上敲鍵盤字符,并查詢方式的PC機(jī)間通信程序流程圖返回上一級(jí)查詢方式的PC機(jī)間通信程序流程圖返回上一級(jí)data segmentdisp db'transmissionstart:',0ah,0dh,'$'DATA
ENDSSTACKSEGMENTPARASTACK'STACK'DB200DUP(0)STACKENDSCODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MOV AX,STACK
MOV SS,AX MOV DX,2FBH ;置DLAB=1 MOV AL,80H OUT DX,AL MOV DX,2F8H ;置波特率因子寄存器
MOV AL,60H ;波特率因子低字節(jié)
OUT DX,AL
MOV DX,2F9H
MOV AL,0 ;波特率因子高字節(jié)
OUT DX,AL MOV DX,2FBH ;置線路控制寄存器
MOV AL,0AH ;數(shù)據(jù)位7位、停止位1位、奇校驗(yàn)
OUT DX,AL查詢方式的PC機(jī)間相互通信發(fā)送程序下頁(yè)上頁(yè)data segment查詢方式的PC機(jī)間相互通信發(fā)送程序下
MOV DX,2FCH ;置MODEM控制寄存器
MOV AL,02H ;禁止中斷
OUT DX,AL
MOV DX,2F9H ;置中斷允許寄存器
MOV AL,0 ;屏蔽所有中斷
OUT DX,AL MOV DX,OFFSETDISP ;顯示發(fā)送提示信息
MOV AH,9
INT 21HCODE ENDSEND STARTLOP:
MOV DX,2FDH ;讀線路狀態(tài)寄存器
IN AL,DX
TEST AL,20H ;測(cè)試發(fā)送保持寄存器空?
JZ LOP ;不空,則循環(huán)測(cè)試
MOV AH,1 ;讀取按鍵字符,并顯示
INT 21H
MOV DX,2F8H ;發(fā)送該字符
OUT DX,AL
CMP AL,'P' ;判斷按下字符“P”嗎?
JZ OVER ;是,則結(jié)束
JMP LOP ;不是。繼續(xù)循環(huán)OVER: MOV AH,4CH ;返回DOSINT 21H查詢方式的PC機(jī)間相互通信發(fā)送程序(續(xù))下頁(yè)上頁(yè) MOV DX,2FCH ;置MODEM控制寄存器查詢方DATA SEGMENTRBUFDB30DUP(0)
DISPDB'RECEIVESTART:',0AH,0DH,'$' ERRORDB'RECEIVEERROR!',0AH,0DH,'$'DATA ENDSSTACKSEGMENTPARASTACK'STACK' DB200DUP(0)STACKENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,STACKMOV SS,AXLEA SI,RBUF ;置接收緩沖區(qū)地址指針MOV DX,2FBH ;置DLAB=1MOV AL,80HOUT DX,ALMOV DX,2F8H ;置波特率因子寄存器
MOV AL,60H ;波特率因子低字節(jié)
OUT DX,AL MOV DX,2F9H MOV AL,0 ;波特率因子高字節(jié)
OUT DX,AL查詢方式的PC機(jī)間相互通信接收程序下頁(yè)上頁(yè)DATA SEGMENT查詢方式的PC機(jī)間相互通信接收程序 MOV DX,2FBH ;置通信線路控制寄存器
MOV AL,0AH ;數(shù)據(jù)位7位、停止位1位、奇校驗(yàn)
OUT DX,AL MOV DX,2FCH ;置MODEM控制寄存器
MOV AL,02 ;禁止中斷
OUT DX,AL MOV DX,2F9H ;置中斷允許寄存器
MOV AL,0 ;屏蔽所有中斷OUT DX,AL
MOV DX,OFFSETDISP ;顯示接收提示信息
MOV AH,9
INT 21H MOV DX,2F8H ;讀接收緩沖器內(nèi)容,不處理
IN AL,DXLOP: MOV DX,2FDH ;讀線路狀態(tài)寄存器
IN AL,DX TEST AL,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,2FBH ;置通信線路控制寄存器查詢方式的 MOV DX,2F8H ;準(zhǔn)備好則接收字符
IN AL,DX AND AL,7FH CMP AL,'P' ;判斷接收結(jié)束嗎?
JZ OVER ;結(jié)束轉(zhuǎn)OVER MOV [SI],AL ;未結(jié)束則存入緩沖區(qū)
INC SI MOV DL,AL ;顯示該字符
MOV AH,02 INT 21H JMP LOPER: MOV DX,2F8H ;清標(biāo)志位
IN AL,DX MOV DX,OFFSETERROR;顯示錯(cuò)誤信息
MOV AH,9 INT 21H JMP LOPOVER: MOV DL,AL MOV AH,2
INT 21H MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START下頁(yè)上頁(yè)查詢方式的PC機(jī)間相互通信接收程序(續(xù)2) MOV DX,2F8H ;準(zhǔn)備好則接收字符下頁(yè)上頁(yè)查詢3.中斷方式下的PC機(jī)間相互通信要求:采用中斷方式在PC機(jī)間發(fā)送和接收信息。(使用COM2端口)發(fā)送方:在發(fā)送主程序中,接收鍵盤輸入信息,以回車符作為結(jié)束,鍵入信息并存入發(fā)送緩沖區(qū)中。能否發(fā)送是由用戶確認(rèn)后才能發(fā)送,發(fā)送過(guò)程中允許中斷,發(fā)送保持寄存器空引起中斷。接收方:以中斷方式接收發(fā)送方送來(lái)的字符信息。接收時(shí),使用接收數(shù)據(jù)準(zhǔn)備好方式中斷,將接收到的字符信息存入接收緩沖區(qū)中,并且在屏幕上顯示。返回上一級(jí)3.中斷方式下的PC機(jī)間相互通信要求:采用中斷方式在PC機(jī)間返回上一級(jí)返回上一級(jí)DATASEGMENTSBUFDB100DUP(?) ;發(fā)送緩沖區(qū)DISP1DB0DH,0AH,'SENDMESSAGE:$'DISP2DB0DH,0AH,'TRANSMISSIONMESSAGE?[Y/N]:$'SENDPTRDW?ENDFLAGDB?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX CLI ;關(guān)中斷MOV AX,0 ;設(shè)置IRQ3中斷向量MOV ES,AXMOV DI,0BH*4MOV AX,OFFSETSENDINTCLDSTOSW 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 ;波特率因子低字節(jié) OUT DX,AL中斷方式PC機(jī)間相互通信發(fā)送程序下頁(yè)上頁(yè)DATASEGMENT中斷方式PC機(jī)間相互通信發(fā)送程序下頁(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è)置中斷允許寄存器 MOV AL,0 ;禁止所有中斷 OUT DX,AL STI ;CPU開中斷 MOV SI,OFFSETSBUF ;置發(fā)送緩沖區(qū)指針 MOV SENDPTR,SI ;保護(hù)指針 MOV DX,OFFSETDISP1;顯示接收提示信息 MOV AH,9 INT 21HLP: MOV AH,1 ;接收鍵入字符并顯示 INT 21H MOV [SI],AL ;存入發(fā)送緩沖區(qū) INC SI ;修改指針中斷方式PC機(jī)間相互通信發(fā)送程序(續(xù)1)下頁(yè)上頁(yè) MOV DX,2F9H中斷方式PC機(jī)間相互通信發(fā)送程序( CMP AL,0DH ;判斷是回車鍵嗎? JNZ LP ;不是,則繼續(xù)接收字符 LEA DX,DISP2 ;顯示發(fā)送提示信息 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,'N' ;判斷是“N”嗎? JZ NEXT ;不是,則重新輸入 MOV SI,OFFSETSBUF ;恢復(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ā)送SENDINTPROCNEAR ;中斷方式發(fā)送子程序 PUSH DS ;寄存器保護(hù) PUSH SI PUSH AX PUSH DX中斷方式PC機(jī)間相互通信發(fā)送程序(續(xù)2)下頁(yè)上頁(yè) CMP AL,0DH ;判斷是回車鍵嗎?中斷方式PC MOV AX,DATA MOV DS,AX MOV SI,SENDPTR ;發(fā)送緩沖區(qū)當(dāng)前指針 STI ;CPU開中斷 MOV AL,[SI] ;發(fā)送字符 MOV DX,2F8H OUT DX,AL INC SI ;修改指針 MOV SENDPTR,SI CMP AL,0DH ;判斷發(fā)送結(jié)束嗎? JZ SEND ;結(jié)束轉(zhuǎn)SEND MOV AL,0 ;置未發(fā)送結(jié)束標(biāo)志 JMP NENDSEND: MOV AL,0FFH ;置發(fā)送結(jié)束標(biāo)志NEND: MOV ENDFLAG,AL MOV AL,20H ;結(jié)束中斷(EOI) OUT 20H,AL POP DX ;恢復(fù)寄存器 POP AX POP SI POP DS IRETSENDINT ENDPCODE ENDS END START中斷方式PC機(jī)間相互通信發(fā)送程序(續(xù)3)下頁(yè)上頁(yè) MOV AX,DATA中斷方式PC機(jī)間相互通信發(fā)送程序 DATA SEGMENT RBUF DB100DUP(?) ;接收緩沖區(qū) DISP DB0AH,'RECEIVEMESSAGE:$' RECEPTR DW? ENDFLAG DB? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI ;CPU關(guān)中斷 MOV AX,0 ;設(shè)置IRQ3中斷向量 MOV ES,AX MOV DI,0BH*4 MOV AX,OFFSETRECIVINT CLD STOSWMOV AX,CSSTOSW MOV AL,0FFH ;屏蔽8259A所有中斷 OUT 21H,AL MOV DX,2FBH ;置DLAB=1 MOV AL,80H OUT DX,AL中斷方式PC機(jī)間相互通信接收程序下頁(yè)上頁(yè) DATA SEGMENT中斷方式PC機(jī)間相互通信接收程 MOV DX,2F8H ;設(shè)置波特率2400BPS MOV AL,30H ;波特率因子低字節(jié) OUT DX,AL MOV DX,2F9H MOV AL,0 ;波特率因子高字節(jié) OUT DX,AL MOV 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 DX,2F9H ;設(shè)置中斷允許寄存器 MOV AL,1 ;允許數(shù)據(jù)接收準(zhǔn)備好中斷 OUT DX,AL MOV AL,0 ;8259A所有中斷未屏蔽 OUT 21H,ALNEXT: MOV SI,OFFSETRBUF ;置接收緩沖區(qū)指針 MOV RECEPTR,SI MOV AL,0 ;置接收結(jié)束標(biāo)志為未結(jié)束 MOV ENDFLAG,AL STI ;CPU開中斷中斷方式PC機(jī)間相互通信接收程序(續(xù)1)下頁(yè)上頁(yè) MOV DX,2F8H ;設(shè)置波特率2400BPS中 LEA DX,DISP ;顯示接收提示信息 MOV AH,9 INT 21HWINT: HLT ;等待中斷 MOV AL,ENDFLAG CMP AL,0FFH ;判斷接收結(jié)束嗎? JNZ WINT ;未結(jié)束,繼續(xù)接收 JMP NEXT ;結(jié)束轉(zhuǎn)NEXTRECIVINT PROCNEAR ;接收字符中斷處理子程序 PUSH DS ;保護(hù)寄存器 PUSH SI PUSH AX PUSH DX MOV AX,DATA MOV DS,AX MOV SI,RECEPTR ;恢復(fù)接收緩沖區(qū)指針 STI ;CPU開中斷 MOV DX,2F8H ;接收字符 IN AL,DX MOV [SI],AL ;字符存入接收緩沖區(qū)INC SI ;修改指針中斷方式PC機(jī)間相互通信接收程序(續(xù)2)下頁(yè)上頁(yè) LEA DX,DISP ;顯示接收提示信息中斷方式P MOV RECEPTR,SI MOV DL,AL ;顯示接收字符 MOV AH,2 INT 21H CMP AL,0DH ;判斷接收結(jié)束嗎? JNZ NEND ;未結(jié)束轉(zhuǎn)NEND MOV AL,0FFH ;結(jié)束則置接收結(jié)束標(biāo)志 MOV ENDFLAG,ALNEND: MOV AL,20H ;發(fā)中斷結(jié)束命令(EOI) O
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年河南工業(yè)和信息化職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)有答案解析
- 2026年廣州鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能筆試備考題庫(kù)帶答案解析
- 2026年貴陽(yáng)幼兒師范高等專科學(xué)校單招綜合素質(zhì)考試模擬試題帶答案解析
- 財(cái)經(jīng)應(yīng)用文規(guī)章制度課件
- 財(cái)稅顧問課件模板
- 2026年河南女子職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 2026年常德職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)筆試參考題庫(kù)帶答案解析
- 財(cái)政預(yù)算執(zhí)行審計(jì)課件
- 財(cái)政的職能教學(xué)課件
- 2026年湖南藝術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考試題有答案解析
- 工作簡(jiǎn)歷模板
- 北京石景山區(qū)2023-2024學(xué)年第一學(xué)期初三期末數(shù)學(xué)試卷
- 湖南省長(zhǎng)沙市雨花區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期語(yǔ)文期末考試試卷
- DZ∕T 0207-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硅質(zhì)原料類(正式版)
- 箱式房拆方案
- YS-T 650-2020 醫(yī)用氣體和真空用無(wú)縫銅管
- 四川省內(nèi)江市2023-2024學(xué)年高二上學(xué)期期末檢測(cè)生物試題【含答案解析】
- 總承包工程技術(shù)標(biāo)述標(biāo)匯報(bào)
- TY/T 4001.1-2018汽車自駕運(yùn)動(dòng)營(yíng)地建設(shè)要求與開放條件
- GB/T 19022-2003測(cè)量管理體系測(cè)量過(guò)程和測(cè)量設(shè)備的要求
- 人工智能與教育的深度融合課件
評(píng)論
0/150
提交評(píng)論