版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第八章常用可編程序接口芯片及應(yīng)用技術(shù)8.1串行通信及可編程序接口芯片應(yīng)用技術(shù)
8.2并行通信及可編程序接口芯片應(yīng)用技術(shù)
8.3可編程序定時(shí)器/計(jì)數(shù)器芯片及應(yīng)用技術(shù) 8.1串行通信及可編程序接口芯片應(yīng)用技術(shù)
8.1.1串行通信基本概念
8.1.2可編程接口芯片8251A
8.1.38251A的控制字及初始化編程
8.1.48251A應(yīng)用舉例
8.1.58251A串行通信Proteus仿真示例
并行通信計(jì)算機(jī)與外部的信息交換稱為通信,基本的通信方式有兩種:并行通信,串行通信。并行通信時(shí),數(shù)據(jù)各位同時(shí)傳送。例如,CPU通過8255A與外設(shè)交換數(shù)據(jù)時(shí),就采用并行通信方式。這種方式傳輸數(shù)據(jù)的速度快,但使用的通信線多,如果要并行傳送8位數(shù)據(jù),需要用8根數(shù)據(jù)線,另外還要加上一些控制信號(hào)線。隨著傳輸距離的增加,通信線成本增加將成為突出的問題,而且傳輸?shù)目煽啃噪S著距離的增加而下降。因此并行通信適用于近距離傳送數(shù)據(jù)的場(chǎng)合。8.1.1串行通信串行通信串行通信具通信線少和傳送距離遠(yuǎn)等優(yōu)點(diǎn)。串行通信時(shí),要傳送的數(shù)據(jù)或信息必須按一定的格式編碼,然后在單根線上,按位順序傳送。發(fā)送數(shù)據(jù)時(shí),逐位發(fā)送完一個(gè)字符后再發(fā)第二個(gè)。接收數(shù)據(jù)時(shí),逐位接收信息,再把它們拼成一個(gè)字符,送給CPU作進(jìn)一步處理。微機(jī)與遠(yuǎn)程終端或遠(yuǎn)距離處理機(jī)交換數(shù)據(jù)時(shí),都采用串行通信方式。有些外設(shè),如MODEM、鼠標(biāo)等,本身需用串行方式通信;有些外設(shè),如打印機(jī)、繪圖儀等,既可采用并行方式,也可用串行方式。1.串行通信的兩種基本工作方式1)異步方式(Asynchronous)數(shù)據(jù)格式:起始位1位;數(shù)據(jù)位5
8位,D0在先;奇偶校驗(yàn)位1位;停止位1位、1.5位或2位。發(fā)送1個(gè)包含7個(gè)數(shù)據(jù)位的ASCII符,加上起、停、校驗(yàn)位,共要發(fā)送10位,會(huì)浪費(fèi)30%的傳輸時(shí)間。為提高串行數(shù)據(jù)傳送速率,可采用同步方式。2)同步方式(Synchronous)同步串行數(shù)據(jù)發(fā)送格式:傳輸開始,先發(fā)送1或2個(gè)同步字符。收發(fā)雙方須用同一個(gè)時(shí)鐘協(xié)調(diào),確定傳輸?shù)拿縝it位置。雙方達(dá)到同步后,就可逐個(gè)字符連續(xù)發(fā)送一大塊數(shù)據(jù),不再需要起始位和停止位。接收方利用同步字符,使其內(nèi)部時(shí)鐘與發(fā)送方同步,將其后的數(shù)據(jù)逐位移入,轉(zhuǎn)換成并行格式。
2.串行通信的機(jī)制1)單工(Simplex):單向通信,A只能發(fā)送數(shù)據(jù),B只能接收數(shù)據(jù)。與廣播方式類似。2)半雙工(HalfDuplex):雙向傳輸,但只有一根傳輸線,在同一時(shí)間只能AB,或AB。例如無線電對(duì)講機(jī)。3)全雙工(FullDuplex):有兩個(gè)通路,雙方可同時(shí)發(fā)送和接收數(shù)據(jù)。例如電話。3.波特率和發(fā)送/接收時(shí)鐘波特率(BaudRate)每秒傳送數(shù)據(jù)的位數(shù),單位波特(Bd),等于傳送每bit信息所用時(shí)間的倒數(shù)。
【例8-1】在串行通信中,設(shè)異步傳送波特率為4800bit/s,每個(gè)數(shù)據(jù)幀占10位,計(jì)算傳輸2K個(gè)數(shù)據(jù)幀所需時(shí)間t。
位時(shí)間:Td=1/4800(s)傳送總位數(shù):2×1024×10=20480(bit)所需時(shí)間:t=(1/4800)×20480=4.27(s)異步傳送常用波特率:110,300,600,1200,2400,4800,9600,19200,28800,36400,57600波特。同步傳送波特率高于異步傳送,可達(dá)到上千兆波特。4.奇偶校驗(yàn)
當(dāng)串行通信用于遠(yuǎn)距離傳送時(shí),不可避免地存在不同程度的噪聲,由噪聲而產(chǎn)生的干擾會(huì)造成傳送出錯(cuò)。為保證通信正確,需要對(duì)傳送的數(shù)據(jù)進(jìn)行校驗(yàn)。常用的校驗(yàn)方法有奇偶校驗(yàn)和循環(huán)冗余碼校驗(yàn)等。采用奇偶校驗(yàn)法,發(fā)送時(shí)在每個(gè)字符(或字節(jié))之后附加一位校驗(yàn)位,這個(gè)校驗(yàn)位可以是“0”或“1”,以便使校驗(yàn)位和所發(fā)送的字符(或字節(jié))中“1”的個(gè)數(shù)為奇數(shù)(稱為奇校驗(yàn)),或?yàn)榕紨?shù)(稱為偶校驗(yàn))。1.8251基本性能8251A是通用同步/異步數(shù)據(jù)收發(fā)器(USART),是常用的可編程通信接口器件,用于全雙工通信并具有同步或異步工作方式。同步方式:數(shù)據(jù)5~8位,波特率DC~64K位/秒,可選擇內(nèi)同步或外同步。異步方式:數(shù)據(jù)5~8位,波特率DC~19.2K位/秒,波特率系數(shù)(時(shí)鐘速率/傳輸速率)1、16和64,停止位1、1.5或2位,能檢查假啟動(dòng)位,可自動(dòng)產(chǎn)生、檢測(cè)和處理中止符等。兩種方式,均有檢測(cè)奇偶校驗(yàn)錯(cuò)、溢出錯(cuò)和幀錯(cuò)誤的功能。8.1.2可編程串行通信接口芯片8251A2.8251A的內(nèi)部結(jié)構(gòu)和外部引腳(1)內(nèi)部主要部件:數(shù)據(jù)總線緩沖器接收緩沖器和接收控制電路發(fā)送緩沖器和發(fā)送控制電路讀寫控制電路調(diào)制解調(diào)控制電路
從圖中也可看到各部件相應(yīng)的引腳信號(hào)
(2)數(shù)據(jù)總線緩沖器:它是8251A與系統(tǒng)數(shù)據(jù)總線間的接口,內(nèi)部包含:狀態(tài)緩沖器—存放8251A的狀態(tài)信息;接收數(shù)據(jù)緩沖器—存放8251A接收的數(shù)據(jù);發(fā)送數(shù)據(jù)/命令緩沖器—存放寫入8251A的數(shù)據(jù)或命令(控制)字。
D7~D0數(shù)據(jù)線
與系統(tǒng)數(shù)據(jù)總線相連,用來傳送在8251A和CPU間傳送的數(shù)據(jù)信息、編程命令和狀態(tài)信息。
(3)接收緩沖器接收緩沖器由接收移位寄存器、串/并變換電路和同步字符寄存器等構(gòu)成。在時(shí)鐘脈沖控制下,逐個(gè)接收從RxD引腳上輸入的串行數(shù)據(jù),并送入移位寄存器,待接收到1個(gè)字符數(shù)據(jù)后,通過串/并變換電路,將數(shù)據(jù)變成并行數(shù)據(jù),通過內(nèi)部總線送到接收數(shù)據(jù)緩沖器中。接收數(shù)據(jù)的速率取決于送到接收時(shí)鐘端的時(shí)鐘頻率。在異步方式下,接收時(shí)鐘的頻率可以是波特率的1倍、16倍或64倍,或波特率系數(shù)為1、16或64。接收數(shù)據(jù)過程:CPU發(fā)出允許接收數(shù)據(jù)命令后,接收緩沖器就一直監(jiān)視著RxD腳上的信號(hào)電平,一旦檢測(cè)到啟動(dòng)信號(hào),就啟動(dòng)接收控制器中的內(nèi)部計(jì)數(shù)器,對(duì)時(shí)鐘頻率進(jìn)行計(jì)數(shù)。采集來的數(shù)據(jù)送到輸入移位寄存器中,進(jìn)行移位和奇偶校驗(yàn),刪除起始位、停止位,得到并行數(shù)據(jù)后,送入接收數(shù)據(jù)緩沖器。使RxRDY引腳輸出高電平,通知CPU,8251A已從外部接收一個(gè)字符,等待送到CPU去。芯片內(nèi)部狀態(tài)寄存器中的RxRDY位也被置成高電平。同步傳送方式:內(nèi)同步方式:把接收到的數(shù)據(jù)與同步字符寄存器的內(nèi)容比較。如兩者相同,則將SYNDET引腳置為高電平,表示已實(shí)現(xiàn)同步。若采用雙同步字符方式,則需搜索到兩個(gè)同步字符后,才認(rèn)為已實(shí)現(xiàn)同步。外同步方式:由外部電路來檢測(cè)同步字符。外部檢測(cè)到同步字符后,就從SYNDET輸入一個(gè)高電平,通知8251A,已檢測(cè)到同步字符,可脫離對(duì)同步字符的搜索。實(shí)現(xiàn)同步之后,接收器才能接收同步數(shù)據(jù)。接收端有關(guān)的信號(hào):1)RxD(ReceiverData)接收數(shù)據(jù)外部串行數(shù)據(jù)從RxD腳逐位移入接收移位寄存器中,經(jīng)串并變換變成并行數(shù)據(jù)后,進(jìn)入接收數(shù)據(jù)緩沖器,等待輸入到CPU去。2)RxRDY(ReceiverReady)接收數(shù)據(jù)準(zhǔn)備好高電平時(shí),表示接收數(shù)據(jù)緩沖器中已收到一個(gè)字符數(shù)據(jù),可將其輸入到CPU去。若用中斷方式傳送數(shù)據(jù),此信號(hào)可作中斷請(qǐng)求信號(hào),由中斷服務(wù)程序用IN指令讀入數(shù)據(jù);查詢方式時(shí)為狀態(tài)信號(hào),查到高電平時(shí),由IN指令讀取數(shù)據(jù)。每當(dāng)CPU讀走一個(gè)字符后,RxRDY就復(fù)位為低電平,接收到一個(gè)新字符后,又變?yōu)楦唠娖健?)SYNDET/BRKDET同步檢測(cè)/斷點(diǎn)檢測(cè)同步方式下為同步檢測(cè)SYNDET,系統(tǒng)復(fù)位時(shí)為0。內(nèi)同步方式,SYNDET為輸出。檢測(cè)到同步字符后,輸出變高,執(zhí)行一次讀狀態(tài)操作后,自動(dòng)復(fù)位。外同步方式,它為輸入,由低變高時(shí),在下個(gè)的上升沿開始接收字符,達(dá)到同步后回復(fù)到低電平。異步方式下為斷點(diǎn)檢測(cè)BRKDET,輸出。從RxD端連續(xù)收到兩個(gè)全0字符后,輸出高電平,表示當(dāng)前線路上無數(shù)據(jù)可讀。只有當(dāng)RxD端收到一個(gè)“1”信號(hào)或8251A復(fù)位時(shí),此信號(hào)才復(fù)位成低電平。BRKDET可作為狀態(tài)位,由CPU讀出。
4)
(ReceiverClock)接收時(shí)鐘,外部輸入決定8251A接收數(shù)據(jù)的速率。同步方式下,
端輸入的時(shí)鐘頻率應(yīng)等于接收數(shù)據(jù)的波特率。異步方式下,它的頻率可以是波特率的1倍、16倍或64倍。接收時(shí)鐘應(yīng)與對(duì)方的發(fā)送時(shí)鐘相同。(4)發(fā)送緩沖器和控制電路發(fā)送數(shù)據(jù)時(shí),用OUT指令把數(shù)據(jù)送到發(fā)數(shù)據(jù)緩沖器,經(jīng)移位寄存器進(jìn)行并-串變換后,從TxD引腳串行發(fā)送出去。異步方式,發(fā)送控制器為發(fā)送數(shù)據(jù)加上起始位、奇偶校驗(yàn)位和停止位,從TxD上發(fā)送出去。發(fā)送速率可以是發(fā)送波特率的1倍、16倍或64倍。同步方式,發(fā)送前先送出1個(gè)或2個(gè)同步字符,再逐位輸出串行數(shù)據(jù)。同步發(fā)送時(shí),字符間不允許留空隙,若發(fā)送過程中停止發(fā)送,將不斷自動(dòng)插入同步字符。數(shù)據(jù)傳輸率等于TxC的時(shí)鐘頻率。與發(fā)送端有關(guān)的信號(hào)1)TxD(TransmitterData)發(fā)送數(shù)據(jù)把CPU送來的并行數(shù)據(jù)轉(zhuǎn)換成串行格式后,逐位從TxD腳發(fā)送出去。2)TxRDY(TransmitterReady)發(fā)送器準(zhǔn)備好當(dāng)允許8251A發(fā)送數(shù)據(jù),而且發(fā)送數(shù)據(jù)/命令緩沖器空時(shí),TxRDY=1,表示已準(zhǔn)備好從CPU接收數(shù)據(jù)。中斷傳送方式,TxRDY有效時(shí)請(qǐng)求中斷,由中斷服務(wù)程序用OUT指令從CPU輸出一個(gè)數(shù)據(jù)到8251A。查詢方式,TxRDY為狀態(tài)信號(hào),CPU檢測(cè)到該信號(hào)為高時(shí),向8251A輸出一個(gè)數(shù)據(jù),隨后TxRDY變回低電平。3)TxE(TransmitterEmpty)發(fā)送器空TxE=1時(shí),指示發(fā)送器中的并-串轉(zhuǎn)換器空,已無數(shù)據(jù)可向外部發(fā)送。異步方式下,由TxD引腳向外部輸出空閑位。同步方式下,由TxD引腳向外部輸出同步字符。8251A從CPU接收到一個(gè)數(shù)據(jù)后,TxE變成低電平。4)
(TransmitterClock)發(fā)送器時(shí)鐘確定8251A的發(fā)送速率。同步方式,
輸入時(shí)鐘頻率等于發(fā)送數(shù)據(jù)的波特率。異步方式,發(fā)送時(shí)鐘是波特率的1、16或64倍。
(5)讀/寫控制電路:CPU送到控制電路的信號(hào):RESET:高電平時(shí)復(fù)位,等待初始化編程、、:讀、寫和片選信號(hào)CLK:時(shí)鐘信號(hào),產(chǎn)生8251A內(nèi)部定時(shí)信號(hào):控制口/數(shù)據(jù)端口選擇信號(hào):1
選擇控制口,0
選擇數(shù)據(jù)口控制口/數(shù)據(jù)端口選擇引腳(信號(hào)):該引腳用于區(qū)分8251A內(nèi)部僅有的兩個(gè)端口,一個(gè)是控制狀態(tài)端口,一個(gè)是數(shù)據(jù)端口,所以又稱為片內(nèi)地址選擇輸入端。對(duì)于8086系統(tǒng),當(dāng)8251A的數(shù)據(jù)線連接在CPU數(shù)據(jù)總線的低8位時(shí),由于低8位數(shù)據(jù)線必須對(duì)應(yīng)訪問偶地址端口,所以,必須定義8251A內(nèi)部的兩個(gè)端口均為偶地址,這樣,該引腳應(yīng)連接在CPU地址總線的A1端,且置地址總線的A0=0,這樣,該引腳的變化就可使8251A的兩個(gè)端口地址為連續(xù)的偶地址。例如,設(shè)地址總線為A15~A0,其中A15~A2為8251A的片選地址,
該引腳接在A1端,A0=0。則:
8251A的端口地址為0FFFEH(控制狀態(tài)口)、0FFFCH(數(shù)據(jù)端口)。下列指令:MOVDX,0FFFCHINAL,DX執(zhí)行后,CPU讀取8251A數(shù)據(jù)端口的內(nèi)容到AL中。
8.1.38251A的編程
應(yīng)用8251A時(shí)應(yīng)先對(duì)其進(jìn)行初始化編程:為可靠復(fù)位,應(yīng)先向控制口連續(xù)寫入3個(gè)0,再寫入1個(gè)復(fù)位字。然后寫入方式字及命令字。方式字用來確定工作方式,如規(guī)定同步/異步方式、傳送的波特率、字符長度、奇偶校驗(yàn)等。命令字控制它按規(guī)定的方式工作。如允許/禁止收發(fā)數(shù)據(jù),啟動(dòng)搜索同步字符,迫使內(nèi)部復(fù)位等。對(duì)控制口進(jìn)行一次寫入操作后,要有寫恢復(fù)時(shí)間,即延遲一點(diǎn)時(shí)間后才能再寫入下個(gè)控制字。用IN指令可隨時(shí)讀出狀態(tài)字,了解工作狀態(tài)。
1.方式選擇控制字1)方式字異步方式下:B2B1確定波特率系數(shù)收發(fā)時(shí)鐘頻率
=
收發(fā)波特率
×波特率系數(shù)例:收發(fā)時(shí)鐘頻率9600波特率系數(shù)×16,則收發(fā)波特率為:9600/16=600
其它見圖
【例8-2】將8251A工作在異步傳輸方式、波特率因子為64、采用偶校驗(yàn)、1個(gè)停止位、7個(gè)數(shù)據(jù)位。根據(jù)圖8-7可設(shè)定方式選擇控制字為:
01111011B=7BH。若接收和發(fā)送的時(shí)鐘頻率為614.4kHz,則輸入和輸出數(shù)據(jù)的傳輸率為 614.4k/64=9600bit/s。若8251A的控制口地址為2FFAH,則初始化程序中寫入8251A方式選擇控制器的指令段為:MOV DX,2FFAHMOV AL,7BHOUT DX,AL......2.操作命令控制字IR=1使8251A內(nèi)部復(fù)位。例:復(fù)位字=0100
0000B=40HRxE=1,允許接收數(shù)據(jù);TxEN=1,允許發(fā)送數(shù)據(jù);ER=1,使各錯(cuò)誤標(biāo)志位清0;例:允許接收發(fā)送數(shù)據(jù)、清錯(cuò)誤標(biāo)志,命令字=0001
0101B
3.狀態(tài)控制字TxRDY=1發(fā)送數(shù)據(jù)緩沖器空,準(zhǔn)備好接收數(shù)據(jù)。PE=1奇偶校驗(yàn)錯(cuò)。OE=1溢出錯(cuò)。FE=1幀錯(cuò)誤,僅用于異步方式。DSR=1,MODEM已準(zhǔn)備好數(shù)據(jù)。其余位的意義與引腳功能相同。4.8251A工作方式8251A由方式選擇控制字決定工作于同步或異步模式、接收和發(fā)送的字符格式、數(shù)據(jù)傳輸速率等。(1)8251A異步工作方式若8251A工作在異步方式,在需要發(fā)送字符時(shí),首先必須設(shè)置允許發(fā)送信號(hào)TxEN=1,且外部設(shè)備發(fā)來的對(duì)CPU請(qǐng)求發(fā)送信號(hào)的響應(yīng)信號(hào)
=0,然后就開始發(fā)送過程。(2)8251A同步工作方式在同步方式發(fā)送字符之前,必須設(shè)置8251A的TxEN和
有效。5.8251A初始化編程在8251A開始工作前或者復(fù)位后,必須對(duì)其進(jìn)行初始化編程。由前面所介紹的內(nèi)容可以看出,8251A內(nèi)部可供用戶訪問的寄存器有7個(gè),而8251A芯片只提供兩個(gè)端口地址,分別用于訪問控制寄存器和數(shù)據(jù)寄存器。為此,在寫入8251A控制字時(shí)必須遵循芯片硬件邏輯設(shè)計(jì)的有關(guān)約定,按照規(guī)定的先后順序進(jìn)行設(shè)置。8251A內(nèi)部7個(gè)寄存器端口的分配如下:1)在寫入控制字前,8251A必須執(zhí)行復(fù)位操作??梢杂糜布椒▽?shí)現(xiàn)復(fù)位操作,即給RESET引腳輸入一個(gè)復(fù)位信號(hào)(高電平);也可以用軟件方法實(shí)現(xiàn)復(fù)位操作,即設(shè)置操作命令控制字的D6位為1。2)復(fù)位操作之后,必須緊接著寫入(輸出)方式選擇控制字到控制端口(寄存器)。3)寫入方式選擇控制字后,若是同步工作方式,還必須寫入控制端口1個(gè)或2個(gè)同步字符,之后再寫入控制端口的是操作命令控制字;若是異步方式,則直接寫入控制端口的是操作命令控制字。由此可以看出,同一個(gè)控制端口寫入幾個(gè)不同的控制字,根據(jù)其寫入的順序,由其硬件區(qū)別不同的含義圖8-108251A初始化編程流程圖【例8-4】設(shè)8251A采用內(nèi)同步傳送方式,兩個(gè)同步字符,7位數(shù)據(jù)位,同步字符為32H,奇校驗(yàn),控制端口地址為82H,數(shù)據(jù)端口地址為80H。要求:清除錯(cuò)誤標(biāo)志,數(shù)據(jù)終端和接收允許處于有效狀態(tài)。工作方式選擇字為:00011000=18H。操作命令控制字為:10010110=96H。接收數(shù)據(jù)初始化程序如下。MOVAL,18H OUT82H,AL ;寫入方式選擇控制字MOVAL,32HOUT82H,AL OUT82H,AL ;寫入2個(gè)同步字符MOVAL,96HOUT80H,AL ;寫入操作命令控制字
【例8-3】在8086系統(tǒng)中設(shè)8251A的工作方式為:具有聯(lián)絡(luò)信號(hào)的全雙工異步模式,數(shù)據(jù)格式為7位二進(jìn)制數(shù)據(jù)位,進(jìn)行偶校驗(yàn),1.5個(gè)停止位;波特率因子為64。要求:清除出錯(cuò)標(biāo)志、令請(qǐng)求發(fā)送信號(hào)RTS處于有效狀態(tài)、通知調(diào)制解調(diào)器和外部設(shè)備CPU將要發(fā)送信息。令數(shù)據(jù)終端準(zhǔn)備好信號(hào)DTR處于有效狀態(tài),通知調(diào)制解調(diào)器和外部設(shè)備數(shù)據(jù)終端準(zhǔn)備好接收數(shù)據(jù)。令發(fā)送允許位TxEN和接收允許位RxE為1,使發(fā)送和接收允許都處于有效狀態(tài)。設(shè)8251A數(shù)據(jù)線D7~D0連接在CPU數(shù)據(jù)總線的低8位時(shí),CPU訪問各個(gè)端口必須使用偶地址。硬件連線上把CPU地址線的A1接在C/引腳,命令端口地址為2A82H,數(shù)據(jù)端口為2A80H。由題中要求,按照規(guī)定的方式選擇控制字各位的含義,設(shè)置方式選擇控制字為:10111011B=0BBH。按照規(guī)定的操作命令控制字的各位的含義,設(shè)置操作命令字為: 00110111B=37H。初始化程序如下。MOVDX,2A82HMOVAL,0BBH;設(shè)置方式選擇字,使8251A處于異步模式,波特率
;因子為64OUTDX,AL ;數(shù)據(jù)格式為7個(gè)數(shù)據(jù)位,偶校驗(yàn),1.5個(gè)停止位MOVAL,37H ;設(shè)置命令字,置請(qǐng)求發(fā)送有效,數(shù)據(jù)終端準(zhǔn)備好
;信號(hào)有效OUTDX,AL ;置發(fā)送標(biāo)志允許,接收允許標(biāo)志為18.1.48251A應(yīng)用舉例串行通信主要應(yīng)用于遠(yuǎn)距離通信。但是,由于串行通信的硬件結(jié)構(gòu)簡單及計(jì)算機(jī)工作速度的極大提高,一般情況下,在近距離通信中,串行通信也得到廣泛的應(yīng)用。如兩臺(tái)近距離計(jì)算機(jī)之間的通信、計(jì)算機(jī)與工業(yè)控制常用的PLC、單片機(jī)開發(fā)實(shí)驗(yàn)裝置以及電子設(shè)計(jì)自動(dòng)化(EDA)開發(fā)裝置的通信(程序調(diào)試、下載)等均可采用串行(RS-232或USB總線)通信。1.通信要求及參數(shù)要求實(shí)現(xiàn)甲、乙兩機(jī)近距離串行異步通信、全雙工傳送方式、8位數(shù)據(jù)位、2位停止位、無校驗(yàn)位、數(shù)據(jù)傳輸率為480f/s(波特率為4800bit/s)、波特率因子為64。假設(shè)CPU分配給甲機(jī)端口地址為04F8H~04FBH,分配給乙機(jī)端口地址為2000H~2003H。甲機(jī)需發(fā)送的數(shù)據(jù)是數(shù)據(jù)段以SRC1為起始地址的連續(xù)256個(gè)字節(jié)存儲(chǔ)單元的數(shù)據(jù);乙機(jī)把接收的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)段以DST2為起始地址的存儲(chǔ)單元中。2.串行通信標(biāo)準(zhǔn)及接口電路串行通信標(biāo)準(zhǔn)及接口電路連接如圖8-11所示。1)采用RS-232C接口標(biāo)準(zhǔn)、8251A實(shí)現(xiàn)接口功能,故將發(fā)送端8251A串行輸出端TxD的TTL電平轉(zhuǎn)換成RS-232C電平進(jìn)行傳送;將接收端RS-232C電平轉(zhuǎn)換成8251A接收端RxD的TTL電平進(jìn)行接收。具體RS232接口的使用參加第10章10.2.3。2)兩臺(tái)計(jì)算機(jī)的串行接口之間采用無聯(lián)絡(luò)信號(hào)的全雙工連接,需要將兩臺(tái)計(jì)算機(jī)的串行數(shù)據(jù)發(fā)送和對(duì)方得串行數(shù)據(jù)接收端互相連接,并且地線連在一起,就可以實(shí)現(xiàn)兩機(jī)串行通信。注意:盡管使用的是無聯(lián)絡(luò)信號(hào)的傳輸方式,但兩機(jī)8251A的端必須接地。圖8-11兩機(jī)串行通信接口電路3)端口地址分配及地址線連接:甲機(jī)8251A控制端口地址為04FAH、數(shù)據(jù)端口地址為04F8H。乙機(jī)8251A控制端口地址為2002H、數(shù)據(jù)端口地址為2000H。這里選用CPU提供的偶地址作為端口地址(若8086CPU,則必須為偶地址),故CPU的地址總線A0接0電平、A1接8251A的C/(作片內(nèi)端口選擇)、A15~A2作為CPU對(duì)8251A的片選信號(hào)。4)8251A的數(shù)據(jù)線D7~D0連接CPU數(shù)據(jù)總線D7~D0。5)8251A控制線如圖8-11所示。6)8251A沒有內(nèi)置的時(shí)鐘發(fā)生器,必須由外部產(chǎn)生建立時(shí)鐘信號(hào),通常由機(jī)內(nèi)8253產(chǎn)生時(shí)鐘連接TxC、RxC。甲機(jī)發(fā)送程序DATA SEGMENTSRC1DB'HELLOWORLDXXXX.......' ;數(shù)據(jù)段內(nèi)要傳送的數(shù)據(jù)串
CNT DB10DUP(?)DATA ENDSSTACK SEGMENTPARASTACK'STACK' BUFDB100DUP(?)STACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX ;以上為源程序結(jié)構(gòu)通用部分;下面為8251A初始化程序塊
MOVDX,04FAH;DX←8251A控制口地址(甲機(jī)) MOVCX,3 ;為防止內(nèi)部復(fù)位控制錯(cuò)誤LOP: MOVAL,0 ;先發(fā)出3個(gè)數(shù)據(jù)0 OUTDX,AL ;傳送給8251A的控制端口
NOP LOOPLOP MOVAL,40H ;操作命令字(復(fù)位命令) OUTDX,AL ;發(fā)內(nèi)部復(fù)位命令
NOP MOVAL,0CFH ;方式選擇控制字
OUTDX,AL ;控制口←方式選擇控制字
MOVAL,37H ;操作命令字
OUTDX,AL ;控制口←操作命令字3.接口編程;下面為串行發(fā)送程序塊
MOVSI,OFFSETSRC1;SI←數(shù)據(jù)串段內(nèi)偏移地址
MOVCX,0100H;CX←數(shù)據(jù)串長度LOP1: MOVDX,04FAH INAL,DX ;讀8251A狀態(tài)字
TESTAL,30H ;測(cè)試狀態(tài)字D5、D4位是否有1出現(xiàn)
JNZLOP2 ;有1則出錯(cuò)轉(zhuǎn)LOP2 TESTAL,01H ;檢測(cè)狀態(tài)位D0是否為1 JZLOP1;D0=0,則發(fā)送器未準(zhǔn)備好,轉(zhuǎn)LOP1繼續(xù)
MOVDX,04F8H;發(fā)送器準(zhǔn)備好,置數(shù)據(jù)端口地址
MOVAL,[SI] ;取一個(gè)數(shù)據(jù)
OUTDX,AL ;通過數(shù)據(jù)口發(fā)送數(shù)據(jù)
INCSI ;地址指針指向下一個(gè)數(shù)據(jù)
DECCX ;SI←(SI)-1,數(shù)據(jù)串長度自減1 JNZLOP1 ;未傳送完轉(zhuǎn)LOP1繼續(xù)LOP2: MOVAH,4CH;數(shù)據(jù)出錯(cuò)或數(shù)據(jù)傳送完返回系統(tǒng)
INT21HCODE ENDS ENDSTART乙機(jī)接收程序(略)8.1.58251仿真示例1.8251A控制LED燈仿真示例設(shè)計(jì)要求:8086控制8251A輸出串行數(shù)據(jù),并經(jīng)串行輸入轉(zhuǎn)并行輸出移位寄存器芯片74LS164,輸出8位數(shù)據(jù)控制6個(gè)LED燈依次向左熄滅(由于異步串行輸出的數(shù)據(jù)幀8位包含一個(gè)起始位和一個(gè)停止位,因此只能控制6位LED的亮滅)。根據(jù)題目要求實(shí)現(xiàn)串轉(zhuǎn)并,當(dāng)8251發(fā)送數(shù)據(jù)給74LS164時(shí),應(yīng)向74LS164同步輸出時(shí)鐘,發(fā)送數(shù)據(jù)完畢,應(yīng)關(guān)停向輸出74LS164的時(shí)鐘。因此這里利用8251的18引腳(TxEMPTY)的功能,當(dāng)8251從CPU接收到數(shù)據(jù)時(shí)為低電平,發(fā)送完數(shù)據(jù)之后為高電平;將此引腳通過非門取反之后用和8251的輸入時(shí)鐘通過與門之后給74LS164提供時(shí)鐘。達(dá)到8251發(fā)送數(shù)據(jù)時(shí)給74LS164提供時(shí)鐘,發(fā)送完數(shù)據(jù)關(guān)閉時(shí)鐘。圖8-128086系統(tǒng)仿真電路圖8-138251A串行通信控制LED燈電路原理匯編語言程序設(shè)計(jì),硬件原理圖中74LS164的時(shí)鐘輸入為外部時(shí)鐘,所以8251采用異步串行數(shù)據(jù)輸出方式。端口地址計(jì)算:8251的片選信號(hào)連接的是IO1,連接8086數(shù)據(jù)線的低8位(偶地址),因此根據(jù)上圖8-12可得端口地址設(shè)置應(yīng)為:A7A6A5A4A3A2A1A0控制端口:01001010(4AH)數(shù)據(jù)端口:01001000(48H).MODELSMALL.8086.STACK.CODEMOVDX,4AH;控制端口地址01001010MOVAL,45H;0100010101-1個(gè)停止位,00無奇偶校驗(yàn),01-數(shù)據(jù)位6位, 01-異步方式波特率x1OUTDX,ALAA1:MOVAH,06HMOVAL,0FEHMOVBL,ALAA:MOVAL,31HOUTDX,ALBUSY:MOVDX,4aHINAL,DXANDAL,05HJZBUSYMOVDX,48H;數(shù)據(jù)端口地址00100000MOVAL,BL程序設(shè)計(jì)OUTDX,ALCALLDELAYROLBL,1DECAHJNZAAJMPAA1DELAYPROCNEARPUSHBXPUSHCXMOVBX,300LOP1:MOVCX,209LOP2:LOOPLOP2DECBXJNZLOP1POPCXPOPBXRETDELAY ENDP.DATAEND2.8251A串行口輸出數(shù)據(jù)仿真示例設(shè)計(jì)要求:PC控制8251A通過串行口輸出字符或數(shù)據(jù),通過虛擬串口監(jiān)視和示波器顯示輸出。(1)硬件設(shè)計(jì)在ISIS原理圖編輯窗口放置元件并布線,設(shè)置相應(yīng)元器件參數(shù),完成電路圖的設(shè)計(jì),如圖8-16所示。圖8-168251A通過串行口仿真輸出電路添加元件清單:串行通信芯片8251A、DP-9標(biāo)準(zhǔn)插座COMPIM、示波器OSCILLOSCOPE、串口監(jiān)視儀器虛擬終端(VIRTUALTERMINAL)。8251控制端口:4AH,數(shù)據(jù)端口地址:48H。匯編語言程序設(shè)計(jì)如下:ADD8251DEQU48H ;串行通信控制器數(shù)據(jù)口地址ADD8251CEQU4AH ;串行通信控制器控制口地址CODESEGMENT;ASSUMEDS:DATA,CS:CODESTART: MOVAX,DATA MOVDS,AXINIT: XORAL,AL ;AL清零 MOVCX,03 MOVDX,ADD8251COUT1: OUTDX,AL ;往8251A的控制端口送3個(gè)0 LOOPOUT1 MOVAL,40H OUTDX,AL NOP MOVDX,ADD8251C MOVAL,01001101b;方式選擇控制字:01-1停止位
00-無校驗(yàn)
,11-8位數(shù)據(jù)位, OUTDX,AL ;01-波特率因子1 MOVAL,00010101b;控制字,出錯(cuò)標(biāo)志復(fù)位,允許發(fā)送、接收 OUTDX,ALRE: MOVCX,9 LEADI,STR1程序設(shè)計(jì)Send: ;串口發(fā)送 MOV DX,ADD8251C MOV AL,00010101b;清出錯(cuò),允許發(fā)送接收 OUT DX,AL NOPWTXD: IN AL,DX TEST AL,1 ;發(fā)送緩沖是否為空 NOP JZ WTXD MOV AL,[DI];取要發(fā)送的
MOV DX,ADD8251D OUT DX,AL;發(fā)送 INC DI PUSH CX MOV CX,200SIM: LOOP SIM POP CX LOOP Send JMP $CODEENDSDATASEGMENTSTR1DB'abbc11233'DATAENDSENDSTART
8.2并行通信及可編程序接口芯片應(yīng)用技術(shù)
8.2.1并行通信及接口基本概念8.2.2簡單并行I/O接口芯片8.2.3可編程序并行接口芯片8255A8.2.48255A控制字及工作方式8.2.58255A應(yīng)用舉例8.2.68255A并行通信Proteus仿真示例8.2.1并行通信及接口基本概念
并行通信方式是指同時(shí)使用多條數(shù)據(jù)線傳輸多位二進(jìn)制數(shù)據(jù),每一數(shù)據(jù)位數(shù)據(jù)獨(dú)自占用一根數(shù)據(jù)線。在計(jì)算機(jī)系統(tǒng)中,并行通信一次可以傳輸8位、16位或32位數(shù)據(jù)。并行通信的特點(diǎn)是傳輸速度快,具有N位數(shù)據(jù)線的并行通信的數(shù)據(jù)傳輸速率是串行通信數(shù)據(jù)傳輸速率的N倍。但由于并行傳輸線為多條位線密集并排在一起,不適合遠(yuǎn)距離傳送。因此,并行通信僅應(yīng)用在傳輸距離較短且數(shù)據(jù)傳輸速度要求較高的場(chǎng)合,如計(jì)算機(jī)與打印機(jī)、顯示器和硬盤之間的通信。實(shí)現(xiàn)計(jì)算機(jī)與外部設(shè)備進(jìn)行并行通信的電路稱為并行接口(電路)。8.2并行通信及可編程序接口芯片應(yīng)用技術(shù)
圖8-20簡單并行I/O接口電路芯片內(nèi)的芯片內(nèi)的其數(shù)據(jù)線DB與CPU數(shù)據(jù)線DB為接通狀態(tài),而DTR為1時(shí),表示CPU通過芯片把數(shù)據(jù)傳送給外部設(shè)備;DTR為0時(shí),表示CPU通過芯片讀取外部設(shè)備的數(shù)據(jù)。
在一般情況下,可以根據(jù)用戶的需要,使用可編程序并行接口芯片設(shè)計(jì)并行接口電路。由可編程序接口芯片實(shí)現(xiàn)的接口電路,其功能、狀態(tài)、控制邏輯電平等可以通過用戶程序進(jìn)行控制,可以設(shè)計(jì)為單向輸入、單向輸出、雙向功能或多通道接口電路,使用非常方便。由可編程序并行接口芯片組成的并行接口電路如圖8-21所示。圖8-21可編程序并行I/O接口電路8.2.2簡單并行I/O接口芯片1.并行輸出接口芯片8位輸出口常用的鎖存器有74LS273、74LS377以及帶三態(tài)門的8D鎖存器74LS373等。(1)74LS27374LS273是帶清除端的8D觸發(fā)器,上升沿觸發(fā),具有鎖存功能。圖8-20為74LS273的引腳圖和功能表。(2)74LS37774LS377是帶有輸出允許控制的8D觸發(fā)器,上升沿觸發(fā),其引腳圖和功能表如圖8-23所示。2.并行輸入接口芯片擴(kuò)展8位并行輸入口常用的三態(tài)門電路有74LS244、74LS245和74LS373等。(1)74LS24474LS244是一種三態(tài)輸出的8位總線緩沖驅(qū)動(dòng)器,無鎖存功能,其引腳圖和邏輯圖如圖8-24所示。(2)74LS24574LS245是三態(tài)輸出的8位總線收發(fā)器/驅(qū)動(dòng)器,無鎖存功能。該電路可將8位數(shù)據(jù)從A端送到B端或反之(由方向控制信號(hào)DIR電平?jīng)Q定),也可禁止傳輸(由使能信號(hào)
控制),其引腳圖和功能表如圖8-25所示。8.2.3可編程并行接口芯片8255A8255A是一種通用可編程并行I/O接口芯片(ProgrammablePeripherialInterface,PPI)。該芯片廣泛用于微型機(jī)系統(tǒng)中,用戶可編程序有多種操作選擇方式,通用性強(qiáng)、使用靈活。8255A為CPU與外部設(shè)備之間提供并行輸入/輸出通道,CPU通過8255A可直接與外部設(shè)備連接。1.8255A的結(jié)構(gòu)和功能外部40個(gè)引腳內(nèi)部包含:數(shù)據(jù)端口A、B、C。其中,C口分成C口上半部(C高)和C口下半部分(C低)。A組和B組控制邏輯數(shù)據(jù)總線緩沖器讀/寫控制邏輯。
數(shù)據(jù)端口A、B和C:端口A:包含1個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,1個(gè)8位的數(shù)據(jù)輸入鎖存器。A口作輸入或輸出時(shí)數(shù)據(jù)均能鎖存。端口B:包含1個(gè)8位的數(shù)據(jù)輸入/輸出鎖存器/緩沖器,1個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C:包含1個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,1個(gè)8位的數(shù)據(jù)輸入緩沖器,無輸入鎖存功能,分成兩個(gè)4位端口時(shí),每個(gè)端口有1個(gè)4位的輸出鎖存器。C口還可配合A口和B口工作,用來產(chǎn)生A口和B口的輸出控制信號(hào)、輸入到A口和B口的端口狀態(tài)信號(hào)。
A組和B組控制邏輯:A組:管理A口和C口高,通過PA7~PA0以及PC7~PC4引腳與外部聯(lián)絡(luò)。B組:管理B口和C口低,通過PB7~PB0以及PC3~PC0引腳與外部聯(lián)絡(luò)。內(nèi)部有控制寄存器,能接收CPU送來的命令字,決定A組和B組的工作方式,或?qū)口的每1位執(zhí)行置位/復(fù)位操作。
數(shù)據(jù)總線緩沖器雙向三態(tài)的8位緩沖器,用作8255A和系統(tǒng)數(shù)據(jù)總線間的接口。通過這個(gè)緩沖器和8位數(shù)據(jù)總線D7~D0,接收CPU送來的數(shù)據(jù)信息或控制字,外設(shè)傳送給CPU的數(shù)據(jù)或狀態(tài)信息,也要通過數(shù)據(jù)總線緩沖器和D7~D0送給CPU。2.引腳功能有關(guān)信號(hào):RESET,系統(tǒng)復(fù)位。高電平時(shí)使控制字寄存器清0,各端口工作于輸入方式。,片選。譯碼電路產(chǎn)生,低電平時(shí)芯片才選中。,讀。有效時(shí),可讀取8255A的數(shù)據(jù)或狀態(tài)信息。,寫。有效時(shí),可向8255A寫入數(shù)據(jù)或控制字。A1A0,端口選擇。
A1A0=00,A口;A1A0=01,B口;
A1A0=10,C口;A1A0=11,控制口。在8位系統(tǒng)中,常將A1A0與地址總線A1A0相連。若8255A端口基地址為60H,則A口、B口、C口和控制口分別為60H,61H,62H和63H。=0,8255A可進(jìn)行讀/寫操作。
,可從A口、B口、C口讀出數(shù)據(jù)。,可向這3個(gè)端口寫入數(shù)據(jù)??诘刂酚葾1A0選擇,但當(dāng)A1A0=11時(shí),只能向控制口寫入控制字,否則為非法操作。
和不能同時(shí)為0。
設(shè)計(jì)電路時(shí)要注意:
A1、A0一般分別連接在CPU地址總線的低兩位。對(duì)于8086系統(tǒng),當(dāng)8255A的數(shù)據(jù)線連接在CPU數(shù)據(jù)總線的低8位時(shí),由于低8位數(shù)據(jù)線必須對(duì)應(yīng)訪問偶地址端口,所以,必須定義8255A內(nèi)部的4個(gè)端口地址均為偶地址。為此,A1和A0應(yīng)分別連接在CPU地址總線的A2位和A1位,且置地址總線的A0=0,這樣,就可使8255A的4個(gè)端口的地址為4個(gè)連續(xù)的偶地址。地址總線DB:例如:設(shè)地址總線為A15~A0,其中A15~A3為8255A的片選地址,A0=0。則8255A的端口A地址為0FFF8H,其他3個(gè)端口地址依次遞增2。設(shè)端口A為輸入口、端口B為輸出口,下列指令:
MOVDX,0FFF8H INAL,DX MOVDX,0FFFAH OUTDX,AL執(zhí)行后,CPU讀取8255A數(shù)據(jù)端口A的內(nèi)容到AL中;將AL的內(nèi)容輸出到數(shù)據(jù)端口B。(1)方式選擇控制字D7=1為方式控制特征位,表示該字節(jié)為工作方式控制字。D6~D3位為A組控制位,D2~D0為B組控制位。端口A可以選擇工作在方式0、方式1或方式2。端口B只能選擇工作在方式0或方式1。端口C只能工作在方式0。8.2.48255A控制字及工作方式
1.8255A控制字(2)
端口C置位/復(fù)位控制字可使C口任一引腳的輸出單獨(dú)置1或清0?!纠?-6】已知8255A端口地址為4A00H、4A02H、4A04H、4A06H。設(shè)置端口C的PC7引腳輸出高電平1,對(duì)外部設(shè)備進(jìn)行位控。置位/復(fù)位控制字為:
00001111B=0FH。初始化程序如下。MOVDX,4A06HMOVAL,0FHOUTDX,AL
2.8255工作方式
(1)方式0方式0為8255A的基本I/O方式。它適用于工作在無須握手信號(hào)的簡單輸入/輸出應(yīng)用場(chǎng)合。在方式0下,端口A、端口B、端口C的兩個(gè)部分(高4位和低4位)都可以作為輸入或輸出數(shù)據(jù)傳送,不使用聯(lián)絡(luò)信號(hào),也不使用中斷。
各端口均工作于方式0時(shí)的控制字A口、C高、B口、C低可構(gòu)成16種不同組態(tài)。例如,設(shè)8255A的控制字寄存器的口地址為63H,若要求A口和B口工作于方式0,A口、B口和C口高4位作輸入,C口低4位為輸出,可用下列指令來設(shè)置:MOV AL,10011010B;控制字10011010OUT 63H,AL【例8-8】已知8255A的A1、A0引腳分別連接地址總線的A1、A0(沒有限制奇偶地址時(shí)),端口地址分別為80H、81H、82H、83H。
設(shè)端口A工作在方式0,輸出;端口B工作在方式0,輸入;端口C高4位輸出、低4位輸入。工作方式控制字為:10000011B。初始化程序如下。MOVAL,10000011BOUT83H,AL在8086系統(tǒng)中,8255A的A1、A0引腳分別連接8086地址總線的A2、A1(A0=0偶地址),端口地址分別為80H、82H、84H、86H,同樣工作方式的控制字不變。初始化程序如下。MOVAL,10000011BOUT86H,AL
(2)
方式1選通輸入/輸出(StrobeInput/Output)方式A口、B口作數(shù)據(jù)口,均可工作于輸入或輸出方式,并能鎖存數(shù)據(jù)。要在聯(lián)絡(luò)信號(hào)控制下才能工作。PC0
PC2,PC3
PC5用作聯(lián)絡(luò)(Handshaking)信號(hào)。分3種情況:
1)選通輸入方式2)選通輸出方式3)選通I/O方式組合1)選通輸入方式A口和B口都工作于選通輸入方式時(shí),PC0-PC2,PC3-PC5用作聯(lián)絡(luò)信號(hào),
PC6,7還可作輸入輸出用。A口為輸入,PC3-5作聯(lián)絡(luò)信號(hào)??刂谱值腄3位為C高I/O,D3=1,PC6,7為輸入
D3=0,PC6,7為輸出B口為輸入,PC0-2作聯(lián)絡(luò)信號(hào)選通輸入聯(lián)絡(luò)信號(hào):/STB(Strobe),選通信號(hào)
低電平時(shí),將外部輸入數(shù)據(jù)通過PA7
PA0(A口)或PB7
PB0(B口)打入所選端口的輸入緩沖器中。/STBA:A口選通,從PC4引入;
/STBB:B口選通,從PC2引入。IBF(InputBufferFull),輸入緩沖器滿信號(hào)
高電平時(shí),表示輸入設(shè)備送來的數(shù)據(jù)已送到輸入緩沖器中,通知外設(shè)不要送新數(shù)據(jù)來。IBFA:A口緩沖器滿,從PC5輸出;IBFB:B口緩沖器滿,從PC1輸出。INTE(InterruptEnable),內(nèi)置的中斷允許信號(hào)。
在A組和B組控制邏輯中,設(shè)有中斷請(qǐng)求觸發(fā)器INTEA、INTEB。只有用軟件才能使其置1或清0。
用置位復(fù)位字使PC4置1時(shí),允許A口中斷;使PC2置1時(shí),允許B口中斷。INTR(InterruptRequest),是8255A向CPU發(fā)的中斷請(qǐng)求信號(hào)。
只有當(dāng)/STB、IBF、INTR都高時(shí),才能將INTR置為有效高電平。表示選通信號(hào)已結(jié)束,緩沖器中已有數(shù)據(jù),中斷是允許的,8255A可向CPU發(fā)中斷請(qǐng)求信號(hào)INTR,要求CPU讀取外設(shè)送到緩沖器中的數(shù)據(jù)。方式1選通輸入時(shí)序①外設(shè)把1個(gè)數(shù)據(jù)送到A口或B口后,向8255A發(fā)選通信號(hào),數(shù)據(jù)被8255A鎖存。②隨后IBF變高,指示輸入緩沖器已滿,外設(shè)不要送新數(shù)據(jù)來。③回復(fù)高電平后,若IBF和INTE也同時(shí)為高,INTR就會(huì)變高,請(qǐng)求中斷,CPU響應(yīng)中斷后執(zhí)行IN指令讀取數(shù)據(jù)(變低)。④有效后,經(jīng)tRIT時(shí)間INTR變低,清除中斷。⑤
讀信號(hào)結(jié)束,數(shù)據(jù)讀入累加器;之后IBF變低,緩沖器已空,外設(shè)可再送新的數(shù)據(jù)來。2)選通輸出方式
A口輸出:
PC3,PC6和PC7作A口的聯(lián)絡(luò)信號(hào)
B口輸出:PC0,PC1和PC2作B口的聯(lián)絡(luò)信號(hào)PC4、PC5可作輸入或輸出
D3=1,輸入
D3=0,輸出選通輸出聯(lián)絡(luò)信號(hào):(OutputBufferFull),輸出緩沖器滿,表示數(shù)據(jù)已寫到輸出口,并已出現(xiàn)在PA和PB線上,通知外設(shè)取走。PC7用作,,PC1用作(Acknowledge),外設(shè)回答信號(hào)
,CPU輸出到A口或B口的數(shù)據(jù)已被外設(shè)接收。PC6用作,PC2用作INTE,中斷允許信號(hào)INTE=0,端口允許中斷,置1時(shí)被屏蔽。INTEA由PC6控制,INTEB由PC2
控制,它們由置位/復(fù)位字進(jìn)行設(shè)置。INTR,中斷請(qǐng)求信號(hào)輸出設(shè)備收到CPU輸出的數(shù)據(jù)后,INTR變高,向CPU提出中斷請(qǐng)求,要求再輸出1個(gè)數(shù)據(jù)到外設(shè)。當(dāng)、
、INTE均=1時(shí),才能使INTR變高。INTRA從
PC3
引腳輸出,INTRB
從PC0
輸出。
3)選通輸入/輸出方式組合口也可單獨(dú)定義
A口輸入,B口輸出A口輸出,B口輸入PC0~PC5作控制線 PC0~PC3和PC6、PC7作控制D3=1,PC6、7為輸入
D3=1,PC4、5為輸入D3=0,PC6、7為輸出
D3=0,PC4、5為輸出(3)
方式2方式2也稱雙向選通輸入/輸出方式,該方式僅適用于端口A。在方式2下,端口A的PA7~PA0作為雙向的數(shù)據(jù)總線,外設(shè)既能通過端口A發(fā)送數(shù)據(jù),又能接收數(shù)據(jù);端口A在輸入和輸出時(shí)均具有鎖存功能;CPU可以通過程序查詢方式或中斷方式進(jìn)行數(shù)據(jù)傳送。
端口C的5條引腳由8255A定義用作位控應(yīng)答信號(hào)或中斷請(qǐng)求信號(hào)。其引腳定義及狀態(tài)字如圖8-33所示。
INTRA:中斷請(qǐng)求信號(hào)、輸出、高電平有效。
端口A作為輸入口時(shí),當(dāng)外設(shè)的數(shù)據(jù)送入8255A的輸入鎖存器,使IBF、
和INTE1(輸入中斷允許)均為高電平時(shí),INTRA=1,向CPU申請(qǐng)中斷,CPU采用中斷傳送方式來讀取位于8255A輸入鎖存器中的數(shù)據(jù)。輸入中斷允許INTE1利用按位置位/復(fù)位的功能使PC6置1來控制。
端口A作為輸出口時(shí),當(dāng)外部設(shè)備取走數(shù)據(jù)后,使8255A的輸出鎖存器為空且INTE2(輸出中斷允許)為高電平時(shí),INTRA=1,8255A向CPU申請(qǐng)中斷,CPU可以采用中斷傳送方式向8255A寫入下一個(gè)數(shù)據(jù)。輸出中斷允許利用按位置位/復(fù)位的功能使PC4置1來控制。以上8255A的3種工作方式可以看出:
在方式0下,3個(gè)端口可以任意選擇為輸入口或輸出口,由于芯片內(nèi)部沒有定義控制和狀態(tài)信號(hào),用戶可以自行設(shè)定端口C各位的含義;
在方式1下,定義了端口C的某些位作為控制及狀態(tài)信息,該方式只適用于端口A和端口B作為選通輸入口或輸出口;
在方式2下,僅適用于端口A為雙向選通輸入/輸出,定義了端口C的某些位作為控制及狀態(tài)信息,而端口B的工作方式不受影響。
3個(gè)端口相互獨(dú)立又有關(guān)聯(lián),可以單獨(dú)使用,互不影響,也可以配合使用,用戶可以根據(jù)設(shè)計(jì)需要通過編程選擇任一工作方式和I/O狀態(tài)。各端口各種工作方式下的功能關(guān)系見表8-33.8255A初始化編程
8255A在使用前必須進(jìn)行初始化編程,即將相關(guān)的方式控制字和端口C置位/復(fù)位控制字寫入8255A控制端口,以設(shè)定接口芯片的工作方式、中斷允許控制和選擇芯片的接口功能。注意:兩種不同類型的控制字寫入同一個(gè)控制端口。初始化步驟如下。
1)確定8255A控制端口地址,根據(jù)要求設(shè)計(jì)好工作方式控制字寫入控制端口。2)在方式1或方式2下,設(shè)置中斷允許置位/復(fù)位控制位,將其寫入8255A的控制口。注意:不同的工作方式、不同的端口,其中斷允許控制位不一定相同。
例如,工作在方式1下,端口A輸入時(shí)的中斷允許控制位為PC4,允許中斷的控制字為00001001B;工作在方式2下,端口A輸出時(shí)的中斷允許控制位為PC6,允許中斷的控制字為00001101B。應(yīng)用系統(tǒng)中通常使用7段LED顯示器,如圖8-30所示。圖8-307段數(shù)碼管a)共陰極型
b)共陽極型
c)引腳分布
8.2.58255A應(yīng)用舉例顯示數(shù)碼共陰極型段碼共陽極型段碼顯示數(shù)碼共陰極型段碼共陽極型段碼03FHC0HA77H88H106HF9HB7CH83H25BHA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H560H92HF71H8EH670H82H
707HF8H
87FH80H
96FH90H
表8-47段LED數(shù)碼管的段碼
用8255A作為LED數(shù)碼管及4位開關(guān)與CPU的接口,要求按照開關(guān)的二進(jìn)制編碼狀態(tài)顯示相應(yīng)的數(shù)碼,其接口電路如圖8-35所示。設(shè)8255A端口地址為0FFF8H、0FFFAH、0FFFCH、0FFFEH
控制字:10000010(82H)DATA SEGMENTXSHDM DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB98H,88H,83H,0C6H,0A1H,86H,8EHCNT DB10DUP(?)DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX;以上為源程序結(jié)構(gòu)通用部分;下面為8255A初始化程序塊 MOVAL,82H;A組方式0,PA輸出,B組方式0,PB 口輸入 MOVDX,0FFFEH OUTDX,ALLOP: MOVDX,0FFFAH INAL,DX ;讀端口B源程序ANDAL,0FHMOVBX,OFFSETXSHDMXLATMOVDX,0FFF8HOUTDX,AL ;寫入端口ACALLDELAYJMPLOPMOVAH,4CHINT21HDELAYPROC MOVBX,0500HLOP1:MOVCX,0FFHLOP2:NOP NOP LOOPLOP2 DECBX JNZLOP1 RETDELAYENDPCODEENDS END START8.3可編程序定時(shí)器/計(jì)數(shù)器芯片及應(yīng)用技術(shù)8.3.18253的性能、結(jié)構(gòu)及引腳功能8.3.28253控制字及工作方式8.3.38253編程8.3.48253應(yīng)用實(shí)例8.3.58253A定時(shí)/計(jì)數(shù)器Proteus仿真示例8.3.18253的性能、結(jié)構(gòu)及引腳功能1.基本性能可編程計(jì)數(shù)器/定時(shí)器利用硬件電路和中斷來控制定時(shí),定時(shí)時(shí)間由軟件確定,精確、靈活;還能對(duì)外部事件計(jì)數(shù)。8253是一種典型的可編程計(jì)數(shù)器/定時(shí)器,也稱可編程間隔定時(shí)器(ProgrammableIntervalTimer)內(nèi)部具有3個(gè)相互獨(dú)立的16位計(jì)數(shù)器通道;通過編程,每個(gè)通道可按6種不同的方式工作;可按二進(jìn)制或BCD碼計(jì)數(shù),最高計(jì)數(shù)頻率2.6MHz;采用倒計(jì)數(shù)方式,預(yù)先置入初值再進(jìn)行減1計(jì)數(shù)。還可用于可編程方波頻率產(chǎn)生器、分頻器、程控單脈沖發(fā)生器等多種場(chǎng)合。
內(nèi)部結(jié)構(gòu)包含以下幾部分:數(shù)據(jù)總線緩沖器讀/寫控制邏輯計(jì)數(shù)器或計(jì)數(shù)通道0
3控制字寄存器2.內(nèi)部結(jié)構(gòu)及功能8253的內(nèi)部結(jié)構(gòu)主要包括:3個(gè)完全獨(dú)立的計(jì)數(shù)通道、數(shù)據(jù)總線緩沖器、讀/寫控制邏輯及控制字寄存器。(1)
數(shù)據(jù)總線緩沖器是8253與數(shù)據(jù)總線連接時(shí)的接口電路,由8位雙向三態(tài)緩沖器構(gòu)成。CPU用IN、OUT指令對(duì)8253進(jìn)行讀寫的信息,都經(jīng)D7~D0傳送,包括:對(duì)8253初始化編程時(shí),CPU向它寫入的控制字;CPU向某一計(jì)數(shù)器寫入的計(jì)數(shù)初值;CPU從計(jì)數(shù)器讀出的計(jì)數(shù)值。(2)
讀/寫控制邏輯接收控制總線的輸入信號(hào),組合后形成各種控制信號(hào)??山邮盏男盘?hào)有:1)片選信號(hào),由I/O端口譯碼電路產(chǎn)生2)讀信號(hào),CPU讀取選定計(jì)數(shù)器中的內(nèi)容3)寫信號(hào),CPU寫入計(jì)數(shù)初值,或控制字4)A1A0,端口選擇信號(hào),即
A1A0=00,通道0;A1A0=01,通道1;
A1A0=10,通道2;A1A0=11,控制字寄存器(3)
計(jì)數(shù)器0~28253有3個(gè)相同而獨(dú)立的計(jì)數(shù)器/定時(shí)器通道,簡稱通道0、通道1、通道2。每通道都含1個(gè)8位控制字寄存器、1個(gè)16位計(jì)數(shù)初值寄存器、1個(gè)計(jì)數(shù)執(zhí)行部件、1個(gè)輸出鎖存器。執(zhí)行部件是1個(gè)16位減法計(jì)數(shù)器,從寄存器初值開始減1計(jì)數(shù)。輸出鎖存器隨時(shí)記錄計(jì)數(shù)器的值,必要時(shí)可從中讀出瞬時(shí)值。初值寄存器、執(zhí)行部件、輸出鎖存器都是16位,也可分成高8位和低8位,作8位寄存器用。通道作計(jì)數(shù)器使用:寫入計(jì)數(shù)初值后,在門控信號(hào)控制下,對(duì)CLK腳上的脈沖進(jìn)行
1計(jì)數(shù)。計(jì)數(shù)結(jié)束時(shí),從OUT引腳輸出脈沖信號(hào)。通道作定時(shí)器使用:
定時(shí)時(shí)間=時(shí)鐘脈沖周期tc×預(yù)置的計(jì)數(shù)初值n通道結(jié)構(gòu):每個(gè)通道由控制字寄存器、控制邏輯、計(jì)數(shù)初值寄存器、計(jì)數(shù)器、計(jì)數(shù)輸出鎖存器5部分組成,通道0、通道1、通道2的內(nèi)部結(jié)構(gòu)及功能完全相同,如圖8-40所示。在定時(shí)器工作方式下,必須有可靠的周期性計(jì)數(shù)脈沖,所需要的定時(shí)時(shí)間必須轉(zhuǎn)換為對(duì)周期性CLK時(shí)鐘脈沖的計(jì)數(shù)值:該計(jì)數(shù)值作為計(jì)數(shù)器的計(jì)數(shù)初始值,當(dāng)其被計(jì)數(shù)器減1直至為0時(shí),由OUT輸出指示信號(hào)表明定時(shí)時(shí)間到。在定時(shí)工作方式下,每當(dāng)計(jì)數(shù)單元為0時(shí),若設(shè)置計(jì)數(shù)初值寄存器CR的內(nèi)容自動(dòng)重新裝入計(jì)數(shù)單元,繼續(xù)反復(fù)執(zhí)行定時(shí)操作,其輸出端OUT將輸出連續(xù)的方波,輸出頻率為:與CPU的接口8位數(shù)據(jù)線:D0~D7尋址控制線:A0、A1、讀寫控制線:
各通道與外設(shè)的接口時(shí)鐘輸入:CLK門控輸入:GATE波形輸出:OUT8253引腳信號(hào)3.引腳功能3.引腳8253芯片共24根引腳線,DIP型封裝。引腳包括計(jì)數(shù)通道對(duì)外引腳、與CPU連接的數(shù)據(jù)線和控制信息引腳等
輸入信號(hào)組合形成的控制功能
=0時(shí),選中該芯片=0時(shí),可向3個(gè)計(jì)數(shù)器和控制口寫入數(shù)據(jù)=0時(shí),可從3個(gè)計(jì)數(shù)器讀出數(shù)據(jù),但不能讀控制口。
和都為0時(shí)為非法操作。A1、A0:片內(nèi)端口地址選擇信號(hào)、輸入。8253內(nèi)部有4個(gè)端口(3個(gè)計(jì)數(shù)通道和1個(gè)控制口),用A1、A0兩位代碼不同的組合(00、01、10、11),分別表示計(jì)數(shù)通道0、計(jì)數(shù)通道1、計(jì)數(shù)通道2和控制字寄存器的片內(nèi)地址。A1、A0一般分別連接在CPU地址總線的低兩位。對(duì)于8086系統(tǒng),當(dāng)8253的數(shù)據(jù)線連接在CPU數(shù)據(jù)總線的低8位時(shí),必須定義8253內(nèi)部的4個(gè)端口地址均為偶地址。CLK0~CLK2:計(jì)數(shù)輸入引腳。作計(jì)數(shù)器使用時(shí),分別為輸入給通道0、通道1、通道2的計(jì)數(shù)脈沖;作定時(shí)器使用時(shí),則為相應(yīng)通道的周期性基準(zhǔn)脈沖。OUT0~OUT2:分別為通道0、通道、通道2的計(jì)數(shù)結(jié)束輸出信號(hào)引腳。當(dāng)相應(yīng)通道的計(jì)數(shù)器減1為0時(shí),則相應(yīng)引腳輸出信號(hào)表示計(jì)數(shù)結(jié)束。該輸出信號(hào)可以作為計(jì)數(shù)和定時(shí)控制,也可以作為計(jì)數(shù)脈沖的分頻器等。GATE0~GATE2:分別為通道0、通道1、通道2的選通輸入(門控輸入)信號(hào)引腳,高電平有效,用于啟動(dòng)或禁止計(jì)數(shù)器的操作。當(dāng)GATE=1時(shí),啟動(dòng)計(jì)數(shù)單元開始計(jì)數(shù);GATE=0時(shí),計(jì)數(shù)器停止計(jì)數(shù)。8.3.28253控制字及工作方式
1.控制字
控制字寫入控制字寄存器。用來選定計(jì)數(shù)通道,各通道工作方式、讀寫格式和計(jì)數(shù)數(shù)制。
2.8253的工作方式方式0:計(jì)數(shù)結(jié)束時(shí)輸出控制方式(可以作為中斷請(qǐng)求信號(hào)),輸出一個(gè)正跳變方式1:可編程單穩(wěn)輸出,輸出一個(gè)寬度可
調(diào)的負(fù)脈沖方式2:比率發(fā)生器,輸出序列負(fù)脈沖方式3:方波發(fā)生器。方式2,3均可n分頻方式4:軟件觸發(fā)選通,寫入n開始計(jì)數(shù)方式5:硬件(GATE上升沿)觸發(fā)選通
(1)方式0—計(jì)數(shù)結(jié)束時(shí)輸出控制方式
該信號(hào)可作為向CPU發(fā)出的中斷請(qǐng)求信號(hào)。①
在8253進(jìn)入方式0之前,必須進(jìn)行初始化。首先把選擇方式0的控制字寫入8253控制字寄存器,8253便立即自動(dòng)復(fù)位,OUT輸出為低電平,計(jì)數(shù)初值寄存器CR清0。時(shí)序圖中時(shí)間起點(diǎn)0時(shí)刻前OUT輸出為低電平,說明已經(jīng)寫入8253控制字。②CPU寫入所選擇通道計(jì)數(shù)初值到寄存器CR中。③GATE=1時(shí),在寫入計(jì)數(shù)初值之后的第一個(gè)CLK脈沖的下降沿,把CR中的計(jì)數(shù)初值裝入減1計(jì)數(shù)器。④
之后,計(jì)數(shù)器處于計(jì)數(shù)狀態(tài),若門控信號(hào)GATE=1,則在每一個(gè)CLK脈沖的下降沿計(jì)數(shù)器CE進(jìn)行減1計(jì)數(shù)。⑤
計(jì)數(shù)過程中,若GATE=0,則停止計(jì)數(shù),直至GA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教育設(shè)備租賃服務(wù)協(xié)議書3篇
- 2025年度智慧城市基礎(chǔ)設(shè)施場(chǎng)承包建設(shè)合同4篇
- 2025年度旅游度假區(qū)租賃合作協(xié)議4篇
- 二零二五年度草花產(chǎn)業(yè)鏈上下游合作協(xié)議及供應(yīng)鏈管理合同3篇
- 二零二五年度知識(shí)產(chǎn)權(quán)行業(yè)勞動(dòng)合同范本3篇
- 二零二五年度航空航天設(shè)備制造承包協(xié)議6篇
- 2025年度農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)技術(shù)服務(wù)合同4篇
- 個(gè)人建房承攬協(xié)議實(shí)例版B版
- 2025年度產(chǎn)教融合校企深度合作協(xié)議4篇
- 2025年度企業(yè)培訓(xùn)場(chǎng)地租賃保證金及押金使用合同4篇
- 橫格紙A4打印模板
- CT設(shè)備維保服務(wù)售后服務(wù)方案
- 重癥血液凈化血管通路的建立與應(yīng)用中國專家共識(shí)(2023版)
- 兒科課件:急性細(xì)菌性腦膜炎
- 柜類家具結(jié)構(gòu)設(shè)計(jì)課件
- 陶瓷瓷磚企業(yè)(陶瓷廠)全套安全生產(chǎn)操作規(guī)程
- 煤炭運(yùn)輸安全保障措施提升運(yùn)輸安全保障措施
- JTGT-3833-2018-公路工程機(jī)械臺(tái)班費(fèi)用定額
- 保安巡邏線路圖
- (完整版)聚乙烯課件
- 建筑垃圾資源化綜合利用項(xiàng)目可行性實(shí)施方案
評(píng)論
0/150
提交評(píng)論