版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章基本I/O接口輸入輸出設(shè)備是計(jì)算機(jī)的重要組成部分,計(jì)算機(jī)通過(guò)它們與外界交換數(shù)據(jù),用戶也通過(guò)它們來(lái)使用計(jì)算機(jī)。由于外設(shè)種類(lèi)繁多,速度快慢差距很大,工作信號(hào)類(lèi)型多樣,所以在計(jì)算機(jī)系統(tǒng)中通常都是將設(shè)備通過(guò)接口與系統(tǒng)相連,而不是直接與系統(tǒng)總線相連。本章主要討論以下問(wèn)題:①什么是I/O接口,I/O接口的主要作用;②計(jì)算機(jī)與接口之間的數(shù)據(jù)傳輸機(jī)制;③
CPU對(duì)接口芯片的控制方法(用戶如何使用接口);④常用的接口控制芯片的功能作用及編程控制使用。⑤計(jì)算機(jī)接口發(fā)展趨勢(shì)。本章涉及教材內(nèi)容:第6章、第7章6.1I/O接口概述計(jì)算機(jī)工作時(shí),計(jì)算機(jī)系統(tǒng)必須與外部設(shè)備進(jìn)行交換信息。用戶通過(guò)輸入設(shè)備將命令、數(shù)據(jù)輸入計(jì)算機(jī),計(jì)算機(jī)通過(guò)輸出設(shè)備將處理的結(jié)果輸出計(jì)算機(jī)。由于外設(shè)種類(lèi)繁多,速度快慢差距很大,工作信號(hào)類(lèi)型多樣,所以在計(jì)算機(jī)系統(tǒng)中通常都是將設(shè)備通過(guò)I/O接口與計(jì)算機(jī)系統(tǒng)相連。1.I/O接口接口:接口可以看作是兩個(gè)系統(tǒng)或兩個(gè)部件之間的交界部分,它既可以是兩種硬件設(shè)備之間的連接電路,也可以是兩個(gè)軟件之間的共同邏輯邊界。I/O接口:把主機(jī)(系統(tǒng)總線)與外圍設(shè)備或其他外部系統(tǒng)之間的接口邏輯,稱為輸入/輸出接口(簡(jiǎn)稱I/O接口),接口在它所連接的兩個(gè)部件之間起著轉(zhuǎn)換器的作用。2I/O接口的功能①尋址接口邏輯接收總線送來(lái)的尋址信息,經(jīng)過(guò)譯碼,選擇多臺(tái)外部設(shè)備中的一臺(tái),或該設(shè)備中的某個(gè)有關(guān)的寄存器。②實(shí)現(xiàn)數(shù)據(jù)緩沖在接口電路中,一般設(shè)置一組數(shù)據(jù)緩沖寄存器,以補(bǔ)償各設(shè)備之間的速度差。③實(shí)現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換、電平變換等預(yù)處理。接口與總線之間一般采用并行數(shù)據(jù)傳輸,接口與外設(shè)之間有并行傳輸,也有串行傳輸,數(shù)據(jù)傳輸前必須先進(jìn)行數(shù)據(jù)格式的轉(zhuǎn)換。設(shè)備使用的信號(hào)電平與總線使用的信號(hào)電平有可能不同,必須進(jìn)行電平轉(zhuǎn)換。④實(shí)現(xiàn)控制邏輯CPU與I/O設(shè)備的通信控制是主機(jī)通過(guò)總線向接口傳輸命令信息的,接口要予以解釋?zhuān)a(chǎn)生相應(yīng)的操作命令發(fā)送給設(shè)備。接口連接的設(shè)備及接口本身的有關(guān)信息,通過(guò)總線傳輸給CPU。當(dāng)采用中斷方式控制信息的傳輸時(shí),接口中應(yīng)有相應(yīng)的中斷控制邏輯。當(dāng)采用DMA方式控制信息傳輸,接口中應(yīng)有相應(yīng)的DMA控制邏輯。⑤檢錯(cuò)I/O接口負(fù)責(zé)檢錯(cuò),隨后將錯(cuò)誤信息報(bào)告給CPU。一類(lèi)錯(cuò)誤是設(shè)備中的電路故障,另一類(lèi)錯(cuò)誤是數(shù)據(jù)傳輸時(shí)數(shù)據(jù)位出錯(cuò)。傳輸中的錯(cuò)誤經(jīng)常用一些檢驗(yàn)碼進(jìn)行檢測(cè),如奇偶校驗(yàn),保證數(shù)據(jù)無(wú)錯(cuò)傳輸。⑥與主機(jī)和設(shè)備通信上述功能都必須通過(guò)I/O接口與主機(jī)或與設(shè)備之間的通信來(lái)完成。6.1.1I/O指令I(lǐng)/O指令是專(zhuān)門(mén)用于計(jì)算機(jī)與外設(shè)交換信息的命令。①CPU不設(shè)專(zhuān)門(mén)的I/O指令:CPU不設(shè)專(zhuān)門(mén)的I/O指令,把外設(shè)看成存儲(chǔ)器對(duì)待,外設(shè)與主存儲(chǔ)器采用統(tǒng)一編址,對(duì)外設(shè)的操作就等同對(duì)內(nèi)存的操作,輸入采用訪問(wèn)存儲(chǔ)器的讀指令,輸出采用訪問(wèn)存儲(chǔ)器的寫(xiě)指令。優(yōu)點(diǎn)是CPU設(shè)計(jì)簡(jiǎn)單,缺點(diǎn)是外設(shè)占內(nèi)存空間地址,外部譯碼電路復(fù)雜。②CPU設(shè)專(zhuān)門(mén)的I/O指令:CPU設(shè)專(zhuān)門(mén)的I/O指令:輸入指令和輸出指令。如80X系列的CPU就是采用這種方法。優(yōu)點(diǎn)是外設(shè)不占內(nèi)存空間地址,外部譯碼電路簡(jiǎn)單。缺點(diǎn)是CPU中增加了指令,增加了CPU設(shè)計(jì)的復(fù)雜程度。輸入指令I(lǐng)NS:將外設(shè)數(shù)據(jù)輸入計(jì)算機(jī)系統(tǒng)格式:INAL(X),DX(端口地址)輸出指令OUTS:計(jì)算機(jī)系統(tǒng)將數(shù)據(jù)輸出到外設(shè)。格式:OUTDX(端口地址),AL(X)INAL,P8;從P8端口輸入一個(gè)字節(jié)到ALINAX,P8;從P8端口輸入一個(gè)字到AXINEAX,P8;從P8端口輸入一個(gè)雙字到EAXINAL,DX;從端口(DX)輸入一個(gè)字節(jié)到ALINAX,DX;從端口(DX)輸入一個(gè)字到AXINEAX,DX;從端口(DX)輸入一個(gè)雙字到EAX注:P8表示端口地址小于256INSB;從端口(DX)輸入一個(gè)字節(jié)到ES:DI存儲(chǔ)單元且DI=DI±1INSW;從端口(DX)輸入一個(gè)字到ES:DI存儲(chǔ)單元且DI=DI±2INSD;從端口(DX)輸入一個(gè)雙字到ES:DI存儲(chǔ)單元且DI=DI±4IN指令實(shí)現(xiàn)端口數(shù)據(jù)送累加器(AL、AX、EAX)INS指令實(shí)現(xiàn)端口數(shù)據(jù)送存儲(chǔ)器單元ES:DI端口地址存放在DX中或直接使用端口號(hào)P8(當(dāng)端口號(hào)小于256時(shí))OUTP8,AL;從AL輸出一個(gè)字節(jié)到P8OUTP8,AX;從AX輸出一個(gè)字到P8OUTP8,EAX;從EAX輸出一個(gè)雙字節(jié)到P8OUTDX,AL;從AL輸出一個(gè)字節(jié)到端口(DX)OUTDX,AX;從AL輸出一個(gè)字到端口(DX)OUTDX,EAX;從EAL輸出一個(gè)雙字到端口(DX)OUTSB;從存儲(chǔ)器DS:SI輸出一個(gè)字節(jié)到端口(DX)且SI=SI±1OUTSW;從存儲(chǔ)器DS:SI輸出一個(gè)字到端口(DX)且SI=SI±2OUTSD從存儲(chǔ)器DS:SI輸出一個(gè)雙字到端口(DX)且SI=SI±4OUT指令實(shí)現(xiàn)送累加器(AL、AX、EAX)數(shù)據(jù)送端口OUTS指令實(shí)現(xiàn)存儲(chǔ)器單元DS:SI數(shù)據(jù)送端口端口地址存放在DX中或直接使用端口號(hào)P8(當(dāng)端口號(hào)小于256時(shí))6.2存儲(chǔ)器映象I/O及隔離式I/O所謂存儲(chǔ)器映象I/O及隔離式I/O,實(shí)際上就是采用何種方式對(duì)外設(shè)進(jìn)行編址訪問(wèn)。CPU對(duì)外設(shè)的操作其實(shí)是按址進(jìn)行訪問(wèn)的,如何分辨是對(duì)內(nèi)存單元進(jìn)行訪問(wèn)還是對(duì)外設(shè)進(jìn)行訪問(wèn)取決于對(duì)內(nèi)存和外設(shè)的編址方式。編址方式有兩種:獨(dú)立編址(隔離式I/O)和統(tǒng)一編址(存儲(chǔ)器映象I/O)。有的系統(tǒng)喜歡采用獨(dú)立編址(隔離式I/O),有的系統(tǒng)喜歡采用統(tǒng)一編址(存儲(chǔ)器映象I/O)。6.2.1存儲(chǔ)器映像式接口編址方式存儲(chǔ)器映像式接口編址方式又稱統(tǒng)一編址方式,其方法是對(duì)每一個(gè)外設(shè)端口分配一個(gè)存儲(chǔ)器地址,對(duì)端口的輸入輸出操作完全等同于對(duì)內(nèi)存的操作,都是采用訪存指令(MOV指令)。讀內(nèi)存操作相當(dāng)于輸入操作,寫(xiě)內(nèi)存操作相當(dāng)于輸出操作,端口地址占內(nèi)存地址。MC6800/MCS51等單片機(jī)均采用此方法。為了區(qū)別是對(duì)內(nèi)存進(jìn)行訪問(wèn)還是端口訪問(wèn),在一開(kāi)始進(jìn)行硬件系統(tǒng)設(shè)計(jì)時(shí)就對(duì)全部可尋址空間進(jìn)行分段,一部分分給內(nèi)存使用另一部分給端口使用。統(tǒng)一編址的優(yōu)點(diǎn):是在CPU指令系統(tǒng)中不設(shè)置輸入輸出指令(統(tǒng)一使用MOV指令),簡(jiǎn)化了CPU的設(shè)計(jì)。端口數(shù)不受限制。統(tǒng)一編址的缺點(diǎn)是:端口占內(nèi)存地址,使內(nèi)存實(shí)際可使用的地址空間減少,而且在硬件設(shè)計(jì)時(shí)要采用地址譯碼電路對(duì)地址進(jìn)行譯碼選擇。另外,程序可讀性差。6.2.2隔離式I/O接口編址方式隔離式I/O接口編址方式又稱獨(dú)立編址方式,其方法是對(duì)每一個(gè)外設(shè)端口的編址與對(duì)存儲(chǔ)器的編址時(shí)相互獨(dú)立的,對(duì)端口的輸入輸出操作采用專(zhuān)門(mén)的指令(INS、OUTS指令),80X系列CPU采用此種方法。對(duì)于同一地址到底是訪問(wèn)端口還是訪問(wèn)存儲(chǔ)器完全取決于所執(zhí)行的指令。IN/OUT指令分別在CPU對(duì)應(yīng)的IOR和IOW引腳上產(chǎn)生有效控制信號(hào)。MOV指令分別在CPU對(duì)應(yīng)的MEMR和MEMW引腳上產(chǎn)生有效控制信號(hào)。獨(dú)立編址的優(yōu)點(diǎn):是在CPU指令系統(tǒng)中設(shè)置專(zhuān)門(mén)的輸入輸出指令(IN/OUT指令),程序的可讀寫(xiě)強(qiáng),另外I/O端口地址不占內(nèi)存地址空間。獨(dú)立編址的缺點(diǎn)是:CPU中增加了輸入輸出指令,增加了CPU的復(fù)雜性,在封裝上增加了對(duì)I/O端口讀寫(xiě)操作控制引腳,硬件電路設(shè)計(jì)較復(fù)雜。6.2.3PC機(jī)I/O接口地址分配PC采用獨(dú)立編址,因此內(nèi)存的地址空間和I/O端口的地址是重疊的,為了區(qū)別同一地址是訪問(wèn)內(nèi)存還是訪問(wèn)I/O端口,在引腳的控制信號(hào)上來(lái)區(qū)別,這些控制信號(hào)是:存儲(chǔ)器讀MEMR(執(zhí)行MOVReg,存儲(chǔ)器單元)存儲(chǔ)器寫(xiě)MEMW(執(zhí)行MOV存儲(chǔ)器單元,Reg)I/O讀IOR(執(zhí)行INS指令)I/O寫(xiě)IOW(執(zhí)行OUTS指令)任何時(shí)候只有一個(gè)信號(hào)有效。PC機(jī)對(duì)I/O地址空間進(jìn)行了分段:①0000H~03FFH地址保留給系統(tǒng)和ISA總線;②0400H~FFFFH地址用于用戶擴(kuò)展接口;③Intel80287使用端口地址00F8H~00FFH;④80387~PⅡ協(xié)處理器使用端口地址800000F8H~800000FFH。除了保留給系統(tǒng)使用的地址外,其他的端口地址用戶都可以自己定義使用。6.3I/O接口地址的譯碼方法當(dāng)執(zhí)行I/O操作時(shí),首先系統(tǒng)要將所尋找的I/O端口地址(二進(jìn)制)送地址總線(A15~A0)上,I/O端口必須對(duì)總線地址進(jìn)行譯碼選擇,只有被選中的I/O端口才能與系統(tǒng)進(jìn)行通信。常見(jiàn)的譯碼有四種①
門(mén)電壓路譯碼法(地址:17DH)②
譯碼器譯碼法③
比較器譯碼法由于這三種方法采用的都是小規(guī)模的集成電路,電路板的集成度低,目前已淘汰。④可編程邏輯器件譯碼法前三種譯碼除了集成度低外,一旦電路設(shè)計(jì)好了,端口地址也就全部被固定死了,不便修改,容易引起地址沖突(兩個(gè)以上I/O端口使用同一個(gè)端口地址)。為了實(shí)現(xiàn)硬件系統(tǒng)的即插即用(系統(tǒng)自動(dòng)檢測(cè)設(shè)備,并根據(jù)系統(tǒng)情況為設(shè)備分配I/O端口地址),系統(tǒng)中大都采用可編程器件來(lái)完成地址譯碼。小規(guī)模的可以選擇GAL來(lái)實(shí)現(xiàn),大規(guī)模的可以運(yùn)用EDA(電子線路設(shè)計(jì)技術(shù))來(lái)實(shí)現(xiàn)。下面我們通過(guò)GAL16V8實(shí)例來(lái)說(shuō)明其譯碼方法:①根據(jù)要求選擇芯片(假設(shè)就選擇GAL16V8);②根據(jù)芯片分配引腳,然后寫(xiě)出邏輯表達(dá)式;③運(yùn)用專(zhuān)門(mén)的開(kāi)發(fā)軟件(ABEL)編寫(xiě)源程序;④對(duì)源程序進(jìn)行編譯形成JED文件(熔絲文件);⑤在專(zhuān)門(mén)的開(kāi)發(fā)器上將熔絲文件下載到GAL16V8芯片中;⑥對(duì)該芯片在給定的輸入信號(hào)下進(jìn)行實(shí)測(cè)檢測(cè)。實(shí)現(xiàn)地址譯碼的的邏輯關(guān)系:Y0=A15·A14·A13;Y0·OE=VCCY1=A15·A14·A13;Y1·OE=VCCY2=A15·A14·A13;Y2·OE=VCCY3=A15·A14·A13;Y3·OE=VCCY4=A15·A14·A13;Y4·OE=VCCY5=A15·A14·A13.IOW;Y5·OE=VCC芯片的引腳定義如圖實(shí)際譯碼地址范圍:Y0=1,地址范圍:0000~1FFFHY1=1,地址范圍:2000~3FFFHY2=1,地址范圍:4000~5FFFHY3=1,地址范圍:6000~7FFFHY4=1,地址范圍:8000~8FFFHY5=1,地址范圍:A000~BFFFH(且IOW=1)或:Y5=0,地址范圍:A000~BFFFH(且IOW=0)也就是說(shuō)I/O端口地址范圍:A000~BFFFH/Y0=/A15·/A14·/A13;000xxxxxxxxxxxxx/Y1=/A15·/A14·A13;001xxxxxxxxxxxxx
/Y2=/A15·A14·/A13;010xxxxxxxxxxxxx
/Y3=/A15·A14·A13;011xxxxxxxxxxxxx/Y4=A15·/A14·/A13;100xxxxxxxxxxxxx/Y5=A15·/A14·A13./IOW;101xxxxxxxxxxxxx
6.4可編程并行接口-8255A(教材P255,7.2)8255A是Intel專(zhuān)門(mén)為8086CPU設(shè)計(jì)的可編程外圍接口電路(ProgrammablePeripheralInterface),簡(jiǎn)稱PPI。8255A具有三個(gè)8位的并行I/O口,并具有三種工作方式,且各口的工作方式可以通過(guò)程序進(jìn)行設(shè)定。下面重點(diǎn)討論8255A的應(yīng)用6.4.18255A的內(nèi)部結(jié)構(gòu)及引腳8255A是40引腳雙排直立封裝,其引腳分三部分:1.與外設(shè)接口部分8255A與外設(shè)接口是3個(gè)并行端分別為A、B、C端口。其端口A引腳為PA7~PA0、端口B引腳為PB7~PB0、端口C引腳為PC7~PC0。這24根引腳都是雙向三態(tài)的,其中PA、PB具有較大的輸出電流。其工作方式可以通過(guò)初時(shí)化設(shè)定。PA、PB可作為一般的輸入輸出口,PC口可以分成兩個(gè)4位口,還可以進(jìn)行位控制。2.與微處理器接口包括兩部分:①數(shù)據(jù)總線接口是8位雙向的三態(tài)數(shù)據(jù)緩沖總線接口,D0~D7。所有數(shù)據(jù)輸入輸出都是通過(guò)該接口完成。②讀寫(xiě)控制邏輯及端口選擇RESET:復(fù)位信號(hào),高電平有效,復(fù)位時(shí)片內(nèi)寄存器清0且PA、PB、PC均為輸入態(tài)。CS:片選信號(hào),低點(diǎn)平有效。A1、A0:分別用來(lái)選擇內(nèi)部控制寄存器還是選擇PA、PB、PC端口。RD:讀控制線,讀取由A1、A0選中的端口或內(nèi)部控制寄存器數(shù)據(jù)到D7~D0。WR:寫(xiě)控制線,將D7~D0上的數(shù)據(jù)寫(xiě)入有A1、A0選中的端口或內(nèi)部控制寄存器。實(shí)際使用時(shí)CS、A1、A0、RD、WR是配合使用的。這是硬件系統(tǒng)設(shè)計(jì)時(shí)重點(diǎn)考慮的,它涉及到芯片的端口地址及軟件編程。這5條控制引腳的信號(hào)狀態(tài)的不同組合表示的操作關(guān)系于下表:A1A0RDWRCS工作狀態(tài)00010PA→D7~D001010PB→D7~D010010PC→D7~D000100D7~D0→PA01100D7~D0→PB10100D7~D0→PC11100D7~D0→控制寄存器XXXX1端口輸出為高阻11010非法狀態(tài)XX110端口輸出為高阻D7-D0RDCSPAPBPCPCD7-D0WRCSPAPBA1A0RDWRCS3.工作電壓采用單電源5V供電。4.內(nèi)部控制部分由A、B兩組控制電路組成:①A組(端口A和端口C的高4位組成);②B組(端口B和端口C的低4位組成)。A、B組的工作方式由CPU送來(lái)的控制字決定:另外根據(jù)控制字的要求還可以對(duì)端口C進(jìn)行置位或復(fù)位。6.4.28255A的三種工作方式8255A有三種基本工作方式,分別是:①方式0:基本的輸入/輸出方式;②方式1:選通的輸入/輸出方式;③方式2:雙向選通傳送方式。1.工作方式0工作方式0是基本的輸入輸出方式。在這種方式下三個(gè)端口分為A組(端口A和端口C的高4位組成)和B組(端口B和端口C的低4位組成),每個(gè)端口都可以通過(guò)編程使其工作在輸入或輸出狀態(tài),沒(méi)有固定的應(yīng)答信號(hào)聯(lián)絡(luò)信號(hào)。方式0的主要功能:①具有兩8位端口(A、B)和兩個(gè)4位端口(C高低4位);②任何一個(gè)端口都可設(shè)為輸入或輸出端口;③輸出時(shí)數(shù)據(jù)鎖存,輸入時(shí)不鎖存;④只需要用簡(jiǎn)單的讀寫(xiě)指令就可以傳輸數(shù)據(jù)。只要WR、RD有效就可以傳輸數(shù)據(jù);INAL,DX(端口地址);產(chǎn)生RD控制信號(hào)OUTDX,AL
;產(chǎn)生WR控制信號(hào)⑤C口作為8位、4位口也可以按位進(jìn)行操作。數(shù)據(jù)總線緩沖器讀/寫(xiě)控制邏輯A組端口A(8)A組端口C上半部
B組端口C下半部
B組端口B(8)A組控制B組控制8位內(nèi)部數(shù)據(jù)總線內(nèi)部邏輯外設(shè)接口D7-0RDWRA0A1RESETCSI/OPA7-0I/OPC7-4I/OPC3-0I/OPB7-0CPU接口2.工作方式1工作方式1是選通的輸入輸出方式。在這種方式下A端口B端口用作輸入、輸出端口,C端口作為A、B端口輸入輸出選通信號(hào)。在這種工作方式下,選通信號(hào)與輸入/輸出數(shù)據(jù)一起傳送,由選通信號(hào)對(duì)數(shù)據(jù)口進(jìn)行選通。工作方式1的基本功能:①三個(gè)端口分A組(端口A和C的PC7~PC3高5位控制/狀態(tài)端口組成)和B組(端口B和C的PC2~PC0低3位狀態(tài)端口組成);②任何一個(gè)端口都可設(shè)為輸入或輸出端口,輸入輸出都可以鎖存;③C口除了指示兩組數(shù)據(jù)端口的狀態(tài)及選通信號(hào)外,其余口線可作基本的I/O口;⑴方式1工作在輸入狀態(tài)在輸入狀態(tài)下C端口的引腳聯(lián)絡(luò)信號(hào)功能:STB(StroBe):引腳PC4(PC2),選通輸入,低電平有效。是外設(shè)送來(lái)的信號(hào),用來(lái)將輸入數(shù)據(jù)送輸入A口(B口)鎖存器。IBF(InputBufferFull):引腳PC5(PC1)輸入緩沖滿信號(hào),高電平有效,表示數(shù)據(jù)已送輸入數(shù)據(jù)鎖存器。在STB下降沿置位,在RD上升沿復(fù)位。方式1(A口)PA7-0PC4&INTEAINTRAI/OIBFASTBA2PC5PC3PC6、7D7-D0RDPC0方式1:輸入端口PC4外設(shè)外設(shè)RD&INTRB方式1(B口)PB7-0PC2PC1INTEBSTBBIBFBD7-D0CPUCPUPC2INTR(Interrupt
Reruest):中斷請(qǐng)求信號(hào),(PC3和PC0)高電平有效。當(dāng)外部設(shè)備要向CPU傳送數(shù)據(jù)或請(qǐng)求服務(wù)時(shí),8255就用INTR向CPU發(fā)出中斷請(qǐng)求。當(dāng)STB、
IBF和INTE都為高電平時(shí),表明數(shù)據(jù)已寫(xiě)入輸入數(shù)據(jù)緩沖區(qū),使INTR成為高電平。CPU響應(yīng)中斷,在RD信號(hào)控制下讀出輸入數(shù)據(jù)緩沖區(qū)的數(shù)據(jù),并且在RD的下降沿使INTR復(fù)位,上升沿使IBF復(fù)位,為輸入下一個(gè)數(shù)據(jù)作準(zhǔn)備。INTE(Interruptenable):中斷允許信號(hào)。其復(fù)位/或置位是由PC4(A口)或PC2(B口)的位操作來(lái)實(shí)現(xiàn)的。其位操作只影響INTE的狀態(tài),而不影響PC4或PC2的引腳狀態(tài)。做輸入端口時(shí)序圖外設(shè)送數(shù)據(jù)到端口并發(fā)STB①②③④8255發(fā)IBF表示輸入緩沖區(qū)滿,并發(fā)INTR申請(qǐng)中斷CPU響應(yīng)中斷讀數(shù)據(jù)撤銷(xiāo)IBF,準(zhǔn)備下次送數(shù)PABINTRIBFRDD0~D7INAL,DXSTB⑵方式1工作在輸出狀態(tài)在輸出狀態(tài)下C端口的引腳聯(lián)絡(luò)信號(hào)功能:OBF(OutputBufferFull):輸出緩沖滿信號(hào),低電平有效,表示CPU已將數(shù)據(jù)送輸8255A并鎖存在相應(yīng)的端口上。8255A發(fā)出的數(shù)據(jù)選通信號(hào)。ACK(Acknowledge):外設(shè)應(yīng)答信號(hào),低電平有效。表示外設(shè)已從8255的端口取走CPU送來(lái)的數(shù)據(jù)。方式1(A口)PA7-0PC6&INTEAINTRAI/OOBFAACKA2PC7PC3PC4、5D7-D0WR方式1:輸出端口PC6外設(shè)WR&INTRB方式1(B口)PB7-0PC2PC1INTEBACKBOBFBD7-D0PC0PC2CPU外設(shè)CPUINTR(Interrupt
Reruest):中斷請(qǐng)求信號(hào),高電平有效。當(dāng)外部設(shè)備接到數(shù)據(jù)后,若端口允許中斷,即ACK、OBF和INTE都為高電平時(shí),使INTR成為高電平。請(qǐng)求CPU再輸出數(shù)據(jù),并且在WR的上升清零。INTE(Interruptenable):中斷允許信號(hào)。其復(fù)位/或置位是由PC6(A口)或PC2(B口)的位操作來(lái)實(shí)現(xiàn)的。其位操作只影響INTE的狀態(tài),而不影響PC6或PC2的引腳狀態(tài)。做輸出端口時(shí)序圖
CPU送數(shù)據(jù)到數(shù)據(jù)總線并發(fā)寫(xiě)信號(hào)①②④③8255發(fā)OBF表示輸出緩沖區(qū)滿,并使INTR低電平外設(shè)檢查到8255的OBF并讀取數(shù)據(jù),發(fā)響應(yīng)信號(hào)ACK8255接到ACK信號(hào),表示外設(shè)已經(jīng)取走了數(shù)據(jù),發(fā)INTR給CPU申請(qǐng)中斷,CPU響應(yīng)中斷再發(fā)下一個(gè)數(shù)據(jù)3.工作方式2A口除工作方式0和工作方式1外還可以工作于方式2。在這種方式下,A口是雙向的,既可以發(fā)送數(shù),也可以接收數(shù)據(jù)。只有A口具有方式2。工作方式2的基本功能:①A口工作于雙向方式,C口的PC7~PC3位作為A口的控制/狀態(tài)信號(hào)端口,PC2~PC0可用于B組;②A口輸入輸出都可以鎖存,在方式2下,A口既可以工作在查詢也可工作在中斷方式。A口工作在方式2狀態(tài)下C端口的引腳聯(lián)絡(luò)信號(hào)功能:STBA(StroBe):引腳PC4,選通輸入,低電平有效。是外設(shè)送來(lái)的信號(hào),用來(lái)將輸入數(shù)據(jù)送輸入鎖存器。IBFA(InputBufferFull):輸入緩沖滿信號(hào),高電平有效,表示數(shù)據(jù)已送輸入數(shù)據(jù)鎖存器。OBFA(OutputBufferFull):輸出緩沖滿信號(hào),低電平有效,表示CPU已將數(shù)據(jù)送A口。PA7-0PC7PC6PC3PC2-0I/OPC3+INTE1&PC4&INTE23方式2:輸入輸出端口(A口)外設(shè)INTRAIBFASTBARDCPUD7-0WROBFACKA輸入輸出INTRAACKA(Acknowledge):外設(shè)應(yīng)答信號(hào),低電平有效。用來(lái)啟動(dòng)A口三態(tài)輸出緩沖器輸出數(shù)據(jù)。INTRA(Interrupt
Reruest):中斷請(qǐng)求信號(hào),高電平有效。輸入/輸出狀態(tài)下都可以向CPU發(fā)出中斷請(qǐng)求。INTE1(Interruptenable1):中斷允許信號(hào)。是一個(gè)與/OBFA相關(guān)的中斷允許觸發(fā)器,其復(fù)位/或置位是由PC6的位操作來(lái)實(shí)現(xiàn)的。INTE2(Interruptenable2):中斷允許信號(hào)。是一個(gè)與/IBFA相關(guān)的中斷允許觸發(fā)器,其復(fù)位/或置位是由PC4的位操作來(lái)實(shí)現(xiàn)的。6.4.38255A的控制字8255A的所有工作方式都是可編程實(shí)現(xiàn)的,一種是通過(guò)工作方式控制字來(lái)實(shí)現(xiàn),另一種是通過(guò)端口C按位進(jìn)行控制。1.工作方式控制字8255A的三種基本方式是靠輸入到控制寄存器中的控制字來(lái)實(shí)現(xiàn)的。通常把這個(gè)過(guò)程稱為對(duì)8255A初時(shí)化。工作方式控制字的格式:D7D6D5D4D3D2D1D01A組控制D6~D3D3:C口高位控制0輸出1輸入D4:A口0輸出1輸入D6D5:方式選擇00方式001方式11×方式2B組控制D2~D0D0:C口低位控制0輸出1輸入D1:B口0輸出1輸入D2:方式選擇0方式01方式1D7=1表示方式控制標(biāo)志位工作方式字是在CS=0、A1A0=11時(shí)通過(guò)數(shù)據(jù)線D7~D0寫(xiě)入8255工作方式寄存器中MOVAL,控制字OUTDX,AL
2.C口按位控制這種控制字專(zhuān)門(mén)用于C口使其8位可以按位分別置“1”或清“0”,其目的是使8255A具有位控功能。工作方式控制字的格式:D7D6D5D4D3D2D1D00XXX選擇的C口位位D3D2D1D0PC0000D0=0復(fù)位D0=1置位PC1001PC2010PC3011PC4100PC5101PC8110PC7111D7D6D5D4D3D2D1D00XXX對(duì)C口進(jìn)行位操作的方法是:①通過(guò)CS=0、A1A0=11選擇8255控制寄存器;②將選中的C端口的位線(PC7~PC0)中的某一位通過(guò)D3~D1編碼來(lái)設(shè)置,置位還是復(fù)位通過(guò)D0來(lái)設(shè)置;③將該數(shù)據(jù)寫(xiě)入到8255控制寄存器中;④每次操作只能完成對(duì)一位的控制;⑤該方式只能將C口設(shè)置為輸出方式。[例6.1]在PC4引腳上輸出一正脈沖信號(hào),假設(shè)8255A的地址(A、B、C端口和控制寄存器)分別為420~423H(取決與8255A的A1A0與系統(tǒng)地址線的連接)。MOVAL,00001000BMOVDX,423H;選中PC4,并置0OUTDX,ALNOPNOPMOVAL,00001001B;選中PC4,并置1OUTDX,ALNOPNOPMOVAL,00001000B;選中PC4,并置0OUTDX,ALPC40106.4.48255A的應(yīng)用[例6.2](教材例7.4P261)假設(shè)8255芯片端口地址為FF80H~FF83H,端口A工作在方式0,輸出;端口B工作在方式1,輸入,請(qǐng)寫(xiě)出初始化程序段。解:根據(jù)題意,A口地址:FF80H;B口地址:FF81H;C口地址:FF82H;控制字寄存器地址:FF83H??刂谱郑?000×11×(86H)MOVAL,86HMOVDX,0FF83HOUTDX,AL[例6.3]8255A的A口連接4個(gè)開(kāi)關(guān)K0~K3,設(shè)定為方式0,輸入,B口連接一個(gè)共陰極七段LED顯示器,設(shè)定為方式0,輸出。要求將A口的4個(gè)開(kāi)關(guān)狀態(tài)對(duì)應(yīng)的二進(jìn)制編碼0000~1111以16進(jìn)制0~F送B口顯示。電路于圖所示。(P262)K3K2K1K0abcdegfdpgnd共陰極LEDabcdefgdpabgndgndfgedcdp七段顯示代碼共陰極LED組成的七段代碼顯示代碼0123456789ABCDEF3F065B4F666D7D077F6F777C395E7971PB0PB7abcdefbcabdegabcdgbcfgacdfgacdefgabcabcdefgabcdfgabcefgcdefgadefbcdegadefgaefg解:①根據(jù)電路確定端口地址:假設(shè)沒(méi)有使用的地址線都選1A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0XXXXXXXXXXX00011111111111/Y0=/CS=0/CSA1A0選擇地址000PA口FFE0H001PB口
FFE1H010PC口FFE2H011控制字寄存器FFE3HK3K2K1K0②確定控制字,A端口為輸入端口,工作在方式0,B端口為輸出端口,工作在方式0。C端口本例中未用,現(xiàn)設(shè)置在輸出端口,方式0。控制字:90HD7D6D5D4D3D2D1D01001X000X0A組控制方式0PA輸入PC輸出方式0B組控制PB輸出PC輸出K3K2K1K00123456789ABCDEF3F065B4F666D7D077F6F777C395E7971畫(huà)流程圖畫(huà)流程圖,參考程序:DATASEGMENT
LISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX
MOVAL,90H;置8255控制字
MOVDX,0FFE3HOUTDX,ALLOOP:MOVDX,
0FFE0H;讀A口開(kāi)關(guān)狀態(tài)
INAL,DX
ANDAL,0FH
;將A口高4位屏蔽
MOVBX,OFFSETLIST;查表得到對(duì)
ANDAX,00FFH;應(yīng)的顯示碼
ADDBX,AXMOVAL,[BX]XLAT
MOVDX,0FFE1H;送顯示碼到B口
OUTDX,AL;顯示相應(yīng)的字符
CALLDALLY;調(diào)延時(shí)
JMPLOOPDALLY:......... RET
MOVAH,4CH INT21HCODEENDSENDSTARTK3K2K1K0如果要同時(shí)顯示多位?[例6.4]設(shè)某警報(bào)系統(tǒng)電路如圖所示。開(kāi)關(guān)K0、K1閉合時(shí)報(bào)警,紅色指示燈HD0、HD1亮。開(kāi)關(guān)打開(kāi)時(shí)系統(tǒng)正常,綠色指示燈LD亮。試設(shè)計(jì)一程序完成上述任務(wù),并要求系統(tǒng)能連續(xù)工作。解:先要看懂圖,①根據(jù)電路圖確定8255的A、B、C端口和控制寄存器地址;②再根據(jù)題意確定端口的輸入輸出方式;③最后根據(jù)工作方式確定控制字。K0K1001010011110A9A8A7A6A5A4A3A2A1A0選中的端口1111101000端口ACS=001端口B10端口C11控制寄存器根據(jù)電路,選中8255必須使CS=0,譯碼器的輸入信號(hào)A9~A2=11111010時(shí)Y2=0,地址線A1A0直接與8255A1A0相連來(lái)選擇端口。A端口地址:3E8H;B端口地址:3E9H;C端口地址:3EAH;控制寄存器地址:3EBH3E從圖中可以看出A口為輸入口,并且開(kāi)關(guān)打開(kāi)時(shí)輸入高電平1,閉合輸入低電平0。C口為輸出口,且高電平指示燈亮,低電平指示等滅。B口未用(假設(shè)為輸出口),8255工作在基本的輸入輸出工作方式(方式0)??刂谱旨拇嫫鲀?nèi)容設(shè)置為:10010000B(90H)判開(kāi)關(guān):PA0輸入開(kāi)關(guān)K0狀態(tài),PA7輸入開(kāi)關(guān)K1狀態(tài)。00000001B(01H)表示K0打開(kāi)的;10000000B(80H)表示K1打開(kāi)的;10000001B(81H)表示K1K0都打開(kāi)的;C口控制指示燈,輸出高電平指示燈亮,輸出低電平指示燈滅。PC7控制綠燈LD
,PC0控制紅燈HD0,PC1控制紅燈HD1。所以,80H綠燈亮;01H紅燈HD0亮;02H紅燈HD1亮;03H紅燈HD0、HD1亮;畫(huà)流程圖,參考程序:(只有算法、沒(méi)有段設(shè)置)START:MOVAL,90H;置8255控制字
MOVDX,3EBHOUTDX,ALLOOP:MOVCL,00H;CL故障標(biāo)志寄存器
MOVAL,00H;清C口關(guān)燈
MOVDX,3EAH
OUTDX,AL MOVDX,3E8H;讀A口開(kāi)關(guān)狀態(tài)
INAL,DXMOVBL,AL;BL暫存開(kāi)關(guān)狀態(tài)
ANLAL,01H;檢查K0JZDONE0;K0閉合跳HD1:ANLBL,80H;檢查K1
JZDONE1;K1閉合跳LD:CMPCL,00HJNZLOOP;CL≠0跳(有故障)
MOVAL,80H;無(wú)報(bào)警綠燈亮
MOVDX,3EAH流程圖
OUTDX,AL JMPLOOPDONE0:ORCL,01H;K0合上HD0亮
MOVAL,CLMOVDX,3EAHOUTDX,AL JMPHD1DONE1:ORCL,02H;K1合上HD1亮
MOVAL,CLMOVDX,3EAHOUTDX,ALJMPLD顯示電路流程圖通過(guò)8255-A接口芯片的應(yīng)用實(shí)例可以歸納以下幾點(diǎn)規(guī)律:①根據(jù)系統(tǒng)設(shè)計(jì)需要選擇具體接口芯片;②熟悉芯片功能和具體控制方法;③畫(huà)出芯片與系統(tǒng)之間的連線圖并設(shè)計(jì)硬件電路;④根據(jù)連線確定芯片的通道地址;⑤根據(jù)設(shè)計(jì)要求確定控制字內(nèi)容;⑥計(jì)算初始化參數(shù)值;⑦畫(huà)流程圖;⑧編寫(xiě)源程序并調(diào)試源程序⑨聯(lián)機(jī)調(diào)試測(cè)試硬件電路。6.5可編程計(jì)數(shù)器/定時(shí)器—8253/8254在計(jì)算機(jī)系統(tǒng)中,很多程序在運(yùn)行是往往需要系統(tǒng)提供精確的定時(shí)信號(hào)。如多任務(wù)分時(shí)系統(tǒng)運(yùn)用時(shí)間變量來(lái)實(shí)現(xiàn)多任務(wù)的切換。另外系統(tǒng)時(shí)間日歷也需要有時(shí)鐘源。為此Intel公司專(zhuān)門(mén)設(shè)計(jì)了可編程計(jì)數(shù)器/定時(shí)器—8253/8254。用戶可以通過(guò)編程來(lái)實(shí)現(xiàn)定時(shí)和計(jì)數(shù)。6.5.18253/8254的基本功能①三個(gè)完全相同的、獨(dú)立的16位計(jì)數(shù)器;②每個(gè)計(jì)數(shù)器有六種工作方式,可以按十進(jìn)制(BCD碼)或二進(jìn)制進(jìn)行計(jì)數(shù),最高計(jì)數(shù)頻率可以達(dá)到2.6MHz③可以工作在定時(shí)方式,也可以工作在計(jì)數(shù)方式。6.5.28253/8254的內(nèi)部結(jié)構(gòu)1.內(nèi)部結(jié)構(gòu)8253/8254內(nèi)部包括:數(shù)據(jù)總線緩沖器、讀寫(xiě)控制邏輯、控制字寄存器、計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2六個(gè)部分。①數(shù)據(jù)總線緩沖器:8位雙向三態(tài)緩沖器,是CPU與8253進(jìn)行數(shù)據(jù)交換的數(shù)據(jù)通路,一般直接與系統(tǒng)數(shù)據(jù)總線相連。②讀/寫(xiě)邏輯:接收系統(tǒng)的讀寫(xiě)控制信號(hào)、片選信號(hào)和通路選擇信號(hào)(RD、WR、CS、A1、A0),完成相應(yīng)控制操作。③控制字寄存器:用來(lái)保存初時(shí)化時(shí)由CPU寫(xiě)入的8253-4工作方式控制字。該寄存器是只寫(xiě)型的。④計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2:三個(gè)完全獨(dú)立的16位定時(shí)/計(jì)數(shù)器。每個(gè)計(jì)數(shù)器都包括:計(jì)數(shù)初值寄存器;減1計(jì)數(shù)單元電路;輸出鎖存單元。2.8253-5引腳功能8253-5采用雙排直插24引腳封裝,各引腳功能為:①數(shù)據(jù)線
D7~D0:雙向三態(tài)數(shù)據(jù)總線,用于與系統(tǒng)總線相連,完成與CPU數(shù)據(jù)傳輸。②控制線A1、A2:端口選擇信號(hào)。通過(guò)內(nèi)部譯碼器選擇三個(gè)計(jì)數(shù)器和控制寄存器。RD:讀信號(hào)線。低電平有效。從選中的計(jì)數(shù)器讀取數(shù)據(jù)。WR:寫(xiě)信號(hào)。低電平有效,將數(shù)據(jù)寫(xiě)入到選中的計(jì)數(shù)器或控制寄存器中。CS:片選擇信號(hào)。低電平有效(選中該芯片)。A1、A0、CS、RD、WR共同作用來(lái)完成對(duì)某一個(gè)計(jì)數(shù)器或控制寄存器進(jìn)行讀寫(xiě)操作。其邏輯關(guān)系:CLK0-CLK2:計(jì)數(shù)器0~2的輸入時(shí)鐘脈沖信號(hào),工作時(shí)每一個(gè)脈沖計(jì)數(shù)器值減1。GATE0~GATE2:計(jì)數(shù)器0~2門(mén)控信號(hào),該信號(hào)對(duì)計(jì)數(shù)器的具體控制作用由相應(yīng)的計(jì)數(shù)器的工作方式?jīng)Q定。CSA1A0RDWR功能00001讀計(jì)數(shù)器0當(dāng)前值00101讀計(jì)數(shù)器1當(dāng)前值01001讀計(jì)數(shù)器2當(dāng)前值00010設(shè)置計(jì)數(shù)器0的初時(shí)值00110設(shè)置計(jì)數(shù)器1的初時(shí)值01010設(shè)置計(jì)數(shù)器2的初時(shí)值01110設(shè)置控制字OUT0~2:計(jì)數(shù)器0~2的輸出信號(hào)。當(dāng)計(jì)數(shù)器0~2中的計(jì)數(shù)單元值減1等于0時(shí),對(duì)應(yīng)OUT的輸出端產(chǎn)生一輸出信號(hào),該信號(hào)的波形取決于計(jì)數(shù)器的工作方式。③工作電壓VCC、GND:芯片工作電壓,單5V供電。6.5.38253的工作方式8253有六種工作方式,具體工作在何種工作方式有初時(shí)化程序通過(guò)CPU寫(xiě)入到8253控制字寄存器的控制字內(nèi)容決定。1.方式0(計(jì)數(shù)結(jié)束中斷方式)方式0是典型的計(jì)數(shù)器工作方式。①當(dāng)GATE=1時(shí),寫(xiě)入計(jì)算初值,計(jì)數(shù)器開(kāi)始對(duì)CLK脈沖進(jìn)行計(jì)數(shù),期間OUT一直為低電平。每個(gè)脈沖計(jì)數(shù)器的計(jì)數(shù)單元內(nèi)容減1,當(dāng)計(jì)數(shù)單元等于零時(shí),輸出端OUT輸出一高電平申請(qǐng)中斷。②當(dāng)GATE=0時(shí)停止計(jì)數(shù)(門(mén)控的含義),并且OUT引腳一直輸出為低電平。③方式0允許在計(jì)數(shù)過(guò)程中修該計(jì)數(shù)初值。當(dāng)寫(xiě)入新的的計(jì)數(shù)值時(shí),原計(jì)數(shù)過(guò)程終止,但輸出OUT仍然保持為低電平。新值寫(xiě)入后再經(jīng)過(guò)一個(gè)時(shí)鐘脈沖,減1計(jì)數(shù)器按新值開(kāi)始重新計(jì)數(shù)。8253內(nèi)部沒(méi)有中斷控制電路和中斷請(qǐng)求引腳,與CPU的聯(lián)絡(luò)是通過(guò)OUT輸出來(lái)實(shí)現(xiàn)的。計(jì)數(shù)器計(jì)數(shù)歸零時(shí),OUT的輸出端為高電平,CPU可以通過(guò)查詢?cè)撘_電平或?qū)⒃撔盘?hào)連接到CPU的中斷請(qǐng)求輸入端。方式0的特點(diǎn):①計(jì)數(shù)過(guò)程由軟件啟動(dòng)。每寫(xiě)入一次計(jì)數(shù)初值就啟動(dòng)一次計(jì)數(shù)器。②GATE的作用是開(kāi)放計(jì)數(shù)器和停止計(jì)數(shù)。③OUT的輸出由低電平變高電平表示計(jì)數(shù)結(jié)束,計(jì)數(shù)脈沖的個(gè)數(shù)N+1(N為初值)。④方式0主要用于事件計(jì)數(shù),OUT可以作為中斷申請(qǐng)信號(hào)。2.方式1:硬件可重觸發(fā)單穩(wěn)態(tài)方式在方式1下,CPU寫(xiě)入控制字之后,被選中的OUT輸出高電平,CPU寫(xiě)入計(jì)數(shù)值到計(jì)數(shù)器后計(jì)數(shù)器并不立即計(jì)數(shù),而是要等到門(mén)控GEAT端出現(xiàn)一個(gè)上升沿啟動(dòng)之后,下一個(gè)CLK時(shí)鐘脈沖的下降沿使OUT變?yōu)榈碗娖?,?jì)數(shù)器開(kāi)始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)器歸零時(shí),OUT引腳輸出高電平。若在OUT輸出高電平時(shí),GATE再次輸入一個(gè)上升沿觸發(fā)啟動(dòng),計(jì)數(shù)器又重新開(kāi)始計(jì)數(shù)而不用重新設(shè)置計(jì)數(shù)值。方式1的特點(diǎn):①方式1下計(jì)數(shù)器的啟動(dòng)是門(mén)控信號(hào)GEAT上升沿產(chǎn)生的,且可以多次啟動(dòng),所以稱硬件可重觸發(fā)單穩(wěn)方式。②OUT輸出為一單穩(wěn)態(tài)負(fù)脈沖,脈沖的寬度為計(jì)數(shù)器初值個(gè)CLK時(shí)鐘脈沖的周期之和。③改變計(jì)數(shù)器的初值,可以產(chǎn)生不同寬度的脈沖信號(hào)(OUT端)。④在計(jì)數(shù)過(guò)程中,重新置入新的計(jì)數(shù)值,并不立即生效,原計(jì)數(shù)過(guò)程不受影響,直到下一次門(mén)控脈沖GATE產(chǎn)生一個(gè)上升沿才開(kāi)始按照新的計(jì)數(shù)值進(jìn)行計(jì)數(shù)。3.方式2:頻率發(fā)生器(自動(dòng)重裝載)在方式2下,CPU寫(xiě)入控制字之后,被選中的OUT輸出高電平,CPU寫(xiě)入計(jì)數(shù)值到計(jì)數(shù)器后,經(jīng)過(guò)一個(gè)時(shí)鐘周期計(jì)數(shù)器開(kāi)始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)器值減到1時(shí),OUT引腳輸出低電平。再經(jīng)過(guò)一個(gè)時(shí)鐘周期,OUT輸出恢復(fù)為高電平,計(jì)數(shù)器開(kāi)始重新計(jì)數(shù),不需要重新設(shè)定計(jì)數(shù)初值。在方式2下,GATE=1,計(jì)數(shù)器正常計(jì)數(shù),當(dāng)GATE=0時(shí),計(jì)數(shù)器暫停計(jì)數(shù),直到GATE恢復(fù)為高電平后的下一個(gè)CLK脈沖的下降沿,計(jì)數(shù)器重新以計(jì)數(shù)初值開(kāi)始計(jì)數(shù)。方式2的特點(diǎn):①方式2下計(jì)數(shù)器的初值能自動(dòng)重復(fù)地裝入到計(jì)數(shù)器的減1寄存器單元中,無(wú)需用軟件重新設(shè)置,使用非常方便。②只要CLK是連續(xù)的,在OUT端就可以輸出一連續(xù)的分頻脈沖信號(hào)。③輸出的正脈沖寬度等于N-1個(gè)CLK之和,負(fù)脈沖寬度為1個(gè)CLK。N為計(jì)數(shù)器初值。④計(jì)數(shù)可以軟件啟動(dòng)也可以硬件啟動(dòng)。⑤在計(jì)數(shù)過(guò)程中,置入新的計(jì)數(shù)值,不受影響正在進(jìn)行的計(jì)數(shù)值,直到計(jì)數(shù)值為1,OUT輸出低電平,再經(jīng)過(guò)一個(gè)CLK時(shí)鐘,才開(kāi)始按照新的計(jì)數(shù)值進(jìn)行計(jì)數(shù)。4.方式3:方波發(fā)生器(自動(dòng)重裝載)方式3的操作除OUT端輸出的是方波外,其他基本同方式2。CPU寫(xiě)入控制字之后,被選中的OUT輸出高電平,CPU寫(xiě)入計(jì)數(shù)初值到計(jì)數(shù)器后,經(jīng)過(guò)一個(gè)時(shí)鐘周期計(jì)數(shù)器開(kāi)始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)器值減到初值的一半時(shí),OUT引腳輸出低電平。計(jì)數(shù)繼續(xù)工作直到計(jì)數(shù)結(jié)束后,OUT輸出高電平,完成一個(gè)周期。該周期結(jié)束后計(jì)數(shù)器開(kāi)始重新計(jì)數(shù),不需要重新設(shè)定計(jì)數(shù)初值,周而復(fù)始。在方式3下,GATE=1,計(jì)數(shù)器正常計(jì)數(shù),當(dāng)GATE=0時(shí),計(jì)數(shù)器暫停計(jì)數(shù),直到GATE恢復(fù)為高電平后的下一個(gè)CLK脈沖的下降沿,計(jì)數(shù)器重新以計(jì)數(shù)初值開(kāi)始計(jì)數(shù)。方式3的特點(diǎn):①方式3下計(jì)數(shù)器的初值能自動(dòng)重復(fù)地裝入到計(jì)數(shù)器的減1寄存器單元中,無(wú)需用軟件重新設(shè)置,使用非常方便。②只要CLK是連續(xù)的,在OUT端就可以輸出一連續(xù)的方波脈沖信號(hào)。可以用作方波發(fā)生器或波特率發(fā)生器。③輸出的正負(fù)脈沖寬度等于N/2個(gè)CLK周期之和(N為偶數(shù)),當(dāng)N為奇數(shù)時(shí),正脈沖寬度等于(N+1)/2,負(fù)脈沖寬度為(N-1)/2個(gè)CLK周期之和。N為計(jì)數(shù)器初值。④計(jì)數(shù)可以軟件啟動(dòng)也可以硬件啟動(dòng)。⑤在計(jì)數(shù)過(guò)程中,置入新的計(jì)數(shù)值,當(dāng)前輸出周期不受影響,直到GATE出現(xiàn)一個(gè)上升沿后,再經(jīng)過(guò)一個(gè)CLK時(shí)鐘,才開(kāi)始按照新的計(jì)數(shù)值進(jìn)行計(jì)數(shù)。⑥改變計(jì)數(shù)初值,OUT端可以輸出不同頻率的方波。5.方式4:軟件觸發(fā)選通方式方式4和方式0比較相似,在寫(xiě)入控制字時(shí),OUT變?yōu)楦唠娖?。?xiě)入計(jì)數(shù)初時(shí)值時(shí),當(dāng)GATE=1時(shí),再經(jīng)一個(gè)時(shí)鐘周期,計(jì)數(shù)器開(kāi)始對(duì)CLK脈沖進(jìn)行計(jì)數(shù),期間OUT一直為高電平。每個(gè)脈沖計(jì)數(shù)器的計(jì)數(shù)單元內(nèi)容減1,當(dāng)計(jì)數(shù)單元等于零時(shí),輸出端OUT輸出一低電平,該低電平保持一個(gè)時(shí)鐘周期后又自動(dòng)恢復(fù)到高電平。方式4的特點(diǎn):①計(jì)數(shù)過(guò)程由軟件啟動(dòng)。每寫(xiě)入一次計(jì)數(shù)初值就啟動(dòng)一次計(jì)數(shù)器。②GATE的作用是開(kāi)放計(jì)數(shù)器和停止計(jì)數(shù)。③OUT的輸出由高電平變低電平表示計(jì)數(shù)結(jié)束,低電平維持一個(gè)時(shí)鐘周期寬度,計(jì)數(shù)脈沖的個(gè)數(shù)N+1(N為初值)。④在計(jì)數(shù)過(guò)程中允許置入新的計(jì)數(shù)值,并且計(jì)數(shù)器重新以新的值開(kāi)始計(jì)數(shù),如果新的值是雙字節(jié)的,則寫(xiě)入第一個(gè)字節(jié)停止計(jì)數(shù),寫(xiě)入第二個(gè)字節(jié)后按新值開(kāi)始計(jì)數(shù)。6.方式5:硬件觸發(fā)選通方式在方式5下,CPU寫(xiě)入控制字之后,被選中的OUT輸出高電平,CPU寫(xiě)入計(jì)數(shù)值到計(jì)數(shù)器后計(jì)數(shù)器并不立即計(jì)數(shù),而是要等到門(mén)控GEAT端出現(xiàn)一個(gè)上升沿啟動(dòng)之后計(jì)數(shù)器開(kāi)始計(jì)數(shù)。當(dāng)計(jì)數(shù)器歸零時(shí),OUT輸出為低電平,經(jīng)過(guò)一個(gè)時(shí)鐘周期后,OUT又恢復(fù)為高電平。計(jì)數(shù)器歸零后,GATE可再次輸入一個(gè)上升沿觸發(fā)啟動(dòng),計(jì)數(shù)器又重新開(kāi)始計(jì)數(shù)而不用重新設(shè)置計(jì)數(shù)值。方式5的特點(diǎn):①方式5下計(jì)數(shù)器的啟動(dòng)是門(mén)控信號(hào)GEAT上升沿產(chǎn)生的,且可以多次啟動(dòng)。②OUT輸出為一單穩(wěn)態(tài)負(fù)脈沖,脈沖的寬度為一個(gè)CLK時(shí)鐘脈沖的周期。③在計(jì)數(shù)過(guò)程中,重新置入新的計(jì)數(shù)值,并不立即生效,原計(jì)數(shù)過(guò)程不受影響,直到下一次門(mén)控脈沖GATE產(chǎn)生一個(gè)上升沿才開(kāi)始按照新的計(jì)數(shù)值進(jìn)行計(jì)數(shù),并且OUT一直輸出為高電平直到計(jì)數(shù)器歸零才輸出一寬度等于一CLK周期的負(fù)脈沖。除了OUT輸出波形不同外,這六種工作方式可以歸納為三種類(lèi)型。①軟件啟動(dòng):GATE=1,軟件觸發(fā),寫(xiě)入計(jì)數(shù)初值開(kāi)始計(jì)數(shù)。;方式0、4。②自動(dòng)重裝載:GATE=1,計(jì)數(shù)歸零后又重新開(kāi)始計(jì);方式2、3。③硬件觸發(fā):GATE上升沿啟動(dòng)計(jì)數(shù)器計(jì)數(shù)。方式1、5。方式N與輸出波形關(guān)系改變計(jì)數(shù)值0寫(xiě)入計(jì)數(shù)值N后,經(jīng)N+1個(gè)CLK脈沖,輸出變高下一個(gè)CLK周期立即有效1單穩(wěn)負(fù)脈沖的寬度為N個(gè)CLK外部觸發(fā)以后有效2每N個(gè)CLK脈沖輸出一個(gè)CLK周期的負(fù)脈沖計(jì)數(shù)到1以后有效3前一半為高電平、后一半為低電平的方波外部觸發(fā)有效/計(jì)數(shù)到1有效4寫(xiě)入N后經(jīng)過(guò)N+1個(gè)CLK,輸出寬度為1個(gè)CLK的負(fù)脈沖計(jì)數(shù)到0有效5門(mén)控觸發(fā)后過(guò)N+1個(gè)CLK,輸出寬度為1個(gè)CLK的負(fù)脈沖外部觸發(fā)有效計(jì)數(shù)值N與輸出波形的關(guān)系
門(mén)控信號(hào)GATE的作用方式GATE低電平或變低電平上升沿高電平0禁止計(jì)數(shù)-允許計(jì)數(shù)1-啟動(dòng)計(jì)數(shù),下一個(gè)CLK脈沖使輸出為低-2禁止計(jì)數(shù),立即使輸出為高重新裝入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)允許計(jì)數(shù)3禁止計(jì)數(shù),立即使輸出為高重新裝入計(jì)數(shù)值,啟動(dòng)計(jì)數(shù)允許計(jì)數(shù)4禁止計(jì)數(shù)-允許計(jì)數(shù)5-啟動(dòng)計(jì)數(shù)-6.5.48253/4的控制字8253是可編程的定時(shí)器/計(jì)數(shù)器,編程時(shí)應(yīng)先對(duì)其初時(shí)化,通過(guò)控制字來(lái)設(shè)定控制方式。1.設(shè)定控制字方式同8255一樣,控制字的設(shè)定,主要將控制寫(xiě)入到8253內(nèi)部控制字寄存器中就可以了。8253控制字是8位的。各位的具體作用:D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD初時(shí)值采用的計(jì)數(shù)制0二進(jìn)制1十進(jìn)制(BCD)M2M1M0工作方式000工作方式0001工作方式1010工作方式2011工作方式3100工作方式4101工作方式5D0:D3D2D1:D5D4:D7D6:RL1RL0操作方式00計(jì)數(shù)器鎖存操作(供CPU)01讀/寫(xiě)計(jì)數(shù)器低8位10讀/寫(xiě)計(jì)數(shù)器高8位11先讀/寫(xiě)低8位,后讀/寫(xiě)高8位SC1SC0計(jì)數(shù)器00CNT001CNT110CNT211不用2.設(shè)定計(jì)數(shù)初值計(jì)數(shù)初值的設(shè)定按照控制字中的D0定義設(shè)定。D0=0:二進(jìn)制計(jì)數(shù)。計(jì)數(shù)范圍0000~FFFFH。其中0000H最大,表示65536。D0=1:十進(jìn)制BCD碼計(jì)數(shù)。計(jì)數(shù)范圍0000~9999。其中0000最大,表示10000。6.5.58253-5的應(yīng)用【例6.4補(bǔ)充】:若用8253的計(jì)數(shù)通道1,工作在方式0,按8位二進(jìn)制計(jì)數(shù),初值為128,試編寫(xiě)初始化程序,設(shè)端口地址為48H-4BH。解:控制字為01010000=50H,8位計(jì)數(shù)初值為80H。
MOVAL,50H ;設(shè)置通道1控制字
OUT4BH,ALMOVAL,80H;寫(xiě)通道1計(jì)數(shù)初值,只寫(xiě)低8位
OUT49H,AL【例6.5補(bǔ)充】:若用8253通道1,工作在方式1,按二-十進(jìn)制計(jì)數(shù),計(jì)數(shù)初值為2010,口地址(48H-4BH),試編寫(xiě)初始化程序。解:通道控制字為01110011=73H。計(jì)數(shù)初值高8位為20,低8位為10(注意:實(shí)際編程時(shí)要寫(xiě)20H和10H,如果寫(xiě)20,編譯器會(huì)直接編譯成14H,反而成了14的BCD碼了。)
MOV AL,73H ;寫(xiě)通道1控制字
OUT 4BH,AL MOV AL,10H
;寫(xiě)通道1計(jì)數(shù)初值低8位
OUT 49H,AL MOV AL,20H
;寫(xiě)通道1計(jì)數(shù)初值高8位
OUT 49H,AL 當(dāng)執(zhí)行完上述程序后,8253通道1工作于方式1。經(jīng)GATE上升沿觸發(fā)后,輸出OUT1產(chǎn)生一寬度為2010個(gè)CLK周期的負(fù)脈沖?!纠?.6P296】
如圖7.19,在IBMPC系列計(jì)算機(jī)中,用8253的3個(gè)計(jì)數(shù)器進(jìn)行時(shí)鐘計(jì)時(shí)(通道0)、DRAM刷新定時(shí)(通道1)和控制揚(yáng)聲器發(fā)聲聲調(diào)(通道2),8253的端口地址分別為40H(通道0)、41H(通道1)、42H(通道2)和43H(控制字),輸入時(shí)鐘都為1.193MHz。在PC機(jī)中,8255A的端口地址為:A口地址:60H、B口地址:61H、C地址62H、控制字寄存器地址:63H。1.193MHz1.計(jì)數(shù)器0產(chǎn)生基本時(shí)鐘(BIOS中的初始化程序)
MOV AL, 36H ;計(jì)數(shù)器0的控制字為00110110 OUT 43H, AL;43H為控制字地址
MOV AL, 0 OUT 40H,AL ;計(jì)數(shù)器0的初值為0000 OUT 40H,AL由上面初始化程序可見(jiàn),計(jì)數(shù)器0工作在方式3下,產(chǎn)生方波;初值為0、二進(jìn)制計(jì)數(shù),也就是最大的65536,則其方波的輸出頻率為1.193MHz/65536=18.2。DOS系統(tǒng)利用定時(shí)器0,通過(guò)08號(hào)中斷服務(wù)程序,實(shí)現(xiàn)時(shí)鐘計(jì)時(shí)功能。每18次中斷為1秒鐘。2.計(jì)數(shù)器1控制DRAM刷新在PCXT機(jī)中,要求在2ms內(nèi)對(duì)DRAM進(jìn)行128次刷新,也就是刷新的間隔為2ms/128=15.6us。計(jì)數(shù)器1輸出間隔15us的負(fù)脈沖,計(jì)數(shù)器1的初始化程序:MOVAL,54H ;計(jì)數(shù)器1的控制字為01010100OUT 43H,ALMOVAL,18
;計(jì)數(shù)器1的初值為18OUT 41H,AL1.193MHz由上面初始化程序可見(jiàn),計(jì)數(shù)器1工作在方式2(分頻器)下,只讀寫(xiě)低位,初值為18。由此可知,計(jì)數(shù)器1的輸出頻率為:1.193MHz/18=66.278KHz,負(fù)脈沖的時(shí)間間隔為1/66.278KHz=15us。負(fù)脈沖的時(shí)間間隔為:18×(1/f)=18/(1.193×1000000)=15.1注意計(jì)數(shù)初值的計(jì)算方法:初值=定時(shí)值÷時(shí)鐘CLK周期
=定時(shí)值×?xí)r鐘CLK頻率所以:15us×1.193MHz=183.計(jì)數(shù)器2控制揚(yáng)聲器(工作在方式3)在PCXT機(jī)中,利用計(jì)數(shù)器2輸出控制揚(yáng)聲器的發(fā)聲音調(diào),作為機(jī)器的報(bào)警信號(hào)。從圖中可以看出揚(yáng)聲器工作,8255A的PB1、PB0必須同時(shí)為1。計(jì)數(shù)器2發(fā)聲驅(qū)動(dòng)程序:BEEPPROCFARMOVAL,0B6H ;計(jì)數(shù)器2的控制字為10110110OUT 43H,ALMOVAX,1190 ;計(jì)數(shù)器2輸出頻率=1.193/1190=1kHzOUT 42H,AL;先低后高M(jìn)OVAL,AHOUT 42H,AL1.193MHz111Khz的方波IN AL,61H ;讀8255PB口,MOVAH,AL ;保存PB口狀態(tài)在AH中OR AL,
03H
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 患者觀察和巡視管理制度
- 康復(fù)用品管理制度
- 2022年三年級(jí)語(yǔ)文下冊(cè)第六單元主題閱讀+答題技巧(含答案、解析)部編版
- 【假期閱讀技能提升訓(xùn)練】小學(xué)語(yǔ)文三年級(jí)下冊(cè)閱讀技能提升內(nèi)文閱讀第5講-附答案.部編版
- 2024年張家口辦理客運(yùn)從業(yè)資格證2024年試題
- 2024年巴中申請(qǐng)客運(yùn)從業(yè)資格證考試題和答案
- 2024年武威道路客運(yùn)輸從業(yè)資格證理論考試答案
- 2024年天水道路旅客運(yùn)輸駕駛員從業(yè)資格考試試題及答案
- 歷史-浙江省湖州、衢州、麗水2024年11月三地市高三教學(xué)質(zhì)量檢測(cè)試卷試題和答案
- 吉首大學(xué)《國(guó)際商務(wù)禮儀》2021-2022學(xué)年第一學(xué)期期末試卷
- 光電材料之鈮酸鋰薄膜鈮酸鋰技術(shù)突破
- 先進(jìn)班組先進(jìn)事跡材料
- 絲網(wǎng)印刷電極生產(chǎn)
- 8.第十四章-口腔醫(yī)療保健中的感染與控制
- 企業(yè)EHS風(fēng)險(xiǎn)管理基礎(chǔ)智慧樹(shù)知到答案章節(jié)測(cè)試2023年華東理工大學(xué)
- 全國(guó)運(yùn)動(dòng)員代表資格協(xié)議書(shū)
- 實(shí)施卓越績(jī)效管理《自我評(píng)價(jià)報(bào)告》
- 第五單元-第03課時(shí)-學(xué)畫(huà)長(zhǎng)方形(學(xué)習(xí)任務(wù)單)-四年級(jí)數(shù)學(xué)上冊(cè)人教版
- 粒子物理基礎(chǔ)
- 電氣儀表安裝施工方案
- 珠寶首飾制作倒模工藝流程
評(píng)論
0/150
提交評(píng)論