第10章 串行接口_第1頁(yè)
第10章 串行接口_第2頁(yè)
第10章 串行接口_第3頁(yè)
第10章 串行接口_第4頁(yè)
第10章 串行接口_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

10.1串行接口通信的基本概念10.2串行總線(xiàn)標(biāo)準(zhǔn)10.3可編程串行接口芯片8251A

習(xí)題10第十章串行接口第十章串行接口10.1串行接口通信的基本概念10.1.1并行通信與串行通信計(jì)算機(jī)系統(tǒng)與外部的信息交換被稱(chēng)為通信?;镜耐ㄐ欧绞接袃煞N:①并行數(shù)據(jù)傳送:8位、16位,甚至32位數(shù)據(jù)同時(shí)從一個(gè)設(shè)備傳送到另一個(gè)設(shè)備。速度快,工作效率高,常用于計(jì)算機(jī)系統(tǒng)內(nèi)部或近距離的設(shè)備之間數(shù)據(jù)傳送。②串行數(shù)據(jù)傳送:在傳輸過(guò)程中,數(shù)據(jù)一位一位地沿著一條傳輸線(xiàn)從一個(gè)設(shè)備傳到另一個(gè)設(shè)備。只須一對(duì)傳送線(xiàn),較并行傳輸節(jié)省傳輸線(xiàn),特別是位數(shù)多、距離遠(yuǎn)時(shí),此優(yōu)點(diǎn)更顯著,可借用現(xiàn)有的通訊線(xiàn)路。缺點(diǎn):傳送速度比并行慢,并行需時(shí)間T,則串行為NT(位)以傳送8位數(shù)據(jù)01101010為例,并行傳送與串行傳送的過(guò)程如圖10-1所示。圖10-1并行與串行數(shù)據(jù)傳送示意圖從并行與串行的數(shù)據(jù)傳送示意圖可以看出,并行數(shù)據(jù)傳送所需傳輸線(xiàn)的條數(shù)與位數(shù)有關(guān),位數(shù)越多所需傳輸線(xiàn)越多;而串行數(shù)據(jù)傳送只需一根線(xiàn)即可。對(duì)于計(jì)算機(jī)系統(tǒng)內(nèi)部或近距離的設(shè)備之間數(shù)據(jù)傳送,可采用并行數(shù)據(jù)傳送,并行通信數(shù)據(jù)線(xiàn)的傳送速度快,工作效率高。對(duì)于遠(yuǎn)距離的設(shè)備之間的數(shù)據(jù)傳送,經(jīng)常采用串行數(shù)據(jù)傳送。目前遠(yuǎn)距離通信利用電話(huà)線(xiàn),比裝并行電纜和放大器更經(jīng)濟(jì)、方便。10.1.2串行通信的基本方式串行通信中存在一個(gè)如何識(shí)別信號(hào)的問(wèn)題,即如何判斷收到了一位數(shù)據(jù),或收到了一個(gè)字符。在并行方式下,這些問(wèn)題均已得到了解決。每一位數(shù)據(jù)通過(guò)一根信號(hào)線(xiàn)傳送,發(fā)送端與接收端之間信號(hào)線(xiàn)的連接為一一對(duì)應(yīng)方式,此外,發(fā)送設(shè)備與接收設(shè)備之間又設(shè)置了相對(duì)應(yīng)的應(yīng)答信號(hào)與接口,從而可以保證發(fā)送端每送出一個(gè)數(shù),接收端就能收到一個(gè)數(shù),而且每個(gè)數(shù)的數(shù)位對(duì)應(yīng)都是正確的。在串行通信過(guò)程中,所有的數(shù)據(jù)都通過(guò)同一根信號(hào)線(xiàn)傳送,而信號(hào)線(xiàn)上出現(xiàn)的信號(hào)無(wú)非就是持續(xù)一定時(shí)間的高電平或低電平。先提出兩個(gè)問(wèn)題:(1)如何區(qū)分同一根信號(hào)線(xiàn)上傳送的邏輯數(shù)據(jù)呢?以正邏輯中高電平代表邏輯“1”,低電平代表邏輯“0”為例,顯然,在通信雙方之間需要約定的每位數(shù)據(jù)的傳送時(shí)間。例如,約定每秒傳送兩位數(shù)據(jù),則持續(xù)時(shí)間為1s的高電平代表2個(gè)邏輯1,持續(xù)時(shí)間為3s的低電平代表邏輯0。(2)接收到的這些位信號(hào)代表什么數(shù)據(jù)?這就是字符格式的問(wèn)題。為此需要規(guī)定每一個(gè)數(shù)據(jù)單位(例如每個(gè)字節(jié))有多少位,各位的含義是什么,以及位數(shù)據(jù)的傳送順序等。串行通信中解決上述問(wèn)題有兩種不同的方法,對(duì)應(yīng)著兩種不同的基本通信方式:異步通信和同步通信。1.異步通信方式數(shù)據(jù)的傳送以一個(gè)字符為單位。一個(gè)字符所包含的位數(shù)可以是8位、7位、6位或5位。圖10-2異步通信格式一個(gè)字符正式發(fā)送之前,先發(fā)送一個(gè)起始位,低電平,寬度為1位;結(jié)束時(shí)發(fā)一個(gè)停止位,高電平,寬度是1位、1.5位或2位;數(shù)據(jù)位占5~8位,可在數(shù)據(jù)位內(nèi)設(shè)1位奇偶校驗(yàn)位。字符之間可有空閑位,它們都是高電平。其數(shù)據(jù)格式如圖10-2所示。異步傳送過(guò)程中的起始位和停止位起著重要的作用。起始位標(biāo)志著每一個(gè)字符的開(kāi)始,停止位標(biāo)志著每一個(gè)字符的結(jié)束。由于串行通信采用起始位為同步信號(hào),接受端總是在接收到每個(gè)字符的頭部即起始位處進(jìn)行一次重新定位,保證每次采樣對(duì)應(yīng)一個(gè)數(shù)位。所以異步傳送的發(fā)送器和接收器不必用同一個(gè)時(shí)鐘,而是各有自己的局部時(shí)鐘,只要是同一標(biāo)稱(chēng)頻率,略有偏差不會(huì)導(dǎo)致數(shù)據(jù)傳送錯(cuò)誤。2.同步通信同步通信不是用起始位來(lái)標(biāo)識(shí)字符的開(kāi)始,而是用一串特定的二進(jìn)制序列,稱(chēng)為同步字符,去通知接收器串行數(shù)據(jù)第一位何時(shí)到達(dá)。串行數(shù)據(jù)信息以連續(xù)的形式發(fā)送,每個(gè)時(shí)鐘周期發(fā)送一位數(shù)據(jù)。數(shù)據(jù)信息間不留空隙,數(shù)據(jù)信息后是兩個(gè)錯(cuò)誤校驗(yàn)字符。同步通信采用的同步字符的個(gè)數(shù)不同,存在著不同的格式結(jié)構(gòu),具有一個(gè)同步字符的數(shù)據(jù)格式稱(chēng)為單同步數(shù)據(jù)格式,有二個(gè)同步字符的數(shù)據(jù)格式稱(chēng)為雙同步數(shù)據(jù)格式,如圖10-3所示。在同步傳送中,要求用時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端與接收端之間的同步。在同步傳送中,要求用時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端與接收端之間的同步。圖10-3同步通信格式外同步是指對(duì)同步字符的檢測(cè)在串行I/O接口電路芯片外部進(jìn)行。當(dāng)外部硬件電路檢測(cè)到同步字符后,往串行接口發(fā)送一個(gè)同步信號(hào)SYNC。當(dāng)I/O接口接到同步信號(hào)后,開(kāi)始接收數(shù)據(jù)信息。10.1.3串行通信的傳送速率串行通信的時(shí)間關(guān)系很重要,其中最重要的一個(gè)概念是波特率(BandRate)。波特率是指串行傳送線(xiàn)上每秒鐘所能傳送的二進(jìn)制位數(shù)。國(guó)際上規(guī)定了標(biāo)準(zhǔn)波特率系列,最常用的標(biāo)準(zhǔn)波特率是:110波特、300波特、600波特、1200波特、1800波特、2400波特、4800波特、9600波特和19200波特。例如,在某個(gè)異步串行通信系統(tǒng)中,數(shù)據(jù)傳送速率為480字符/秒,每個(gè)字符包括1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位,則波特率為10×480=4800(位/秒)=9600(波特)。在進(jìn)行串行通信時(shí),根據(jù)傳送的波特率來(lái)確定發(fā)送時(shí)鐘和接收時(shí)鐘的頻率。在異步傳送中每發(fā)送一位數(shù)據(jù)的時(shí)間長(zhǎng)度由發(fā)送時(shí)鐘決定,每接收一位數(shù)據(jù)的時(shí)間長(zhǎng)度由接收時(shí)鐘決定,它們和波特率之間有如下關(guān)系:時(shí)鐘頻率=n×波特率式中的n叫做波特率系數(shù)或波特率因子,它的取值可以為1、16、32或64。10.1.4信號(hào)的傳送1.傳送線(xiàn)路類(lèi)型串行傳送線(xiàn)路可以分為三種類(lèi)型:?jiǎn)喂?、半雙工和全雙工,如圖10-4所示。圖10-4串行通信的傳送方式2.信號(hào)的調(diào)制與解調(diào)計(jì)算機(jī)的通信是要求傳送二進(jìn)制數(shù)字信號(hào),數(shù)字信號(hào)是一種矩形脈沖信號(hào),傳送時(shí)要求傳送線(xiàn)具有很寬的頻帶。而在進(jìn)行遠(yuǎn)程數(shù)據(jù)通信時(shí),傳輸線(xiàn)路往往是借用現(xiàn)有的公用電話(huà)網(wǎng),電話(huà)網(wǎng)是為音頻模擬信號(hào)的設(shè)計(jì)的,一般為300~3400Hz,如果直接傳送數(shù)字信號(hào),會(huì)發(fā)生很大的畸變。因此,在利用電話(huà)線(xiàn)進(jìn)行長(zhǎng)距離傳送時(shí),一般需要在發(fā)送端用調(diào)制器(Modulator)把二進(jìn)制數(shù)字信號(hào)轉(zhuǎn)換為一定頻率的模擬信號(hào),以適應(yīng)在電話(huà)網(wǎng)上傳輸,在接收端用解調(diào)器(Demodulator)檢測(cè)此模擬信號(hào),再將其轉(zhuǎn)換為二進(jìn)制數(shù)字信號(hào)。正常將調(diào)制器和解調(diào)器合在一起構(gòu)成調(diào)制解調(diào)器(Modem),其示意圖如圖10-5所示。圖10-5調(diào)制解調(diào)示意圖最基本的調(diào)制方法有以下幾種,如圖10-6所示。(1)調(diào)幅(AM)即載波的振幅隨基帶數(shù)字信號(hào)而變化?!?”對(duì)應(yīng)有載波,“0”對(duì)應(yīng)無(wú)載波。(2)調(diào)頻(FM)即載波頻率隨數(shù)字信號(hào)而變化?!?”對(duì)應(yīng)“f1”,“1”對(duì)應(yīng)“f2”。(3)調(diào)相(PM)即載波初始相位隨基帶數(shù)字信號(hào)而變化?!?”應(yīng)相位0度,“1”對(duì)應(yīng)相位180度。圖10-6調(diào)制信號(hào)的幾種方法10.2串行總線(xiàn)標(biāo)準(zhǔn)在數(shù)據(jù)通信中,計(jì)算機(jī)通常作為數(shù)據(jù)終端設(shè)備(DTE),而調(diào)制解調(diào)器則被稱(chēng)為數(shù)據(jù)通信設(shè)備(DCE)或數(shù)據(jù)裝置。二者之間通過(guò)電纜連接。為了使通信接口設(shè)計(jì)標(biāo)準(zhǔn)化、通用化,目前通常采用各種總線(xiàn)標(biāo)準(zhǔn),即國(guó)際正式公布或推薦的標(biāo)準(zhǔn)。只要采用同一標(biāo)準(zhǔn),設(shè)備(或系統(tǒng))之間就可以進(jìn)行通信,并不要求結(jié)構(gòu)上的一致,也不需要對(duì)每臺(tái)設(shè)備做出具體說(shuō)明,因而,采用總線(xiàn)標(biāo)準(zhǔn)為軟、硬件設(shè)計(jì)帶來(lái)許多方便。串行通信最常采用的連接方式為RS-232C標(biāo)準(zhǔn)。RS-232C是EIA(美國(guó)電氣工業(yè)協(xié)會(huì))于1969年推薦的一個(gè)標(biāo)準(zhǔn),(RS:RecommendedStandard,232是標(biāo)識(shí)符,C表示第三版)。在微型機(jī)中,該標(biāo)準(zhǔn)屬于異步通信總線(xiàn),主要用于主機(jī)與CRT或調(diào)制解調(diào)器之間的通信,以及某些多機(jī)通信的情況。一些串行接口芯片也是根據(jù)這個(gè)標(biāo)準(zhǔn)進(jìn)行設(shè)計(jì)的,例如后面將要介紹的8251A可編程串行接口芯片。RS-232C適合的數(shù)據(jù)傳送速率為0~20Kbps。10.2.1RS-232C信號(hào)定義一般常見(jiàn)的RS-232C接口大都以D型25針的連接座(DB-25)與外間相連,表10-1列出了引腳和信號(hào)之間的對(duì)應(yīng)關(guān)系。但在實(shí)際使用中,常常只需用到其中的3~9根引線(xiàn),因此RS-232C還有一種9芯的D型連接器,其引腳信號(hào)規(guī)定見(jiàn)圖10-8所示。表10-1RS-232C的信號(hào)定義表10-1RS-232C的信號(hào)定義圖10-79芯D型連接器信號(hào)規(guī)定10.2.2RS-232C的信號(hào)電平及電平轉(zhuǎn)換電路在EIARS-232C的電氣規(guī)格中,規(guī)定了設(shè)備所傳送的數(shù)據(jù)和控制信號(hào)的電平及其通信上的邏輯約定。由于RS-232C早在TTL集成電路之前就已發(fā)展起來(lái),因此它沒(méi)有采用TTL邏輯電平。對(duì)數(shù)據(jù)發(fā)送和數(shù)據(jù)接收引腳上的信號(hào),信號(hào)電平規(guī)定為MARK(邏輯1)=-3V~-25VSPACE(邏輯0)=+3V~+25V對(duì)于請(qǐng)求發(fā)送、允許發(fā)送、數(shù)據(jù)設(shè)備準(zhǔn)備好、接收信號(hào)檢測(cè)、振鈴指示等控制信號(hào)和狀態(tài)信號(hào),信號(hào)電平規(guī)定為:ON=+3V~+25V(接通)OFF=-3V~-25V(斷開(kāi))一般情況下,信號(hào)邏輯0為+5~+15V,邏輯1為-5~-15V。由于RS-232C信號(hào)電平與TTL電平不同,為了實(shí)現(xiàn)與TTL電路的連接,必須進(jìn)行信號(hào)電平轉(zhuǎn)換。目前,RS-232C與TTL電平轉(zhuǎn)換最常用的芯片有MC1488和MC1489以及MAX232。1.MC1488和MC1489接口電路MC1488內(nèi)部有3個(gè)與非門(mén)和一個(gè)反相器,電源電壓為,輸入為T(mén)TL電平,輸出為RS-232C電平。MC1489內(nèi)部有4個(gè)反相器,電源電壓為+5V,輸入為RS-232C電平,輸出為T(mén)TL電平。MC1489中每一個(gè)反相器都有一個(gè)控制端,高電平有效,可作為RS-232C操作的控制端。引腳和內(nèi)部結(jié)構(gòu)如圖10-8所示。圖10-8MC1488和MC1489芯片內(nèi)部結(jié)構(gòu)和引腳圖10-9為用MC1488和MC1489構(gòu)成的全雙工TTL/RS-232C轉(zhuǎn)換電路。通信接口將來(lái)自微機(jī)的發(fā)送數(shù)據(jù)轉(zhuǎn)換為符合串行通信協(xié)議規(guī)定的TTL電平信號(hào)從TxD端輸出,或?qū)xD端接收到的信號(hào)去掉附加位后轉(zhuǎn)換為并行數(shù)據(jù)輸入至微處理器。圖10-9集成電路RS-232C總線(xiàn)接收器和驅(qū)動(dòng)器2.MAX232和MAX233接口電路MAX232和MAX233是MAXIM公司生產(chǎn)的、高速兩路接收器和驅(qū)動(dòng)器的IC芯片,其內(nèi)部均包含有電源電壓變換器,因此僅需+5V電源供電,使用十分方便。這兩種電平轉(zhuǎn)換器均可以將2路TTL電平轉(zhuǎn)換成RS-232C電平,也可以將RS-232C轉(zhuǎn)換成TTL電平,如圖10-10所示。使用時(shí)需注意的是MAX232需要外接5個(gè)1μF的電容,而MAX233不需要外接電容,使用起來(lái)更加方便,但MAX233的價(jià)格要略高一些。圖10-10兩種RS-232C串行口電平轉(zhuǎn)換10.2.3RS-485串行總線(xiàn)標(biāo)準(zhǔn)EIARS-232C標(biāo)準(zhǔn)適用范圍是傳輸距離30m以?xún)?nèi),數(shù)據(jù)速據(jù)小于20Kb/s。為了能夠在更大的距離和更高速率的情況下實(shí)現(xiàn)直接互聯(lián),EIA又制定了新的RS-449接口標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)保留了與RS-232C的兼容性并且針對(duì)RS-232C的局限性,增加了以下特性:1)支持較高的數(shù)據(jù)傳送速率。2)支持較遠(yuǎn)的傳送距離。3)制定了連接器的技術(shù)規(guī)范。4)通過(guò)提供平衡電路改進(jìn)接口電氣性能。RS-423/422(全雙工)是RS-499標(biāo)準(zhǔn)的子集。RS-485(半雙工)是RS-422的變型,是EIA于1983年公布的新的平衡傳輸標(biāo)準(zhǔn),。(1)主要特性和性能1)正邏輯。發(fā)送端:邏輯“1”以?xún)删€(xiàn)間的電壓差為+2~+6V表示,邏輯“0”以?xún)删€(xiàn)間的電壓差為-2~-6V表示;接收端:A比B高200mV以上即認(rèn)為是邏輯“1”,A比B低200mV以上即認(rèn)為是邏輯“0”。見(jiàn)圖10-11所示。2)RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗噪聲干擾性能好。3)可以連接32臺(tái)驅(qū)動(dòng)器,32臺(tái)接收器。4)最大傳輸距離為1200m。5)最大傳輸速率10Mb/s(12m);1Mb/s(120m);100Kb/s(1200m)。6)發(fā)送器的共模電壓最大為3V。7)接收器的共模電壓為-7V~+12V。8)半雙工。由于RS-485的多種特點(diǎn),在多點(diǎn)通信系統(tǒng)中得到了廣泛的應(yīng)用。圖10-11RS-485的半雙工接口方式(2)RS-485的連接方式RS-485可以用半雙工接線(xiàn)方式連接兩個(gè)站點(diǎn),如圖10-11所示。在這種接線(xiàn)方式下,每一時(shí)刻只能有一個(gè)站可以發(fā)送數(shù)據(jù),另一個(gè)只能接收,發(fā)送器必須通過(guò)使能信號(hào)加以控制。RS-485更適合于多站互連,一個(gè)發(fā)送器可以連接32個(gè)負(fù)載設(shè)備。負(fù)載設(shè)備可以是被動(dòng)發(fā)送器、接收器,還可以是收/發(fā)器,如圖10-12所示。新近推出的RS-485接口芯片可以驅(qū)動(dòng)128個(gè)甚至256個(gè)同類(lèi)負(fù)載設(shè)備。圖10-12RS-485的多站互連方式10.3可編程串行接口芯片8251A10.3.1串行通信接口電路簡(jiǎn)介前面介紹的串行通信接口標(biāo)準(zhǔn)能夠?qū)崿F(xiàn)DTE和DCE之間物理與電氣的連接,但要實(shí)現(xiàn)DTE與DCE之間的數(shù)據(jù)通信,還需要做一些規(guī)程方面的規(guī)定。這些規(guī)定包括:收發(fā)雙方的同步方式、傳輸控制步驟、差錯(cuò)校驗(yàn)方式、數(shù)據(jù)編碼、數(shù)據(jù)傳輸速度、通信報(bào)文的格式以及控制字符的定義,這些功能和協(xié)議通常由通信規(guī)程控制器實(shí)現(xiàn)。隨著大規(guī)模集成電路技術(shù)的發(fā)展,出現(xiàn)了許多支持異步規(guī)程或同步規(guī)程的通信規(guī)程控制器。當(dāng)CPU與外設(shè)進(jìn)行串行通信時(shí),通常使用專(zhuān)門(mén)的串行接口芯片實(shí)現(xiàn)串行-并行轉(zhuǎn)換。隨著大規(guī)模集成電路技術(shù)的發(fā)展,通用的可編程同步和異步接收器/發(fā)送器(UniversalSynchronousAsynchronousReceiver/Transmitter,USART)的種類(lèi)也越來(lái)越多,但它們的基本功能與結(jié)構(gòu)是類(lèi)似的。圖10-13為USART的方框圖,其中控制部件用于控制芯片內(nèi)部協(xié)調(diào)工作:接收CPU送來(lái)的控制信號(hào),執(zhí)行CPU所要求執(zhí)行的功能,并輸出狀態(tài)信號(hào)和有關(guān)的控制信號(hào)。發(fā)送器接收CPU送來(lái)的并行數(shù)據(jù)(即輸出數(shù)據(jù)),通過(guò)移位寄存器將其轉(zhuǎn)為串行數(shù)據(jù),并添上一位起始及初始化控制字所規(guī)定的奇偶校驗(yàn)位和停止位,由一條發(fā)送數(shù)據(jù)線(xiàn)輸出。接收器從串行數(shù)據(jù)輸入線(xiàn)上接收數(shù)據(jù),去掉起始位、停止位,并檢查是否有奇偶錯(cuò)誤和幀錯(cuò)誤,然后將接收的字符經(jīng)過(guò)移位寄存器變?yōu)椴⑿泻螅椭两邮占拇嫫?,以便CPU用輸入指令讀取。圖10-13USART的方框圖接收器用接收時(shí)鐘與接收數(shù)據(jù)同步。在異步方式,波特率系數(shù)即為每個(gè)數(shù)據(jù)位時(shí)間與接收時(shí)鐘周期之比值。如波特率系數(shù)為16,則每個(gè)位時(shí)間為16個(gè)接收時(shí)鐘周期。接收器在每個(gè)接收時(shí)鐘的上升沿對(duì)接收數(shù)據(jù)線(xiàn)進(jìn)行采樣,在停止位和空閑位(均為高電平)之后,如果發(fā)現(xiàn)第一個(gè)0(可能是起始位開(kāi)始),而以后又連續(xù)采樣到8個(gè)0,則確定它是真正的起始位(而不是干擾信號(hào))。以后每隔16個(gè)時(shí)鐘脈沖采樣一次數(shù)據(jù)線(xiàn),作為串行輸入數(shù)據(jù),如圖10-14所示。由圖可知,采樣時(shí)間正好在數(shù)據(jù)位時(shí)間的中間,這就避開(kāi)了信號(hào)上升或下降時(shí)可能產(chǎn)生的不穩(wěn)定狀態(tài),從而保證了采樣的正確。圖10-14USART異步接收數(shù)據(jù)Intel8251A是一種可編程串行通信接口芯片(USART),能夠以同步或異步通信方式進(jìn)行工作,自動(dòng)完成幀格式。8251A具有獨(dú)立的接收器和發(fā)送器,因此能夠以單工、半雙工或全雙工方式進(jìn)行通信,并且提供一些基本控制信號(hào),可以方便地與調(diào)制解調(diào)器連接。10.3.28251A的內(nèi)部結(jié)構(gòu)和工作過(guò)程8251A的內(nèi)部結(jié)構(gòu)及引腳如圖10-15所示。圖10-158251A內(nèi)部結(jié)構(gòu)及引腳圖8251A是一個(gè)通用串行輸入/輸出接口芯片,可用來(lái)將CPU傳送給外設(shè)的信息以串行方式向外發(fā)送,或?qū)⑼庠O(shè)輸入給CPU的信息以串行方式接收并轉(zhuǎn)換成并行數(shù)據(jù)傳送給CPU。1.發(fā)送器和接收器發(fā)送器和接收器是與外設(shè)交換信息的通道。以下對(duì)發(fā)送器和接收器的工作過(guò)程分別進(jìn)行論述。發(fā)送器包含發(fā)送緩沖器、發(fā)送移位寄存器、發(fā)送控制器三部分。工作過(guò)程:(1)接收到來(lái)自CPU的數(shù)據(jù)存入發(fā)送緩沖器。(2)發(fā)送緩沖器存有待發(fā)送的數(shù)據(jù)后,使引腳TXRDY變?yōu)榈碗娖剑硎景l(fā)送緩沖器滿(mǎn)。

(3)當(dāng)調(diào)制解調(diào)器做好接收數(shù)據(jù)的準(zhǔn)備后,向8251A輸入一個(gè)低電平信號(hào),使CTS引腳有效。(4)在編寫(xiě)初始化命令時(shí),使操作命令控制字的TXEN位為高,讓發(fā)送器處于允許發(fā)送的狀態(tài)下。(5)滿(mǎn)足以上(2)、(3)、(4)條件時(shí),若采用同步方式,發(fā)送器將根據(jù)程序的設(shè)定自動(dòng)送一個(gè)(單同步)或兩個(gè)(雙同步)同步字符,然后由移位寄存器從數(shù)據(jù)輸出線(xiàn)TXD串行輸出數(shù)據(jù)塊;若采用異步方式,由發(fā)送控制器在其首尾加上起始位及停止位,然后從起始位開(kāi)始,經(jīng)移位寄存器從數(shù)據(jù)輸出線(xiàn)TXD串行輸出。(6)待數(shù)據(jù)發(fā)送完畢,使TXEMPTY有效。(7)CPU可向8251A發(fā)送緩沖器寫(xiě)入下一個(gè)數(shù)據(jù)。與發(fā)送器有關(guān)引腳信號(hào)如下:TXD:數(shù)據(jù)發(fā)送端,輸出串行數(shù)據(jù)送往外部設(shè)備。TXRDY:發(fā)送器準(zhǔn)備好信號(hào)。TXRDY=1,發(fā)送緩沖器空;TXRDY=0發(fā)送緩沖器滿(mǎn)。當(dāng)TXRDY=1、TXEN=1、CTS=0時(shí),8251A已作好發(fā)送準(zhǔn)備,CPU可以往8251A傳輸下一個(gè)數(shù)據(jù)。當(dāng)用查詢(xún)方式時(shí),CPU可從狀態(tài)寄存器的D0位檢測(cè)這個(gè)信號(hào),判斷發(fā)送緩沖器所處狀態(tài)。當(dāng)用中斷方式時(shí),此信號(hào)作為中斷請(qǐng)求信號(hào)。TXEMPTY:發(fā)送移位寄存器空閑信號(hào)。TXEMPTY=0,發(fā)送移位寄存器滿(mǎn);TXEMPTY=1,發(fā)送移位寄存器空,CPU可向8251A的發(fā)送緩沖器寫(xiě)入數(shù)據(jù)。在同步方式時(shí),若CPU來(lái)不及輸出新字符,則TXEMPTY=1,同時(shí)發(fā)送器在輸出線(xiàn)上插入同步字符,以填充傳送間隙。:發(fā)送時(shí)鐘信號(hào),外部輸入。對(duì)于同步方式,的時(shí)鐘頻率應(yīng)等于發(fā)送數(shù)據(jù)的波特率。對(duì)于異步方式,由軟件定義的發(fā)送時(shí)鐘可是發(fā)送波特率的1倍(×1)、16倍(×16)或64倍(×64)。接收器包括接收緩沖器、接收移位寄存器及接收控制器三部分。工作過(guò)程:(1)當(dāng)控制命令字的“允許接收”位RXE和“準(zhǔn)備好接收數(shù)據(jù)”位有效時(shí),接收控制器開(kāi)始監(jiān)視RXD線(xiàn)。(2)外設(shè)數(shù)據(jù)從RXD端逐位進(jìn)入接收移位寄存器中,接收中對(duì)同步和異步兩種方式采用不同的處理過(guò)程。異步方式時(shí),當(dāng)發(fā)現(xiàn)RXD線(xiàn)上的電平由高電平變?yōu)榈碗娖綍r(shí),認(rèn)為是起始位到來(lái),然后接收器開(kāi)始接收一幀信息。接收到的信息經(jīng)過(guò)刪除起始位和停止位,把已轉(zhuǎn)換成的并行數(shù)據(jù)置入接收數(shù)據(jù)緩沖器。同步方式時(shí),每出現(xiàn)一個(gè)數(shù)據(jù)位,移位寄存器就把它移一位,把移位寄存器數(shù)據(jù)與程序設(shè)定的存于同步字符寄存器中的同步字符相比較,若不相等重復(fù)上述過(guò)程,直到與同步字符相等后,則使SYNDET=1,表示已達(dá)到同步。這時(shí)在接收時(shí)鐘RXC的同步下,開(kāi)始接收數(shù)據(jù)。RXD線(xiàn)上的數(shù)據(jù)送入移位寄存器,按規(guī)定的位數(shù)將它組裝成并行數(shù)據(jù),再把它送至接收數(shù)據(jù)緩沖器中。(3)當(dāng)接收數(shù)據(jù)緩沖器接收到由外設(shè)傳送來(lái)的數(shù)據(jù)后,發(fā)出“接收準(zhǔn)備就緒”RXRDY信號(hào),通知CPU取走數(shù)據(jù)。與接收器有關(guān)的引腳信號(hào)如下:RXD:數(shù)據(jù)接收端,接收由外設(shè)輸入的串行數(shù)據(jù)。RXRDY:接收器準(zhǔn)備好信號(hào)。RXRDY=1表示接收緩沖器已裝有輸入的數(shù)據(jù),通知CPU取走數(shù)據(jù)。若用查詢(xún)方式,可從狀態(tài)寄存器D1位檢測(cè)這個(gè)信號(hào)。若用中斷方式,可用該信號(hào)作為中斷申請(qǐng)信號(hào),通知CPU輸入數(shù)據(jù)。RXRDY=0表示輸入緩沖器空。SYNDET/BRKDET:雙功能檢測(cè)信號(hào),高電平有效。對(duì)于同步方式,SYNDET是同步檢測(cè)信號(hào),該信號(hào)既可工作在輸入狀態(tài)也可工作在輸出狀態(tài)。內(nèi)同步工作時(shí),該信號(hào)為輸出信號(hào)。當(dāng)SYNDET=1,表示8251A已經(jīng)監(jiān)測(cè)到所要求的同步字符。若為雙同步,此信號(hào)在傳送第二個(gè)同步字符的最后一位的中間變高,表明已經(jīng)達(dá)到同步。外同步工作時(shí),該信號(hào)為輸入信號(hào)。當(dāng)從SYNDET端輸入一個(gè)高電平信號(hào),接收控制電路會(huì)立即脫離對(duì)同步字符的搜索過(guò)程,開(kāi)始接收數(shù)據(jù)。對(duì)于異步方式,BRKDET為間斷檢出信號(hào),用來(lái)表示RXD端處于工作狀態(tài)還是接收到斷缺字符。BRKDET=1表示接收到對(duì)方發(fā)來(lái)的間斷碼。RXC:接收時(shí)鐘信號(hào),輸入。在同步方式時(shí),RXC等于波特率;在異步方式時(shí),可是波特率的1倍、16倍或64倍。2.數(shù)據(jù)總線(xiàn)緩沖器數(shù)據(jù)總線(xiàn)緩沖器是與CPU交換數(shù)據(jù)信息的通道。把8251A的8根數(shù)據(jù)線(xiàn)D7~D0和CPU系統(tǒng)數(shù)據(jù)總線(xiàn)相連,其功能有:(1)接收來(lái)自CPU的數(shù)據(jù)及控制字,傳送數(shù)據(jù)給數(shù)據(jù)輸出緩沖器,傳送控制字也給數(shù)據(jù)輸出緩沖器。對(duì)于控制字緩沖器不保存,接收到后馬上發(fā)出相應(yīng)控制,對(duì)于數(shù)據(jù)保存在輸出緩沖器。當(dāng)CTS=0、TXEN=1條件滿(mǎn)足時(shí),才傳送數(shù)據(jù)到發(fā)送移位寄存器。(2)從數(shù)據(jù)輸入緩沖器內(nèi)取數(shù)據(jù)傳送給CPU。(3)從狀態(tài)寄存器中讀取狀態(tài)字,確定8251A處于何種工作狀態(tài)。3.讀/寫(xiě)控制電路讀/寫(xiě)控制電路是用來(lái)接收CPU送來(lái)的一系列控制信號(hào)。各信號(hào)的作用及動(dòng)作過(guò)程是:RESET:芯片的復(fù)位信號(hào)。當(dāng)該信號(hào)處于高電平時(shí),8251A各寄存器處于復(fù)位狀態(tài),收、發(fā)線(xiàn)路上均處于空閑狀態(tài)。通常該信號(hào)與系統(tǒng)的復(fù)位線(xiàn)相連。:片選信號(hào),低電平有效。:控制/數(shù)據(jù)信號(hào)。根據(jù)信號(hào)是1還是0,鑒別當(dāng)前數(shù)據(jù)總線(xiàn)上信息流是控制字還是與外設(shè)交換的數(shù)據(jù)。當(dāng)=1,傳送的是命令、控制、狀態(tài)等控制字;=0,傳送的是真正的數(shù)據(jù)。對(duì)于8位的8088CPU系統(tǒng),端可直接連接到地址總線(xiàn)的A0端。對(duì)于16位的8086CPU系統(tǒng),低8位數(shù)據(jù)總線(xiàn)上的數(shù)據(jù)訪(fǎng)問(wèn)偶地址端口或存儲(chǔ)單元,高8位數(shù)據(jù)總線(xiàn)上的數(shù)據(jù)訪(fǎng)問(wèn)奇地址端口或存儲(chǔ)單元。當(dāng)8位的8251A的數(shù)據(jù)線(xiàn)連接到CPU低8位數(shù)據(jù)總線(xiàn)上,端連接到地址總線(xiàn)的A1端,A0端不連接到8251A接口芯片上,保證8086CPU發(fā)給8251A的地址數(shù)為連續(xù)的兩個(gè)偶地址,使CPU與8251A交換的數(shù)據(jù)信息是在低8位數(shù)據(jù)總線(xiàn)上。對(duì)于8251A接收到的兩個(gè)連續(xù)的偶地址,必定一個(gè)使=0,一個(gè)使=1。、:讀、寫(xiě)控制信號(hào)。在執(zhí)行IN指令時(shí),線(xiàn)有效,啟動(dòng)輸入緩沖寄存器,數(shù)據(jù)總線(xiàn)上數(shù)據(jù)流方向由8251A流向CPU。在執(zhí)行OUT指令時(shí),線(xiàn)有效,啟動(dòng)輸出緩沖寄存器,數(shù)據(jù)流方向由CPU流向8251A。、、、信號(hào)配合起來(lái)可以決定8251A的操作,如表10-2所示。操作信息流向0001讀數(shù)據(jù)CPU←8251A0010寫(xiě)數(shù)據(jù)CPU→8251A0101讀狀態(tài)CPU←8251A0110寫(xiě)控制字CPU→8251A18251A未被選中數(shù)據(jù)總線(xiàn)浮空表10-28251A端口操作表

4.調(diào)制解調(diào)器控制在遠(yuǎn)距離通信時(shí),8251A提供了與調(diào)制解調(diào)器聯(lián)絡(luò)的信號(hào);在近距離串行通信時(shí),8251A提供了與外設(shè)聯(lián)絡(luò)的應(yīng)答信號(hào)。與調(diào)制解調(diào)控制電路有關(guān)的信號(hào)作用及控制方法如下::數(shù)據(jù)終端準(zhǔn)備好信號(hào),輸出,低電平有效。此信號(hào)有效時(shí),表示接收方準(zhǔn)備好接收數(shù)據(jù),通知發(fā)送方。該信號(hào)可用軟件編程方法控制,設(shè)置命令控制字的D1=1,執(zhí)行輸出指令,使線(xiàn)輸出低電平。:數(shù)據(jù)裝置準(zhǔn)備好信號(hào),輸入,低電平有效。它是對(duì)的回答信號(hào),表示發(fā)送方準(zhǔn)備好發(fā)送。可通過(guò)執(zhí)行輸入指令,讀入狀態(tài)控制字,檢測(cè)D7位是否為1。:發(fā)送方請(qǐng)求發(fā)送信號(hào),輸出,低電平有效??捎密浖幊谭椒?,設(shè)置命令控制字的D5=1,執(zhí)行輸出指令,使線(xiàn)輸出低電平。:清除發(fā)送信號(hào),輸入,低電平有效。它是對(duì)的回答信號(hào),表示接收方作好接收數(shù)據(jù)的準(zhǔn)備。當(dāng)=0時(shí),命令控制字的TXEN=1,且發(fā)送緩沖器為空時(shí),發(fā)送器可發(fā)送數(shù)據(jù)。發(fā)送方與接收方是相對(duì)數(shù)據(jù)將要傳送方向而決定的。當(dāng)與為一對(duì)握手信號(hào)時(shí),8251A為接收方,外設(shè)為發(fā)送方;當(dāng)和為一對(duì)握手信號(hào)時(shí),8251A為發(fā)送方,外設(shè)為接受方。實(shí)際應(yīng)用時(shí),、和3個(gè)信號(hào)引腳可以懸空不用,引腳必須為低電平,當(dāng)8251A僅工作在接收狀態(tài)而不要求發(fā)送數(shù)據(jù)時(shí),也可以懸空。10.3.38251A的控制字及初始化方法8251A芯片在工作前要先對(duì)其初始化,以確定其工作方式。工作中CPU要向8251A發(fā)出一些命令,確定其動(dòng)作過(guò)程,并要求了解其工作狀態(tài),以保證在數(shù)據(jù)傳送中協(xié)調(diào)CPU與外設(shè)的數(shù)據(jù)傳送過(guò)程。這樣就需要有三種控制字,分別為工作方式控制字、操作命令控制字和狀態(tài)控制字。1.工作方式控制字此控制字決定8251A的波特率系數(shù)、字符長(zhǎng)度、奇偶校驗(yàn)和停止位長(zhǎng)度等信息,都是通過(guò)執(zhí)行輸出指令由CPU向8251A寫(xiě)入一個(gè)工作方式控制字來(lái)完成的。工作方式控制字各位的定義如圖10-16所示。圖10-168251A工作方式控制字例如,若8251A芯片進(jìn)行異步串行通信時(shí),要求波特率系數(shù)為16,字符長(zhǎng)度為7位,奇校驗(yàn),2個(gè)停止位。則方式選擇字應(yīng)為:11011010B=0DAH若要求8251A作為同步通信的接口,內(nèi)同步且需2個(gè)同步字符,偶校驗(yàn),7位字符。其方式選擇字為:00111000B=38H2.操作命令控制字要使8251A處于發(fā)送數(shù)據(jù)或接收數(shù)據(jù)狀態(tài),通知外設(shè)準(zhǔn)備接收數(shù)據(jù)或是發(fā)送數(shù)據(jù),是通過(guò)CPU執(zhí)行輸出指令,發(fā)出相應(yīng)的控制字來(lái)實(shí)現(xiàn)的。操作命令控制字各位的定義如圖10-17所示。圖10-178251A的操作命令控制字TXEN、RXE兩位分別決定是否允許TXD線(xiàn)向外設(shè)串行發(fā)送數(shù)據(jù),是否允許RXD線(xiàn)接收外部輸ER位是清除錯(cuò)誤標(biāo)志位。該位是針對(duì)狀態(tài)控制字的D3、D4和D5位進(jìn)行操作的。D3、D4、D5位分別表示奇偶錯(cuò)、幀錯(cuò)和溢出錯(cuò)。入的串行數(shù)據(jù)。、兩位是調(diào)制解調(diào)控制電路與外設(shè)的握手信號(hào)。當(dāng)8251A作為接收數(shù)據(jù)方,并已準(zhǔn)備好接收數(shù)據(jù)時(shí),位為1,使引線(xiàn)端輸出有效信號(hào);當(dāng)8251A作為發(fā)送數(shù)據(jù)方,并已準(zhǔn)備好發(fā)送數(shù)據(jù)時(shí),位為1,使引線(xiàn)端輸出有效信號(hào)。SBRK位是發(fā)送斷缺字符位。SBRK=1,TXD線(xiàn)上一直發(fā)0信號(hào),即輸出連續(xù)的空號(hào);SBRK=0,恢復(fù)正常工作。正常通信時(shí),SBRK位應(yīng)為0。EH位為跟蹤方式位。跟蹤方式是在接收數(shù)據(jù)時(shí),針對(duì)同步方式而進(jìn)行的操作。當(dāng)采用同步工作方式時(shí),允許接收位RXE=1時(shí),還必須使EH=1、ER=1。EH=1,使接收器進(jìn)入搜索狀態(tài),監(jiān)視由RXD引腳接收的數(shù)據(jù)。當(dāng)接收器接收到同步字符號(hào),確定下面接收的數(shù)據(jù)為真正的數(shù)據(jù),此時(shí),再把接收到的一位位數(shù)傳送到移位寄存器。IR位是內(nèi)部復(fù)位信號(hào)。IR=1,迫使8251A復(fù)位,使8251A回到接收工作方式控制字的狀態(tài)。3.狀態(tài)控制字CPU通過(guò)輸入指令讀取狀態(tài)控制字,了解8251A傳送數(shù)據(jù)時(shí)所處的狀態(tài),作出是否發(fā)出命令,是否繼續(xù)下一個(gè)數(shù)據(jù)傳送的決定。狀態(tài)字存放在狀態(tài)寄存器中,CPU只能讀狀態(tài)寄存器,而不能對(duì)它寫(xiě)入內(nèi)容,狀態(tài)控制字各位所代表的意義如圖10-18所示。圖10-188251A的狀態(tài)控制字TXRDY位是發(fā)送準(zhǔn)備好標(biāo)志位,此狀態(tài)位TXRDY與引腳TXRDY的意義有些區(qū)別。此狀態(tài)位TXRDY=1,反映當(dāng)前發(fā)送緩沖器已空。而對(duì)于TXRDY引腳,必須在發(fā)送緩沖器空,狀態(tài)位TXRDY位為1,控制字中TXEN=1,并且外設(shè)或調(diào)制解調(diào)器接收數(shù)據(jù)方可以接收下一個(gè)數(shù)據(jù)時(shí),才能使TXRDY引腳有效。RXRDY位為1表明接收緩沖器已裝有輸入數(shù)據(jù),CPU可以取走該數(shù)據(jù)。引線(xiàn)端RXRDY為高,也表明接收緩沖器已裝有輸入數(shù)據(jù),RXRDY引腳可供CPU查詢(xún),也可作為對(duì)CPU的中斷申請(qǐng)信號(hào),申請(qǐng)CPU取走數(shù)據(jù)。TXEMPTY位和SYNDET/BRKDET位與8251A的同步引腳的狀態(tài)完全相同,可供CPU查詢(xún)。

PE、OE、FE分別為奇偶錯(cuò)、溢出錯(cuò)、幀校驗(yàn)錯(cuò)的標(biāo)志位。這可通過(guò)操作命令控制字的ER位對(duì)這三個(gè)標(biāo)志位復(fù)位。DSR位是數(shù)據(jù)裝置準(zhǔn)備好位。該位反映輸入引腳DSR是否有效,即用來(lái)檢測(cè)調(diào)制解調(diào)器或外設(shè)發(fā)送方是否準(zhǔn)備好要發(fā)送的數(shù)據(jù)。4.8251A的初始化編程8251A是一個(gè)可編程的多功能串行通信接口,則具體使用時(shí),必須對(duì)它進(jìn)行初始化編程,選擇8251A的具體工作方式等。初始化編程的步驟,必須按以下次序進(jìn)行。首先,芯片復(fù)位后,第一次用輸出指令寫(xiě)入奇地址端口的應(yīng)是方式選擇指令。約定雙方的通信方式(同步/異步),數(shù)據(jù)格式(數(shù)據(jù)位和停止位長(zhǎng)度、校驗(yàn)特征、同步字符特征)及傳輸速率(波特率系數(shù))等參數(shù)。其次,如果方式選擇指令中規(guī)定了8251A工作在同步方式,那么,CPU用執(zhí)行輸出指令向奇地址端口寫(xiě)入規(guī)定的1個(gè)或2個(gè)字節(jié)的同步字符。最后,只要不是復(fù)位命令,不論同步方式還是異步方式,均由CPU執(zhí)行輸出指令向奇地址端口寫(xiě)入工作命令指令,控制允許發(fā)送/接收或復(fù)位。初始化結(jié)束后,CPU就可以通過(guò)查詢(xún)8251A的狀態(tài)字內(nèi)容或采用中斷方式,進(jìn)行正常的串行通信發(fā)送/接收工作。因?yàn)榉绞阶?、命令字及同步字均無(wú)特征標(biāo)志位,且都是送同一個(gè)命令口地址,所以在向8251A初始化時(shí),必須按一定的順序流程,若改變了這種順序流程,8251A就不能正常識(shí)別。5251A的初始化編程的流程見(jiàn)圖10-19。在此,再?gòu)?qiáng)調(diào)一下關(guān)于操作命令控制字的使用。當(dāng)一個(gè)8251A芯片通過(guò)寫(xiě)入工作方式控制字以后,可以根據(jù)對(duì)8251A工作狀態(tài)的不同要求隨時(shí)向奇地址端口輸出操作命令控制字。若要改變8251A工作方式,應(yīng)先使8251A芯片復(fù)位,內(nèi)部復(fù)位命令字為40H。8251A芯片復(fù)位后,又可以重新向8251A輸出工作方式控制字,以改變8251A的工作方式。下面具體介紹一下8251A的工作方式控制字和操作命令控制字。(1)異步方式下的初始化編程假設(shè)使8251A芯片工作在異步方式下,波特率系數(shù)為16,字符長(zhǎng)度為8位,偶校驗(yàn),2個(gè)停止位。則工作方式控制字為:11111110B=0FEH。工作狀態(tài)要求:復(fù)位出錯(cuò)標(biāo)志,使請(qǐng)求發(fā)送信號(hào)有效,使數(shù)據(jù)終端準(zhǔn)備好信號(hào)有效,發(fā)送允許TXEN有效,接收允許RXE有效。則工作命令指令字應(yīng)為37H。假設(shè)8251A的兩個(gè)端口地址分別為0C0H和0C2H,則初始化編程如下:

MOVAL,0FEH OUT0C2H,AL ;設(shè)置工作方式 MOVAL,37H OUT0C2H,AL ;設(shè)置工作狀態(tài)(2)同步方式下初始化編程假設(shè)要求:8251A工作在同步下,兩個(gè)同步字符(內(nèi)同步)、奇校驗(yàn)、每隔字符8位,則方式選擇字應(yīng)為1CH。工作狀態(tài)要求:使出錯(cuò)標(biāo)志復(fù)位,允許發(fā)送和接收、使CPU已準(zhǔn)備好且請(qǐng)求發(fā)送,啟動(dòng)搜索同步字符,則工作命令指令應(yīng)該是0B7H。又設(shè)第一同步字符為0AAH,第二個(gè)同步字符為55H(注意兩個(gè)同步字符可以設(shè)成相等的字符)。還使用上例8251A芯片。注意要先使用內(nèi)部復(fù)位命令40H,使8251A復(fù)位后,再寫(xiě)入工作方式控制字。具體程序如下: MOVAL,40H OUT0C2H,AL ;復(fù)位8251A MOVAL,1CH OUT0C2H,AL ;設(shè)置工作方式控制字 MOVAL,0AAH OUT0C2H,AL ;寫(xiě)入第一個(gè)同步字符 MOVAL,55H OUT0C2H,AL ;寫(xiě)入第二個(gè)同步字符 MOVAL,0B7H OUT0C2H,AL ;設(shè)置操作命令控制字圖10-198251A初始化流程圖48251A的應(yīng)用舉例〔例1〕假設(shè)8251A的兩個(gè)端口地址分別為0C0H和0C2H。采用異步工作方式,從串行口輸入100個(gè)數(shù)據(jù),存放到BUFFER開(kāi)始的存儲(chǔ)單元中。本例題采用查詢(xún)狀態(tài)字方式編程。程序中對(duì)狀態(tài)寄存器的RXRDY位不斷進(jìn)行測(cè)試,查詢(xún)8251A是否已經(jīng)從外設(shè)接收了一個(gè)字符。若收到,即RXRDY有效,CPU就可執(zhí)行輸入指令訪(fǎng)問(wèn)偶地址端口,取回一個(gè)數(shù)據(jù)放在內(nèi)存緩沖區(qū)。除狀態(tài)寄存器RXRDY位檢測(cè)外,CPU還要檢測(cè)狀態(tài)寄存器的第3、4、5位,看是否出現(xiàn)了奇/偶錯(cuò),覆蓋錯(cuò)或幀格式錯(cuò)誤,若發(fā)現(xiàn)錯(cuò)誤就轉(zhuǎn)錯(cuò)誤處理出現(xiàn)。錯(cuò)誤處理出現(xiàn)主要是利用了人-機(jī)對(duì)話(huà)通知用戶(hù),本程序沒(méi)有給出錯(cuò)誤處理程序。另外還請(qǐng)注意,RXRDY在輸入一個(gè)字符后會(huì)自動(dòng)復(fù)位,8251A從外設(shè)接收一個(gè)字符RXRDY會(huì)自動(dòng)置位。 MOVAL,0FEH OUT0C2H,AL ;寫(xiě)入異步方式選擇字 MOVAL,37H OUT0C2H,AL ;寫(xiě)入操作命令控制字 MOVBX,BUFFER ;緩沖區(qū)首址送BX MOVDI,0 ;變址寄存器初值MOVCX,100 ;設(shè)置計(jì)數(shù)器值100 INA:INAL,0C2H ;輸入狀態(tài)字送AL TESTAL,2 ;測(cè)試狀態(tài)字第2位即RXRDY位 JZINA ;未收到字符則重新取狀態(tài)字 INAL,0C0H ;RXRDY有效,從偶地址口輸入數(shù)據(jù) MOV[BX][DI],AL ;將字符送入緩沖區(qū) INCDI ;緩沖區(qū)指針下移一個(gè)單元 INAL,0C2H ;再讀狀態(tài)字 TESTAL,38H ;測(cè)試有無(wú)三種錯(cuò)誤 JNZERR ;有錯(cuò)誤轉(zhuǎn)錯(cuò)誤處理程序 LOOPINZ ;沒(méi)輸入完100個(gè)字符,則繼續(xù)輸入 JMPEXIT ;如已經(jīng)接收了100個(gè)字符,則轉(zhuǎn)結(jié)束 ERR:CALLERR_PRO ;轉(zhuǎn)入錯(cuò)誤處理程序 EXIT:……[例2]用兩片8251A接口芯片實(shí)現(xiàn)兩個(gè)8086CPU之間的串行通信,如圖10-20所示。8251A接口芯片的譯碼電路的設(shè)計(jì)也需考慮8位的接口芯片與16位的CPU之間進(jìn)行數(shù)據(jù)交換,必須遵循低8位數(shù)據(jù)線(xiàn)上的數(shù)據(jù)對(duì)應(yīng)于偶地址、高8位數(shù)據(jù)線(xiàn)上的數(shù)據(jù)對(duì)應(yīng)于奇地址的原則,這已在8255A接口芯片譯碼電路的設(shè)計(jì)中作了詳細(xì)說(shuō)明。對(duì)于8251A,CPU是對(duì)其狀態(tài)寄存器還是數(shù)據(jù)寄存器的訪(fǎng)問(wèn),是傳送命令字、控制字還是數(shù)據(jù),可通過(guò)C/線(xiàn)為1還是為0加以區(qū)別。一般地,將地址線(xiàn)A1接到8251A的/端,使8251A占用低2位地址線(xiàn)。因此,實(shí)例電路中假定8251A數(shù)據(jù)口的地址為04A0H,控制口地址為04A2H。假定1#8251A地址為04A0H,04A2H;2#8251地址為04A4H,04A6H。1#CPU發(fā)送100個(gè)數(shù)據(jù)給2#CPU,通信協(xié)議是采用異步傳送方式,8位數(shù)據(jù)無(wú)校驗(yàn),2位停止位,波特率因子為64。在實(shí)際使用中,當(dāng)未對(duì)8251A設(shè)置模式時(shí),如果要對(duì)8251A進(jìn)行復(fù)位,一般采用先送3個(gè)00H,再送40H的方法,這是8251A的編程約定。程序如下:;1#CPU發(fā)送程序DATA SETMENTFA DB XX,XX,…;將要傳送的數(shù)據(jù)DATA ENDSSTACK SEGMENTPARASTACK′STACK′BUFF DB 50DUP(?)STACKENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART∶MOVAX,DATA;取數(shù)據(jù)段寄存器地址MOVDS,AXMOVAX,STACK;取堆棧段寄存器地址MOVSS,AXMOVDX,04A2H;8251A控制口地址送DXMOVBL,03H ;復(fù)位8251A,先輸入3個(gè)0AA1:MOVAL,00HOUTDX,ALNOPDECBLJNZAA1MOVAL,40H ;發(fā)復(fù)位命令OUTDX,ALMOVAL,0CFH ;設(shè)置工作方式控制字OUT DX,ALMOV AL,31H ;設(shè)置操作命令控制字OUTDX,ALLEASI,FA ;取數(shù)據(jù)區(qū)偏移地址MOVCX,0064H ;設(shè)置傳送100個(gè)數(shù)據(jù)的計(jì)數(shù)器MOVDX,04A2H ;設(shè)置8251A控制口地址WAIT1:IN AL,DX ;讀取狀態(tài)字AND AL,05H ;檢測(cè)TXEMPTY和TXRDY位JZ WAIT1 ;發(fā)送器空,等待MOV DX,04A0H ;設(shè)置8251A數(shù)據(jù)口地址MOV AL,[SI] ;取數(shù)據(jù)OUT DX,AL ;將數(shù)據(jù)傳送給另一臺(tái)計(jì)算機(jī)INC SI ;修改數(shù)據(jù)區(qū)地址指針DEC CXJNZ WAIT1AA2:JMP AA2CODE ENDSEND START;2#CPU接收程序DATA SEGMENTSHOU DB64 DUP(?)DATA ENDSSTACK SEGMENT PARA STACK′STACK′BUFF DB 50DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA ;取數(shù)據(jù)段寄存器地址MOV DS,AXMOV AX,STACK ;取堆棧段寄存器地址MOV SS,AXMOV DX,04A6H ;設(shè)置8251A控制口地址MOV BL,03HAA3:MOVAL,00H;復(fù)位8251A,先輸入三個(gè)0OUT DX,ALNOPDEC BLJNZ AA3MOV AL,40H ;發(fā)復(fù)位命令OUT DX,ALMOV AL,0CFH ;設(shè)置工作方式控制字OUT DX,ALMOV AL,16H ;設(shè)置操作命令控制字OUT DX,ALLEA DI,SHOU ;接收數(shù)據(jù)緩沖區(qū)首址MOV CX,0064H ;設(shè)置傳送100個(gè)數(shù)據(jù)的計(jì)數(shù)器MOV DX,04A6;設(shè)置8251A控制口地址WAIT2:IN AL,DX ;監(jiān)測(cè)8251A工作狀態(tài)MOV BL,ALAND AL,02H ;檢測(cè)RXRDY是否為1JZ WAIT2MOV AL,BLAN

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論