存儲器與IO接口_第1頁
存儲器與IO接口_第2頁
存儲器與IO接口_第3頁
存儲器與IO接口_第4頁
存儲器與IO接口_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

會計(jì)學(xué)1存儲器與IO接口5.1存儲器的擴(kuò)展系統(tǒng)擴(kuò)展是單片機(jī)硬件設(shè)計(jì)中遇到的問題。主要解決在用單片機(jī)為核心構(gòu)成一個(gè)工業(yè)測控系統(tǒng)時(shí),要輸入大量經(jīng)傳感器送入的信號,輸出執(zhí)行與報(bào)警控制信號,以及人——機(jī)對話等都需要很多接口,由于單片機(jī)自身常滿足不了要求,外部擴(kuò)展成為必要。

單片機(jī)擴(kuò)展到什么程度,取決于應(yīng)用的要求,不同的應(yīng)用有不同的擴(kuò)展規(guī)模。擴(kuò)展包括:EPROM和RAM;并行、串行I/O接口;定時(shí)/計(jì)數(shù)器擴(kuò)展;中斷系統(tǒng)擴(kuò)展;鍵盤顯示器及其它功能接口擴(kuò)展。第2頁/共71頁第1頁/共71頁5.1.1單片機(jī)擴(kuò)展總線

單片機(jī)引腳構(gòu)成的外部擴(kuò)展三總線結(jié)構(gòu)如圖5-1所示。所有的外部接口芯片都是通過這三組總線進(jìn)行擴(kuò)展的。

第3頁/共71頁第2頁/共71頁用于單片機(jī)地址鎖存器有兩類芯片:一類是8D觸發(fā)器,如74LS273;另一類是8位鎖存器,如74LS373、8282等。

由P0、P2口構(gòu)成的16位地址總線。在片外可擴(kuò)展的存儲器地址范圍是0000H~FFFFH。由于片外RAM和EPROM使用不同的操作指令和控制信號,允許RAM和EPROM的地址重疊,故8031單片機(jī)對外可擴(kuò)展的RAM和EPROM分別為64K和60K(內(nèi)部有4K)。其中,在需要擴(kuò)展的外部I/O接口應(yīng)與片外RAM統(tǒng)一編址,用MOVX指令作I/O口輸入、輸出指令。第4頁/共71頁第3頁/共71頁5.1.2地址鎖存器

凡具有輸入、輸出控制功能的寄存器均可作為地址鎖存器。常用的有74LS373、8282或74LS273。選擇不同的地址鎖存器與單片機(jī)的連接方法也不同。圖5-2給出了74LS373的引腳圖及原理結(jié)構(gòu)。第5頁/共71頁第4頁/共71頁由圖5-2中(a)可知:(1)1D~8D為數(shù)據(jù)輸入端(P0口);1Q~8Q為數(shù)據(jù)輸出端(地址總線低8位輸出)。

(2)

OE:三態(tài)門控制端。OE=0時(shí),允許Q端輸出;/OE=1時(shí),三態(tài)門關(guān)閉,輸出Q對外呈高阻狀態(tài)。作為地址鎖存器時(shí),OE=0(接地),三態(tài)門一直開通,用戶只控制鎖存器G端。

(3)G:鎖存允許控制端。接單片機(jī)的ALE(地址鎖存)信號。當(dāng)G端輸入1時(shí),輸入1D~8D和輸出1Q~8Q狀態(tài)相同;當(dāng)G端從1返回到0時(shí),1D~8D上的數(shù)據(jù)被鎖存,此時(shí)鎖存器的輸入端是高阻狀態(tài),輸出端為鎖存輸入的地址數(shù)據(jù)。74LS373控制功能如表5-1所示。第6頁/共71頁第5頁/共71頁表5-174LS373控制功能

控制端輸入、輸出三態(tài)門輸出控制OE鎖存允許控制G輸入數(shù)據(jù)D輸出數(shù)據(jù)Q0111010000X(無關(guān))Q1X(無關(guān))X(無關(guān))高阻態(tài)第7頁/共71頁第6頁/共71頁圖5-3是分別使用74LS373、8282和74LS273等鎖存器作為單片機(jī)P0口低8位地址鎖存器的連接方法。第8頁/共71頁第7頁/共71頁由圖5-3可知:8282的鎖存控制端STB和74LS373的G端邏輯功能相同,可直接與單扯機(jī)的ALE端相連,在ALE下降沿進(jìn)行地址鎖存。而74LS273的鎖存控制端CLK則是在上升沿鎖存有效,因此ALE輸出的鎖存控制有效信號必須加反相器后再連接到CLK端,同時(shí)74LS273的三態(tài)門控制端CLR加高電平1才有效。8051、8751、89C51、89C52片內(nèi)具有4K或8KEPROM的單片機(jī),一般來說是夠用的。如果不夠,可以考慮外部EPROM的擴(kuò)展。擴(kuò)展方法與數(shù)據(jù)存儲器RAM的擴(kuò)展方法相似,本書省略不講。第9頁/共71頁第8頁/共71頁5.1.3串行存儲器E2PROM的擴(kuò)展

51系列單片機(jī)內(nèi)部有128個(gè)字節(jié)的RAM單元。但是在實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)中,僅靠片內(nèi)128個(gè)字節(jié)RAM不夠用,需要外擴(kuò)存儲器。常用數(shù)據(jù)存儲器有RAM和ROM兩種,這里我們只討論串行E2PROM-93C46與8051單片機(jī)的接口(常用擴(kuò)展方式)。93C46是64×16(1024)位串行存儲的電擦除可編程的只讀存儲器。第10頁/共71頁第9頁/共71頁

1.93C46的特點(diǎn)(1)在線改寫數(shù)據(jù)和自動擦除功能;(2)電源關(guān)閉,數(shù)據(jù)也不會丟失;(3)輸入、輸出口與TTL兼容;(4)片內(nèi)有編程電壓發(fā)生器,可以產(chǎn)生擦除和寫入操作時(shí)所需的電壓;(5)片內(nèi)有控制和定時(shí)發(fā)生器,擦除和寫入操作由此定時(shí)電路自動控制;(6)具有整體編程允許和截止功能,以增強(qiáng)數(shù)據(jù)的保護(hù)能力;(7)單5V電源供電;(8)在等待狀態(tài)時(shí),電流為1.5~3mA。第11頁/共71頁第10頁/共71頁2.93C46的封裝形式和引腳功能93C46有兩種封裝形式,如圖5-4所示。其中(a)為8腳雙排直列式塑料封裝;(b)為14腳扁平式塑料封裝。

第12頁/共71頁第11頁/共71頁其引腳功能為(SPI標(biāo)準(zhǔn)):CS:片選信號。當(dāng)CS置高電平時(shí),片選有效。用CS信號的下降沿啟動片內(nèi)定時(shí)器,開始擦寫操作。啟動之后,CS信號上電平的高低不影響芯片內(nèi)部的擦寫操作。CLK:串行數(shù)據(jù)時(shí)鐘信號輸入端。輸入時(shí)鐘頻率為0~250kHz。DI:串行數(shù)據(jù)輸入端。DO:串行數(shù)據(jù)輸出端(讀操作時(shí))。擦除操作時(shí),DO可作為擦寫狀態(tài)指示,相當(dāng)于忙/閑信號。其他狀態(tài)時(shí),DO呈高阻狀態(tài)。ORG:結(jié)構(gòu)端。當(dāng)ORG連接到VCC或懸空時(shí),93C46為16位存儲器結(jié)構(gòu);當(dāng)ORG連接到VSS時(shí),為8位存儲器結(jié)構(gòu)。需要注意的是,在時(shí)鐘頻率低于1MHz時(shí),ORG端才能懸空。NC:未用端。第13頁/共71頁第12頁/共71頁3.93C46的指令系統(tǒng)93C46共有8條指令,指令格式如表5-2所示。

表5-293C46的指令表(ORG=0,93C46為8位存儲器)指令起始位操作代碼地址數(shù)據(jù)說明DIDO讀110A5A4A3A2A1A0-D7~D0讀地址A7~A0寫101A5A4A3A2A1A0D7~D0RDY/BSY寫地址A7~A0擦除111A5A4A3A2A1A0RDY/BSY擦除地址A7~A0擦寫允許10011××××高阻擦寫禁止10000××××高阻片寫10010××××D7~D0RDY/BSY片擦除10001××××RDY/BSY第14頁/共71頁第13頁/共71頁

①起始位(第8位)總為1,作為控制指令的開始。接下來的②操作代碼(2位),③地址碼(6位)。向93C46寫入控制命令,便可進(jìn)行相應(yīng)操作。93C46在SPI系統(tǒng)中作為從器件。其DI引腳用于接收以串行格式發(fā)來的命令、地址和數(shù)據(jù)信息,這些信息的每一位都在CLK的上升沿讀入93C46。無論93C46進(jìn)行什么操作,必須首先將CS置高電平(選中),接著在時(shí)鐘同步下,把9位串行指令依次寫入片內(nèi)。在未完成這條指令所必須的操作之前,芯片拒絕接收新的指令。在不對芯片操作時(shí),最好將CS置為高電平,使芯片處于等待狀態(tài),以降低功耗。第15頁/共71頁第14頁/共71頁(1)讀指令-READ該指令的功能是將數(shù)據(jù)從93C46的單元中讀出來,機(jī)器碼“101A5A4A3A2A1A0”,其中A5A4A3A2A1A0是所要讀取單元的地址。93C46接收到該指令之后,在DO引腳先輸出一個(gè)低電平“虛擬”讀脈沖之后(可作為聯(lián)絡(luò)信號),從時(shí)鐘CLK的上升沿開始,DO引腳連續(xù)輸出16位串行數(shù)據(jù)。若CS繼續(xù)保持為高電平,將自動地周期性地輸出93C46的下一個(gè)地址單元的數(shù)據(jù)。時(shí)序如圖5-5所示。第16頁/共71頁第15頁/共71頁

圖5-5讀指令的時(shí)序第17頁/共71頁第16頁/共71頁(2)寫指令-WRITE

該指令的功能是向93C46的指定單元寫入數(shù)據(jù),機(jī)器碼是“110A5A4A3A2A1A0D15~D0”。

指令中,在指定單元的地址之后,緊接著是所要寫入的16位數(shù)據(jù)。在最后一個(gè)數(shù)據(jù)位加在DI引腳后,CLK的下一個(gè)上升沿以前,CS必須為低。CS的下降沿將啟動自定時(shí)自動擦除和編程周期。在CS為低電平大約250ns之后,恢復(fù)為高電平,同時(shí)DO引腳的狀態(tài)表示器件的忙/閑。DO引腳為低時(shí),表示編程仍在進(jìn)行;DO引腳為高時(shí),表示數(shù)據(jù)已經(jīng)寫入到指定單元中,并且93C46已作好接受下一條指令的準(zhǔn)備。第18頁/共71頁第17頁/共71頁(3)擦除指令-ERASE該指令的功能是將指定單元的內(nèi)容擦除,既強(qiáng)迫該單元的所有位為邏輯“1”狀態(tài)。機(jī)器碼是“110A5A4A3A2A1A0”。在93C46裝載完最后的地址位以后,CS為低電平。CS的下降沿將啟動自定時(shí)編程周期。在CS為低電平大約250ns之后,恢復(fù)為高電平,同時(shí)DO引腳的狀態(tài)表示器件的忙/閑。DO引腳為低時(shí),表示編程仍在進(jìn)行;DO引腳為高時(shí),表示指定單元已被擦除,并且93C46已作好接受下一條指令的準(zhǔn)備。第19頁/共71頁第18頁/共71頁(4)擦除整個(gè)存儲器指令-ERAL該指令的功能是將整個(gè)存儲器陣列強(qiáng)迫為邏輯“1”狀態(tài),

除操作碼不同之外,ERAL與ERASE指令周期相同。(5)寫整個(gè)存儲器指令-WRAL該指令的功能是將指令中指定的數(shù)據(jù)寫入整個(gè)存儲器陣列中,除操作碼不同之外,WRAL與WRITE指令周期相同第20頁/共71頁第19頁/共71頁(6)擦/寫允許指令-EWEN擦/寫禁止指令-EWDS擦/寫允許指令的功能是使芯片處于允許擦/寫狀態(tài)。一旦EWEN指令執(zhí)行,允許對93C46進(jìn)行編程直到執(zhí)行了EWDS指令或者是關(guān)閉了電源。擦/寫禁止指令的功能是禁止對芯片的所有擦除和寫入操作,包括整個(gè)芯片和單個(gè)單元的擦除和寫入。通常在上電后,芯片就處于EWDS狀態(tài)。一般在所有的編程操作完成之后,執(zhí)行EWDS指令,禁止所有的擦/寫操作,以防止偶然的數(shù)據(jù)干擾。此外,讀指令(READ)的執(zhí)行與EWEN與EWDS指令無關(guān)。

第21頁/共71頁第20頁/共71頁

1.93C46與80C51單片機(jī)的接口與編程(1)接口93C46與80C51的接口電路如圖5-6所示。

第22頁/共71頁第21頁/共71頁圖中,80C51工作在串行口方式0(同步移位寄存器輸入/輸出方式),它的TXD引腳連接93C46的CLK,為93C46提供時(shí)鐘信號,RXD引腳作為雙向串行口送出命令和讀入數(shù)據(jù)。其中,TXD信號必須反向,以適應(yīng)EEPROM的時(shí)序需要;93C46的DI、DO引腳須通過與門和一個(gè)三態(tài)門與80C51的RXD與P1.0引腳相連,以使其能在它們之間進(jìn)行雙向傳遞數(shù)據(jù)。P1.1腳連93C46的CS,作為片選信號。P1.0作為93C46的讀/寫控制信號,當(dāng)P1.0=1時(shí),對93C46進(jìn)行寫操作;當(dāng)P1.0=0時(shí),80C51讀入數(shù)據(jù)。第23頁/共71頁第22頁/共71頁(2)編程除起始位和“虛擬”數(shù)據(jù)位之外,同步串行口(串行口方式0)自動進(jìn)行操作碼、地址和數(shù)據(jù)的傳送。送起始位子程序(附加位):此時(shí),P1.0和P1.1作為輸出,P1.0=1時(shí)選通93C46,P1.1=1時(shí)將指令寫入93C46。P3.0和P3.1作為標(biāo)準(zhǔn)的I/O輸出口線。第24頁/共71頁第23頁/共71頁INSB:

CLRP1.1;置片選無效

SETBP1.0;為P3.0接通DI作準(zhǔn)備

SETBP3.0;置位DI

NOP

NOP

SETBP1.1;選中93C46

NOP

NOP

SETBP3.1;時(shí)鐘置高

NOP

NOP

CLRP3.1;時(shí)鐘置低

RET第25頁/共71頁第24頁/共71頁數(shù)據(jù)子程序:

READ_DATA:MOVSCON,#00H;設(shè)置串行口為方式0

ACALLINSB;送起始位

MOVA,#10001111B;送命令和地址,即送讀指令

MOVSBUF,AJNBTI,$

;等待發(fā)送完畢

CLRTIMOVR0,#BUF;指向數(shù)據(jù)緩沖區(qū)

CLRP1.0;準(zhǔn)備讀入數(shù)據(jù)

JNBRI,$

;等待接收數(shù)據(jù)

CLRRIMOV﹫R0,SBUFINCR0MOV﹫R0,SBUFCLRP1.1;置片選無效

NOPNOPSETBP1.1;置片選有效RET第26頁/共71頁第25頁/共71頁5.2并行I/O接口的擴(kuò)展

在51系列單片機(jī)中,提供給用戶的I/O線只有P1口和P3口的某些位線可作為輸入、輸出口線使用。因此,在應(yīng)用中需要擴(kuò)展如并行I/O、定時(shí)器等外部接口。一個(gè)并行接口可以設(shè)定為:輸入、輸出或雙向接口。一個(gè)典型并行接口一般結(jié)構(gòu)如圖5-7所示。由圖5-7可以看到,并行口用一個(gè)通道和輸入設(shè)備相連,用另一個(gè)通道和輸出設(shè)備相連。每個(gè)通道都配有一定的控制線和狀態(tài)線,溝通接口與外界的聯(lián)絡(luò)。并行接口應(yīng)該有一個(gè)控制寄存器用來存放CPU對它寫入的控制命令,一個(gè)狀態(tài)寄存器提供CPU查詢。為了實(shí)現(xiàn)輸入和輸出,接口中要有輸入、輸出緩沖寄存器。接口和CPU之間的聯(lián)系采用查詢或中斷方式。本節(jié)介紹兩種芯片:8255A和8155并行接口。

第27頁/共71頁第26頁/共71頁第28頁/共71頁第27頁/共71頁5.2.18255A可編程并行I/O接口

8255A具有三個(gè)8位并行I/O口,稱為PA口、PB口和PC口。其中PC口又分為高4位和低4位口,通過控制字設(shè)定可以選擇三種工作方式:(1)基本輸入/輸出;(2)選通輸入/輸出;(3)PA口為雙向總線。8255A與單片機(jī)和外設(shè)連接時(shí),由不同的初始化編程可用于無條件傳送,查詢或中斷傳送,以完成單片機(jī)和外設(shè)的信息交換。第29頁/共71頁第28頁/共71頁11.

8255A的內(nèi)部編程結(jié)構(gòu)8255A內(nèi)部如圖5-8所示。

第30頁/共71頁第29頁/共71頁8255A三個(gè)8位并行數(shù)據(jù)端口都有自己各自的特點(diǎn)。A口:具有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)數(shù)據(jù)輸入鎖存器。在數(shù)據(jù)輸入或輸出時(shí),數(shù)據(jù)均受到鎖存??蓪A7~PA0設(shè)定為三種工作方式:8位輸入、輸出或雙向。B口:具有一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)數(shù)據(jù)輸入緩沖器??删幊虨閮煞N工作方式:8位輸入或輸出。C口:除了單獨(dú)作為8位輸入、輸出口使用外,還可以按控制命令被分成兩個(gè)4位端使用,分別作為A口和B口輸出控制信號和輸入狀態(tài)信號。A組控制和B組控制:這兩組控制電路由工作方式控制字來設(shè)定兩組端口的工作方式和讀/寫操作。A組的控制電路管理A口和C口的高5位(PC7~PC3)的工作方式和讀/寫操作。B組的控制電路管理B口和C口的低3位(PC2~PC0)的工作方式和讀/寫操作。

第31頁/共71頁第30頁/共71頁2.8255A芯片引腳功能8255A為雙列直插式40條引腳,除了電源VCC和地GND以外,其它引腳信號可分為兩組。(1)和外部設(shè)備一邊相連接的:PA7~PA0為A組數(shù)據(jù)信號線;PB7~PB0為B組數(shù)據(jù)信號線。上述二組線根據(jù)用戶選擇8255A工作方式與外部設(shè)備的對應(yīng)端連接。(2)和單片機(jī)一邊相連接的:D7~D0為8255A雙向數(shù)據(jù)總線;CS為片選端,低電平有效;RD和WR為讀/寫有效控制端。當(dāng)CS=0時(shí),RD和WR才能對8255A有效。第32頁/共71頁第31頁/共71頁A1、A0為端口地址選擇端,確定8255A內(nèi)部3個(gè)數(shù)據(jù)口和一個(gè)控制寄存器地址。如下所示:A1 A2 選中端口地址00 ——

A端口01 ——

B端口1 0 ——

C端口1 1 ——

控制寄存器地址RESET——復(fù)位端,高電平有效。當(dāng)RESET=1時(shí)8255A復(fù)位,內(nèi)部控制寄存器被清除。所有端口被設(shè)定為輸入。在上述控制引腳中:CS、A1、A0可決定8255A的4個(gè)端口寄存器地址。RD、WR可以決定CPU對8255A的讀/寫操作方式選擇。

第33頁/共71頁第32頁/共71頁3.8255A的三種工作方式用戶可以通過CPU對8255A方式控制字的設(shè)定來選擇三種不同的工作方式。這三種方式硬件示意圖如圖5-9所示。

第34頁/共71頁第33頁/共71頁(1)方式0:基本輸入/輸出方式這種方式不需要選通信號。PA、PB和PC中任何一個(gè)端口都可以通過方式控制字設(shè)定為輸入或輸出。用于無條件數(shù)據(jù)傳送或查詢方式傳送數(shù)據(jù)。(2)方式1:選通輸入/輸出方式三個(gè)口被分成兩組。A組包括A口和PC7~PC3,A口可由編程設(shè)定為輸入或輸出口;PC7~PC4作為輸入/輸出操作的選通信號和應(yīng)答信號。B組包括B口和PC3~PC0這時(shí)C口作為8255A和外設(shè)之間或CPU之間傳送某些狀態(tài)信息及中斷請求信號。這些聯(lián)絡(luò)信號與C口的數(shù)位之間有著固定關(guān)系,不是由用戶設(shè)定的。第35頁/共71頁第34頁/共71頁((1)

方式2:雙向傳送方式只有A口可以選擇方式2。此時(shí),A口為8位雙向傳送數(shù)據(jù)口,C口的高5位PC7~PC3用來作為指定的A口輸入/輸出的控制聯(lián)絡(luò)線。如果一個(gè)并行外設(shè)既可作為輸入又可作為輸出設(shè)備,那么,將這個(gè)外設(shè)和8255A的A口相連并工作在方式2是合適的。A口工作在方式2時(shí),B口可作為方式0或者方式1工作,PC2~PC0用作I/O線。C口在設(shè)定為方式1或2時(shí),各引腳分配的固定功能如表5-3所示。表5-3中I/O表示C口末用的這些線可以設(shè)定為一般的輸入/輸出線使用。表中各聯(lián)絡(luò)線用于輸入時(shí)含義如下:(1)STB(Strobe)——選通信號輸入端,低電平有效。它由外設(shè)輸入,當(dāng)STB=0時(shí),8255A接收外設(shè)送來的8位數(shù)據(jù)。(2)IBF(InputBufferFull)——輸入緩沖器滿,高電平有效。當(dāng)IBF=1時(shí),表示當(dāng)前有一個(gè)新數(shù)據(jù)在輸入緩沖器中,可作為狀態(tài)信號,供CPU查詢用。第36頁/共71頁第35頁/共71頁(3)INTR(InterruptRequest)——它是8255A送往CPU的中斷請求信號,高電平有效。在STB=IBF=1時(shí),INTR=1。也就是說,當(dāng)選通信號STB結(jié)束,已將一個(gè)數(shù)據(jù)送入輸入緩沖器中,并且輸入緩沖器滿信號IBF已經(jīng)為高電平時(shí),8255A會向CPU發(fā)出中斷請求信號INTR=1。在CPU響應(yīng)中斷后讀取緩沖器的數(shù)據(jù)時(shí),由單片機(jī)RD的下降沿將INTR降為0,使IBF無效,通知外設(shè)再一次輸入數(shù)據(jù)。第37頁/共71頁第36頁/共71頁表5-38255A的C口聯(lián)絡(luò)控制信號線

C口的位方式1(A口、B口)方式2(僅用于A口)輸入輸出輸入輸出PC0INTRBINTRBI/OI/OPC1IBFBOBFBI/OI/OPC2STBBACKBI/OI/OPC3INTRAINTRAINTRAINTRAPC4STBAI/OSTBA×PC5IBFAI/OIBFA×PC6I/OACKA×ACKAPC7I/OOBFA×

OBFA第38頁/共71頁第37頁/共71頁表5-3中用于輸出聯(lián)絡(luò)信號含義:(1)ACK(Acknowledge)——外設(shè)響應(yīng)輸入信號,低電平有效。它是由外設(shè)送給8255A的,當(dāng)ACK=0時(shí),表明外設(shè)已經(jīng)取走并且處理完CPU通過8255A輸出的數(shù)據(jù)。(2)OBF(OutputBufferFull)——輸出緩沖器滿,低電平有效。這是8255A送給外設(shè)的一個(gè)控制信號,當(dāng)/OBF=0時(shí),表示CPU已經(jīng)把數(shù)據(jù)寫入8255A指定的端口,通知外設(shè)可以把數(shù)據(jù)取走。(3)INTR——中斷請求信號,高電平有效。當(dāng)外設(shè)已經(jīng)接收了CPU通過8255A輸出的數(shù)據(jù)后,INTR=1向CPU申請中斷,要求CPU繼續(xù)輸出數(shù)據(jù),CPU在中斷程序中把數(shù)據(jù)寫入8255A,寫入后使OBF有效,啟動外設(shè)工作。

第39頁/共71頁第38頁/共71頁4.8255A的控制字8255A共2個(gè)控制字。選擇工作方式或?qū)口控制。(1)工作方式選擇控制字8255A的三個(gè)端口工作在什么方式,是輸入還是輸出,都是由工作方式控制字設(shè)定??刂谱指袷饺鐖D5-10所示。在圖5-10中:D2~D0控制B口和PC7~PC4;D6~D3控制A口和PC7~PC4。另外,在用戶選擇方式1或2時(shí),對C口的定義無論是輸入還是輸出方式都不影響C口作為控制聯(lián)絡(luò)線使用的各位功能,但末用于控制聯(lián)絡(luò)線的各位,仍用D0、D3定義。

第40頁/共71頁第39頁/共71頁(2)端口C置1/置0控制字由于C口常作為聯(lián)絡(luò)控制位使用,應(yīng)使C口各位可以用置1/置0控制字來單獨(dú)設(shè)置,以實(shí)現(xiàn)用戶要求的控制功能。格式如圖5-11所示。在圖5-11中,對C口的某一位PCi進(jìn)行置1或置0操作由D0設(shè)定,選擇C口的哪一位進(jìn)行操作則是由D3D2D1來選擇,每次設(shè)定只能對C口的一位置1或清0。D7=0是這個(gè)控制字的特征位,CPU靠這個(gè)位來區(qū)別共用一個(gè)地址(A1A0=11)的兩個(gè)字。第41頁/共71頁第40頁/共71頁對8255A進(jìn)行初始化程序設(shè)計(jì)。例如:要求A口工作在方式0,輸入;B口為方式1,輸出;C口高4位PC7~PC4為輸入;C口低4位PC3~PC0為輸出。則由圖5-10所得8255A對應(yīng)的工作方式選擇控制字為:10011100B=9CH。實(shí)現(xiàn)上述要求的初始化程序?yàn)椋篗OV R1,#03H ;03H為8255A控制寄存器地址MOV A,#9CH ;8255A工作方式字為9CHMOVX @R1,A ;(R1)←A,方式字送入8255A控制口

第42頁/共71頁第41頁/共71頁第43頁/共71頁第42頁/共71頁第44頁/共71頁第43頁/共71頁

5.8255A和8031單片機(jī)的硬件接口8031與8255A的硬件接口電路如圖5-12所示。在圖5-12中連接的A1、A0和/CS線,按表5-3關(guān)系。8255AA、B、C口和控制寄存器地址依次為00H、01H、02H和03H。8255A的C口具有位操作功能,把一個(gè)置1置0控制字送入8255A的控制口,就能把C口的某一位置1或清0而不影響其它位的狀態(tài)。這個(gè)功能主要用于控制。如果用戶需要將C口的PC3位置1,而將PC5置0,則需要分兩次寫入置1/置0控制字。由圖5-12可知,將PC3置1的控制字為00000111B=07H;將PC5置0的控制字為00001010B=0AH。根據(jù)圖5-21的電路,可編程如下:

第45頁/共71頁第44頁/共71頁MOVR0,#03H ;R0←03H,8255A控制口地址MOV A,#07H ;A←07H,將PC3置1控制字MOVX@R0,A ;(03H)←07h,送控制字,置PC3=1MOV A,#0AH ;A←0AH,將PC5置0控制字MOVX@R0,A ;(03H)←0AH,送控制字,置PC5=0在8255AC口的PC3置1和置0控制中,第二次寫入的0AH置PC5=0的操作不影響第一次寫入的置PC3=1的狀態(tài)。第46頁/共71頁第45頁/共71頁8255A在單片機(jī)應(yīng)用系統(tǒng)中用于連接外部設(shè)備。如打印機(jī)、鍵盤、顯示器以及作為控制、狀態(tài)輸入輸出口。

第47頁/共71頁第46頁/共71頁5.2.28155可編程并行I/O接口可編程并行I/O接口8155提供:

①兩個(gè)8位并行口A、B和6位并行口C;

②256個(gè)字節(jié)的靜態(tài)RAM

③一個(gè)14位減1定時(shí)器/計(jì)數(shù)器,

可直接與單片機(jī)連接(內(nèi)部設(shè)有地址鎖存器)8155芯片的編程結(jié)構(gòu)8155片內(nèi)結(jié)構(gòu)如圖5-13所示。

第48頁/共71頁第47頁/共71頁圖5-138155內(nèi)編程結(jié)構(gòu)

第49頁/共71頁第48頁/共71頁在圖5-13中,8155片內(nèi)功能可分為4部分:

(1)A口和B口為一般的8位并行I/O口,可設(shè)定為8位并行輸入或輸出。C口只有6位,它有兩個(gè)作用。一是設(shè)定為普通并行I/O口;另一種是設(shè)定為控制狀態(tài)口使用,PC2~PC0作為A口的控制信號,PC5~PC3作為B口的控制信號使用。

(2)片內(nèi)256個(gè)字節(jié)RAM,CPU對其操作、使用相當(dāng)于8031外擴(kuò)的256個(gè)單元的RAM,地址為00H~FFH。

(3)片內(nèi)14位計(jì)數(shù)器可對引腳TIMEIN輸入脈沖進(jìn)行減法計(jì)數(shù),當(dāng)由某一初值減為終值時(shí),在TIMEOUT端輸出事先規(guī)定的方波或脈沖。初值在0002H~3FFFH之間。可作為外部事件計(jì)數(shù)器、定時(shí)器和分頻器使用。

第50頁/共71頁第49頁/共71頁

(4)片內(nèi)有一個(gè)工作方式寄存器,用來設(shè)定A、B和C口的工作方式等。另一個(gè)是狀態(tài)寄存器,用來鎖存A、B和定時(shí)器當(dāng)前的狀態(tài),供CPU查詢用。應(yīng)注意:兩個(gè)寄存器共用一個(gè)地址。CPU用指令寫入的是工作方式字,而讀出的是狀態(tài)字。另外,8155內(nèi)部有一個(gè)10位鎖存器,用來鎖存地址及控制信號。因此,從8031P0口送至8155的地址就不用再加地址鎖存器了。

第51頁/共71頁第50頁/共71頁2.8155的引腳功能及地址編碼。8155是40條引腳的芯片。下面分別介紹。(1)8155和CPU連接的引腳AD7~AD0——地址/數(shù)據(jù)分時(shí)復(fù)用線。單片機(jī)和8155之間的地址、數(shù)據(jù)、命令和狀態(tài)信息都通過這8位總線傳送的。A2~A0決定8155內(nèi)I/O口等6個(gè)地址選擇。IO/M——8155片內(nèi)I/O和RAM選擇線。當(dāng)IO/M=0時(shí),AD7~AD0線上為8155內(nèi)RAM地址,CPU對其RAM進(jìn)行讀、寫操作;當(dāng)IO/M=1時(shí),AD7~AD0線上為8155I/O口地址。CE——片選端,低電平有效。ALE——鎖存有效輸入信號線。用來鎖存AD7~AD0低8位地址及IO/M、CE狀態(tài)。RESET——復(fù)位線,高電平有效。復(fù)位后,8155設(shè)定為輸入方式。RD、WR——讀、寫輸入線。第52頁/共71頁第51頁/共71頁8155的RAM和I/O口地址為16位,高8位由P2口控制CE和IO/M,低8位由P0口連接AD7~AD0確定。若用P2.7連接CE,P2.0連接IO/M,未用的P2.6~P2.1取全0,則8031單片機(jī)對8155的地址編碼如表5-4所示。表5-48155I/O口地址編碼P27...P20P07...P03P02P01P00I/O地趾選擇I/O口0...1

0...00000100H控制寄存器0...1

0...00010101HA口0...1

0...00100102HB口0...1

0...00110103HC口0...1

0...01000104H定時(shí)器低8位0...1

0...01010105H定時(shí)器高8位第53頁/共71頁第52頁/共71頁(2)8155與外部設(shè)備連接的引腳PA7~PA0——A口I/O線,可設(shè)定為輸入或輸出。PB7~PB0——B口I/O線,可設(shè)定為輸入或輸出。PC5~PC0——C口6位通用I/O線?;蜃鳛锳口和B口的控制信號線使用,其中:高3位PC5~PC3為B口服務(wù),低3位為A口服務(wù)。3.8155工作方式(1)作為256個(gè)字節(jié)外部RAM這種工作狀態(tài)要求IO/M=0,這時(shí)8155只能作為單片機(jī)外部RAM使用,地址為0000H~00FFH,CPU用MOVX指令對其進(jìn)行讀/寫操作。(2)8155擴(kuò)展為I/O口使用這種工作方式要求

IO/M=1,再由工作方式控制字來選擇8155I/O口的基本輸入、輸出工作方式。第54頁/共71頁第53頁/共71頁4.8155的命令/狀態(tài)控制字若對8155片內(nèi)I/O口或定時(shí)器進(jìn)行操作,必須向工作方式控制寄存器寫入一個(gè)初始化命令字。8155的工作方式控制字格式如圖5-14所示。在圖5-14中:D3~D0規(guī)定A、B、C口的工作方式。當(dāng)C口作為控制口時(shí)D4、D5設(shè)定A口和B口的中斷允許或禁止。最高兩位D7D6控制定時(shí)器操作方式的解釋如下:

第55頁/共71頁第54頁/共71頁D7D6=00——無操作;此命令不影響原先的計(jì)數(shù)方式。只有當(dāng)用戶僅要改變A、B、C口的工作方式而不需要改變定時(shí)器原先規(guī)定的操作方式時(shí)使用此命令。D7D6=01——停止計(jì)數(shù):若計(jì)數(shù)器尚未啟動,則不操作,維持原狀態(tài)。若計(jì)數(shù)器正在運(yùn)行計(jì)數(shù)時(shí),此命令輸入后,計(jì)數(shù)器立即停止計(jì)數(shù)工作。D7D6=10——計(jì)滿后停止:若計(jì)數(shù)器正在計(jì)數(shù),當(dāng)由計(jì)數(shù)初值減至終值時(shí)停止計(jì)數(shù)。若此命令輸入時(shí)計(jì)數(shù)器未起動,則計(jì)數(shù)器無操作。D7D6=11——開始計(jì)數(shù):若計(jì)數(shù)器原先沒有工作,則在CPU裝入計(jì)數(shù)初值和此命令后立即啟動工作。若計(jì)數(shù)器正在運(yùn)行計(jì)數(shù),則在CPU輸入新的計(jì)數(shù)初值和此命令后,計(jì)數(shù)器仍按原規(guī)定方式工作,直到計(jì)數(shù)器減至終值后,才按新的規(guī)定方式和計(jì)數(shù)初值工作。

第56頁/共71頁第55頁/共71頁圖中ALT1(A、B口基本I/O,C口輸入)、ALT2(A、B口基本I/O,C口輸出)方式使用較多,另兩種方式可查有關(guān)資料。應(yīng)注意:8155命令字和狀態(tài)字用的是同一個(gè)地址。因此,工作方式控制字只能寫入、不能讀出查詢。若用戶一定要用CPU讀出,則讀出的不是工作方式字而是狀態(tài)字。第57頁/共71頁第56頁/共71頁例如:若用戶要求8155的A口為基本輸入口,B口為基本輸出口、C口為輸入口,并立即停止計(jì)數(shù)器工作。由圖5-14可知,8155工作在ALT1,方式字的各控制位:0100001042H停止

禁止中斷

ALT1B口輸出

A口輸入工作方式控制字為42H,控制口地址為0100H,則CPU寫入8155片內(nèi)的初始化程序?yàn)椋篗OVDPTR,#0100H;控制寄存器地址MOVA,#42H;方式控制字8155工作在ALT1MOVX@DPTR,A;控制字寫入8155中CPU執(zhí)行上述程序后,使8155的IO/M=1,CE=0,地址線低8位A7~A0=00H,而后數(shù)據(jù)線D7~D0=42H。第58頁/共71頁第57頁/共71頁5.8155與8031的硬件接口及初始化編程由于8155內(nèi)部有10位地址鎖存器,由ALE信號鎖存。因此8155的

AD7~AD0與8031的P0.7~P0.0直接相連,其余各輸入、輸出控制、都和8031的同名端相連即可。而IO/M和CE端可用P2的兩位控制。根據(jù)表5-4地址編碼,可得8155和8031單片機(jī)硬件接口電路如圖5-15所示。第59頁/共71頁第58頁/共71頁圖5-158155與8031硬件接口第60頁/共71頁第59頁/共71頁用戶對8155的A、B、C口先用方式控制字確定這三個(gè)口的工作方式,若規(guī)定工作在基本的I/O狀態(tài),然后用MOVX指令對這三個(gè)口進(jìn)行輸入或輸出操作。

例如:設(shè)定8155工作在基本I/O口ALT1方式,A口輸入,B口輸出,C口輸入。要求將A口輸入的數(shù)據(jù)送進(jìn)8155片內(nèi)的RAM的0000H單元中,將00FFH單元數(shù)據(jù)從B口輸出。試設(shè)定工作方式控制字及編寫程序。解:根據(jù)要求,由圖5-14得控制字為00000010B=02H。完成要求功能的程序?yàn)椋?/p>

第61頁/共71頁第60頁/共71頁MOVDPTR,#0100H;8155控制口地址為0100HMOVA,#02H

;8155設(shè)定為ALT1工作控制MOVX@DPTR,A;向8155輸出控制字MOVDPTR,#0101H;設(shè)定8155A口地址為0101HMOVXA,@DPTR;讀8155A口數(shù)據(jù)MOVDPTR,#0000H;8155片內(nèi)RAM首地址MOVX@DPTR,A;將A口數(shù)據(jù)送入8155內(nèi)RAM單元MOVDPTR,#00FFH;8155內(nèi)RAM地址00FFHMOVXA,@DPTR;讀8155內(nèi)RAM的00FFH單元數(shù)據(jù)MOVDPTR,#0102H;設(shè)定8155B口地址為0102HMOVX@DPTR,A;將8155內(nèi)RAM數(shù)據(jù)從B口輸出第62頁/共71頁第61頁/共71頁6.8155片內(nèi)定時(shí)器的應(yīng)用8155片內(nèi)有一個(gè)14位減法計(jì)數(shù)器,可以對從TIN引腳輸入的脈沖進(jìn)行減1計(jì)數(shù),當(dāng)計(jì)滿時(shí)從TOUT端輸出按預(yù)先設(shè)定的方波或脈沖。對定時(shí)器的管理分兩級控制。第一級由寫入工作方式控制字D7D6位來確定定時(shí)器的啟動、停止或裝入計(jì)數(shù)初值后再啟動。第二級是定時(shí)器高8位中的D7D6(M1M0)是用來決定TOUT引腳輸出脈沖的4種不同方式。余下的14位計(jì)數(shù)器初值是0002H~3FFFH之間的任意值。定時(shí)器本身占用兩個(gè)8位寄存器地址:若A2A1A0=100為定時(shí)器低8位地址選中;A2A1A0=101為定時(shí)器高8位地址選中,見表5-4所示。定時(shí)器的格式如圖5-16所示。第63頁/共71頁第62頁/共71頁圖5-16中所謂輸出方波(以計(jì)數(shù)初值是8為例),指的是從起動計(jì)數(shù)器開始工作,在前半個(gè)周期計(jì)數(shù)4則TOUT端輸出高電平,后半個(gè)周期計(jì)數(shù)4輸出為低電平。如果寫入定時(shí)器的計(jì)數(shù)初值為奇數(shù),則在TOUT端輸出方波不對稱。前半個(gè)周期高電平要比后半個(gè)周期低電平多一個(gè)數(shù)時(shí)間,這也是計(jì)數(shù)初值最小是2的原因。8155定時(shí)器TOUT端輸出方式及相應(yīng)的波形關(guān)系如圖5-17所示。第64頁/共71頁第63頁/共71頁第65頁/共71頁第64頁/共71頁第66頁/共71頁第65頁/共71頁例如:使8155作為I/O口和定時(shí)器使用。為基本I/O口ALT2方式。A、B、C口均設(shè)定為輸出方式;定時(shí)器作為連續(xù)方波發(fā)生器使用,對輸入TIN端的脈沖進(jìn)行

溫馨提示

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

評論

0/150

提交評論