交通燈智能控制設(shè)計_第1頁
交通燈智能控制設(shè)計_第2頁
交通燈智能控制設(shè)計_第3頁
交通燈智能控制設(shè)計_第4頁
交通燈智能控制設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、交通燈智能控制設(shè)計摘要 本文首先介紹了交通燈的發(fā)展歷史,微型計算機(jī)的發(fā)展歷史以及微機(jī)在各個領(lǐng)域的運用。接著主要對微機(jī)8086芯片及8255可編程并行I/O接口芯片的功能和工作原理做了比較詳細(xì)的介紹,然后以這些芯片為中心器件來設(shè)計交通燈控制系統(tǒng),實現(xiàn)了對紅綠燈的燃亮和紅綠燈燃亮?xí)r間的控制,顯示時間通過8255輸出,由雙色LED燈顯示,本系統(tǒng)系統(tǒng)實用性強,操作簡單。關(guān)鍵詞:微機(jī) 交通燈 控制 第一章 緒論1.1交通燈的發(fā)展在今天,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段,但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手

2、式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩種以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。1914年,電氣啟動的紅綠燈出現(xiàn)在美國。這種紅綠燈由紅綠黃三色圓形的投光器組成,安裝在紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來啟動紅綠燈,司機(jī)遇紅燈

3、時按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發(fā)生交通事故。信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國道路交通和道路標(biāo)志信號協(xié)定對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線

4、,但車輛已十分接近停車線而不能安全停車時可以進(jìn)入交叉路口。 當(dāng)前,在世界范圍內(nèi),一個以微電子技術(shù),計算機(jī)和通信技術(shù)為先導(dǎo)的,以信息技術(shù)和信息產(chǎn)業(yè)為中心的信息革命方興未艾。而計算機(jī)技術(shù)怎樣與實際應(yīng)用更有效的結(jié)合并有效的發(fā)揮其作用是科學(xué)界最熱門的話題,也是當(dāng)今計算機(jī)應(yīng)用中空前活躍的領(lǐng)域。本文主要從微機(jī)的應(yīng)用上來實現(xiàn)十字路口交通燈智能化的管理,用以控制過往車輛的正常運作。1.2課題的提出隨著社會經(jīng)濟(jì)的發(fā)展,馬路上的車流量越來越大,很多時候會出現(xiàn)嚴(yán)重的擁堵,為了改善這種情況,我們就必須對交通燈系統(tǒng)進(jìn)行改進(jìn),使它具有高度的智能化,使車水馬龍能有條不紊的穿梭于馬路上。本文利用微處理器實現(xiàn)了對交通燈的智能控

5、制,包括對不同顏色交通燈的燃亮以及燃亮?xí)r間的控制,充分顯示了交通燈系統(tǒng)的智能化對于車流控制的重要性。第二章 微型計算機(jī)概述2.1 微型計算機(jī)的發(fā)展第一階段(19711973):典型的微型機(jī)以Intel 4004和Intel 4040為基礎(chǔ)。微處理器和存儲器采用PMOS工藝,工作速度很慢。微處理器的指令系統(tǒng)不完整;存儲器的容量很小,只有幾百字節(jié);沒有操作系統(tǒng),只有匯編語言。主要用于工業(yè)儀表、過程控制或計算器中。 第二階段(19741977):以8位微處理器為基礎(chǔ),典型的微處理器有Intel 8080/8085、Zilog公司的Z80及Motorola公司的6800。微處理器采用高密度MOS(HM

6、OS)工藝,具有較完整的指令系統(tǒng)和較強的功能。存儲器容量達(dá)64KB,配有熒光屏顯示器、鍵盤、軟盤驅(qū)動器等設(shè)備,構(gòu)成了獨立的臺式計算機(jī)。配有簡單的操作系統(tǒng)(如CP/M)和高級語言。 第三階段(19781981):以16位和準(zhǔn)32位微處理器為基礎(chǔ),如Intel公司的8086、Motorola的68000和Zilog的Z8000。微處理器采用短溝道高性能NMOS工藝。在體系結(jié)構(gòu)方面吸納了傳統(tǒng)小型機(jī)甚至大型機(jī)的設(shè)計思想,如虛擬存儲和存儲保護(hù)。 第四階段(20世紀(jì)80年代):80年代初,IBM公司推出開放式的IBM PC,這是微型機(jī)發(fā)展史上的一個重要里程碑。IBM PC采用Intel 80x86(當(dāng)時為

7、8086/8088、80286、80386)微處理器和Microsoft公司的MS DOS操作系統(tǒng)并公布了IBM PC的總線設(shè)計。 第五階段(20世紀(jì)90年代開始):RISC(精簡指令集計算機(jī))技術(shù)的問世使微型機(jī)的體系結(jié)構(gòu)發(fā)生了重大變革。 幾十年來,隨著物理元、器件的變化,不僅計算機(jī)主機(jī)經(jīng)歷了更新?lián)Q代,它的外部設(shè)備也在不斷地變革。比如外存儲器,由最初的陰極射線顯示管發(fā)展到磁芯、磁鼓,以后又發(fā)展為目前通用的磁盤,近幾年出現(xiàn)了體積更小、容量更大、速度更快的只讀光盤(CDROM)。微型計算機(jī)的發(fā)展 70年代以來,微型計算機(jī)的發(fā)展尤為迅速,幾乎令人目不暇接。以采用Intel微處理器芯片的微機(jī)主流機(jī)型的

8、發(fā)展為例:1971年Intel公司推出4位微處理器芯片4004及4040;1974年出現(xiàn)采用8位微處理器芯片8080的微機(jī);1979年電腦巨人IBM公司介入微機(jī)行業(yè),開發(fā)出采用準(zhǔn)16位8088芯片的IBMPC兼容機(jī)。該系列微機(jī)不斷地推陳出新,1982年推出采用16位微處理器芯片80286的微機(jī);1989年推出80486微機(jī)。1993年,80586又問世了。出于專利保護(hù)的考慮,不再稱8058,命名為Pentium(簡稱P5,中文名“奔騰”)。 Pentium芯片集成了 310萬個晶體管,使用64位的數(shù)據(jù)總線。由于更新?lián)Q代迅速,微機(jī)型號的生存周期也越來越短。據(jù)統(tǒng)計,自1982年以來,微機(jī)性能指標(biāo)平

9、均每一年半提高一倍,目前的微機(jī)性能指標(biāo)已達(dá)到1982年時的200倍,1970年時的3000倍,而成本和價格則大幅度地降低了。計算機(jī)網(wǎng)絡(luò)的發(fā)展: 近年來,計算機(jī)網(wǎng)絡(luò)也得到持續(xù)不斷的發(fā)展,并可大致分為四個階段:1. 遠(yuǎn)程終端聯(lián)機(jī)階段2. 由大型主機(jī)利用通信線連接多個遠(yuǎn)程終端,組成聯(lián)機(jī)系統(tǒng)。微型計算機(jī)網(wǎng)絡(luò)得到廣泛的應(yīng)用和發(fā)展,出現(xiàn)了局域網(wǎng)(LAN)、城域網(wǎng)(MAN)和廣域網(wǎng)(WAN)。 3.計算機(jī)網(wǎng)絡(luò)互連階段根據(jù)國際標(biāo)準(zhǔn)化組織(ISO)公布的開放系統(tǒng)互連模型( OSI)實現(xiàn)了網(wǎng)絡(luò)間的互連,并產(chǎn)生了綜合業(yè)務(wù)數(shù)字網(wǎng)(ISDN)及無線通訊的衛(wèi)星網(wǎng)。 4.信息高速公路階段將把所有的計算機(jī)資源都用高速通信網(wǎng)連

10、接起來,實現(xiàn)最大范圍的信息資源共享。2.2計算機(jī)的發(fā)展趨勢當(dāng)前計算機(jī)發(fā)展的趨勢是由大到巨(追求高速度、高容量、高性能),由小到微(追求微型化,包括臺式、便攜式、筆記本式乃至掌上型,使用方便,價格低廉),網(wǎng)絡(luò)化,智能化。同時,現(xiàn)代計算機(jī)在許多技術(shù)領(lǐng)域都取得了極大的進(jìn)步,比如多媒體技術(shù)、計算機(jī)網(wǎng)絡(luò)、面向?qū)ο蟮募夹g(shù)、并行處理技術(shù)、人工智能、不污染環(huán)境并節(jié)約能源的“綠色計算機(jī)”等。許多新技術(shù)、新材料也開始應(yīng)用于計算機(jī),比如超導(dǎo)技術(shù)、光盤等。但畢竟還沒有出現(xiàn)第五代計算機(jī)。日本于1981年宣布了雄心勃勃的研制五代機(jī)的計劃,至今未能實現(xiàn)并擱淺了。至于什么是第五代計算機(jī)也尚無定論,但突破迄今一直沿用的馮諾依曼

11、原理是必然趨勢、前四代計算機(jī)是按構(gòu)成電子計算機(jī)的主要元器件的變革劃分的,第五代計算機(jī)可能是采用激光元器件和光導(dǎo)纖維的光計算機(jī),也可能不是按元器件的變革作為更新?lián)Q代的標(biāo)志,而是按其功能的革命性突破作為標(biāo)志,比如是能夠處理知識和推理的人工智能計算機(jī),甚至可能發(fā)展到以人類大腦和神經(jīng)元處理信息的原理為基礎(chǔ)的生物計算機(jī)等??傊?,計算機(jī)的發(fā)展仍然是方興未艾,其發(fā)展前景是極其廣闊而誘人的。新觀點劃分階段:目前,國內(nèi)外的許多專家又對計算機(jī)發(fā)展的歷史作了進(jìn)一步的總結(jié)歸納,把計算機(jī)的發(fā)展粗略地劃分為三個階段。把從產(chǎn)生第一臺機(jī)械式計算機(jī)至1946年第一臺電子計算機(jī)ENIAC誕生以前稱為近代計算機(jī)階段,即機(jī)械式和機(jī)電

12、式計算機(jī)階段。將ENIAC問世以后傳統(tǒng)大、中型機(jī)占主導(dǎo)地位的時期,按物理器件的變比劃分為四代,稱為傳統(tǒng)大型機(jī)階段。將微型計算機(jī)和計算機(jī)網(wǎng)絡(luò)崛起后計算機(jī)與通信結(jié)合的時期,稱為微機(jī)與網(wǎng)絡(luò)階段。2.3匯編語言指令系統(tǒng)中的指令,在計算機(jī)內(nèi)存中,都是以二進(jìn)制編碼的形式存儲的,這種編碼稱為機(jī)器碼,或者稱為機(jī)器指令.在程序運行時,指令由內(nèi)存讀入cpu,然后譯碼,執(zhí)行.只有內(nèi)存中的機(jī)器碼,計算機(jī)才能執(zhí)行. 現(xiàn)在,可以用指令助記符和表示地址或數(shù)據(jù)等的各種符號,按照規(guī)定的格式,來編制程序,這樣的程序,稱為匯編語言程序.這些表示指令,地址,數(shù)據(jù)等的符號以及有關(guān)規(guī)定,是計算機(jī)進(jìn)行:“思想”的工具,亦即計算機(jī)匯編語言匯

13、編語言源程序經(jīng)過匯編程序的語法檢查和翻譯,形成二進(jìn)制代碼表示的目的碼文件.如果源程序中有語法錯誤,匯編程序會指出錯誤的類型和出錯所在的語句,以便用戶重新進(jìn)行編輯修改,再形成新的源程序.源文件和有其生成的目的碼文件可以是一個或者是幾個.2.3.1匯編語言程序結(jié)構(gòu)匯編語言源程序通常由一個或幾個程序模塊組成,每個模塊包括數(shù)據(jù)段,堆棧段和若干個代碼段.有時程序中可以不設(shè)堆棧段,而利用系統(tǒng)中已設(shè)定的堆棧段.代碼段中有若干個過程,過程又稱子程序。過程中的語句分為兩類,兩類是指示性語句,另一類是指示性語句.指示性語句是計算機(jī)能執(zhí)行的指令,而指示性語句,計算機(jī)并不能執(zhí)行。匯編時,依據(jù)指示性語句的規(guī)定,匯編程序

14、對源程序進(jìn)行相應(yīng)的處理操作,進(jìn)行諸如定義數(shù)據(jù)、分配存儲區(qū)、指示程序開始和結(jié)束等服務(wù)性工作,以減輕編程員的負(fù)擔(dān)。指示性語句又成偽指令。這里,用等式表示程序和過程的結(jié)果內(nèi)容: 程序=塊數(shù)據(jù)段,堆棧段,代碼段(過程1,過程2,),快過程=指示性語句,指令性語句指示性語句的格式如下: 名字 偽指令 操作數(shù) ;注釋例如: SUM PROC FAR ;定義一個過程 SUM ENDP ;過程定義結(jié)束指令性語句的格式為: 標(biāo)號:前綴指令助記符操作數(shù);注釋例如: LP1: MOV BX , OFFSET DAREA ;DAREA 的地址送BX語句中名字和符號,又稱為符標(biāo)識符,是程序員自己確定的,它不允許與指令助

15、記符或偽指令同名,也不允許有數(shù)字打頭,字符個數(shù)不得超過31個。第三章 芯片的選擇與介紹3.1微機(jī)8086系統(tǒng)3.1.1 8086系統(tǒng)的內(nèi)部結(jié)構(gòu):8086的功能結(jié)構(gòu)如圖3.1所示。 圖3.11.總線接口部件BIUBIU是CPU與外部存儲器及IO的接口,負(fù)責(zé)與存儲器和I0系統(tǒng)進(jìn)行數(shù)據(jù)交換。 BIU由下列各部分組成:4個16位段地址寄存器,即代碼段寄存器CS,數(shù)據(jù)段寄存器DS,附加段寄存器ES和堆棧段寄存器SS,它們分別用于存放當(dāng)前代碼段、數(shù)據(jù)段、附加段和堆棧段的段基址。段基址表示20位段起始地址的高16位,段起始地址的低4位固定是0。16位指令指針I(yè)P:IP用于存放下一條要執(zhí)行指令的有效地址EA(

16、即偏移地址),IP的內(nèi)容由BIU自動修改,通常是進(jìn)行加1修改。當(dāng)執(zhí)行轉(zhuǎn)移指令、調(diào)用指令時,BIU裝入IP中的是轉(zhuǎn)移目的地址。偏移地址表示離段起始地址之間的距離,用字節(jié)數(shù)表示。如偏移地址=0064H,表示該地址距離段起始地址有100個字節(jié),偏移地址為0就表示該地址為段起始地址。由段基址(段寄存器的內(nèi)容)和偏移地址兩部分構(gòu)成了存儲器的邏輯地址,如CS:IP=3000:2000H,CS:IP=0200:1020H等,都是邏輯地址。20位物理地址加法器:加法器用于將邏輯地址變換成讀寫存儲器所需的20位物理地址,即完成地址加法操作。方法是將某一段寄存器的內(nèi)容(代表段基址)左移4位(相當(dāng)乘16)再加上16

17、位偏移地址以形成20位物理地址。 6字節(jié)的指令隊列:當(dāng)執(zhí)行單元EU正在執(zhí)行指令中,且不需要占用總線時,BIU會自動進(jìn)行預(yù)取下一條或幾條指令的操作,并按先后次序存入指令隊列中排隊,由EU按順序取來執(zhí)行。 總線控制邏輯:總線控制邏輯用于產(chǎn)生并發(fā)出總線控制信號,以實現(xiàn)對存儲器和IO端口的讀寫控制。它將CPU的內(nèi)部總線與16位的外部總線相連,是CPU與外部打交道(讀寫操作)必不可少的路徑。2.執(zhí)行部件EU 執(zhí)行部件EU的功能就是負(fù)責(zé)指令的執(zhí)行。由圖3.1可知,EU包括下列幾個部分: 算術(shù)邏輯單元ALU: ALU完成16位或8位的二進(jìn)制數(shù)的算術(shù)邏輯運算,絕大部分指令的執(zhí)行都由ALU完成。在運算時數(shù)據(jù)先傳

18、送至16位的暫存寄存器中,經(jīng)ALU處理后,運算結(jié)果可通過內(nèi)部總線送入通用寄存器或由BIU存入存儲器。 標(biāo)志寄存器FR:它用來反映CPU最近一次運算結(jié)果的狀態(tài)特征或存放控制標(biāo)志。FR為16位,其中7位未用。 通用寄存器組:它包括4個數(shù)據(jù)寄存器AX、BX、CX、DX,其中AX又稱累加器,4個專用寄存器,即基址指示器BP、堆棧指示器SP、源變址寄存器SI和目的變址寄存器DI。EU控制器:它接收從BIU中指令隊列取來的指令,經(jīng)過指令譯碼形成各種定時控制信號,向EU內(nèi)各功能部件發(fā)送相應(yīng)的控制命令,以完成每條指令所規(guī)定的操作。3.BIU和EU的動作管理 BIU和EU并不是同步工作的,但是兩者的動作管理是有

19、原則的。BIU從內(nèi)存取指令,并送到指令隊列。取指令時的地址由代碼段寄存器CS中的16位段基址的最低位后補4個0,再與指令指針I(yè)P中的16位偏移地址在地址加法器中相加得到20位物理地址。然后通過總線控制邏輯發(fā)出存儲器讀命令,從而RD啟動存儲器,從存儲器中取出指令并送入指令隊列供EU執(zhí)行。BIU必須保證指令隊列始終有指令可供執(zhí)行。指令隊列允許預(yù)取指令代碼,當(dāng)指令隊列有2個字節(jié)的空余時,BIU將自動取指令到指令隊列。EU是直接從BIU的指令隊列中取指令執(zhí)行,由于指令隊列中至少有一個字節(jié)的指令,EU就不必因取指令而等待。在EU執(zhí)行指令過程中需要取操作數(shù)或存結(jié)果時,先向BIU發(fā)出請求,并提供操作數(shù)的有效

20、地址,BIU將根據(jù)EU的請求和提供的有效地址,形成20位的物理地址并執(zhí)行一個總線周期去訪問存儲器或IO端口,從指定存儲單元或IO端口取出操作數(shù)送交EU使用或?qū)⒔Y(jié)果存入指定的存儲單元或IO端口。如果BIU已準(zhǔn)備好取指令但同時又收到EU的申請,則BIU先完成取指令的操作,然后進(jìn)行操作數(shù)的讀寫。 當(dāng)EU執(zhí)行轉(zhuǎn)移、調(diào)用和返回指令時,BIU先自動清除指令隊列,再按EU提供的新地址取指令。BIU新取得的第一條指令將直接送到EU中去執(zhí)行。然后,BIU將隨后取得的指令重新填入指令隊列。早期的微處理器中,程序的執(zhí)行是由取指和執(zhí)行指令交替進(jìn)行的,取指期間,CPU必須等待。如圖3.2(a)所示,指令的提取和執(zhí)行是串

21、行進(jìn)行的。在8086中,由于EU和BIU兩部分是按流水線方式并行工作的,在EU執(zhí)行指令的過程中,BIU可以取出多條指令,放進(jìn)指令流隊列中排隊。EU僅僅從BIU中的指令隊列中不斷地取指令并執(zhí)行指令,因而省去了訪問內(nèi)存取指令的時間,加快了程序運行速度。這也正是8086CPU成功的原因之一。它的執(zhí)行過程如圖3.2(b)所示,取指令和執(zhí)行指令由兩套不同的機(jī)構(gòu)同時進(jìn)行。 3.1.2 8086的寄存器結(jié)構(gòu)8086CPU的寄存器結(jié)構(gòu)如圖3.3所示。8086CPU內(nèi)部有14個16位寄存器,可以分為以下三組:1通用寄存器組通用寄存器可以分為兩組:數(shù)據(jù)寄存器和地址指針與變址寄存器。(1)數(shù)據(jù)寄存器數(shù)據(jù)寄存器包括A

22、X、BX、CX、DX等4個16位寄存器,主要用來保存算術(shù)、邏輯運算的操作數(shù)、中間結(jié)果和地址。它們既可以作為16位寄存器使用,也可以將每個寄存器高字節(jié)和低字節(jié)分開作為兩個獨立的8位寄存器使用。而8位寄存器(AL、BL、CL、DL、AH、BH、CH、DH)只能用于存放數(shù)據(jù)。(2)地址指針和變址寄存器 地址指針和變址寄存器組包括SP、BP、SI和DI等4個16位寄存器。它們主要是用來存放或指示操作數(shù)的偏移地址。 堆棧指針SP中存放的是當(dāng)前堆棧段中棧頂?shù)钠频刂?。堆棧操作指令PUSH和POP就是從SP中得到操作數(shù)的段內(nèi)偏移地址的。 BP是訪問堆棧時的基址寄存器。BP中存放的是堆棧中某一存儲單元的偏移地

23、址,SP、BP通常和SS聯(lián)用。 SI和DI稱為變址寄存器。它們通常與DS聯(lián)用,為程序訪問當(dāng)前數(shù)據(jù)段提供操作數(shù)的段內(nèi)偏移地址。SI和DI除作為一般的變址寄存器外,在串操作指令中SI規(guī)定用作存放源操作數(shù)(即源串)的偏移地址,稱為源變址寄存器;DI規(guī)定用作存放目的操作數(shù)(目的串)的偏移地址,故稱之為目的變址寄存器,二者不能混用。由于串操作指令規(guī)定源字符串必須位于當(dāng)前數(shù)據(jù)段DS中,目的串必須位于附加段ES中,所以SI和DI中的內(nèi)容分別是當(dāng)前數(shù)據(jù)段和當(dāng)前附加段中某一存儲單元的偏移地址。當(dāng)SI、DI和BP不作指示器和變址寄存器使用時,也可將它們當(dāng)作一般數(shù)據(jù)寄存器使用,存放操作數(shù)或運算結(jié)果。 以上8個16位

24、通用寄存器在一般情況下都具有通用性,但是,為了縮短指令代碼的長度,某些通用寄存器又規(guī)定了專門的用途。例如,在字符串處理指令中約定必須用CX作為計數(shù)器存放串的長度。這樣,在指令中就不必給出CX寄存器名,縮短了指令長度,簡化了指令的書寫形式,這種使用方法稱為“隱含尋址”。隱含尋址實際上就是在指令中隱含地使用了一些通用寄存器,而這些通用寄存器不直接在指令中表現(xiàn)出來。 表3.1 8086CPU中通用寄存器的特殊用途和隱含性質(zhì)AX,AL在輸入輸出指令中作數(shù)據(jù)寄存器不能隱含乘法指令中存放被乘數(shù)和乘積,除法指令中存放被除數(shù)和商隱含AH在LAHF指令中,作目標(biāo)寄存器用隱含在十進(jìn)制運算指令中作累加器用隱含AL在

25、XLAT指令中作累加器用隱含BX在間接尋址中作基址寄存器用不能隱含在XLAT中作基址寄存器用 隱含CX在串操作指令和LOOP指令中作計數(shù)器用隱含CL在移位循環(huán)移位指令中作移位次數(shù)計數(shù)器用 不能隱含DX在字乘法除法指令中存放乘積高位或被除數(shù)高位或余數(shù)隱含在間接尋址的輸入輸出指令中作地址寄存器用 不能隱含SI在字符串運算指令中作源變址寄存器用 隱含在間接尋址中作變址寄存器用 不能隱含DI在字符串運算指令中作目的寄存器用 隱含在間接尋址中作變址寄存器用 不能隱含BP在間接尋址中作基址指針用 不能隱含SP在堆棧操作中作堆棧指針用 隱含2段寄存器組8086CPU可直接尋址lMB的內(nèi)存空間。直接尋址時需要

26、20位地址碼,而所有的內(nèi)部寄存器,包括段寄存器,都是16位的,用它們作地址寄存器,只能直接尋址64KB單元。因此,在8086CPU中采用了存儲空間分段技術(shù)來解決這一矛盾。將lMB的存儲空間分成若干個邏輯段,每段最大長度為64KB。這些邏輯段可在整個lMB存儲空間內(nèi)浮動,但是段的起始地址必須能被16整除。這樣對于20位的段起始地址,其低4位為0,可暫時先忽略,而只有高16位是有效數(shù)字,可存放于16位的寄存器中。在形成20位物理地址時,段寄存器中的16位數(shù)會自動左移4位,然后與16位偏移量相加,如圖3.4所示。在形成物理地址時,究竟是取哪一個段寄存器的內(nèi)容做段基址,這取決于CPU做何操作。對于取指

27、操作,是將當(dāng)前CS中的內(nèi)容左移4位(相當(dāng)乘16)再加上IP的內(nèi)容,形成20位指令地址;對于存取數(shù)據(jù)操作,是將當(dāng)前數(shù)據(jù)段寄存器DS中的段基址左移4位,再與16位偏移地址EA相加,形成20位的物理地址;對于壓棧和彈棧操作,是將當(dāng)前堆棧段寄存器SS中的段基址左移4位,再與SP相加,形成20位的物理地址;在對目的串操作時,是以當(dāng)前附加段寄存器ES中的段基址左移4位,再與DI相加以形成20位的物理地址。上述各種操作所選取的段寄存器稱為基本段約定。除了基本段約定之外,8086還允許部分改變基本段約定,如存取數(shù)據(jù)的基本段為數(shù)據(jù)段,但可以臨時改變?yōu)榇a段、或附加段、或堆棧段,即數(shù)據(jù)不僅可在數(shù)據(jù)段,還可在代碼段

28、、附加段和堆棧段中。這種情況稱為段超越。8086的基本段約定和允許的段超越如表3.2所示。表中的“無”表示不允許修改。表3.2 8086的基本段約定和允許的段超越CPU執(zhí)行的操作基本段約定允許修改的段偏移地址取指令CS無IP壓棧、彈棧SS無SP源串DSCS,ES,SSSI目的串ES無DI通用數(shù)據(jù)讀寫DSCS,ES,SS有效地址EABP作間址寄存器SSCS,DS,ES有效地址EA 3控制寄存器(1)指令指針I(yè)P在總線接口部件BIU中設(shè)置了一個16位的指令指針寄存器IP,其作用是用來存放將要執(zhí)行的下一條指令在現(xiàn)行代碼段中的偏移地址。程序運行中,IP的內(nèi)容由BIU自動修改,使IP始終指向下一條將要執(zhí)

29、行的指令地址。因此,IP實際上起著控制指令流的執(zhí)行流程,是一個十分重要的控制寄存器。正常情況下,程序是不能直接訪問(修改)IP的內(nèi)容的,但當(dāng)需要改變程序執(zhí)行順序時,如遇到中斷指令或調(diào)用指令時,IP中的內(nèi)容將被自動修改。(2)標(biāo)志寄存器FR標(biāo)志寄存器FR也稱程序狀態(tài)字寄存器(簡寫為PSW),用來存放指令執(zhí)行結(jié)果特征。8086CPU中設(shè)置了一個16位標(biāo)志寄存器,位于EU單元中,實際只用了9位。標(biāo)志寄存器的具體格式如圖3.5所示。9位標(biāo)志分為兩類。15 0OFDFIFTFSFZFAFPFCF圖3.5 標(biāo)志寄存器格式狀態(tài)標(biāo)志:狀態(tài)標(biāo)志位有6個,由CPU在運算過程中自動置位或清零,用來表示運算結(jié)果的特征

30、。除CF標(biāo)志外,其余5個狀態(tài)標(biāo)志一般不能直接設(shè)置或改變。 1)CF(Carry Flag)進(jìn)位標(biāo)志。當(dāng)算術(shù)運算結(jié)果使最高位(對字節(jié)操作是D7位,對字操作是D15位)產(chǎn)生進(jìn)位或借位時,則CF=1;否則CF 0。循環(huán)移位指令執(zhí)行時也會影響此標(biāo)志。 2)PF(Parity Flag)奇偶標(biāo)志。若本次運算結(jié)果中的低8位含有偶數(shù)個1,則PF=1;否則 PF0。 3)AF(Auxiliary Carry Flag)輔助進(jìn)位標(biāo)志。本次運算過程中若D3位有進(jìn)位或借位時,AF1;否則AF0。該標(biāo)志用于BCD運算中的十進(jìn)制調(diào)整。 4)ZF(Zero Flag)零標(biāo)志。若本次運算結(jié)果為0,則ZF1;否則ZF0。 5

31、)SF(Sign Flag)符號標(biāo)志。它總是與運算結(jié)果的最高有效位相同,用來表示帶符號數(shù)本次運算結(jié)果是正還是負(fù)。 6)OF(Overflow Flag)溢出標(biāo)志。當(dāng)帶符號數(shù)的補碼運算時,結(jié)果超出了機(jī)器所能表達(dá)的范圍時,就會產(chǎn)生溢出,這時溢出標(biāo)志位OF1。具體來說,就是當(dāng)帶符號數(shù)字節(jié)運算的結(jié)果超出了-128+127的范圍;或者字運算時的結(jié)果超出了-32768+32767的范圍,稱為溢出??刂茦?biāo)志:控制標(biāo)志是用來控制CPU的工作方式或工作狀態(tài)的標(biāo)志。用戶可以使用指令設(shè)置或清除。 1)IF(Interrupt Flag) 中斷允許標(biāo)志。它是控制可屏蔽中斷的標(biāo)志,如IF=1時,允許CPU響應(yīng)可屏蔽中斷

32、;當(dāng)IF=0時,即使外設(shè)有中斷申請,CPU也不響應(yīng),即禁止中斷。 2)DF(Direction Flag) 方向標(biāo)志。該標(biāo)志用來控制串操作指令中地址指針的變化方向。在串操作指令中,若DF0,地址指針為自動增量,即由低地址向高地址進(jìn)行串操作;若DF1,地址指針自動減量,即由高地址向低地址進(jìn)行串操作。3)TF(Trap Flag)單步標(biāo)志。TF1時,CPU為單步方式,即每執(zhí)行完一條指令就自動產(chǎn)生一個內(nèi)部中斷,使用戶可逐條跟蹤程序進(jìn)行調(diào)試。若TF0時,CPU正常執(zhí)行程序。3.2 8086的引腳信號及工作模式8086CPU采用40個引腳的雙列直插式封裝形式。圖3.6是8086引腳圖。 圖3.6 808

33、6引腳圖 8086CPU屬高性能微處理器。為了解決功能多與引腳少的矛盾,8086CPU采用了引腳復(fù)用技術(shù),使部分引腳具有雙重功能。這些雙功能引腳的功能轉(zhuǎn)換分兩種情況:一種是采用了分時復(fù)用的地址/數(shù)據(jù)總線;另一種是根據(jù)不同的工作模式定義不同的引腳功能。3.2.1 8086的引腳及其功能 (1) GND,Vcc(輸入)GND為接地端,Vcc為電源端。8086CPU采用的電源為5V10。(2) ADl5AD0(AddressData Bus)地址數(shù)據(jù)復(fù)用總線(雙向、三態(tài))CPU訪問一次存儲器或I/O端口稱完成一次總線操作,或執(zhí)行一次總線周期。一個總線周期通常包括T1、T2、T3、T4四個T狀態(tài)。在每

34、個狀態(tài)CPU將發(fā)出不同的信號。ADl5AD0作為復(fù)用引腳,在總線周期的T1狀態(tài),CPU在這些引腳上輸出要訪問的存儲器或I0端口的地址。在T2T3狀態(tài),如果是讀周期,則處于浮空(高阻)狀態(tài),如果是寫周期,則為傳送數(shù)據(jù)。在中斷響應(yīng)及系統(tǒng)總線處于“保持響應(yīng)”周期時,ADl5AD0都被浮置為高阻抗?fàn)顟B(tài)。 (3) A19S6A16S3(AddressStatus)地址狀態(tài)復(fù)用線(輸出、三態(tài)) 這4根引腳也是分時復(fù)用引腳。在總線周期的T1狀態(tài),用來輸出地址的最高4位,在總線周期的其他狀態(tài)(T2,T3和T4狀態(tài)),用來輸出狀態(tài)信息。S6總是為0,表示8086CPU當(dāng)前與總線相連。S5表明中斷允許標(biāo)志的當(dāng)前設(shè)

35、置。如果IFl,則S51,表示當(dāng)前允許可屏蔽中斷;如果IF0,則S50,表示當(dāng)前禁止一切可屏蔽中斷。S4和S3狀態(tài)的組合指出當(dāng)前正使用哪個段寄存器,具體規(guī)定如表3.4所示。當(dāng)系統(tǒng)總線處于“保持響應(yīng)”周期時,A19/S6Al6/S3被置為高阻狀態(tài)。表3.3 S4和S3的組合及對應(yīng)含義S4S3當(dāng)前正使用的段寄存器 00附加段寄存器 01堆棧段寄存器 10代碼段寄存器或未使用任何段寄存器11數(shù)據(jù)段寄存器(4) BLE/S7(Bus High EnableStatus)高8位數(shù)據(jù)總線允許狀態(tài)復(fù)用引腳(輸出、三態(tài))這是8086CPU上的一個復(fù)用信號,低電平表示高8位數(shù)據(jù)有效。在總線周期的T1狀態(tài),808

36、6在 BHES7腳輸出低電平,表示高8位數(shù)據(jù)總線ADl5AD8上的數(shù)據(jù)有效;若BLE/S7腳輸出高電平,表示僅在低8位數(shù)據(jù)總線AD7ADO上傳送8位數(shù)據(jù)。 在總線周期的T2,T3,T4狀態(tài), BHES7引腳輸出狀態(tài)信號,但在8086芯片設(shè)計中,沒有賦予S7實際意義。在“保持響應(yīng)”周期 BLE被置成高阻抗?fàn)顟B(tài)。(5) NMI(Non-Maskable Interrupt)非屏蔽中斷輸入信號(輸入) 該信號邊沿觸發(fā),上升沿有效。此類中斷請求不受中斷允許標(biāo)志IF的控制,也不能用軟件進(jìn)行屏蔽。所以該引腳上由低到高的變化,就會在當(dāng)前指令結(jié)束后引起中斷。NMI中斷經(jīng)常由電源掉電等緊急情況引起。 (6) I

37、NTR(Interrupt Request)可屏蔽中斷請求信號(輸入) 高電平有效。當(dāng)INTR信號變?yōu)楦唠娖綍r,表示外部設(shè)備有中斷請求,CPU在每個指令周期的最后一個T狀態(tài)檢測此引腳,一旦測得此引腳為高電平,并且中斷允許標(biāo)志位IF=1,則CPU在當(dāng)前指令周期結(jié)束后,轉(zhuǎn)入中斷響應(yīng)周期。 (7) CLK(clock)時鐘輸入信號(輸入) CLK時鐘信號提供了CPU和總線控制的基本定時脈沖。8086CPU要求時鐘信號是非對稱性的,要求占空比為33,它由時鐘發(fā)生器產(chǎn)生。8086CPU的時鐘頻率有以下幾種:8086為5MHz;8086-1為10MHz;8086-2為8MHz。 (8) RD(Read)讀

38、信號(輸出、三態(tài)) 低電平有效,表示CPU正在對存儲器或I/O端口進(jìn)行讀操作。具體是對存儲器讀,還是對I/O端口讀,取決于MIO信號。在讀總線周期的T2,T3狀態(tài),RD均保持低電平,在“保持響應(yīng)周期”它被置成高阻抗?fàn)顟B(tài)。 (9)RESET復(fù)位信號(輸入)高電平有效,至少要保持4個時鐘周期的高電平,才能停止CPU的現(xiàn)行操作,完成內(nèi)部的復(fù)位過程。在復(fù)位狀態(tài),CPU內(nèi)部的寄存器初始化,除CS=FFFFH外,包括IP在內(nèi)的其余各寄存器的值均為0。故復(fù)位后將從FFFF:0000H的邏輯地址,即物理地址FFFF0H處開始執(zhí)行程序。一般在該地址放置一條轉(zhuǎn)移指令,以轉(zhuǎn)到程序真正的入口地址。當(dāng)復(fù)位信號變?yōu)榈碗娖?/p>

39、時,CPU重新啟動執(zhí)行程序。 (10) READY(ready)準(zhǔn)備就緒信號(輸入)則CPU在T3和T4之間自動插入一個或幾個等待狀態(tài)TW來延長總線周期,直到檢測到READY為高電平后,才使CPU退出等待進(jìn)入T4狀態(tài),完成數(shù)據(jù)傳送。插入一個TW后的總線周期為五個T狀態(tài):T1、T2、T3、TW、T4. (11) TEST(test)測試信號(輸入) 與等待指令WAIT配合使用。當(dāng)CPU執(zhí)行WAIT指令時,CPU處于空轉(zhuǎn)等待狀態(tài),它每5個時鐘周期檢測一次TEST引腳。當(dāng)測得TEST為高電平,則CPU繼續(xù)處于空轉(zhuǎn)等待狀態(tài);當(dāng) TEST變?yōu)榈碗娖胶?,就會退出等待狀態(tài),繼續(xù)執(zhí)行下一條指令。TEST信號用

40、于多處理器系統(tǒng)中,實現(xiàn)8086主CPU與協(xié)處理器(8087或8089)間的同步協(xié)調(diào)功能。 (12) MNMX(MinimumMaximum Mode Control)模式控制信號(輸入) 由該引腳選擇最大或最小模式。當(dāng)此引腳接+5V(高電平)時,CPU工作于最小模式;若接地(即為低電平時),CPU工作于最大模式。 以上12類共32個引腳是8086CPU工作在最小模式和最大模式時都要用到的信號,是公共引腳信號。還有8個引腳信號(第2431號引腳)在不同模式下有不同的名稱和定義,是雙功能引腳。 (13)MIO (MemoryInput and Output)存儲器或輸入、輸出操作選擇信號(輸出、三

41、態(tài))這是CPU工作時會自動產(chǎn)生的輸出信號,用來區(qū)分CPU當(dāng)前是訪問存儲器還是訪問端口。當(dāng)MIO為高電平時,表示CPU當(dāng)前訪問存儲器;當(dāng)MIO為低電平時,表示當(dāng)前CPU訪問IO端口。MIO信號一般在前一個總線周期的T4狀態(tài)就可以產(chǎn)生有效電平,在新總線周期中,MIO一直保持有效直至本周期的T4狀態(tài)為止。在DMA方式時,M IO為高阻狀態(tài)。(14)DEN (Data Enable)數(shù)據(jù)允許信號(輸出、三態(tài)) 作為雙向數(shù)據(jù)總線收發(fā)器8286/8287的選通信號。它在每一次存儲器訪問或IO訪問或中斷響應(yīng)周期有效。此信號只用于最小模式。在DMA方式時,此引腳為高阻狀態(tài)。(15)DT R (Data Tra

42、nsmitReceive)數(shù)據(jù)發(fā)送/接收控制信號(輸出、三態(tài))在使用8286/8287作為數(shù)據(jù)總線收發(fā)器時,8286/8287的數(shù)據(jù)傳送方向由DTR控制。DT R1時,數(shù)據(jù)發(fā)送;DTR0時,數(shù)據(jù)接收。在DMA方式時,DTR為高阻狀態(tài)。此信號只用于最小模式。 (16) WR (Write)寫信號(三態(tài)、輸出)在最小模式下作為寫信號, WR信號表示CPU當(dāng)前正在對存儲器或IO端口進(jìn)行寫操作,由MIO來區(qū)分是寫存儲器還是寫IO端口。對任何總線“寫”周期,WR只在T2,T3,TW期間有效。在DMA方式時, WR被置成高阻狀態(tài)。 (17) INTA (Interrupt Acknowledge)中斷響應(yīng)

43、信號(輸出、三態(tài)) 在最小模式下,INTA是CPU響應(yīng)可屏蔽中斷后發(fā)給請求中斷的設(shè)備的回答信號,是對中斷請求信號INTR的響應(yīng)。CPU的中斷響應(yīng)周期共占據(jù)兩個連續(xù)的總線周期,在中斷響應(yīng)的每個總線周期的T2、T3和TW期間INTA引腳變?yōu)橛行У碗娖?。第一個INTA負(fù)脈沖通知申請中斷的外設(shè),其中斷請求已得到CPU響應(yīng);第二個負(fù)脈沖用來作為讀取中斷類型碼的選通信號。外設(shè)接口利用這個信號向數(shù)據(jù)總線上送中斷類型碼。 (18)ALE(Address Latch Enable)地址鎖存允許信號(輸出) 在最小模式下,是8086CPU提供給地址鎖存器82828283的控制信號,在任何一個總線周期的T1狀態(tài),A

44、LE輸出有效電平(實際是一個正脈沖),以表示當(dāng)前地址/數(shù)據(jù)、地址/狀態(tài)復(fù)用總線上輸出的是地址信息,并利用它的下降沿將地址鎖存到鎖存器。ALE信號不能浮空。 (19)HOLD(Hold Request)總線保持請求信號(輸入)該信號是最小模式系統(tǒng)中除主CPU(80868088)以外的其他總線控制器,如DMA控制器申請使用系統(tǒng)總線請求信號。(20)HLDA(Hold Acknowledge)總線保持響應(yīng)信號(輸出) 該信號是對HOLD的響應(yīng)信號。當(dāng)CPU測得總線請求信號HOLD引腳為高電平,如果CPU又允許讓出總線,則在當(dāng)前總線周期結(jié)束時,T4狀態(tài)期間發(fā)出HLDA信號,表示CPU放棄對總線的控制權(quán)

45、,并立即使三條總線(地址總線、數(shù)據(jù)總線、控制總線,即所有的三態(tài)線)都置為高阻抗?fàn)顟B(tài),表示讓出總線使用權(quán)。申請使用總線的控制器在收到HLDA信號后,就獲得了總線控制權(quán)。在此后的一段時間內(nèi),HOLD和HLDA均保持高電平。當(dāng)獲得總線使用權(quán)的其他控制器用完總線后,使HOLD信號變?yōu)榈碗娖?,表示放棄對總線的控制權(quán)。8086CPU檢測到HOLD變?yōu)榈碗娖胶?,會將HLDA變?yōu)榈碗娖?,同時恢復(fù)對總線的控制。 (21) S2, S1,S0 (Bus Cycles Status)總線周期狀態(tài)信號(輸出、三態(tài))在最大模式下,這三個信號組合起來指出當(dāng)前總線周期所進(jìn)行的操作類型,如表3.5所示。最大模式系統(tǒng)中的總線控

46、制器8282就是利用這些狀態(tài)信號產(chǎn)生訪問存儲器和IO端口的控制信號。表3.4 S2,S1,S0組合產(chǎn)生的總線控制功能控制信號操作過程000發(fā)中斷響應(yīng)信號001讀I/O端口010,寫I/O端口011暫停100取指令101讀內(nèi)存110,寫內(nèi)存111無源狀態(tài) 當(dāng) S2, S1,S0中至少有一個信號為低電平時,每一種組合都對應(yīng)了一種具體的總線操作,因而稱之為有源狀態(tài)。這些總線操作都發(fā)生在前一個總線周期的T4狀態(tài)和下一總線周期的T1、T2狀態(tài)期間;在總線周期的T3(包括TW)狀態(tài),且準(zhǔn)備就緒信號READY為高電平時, S2, S1,S0三個信號同時為高電平(即111),此時一個總線操作過程將要結(jié)束,而另

47、一個新的總線周期還未開始,通常稱為無源狀態(tài)。而在總線周期的最后一個T4狀態(tài),S2, S1,S0中任何一個或幾個信號的改變,都意味著下一個新的總線周期的開始。 (22) RQ/GT1,RQ/GT0 (RequestGrant)總線請求信號總線請求允許信號(輸入 / 輸出) 這兩個引腳是雙向的,信號為低電平有效。這兩個信號是最大模式系統(tǒng)中主CPU8086和其他協(xié)處理器(如8087,8089)之間交換總線使用權(quán)的聯(lián)絡(luò)控制信號。其含義與最小模式下的HOLD和HLDA兩信號類同。但HOLD和HLDA是占兩個引腳,而RQGT(請求允許)是出于同一個引腳。RQ/GT1和RQ/GT0是兩個同類型的信號,表示可

48、同時連接兩個協(xié)處理器,其中RQ/ GT0的優(yōu)先級高于RQ/GT1。 (23) LOCK(lock)總線封鎖信號(輸出、三態(tài)) 當(dāng) LOCK為低電平時,表明此時CPU不允許其他總線主模塊占用總線。LOCK信號由指令前綴LOCK產(chǎn)生。當(dāng)含有LOCK指令前綴的指令執(zhí)行完后,LOCK引腳變?yōu)楦唠娖?,從而撤消了總線封鎖。此外,在8086CPU處于2個中斷響應(yīng)周期期間,LOCK信號會自動變?yōu)橛行У牡碗娖剑苑乐蛊渌偩€主模塊在中斷響應(yīng)過程中占有總線而使一個完整的中斷響應(yīng)過程被間斷。在DMA期間,LOCK被置為高阻狀態(tài)。 (24)QS1,QS0(1nstruction Queue Status)指令隊列狀態(tài)

49、信號(輸出) QS1,QS0兩信號用來指示CPU內(nèi)的指令隊列的當(dāng)前狀態(tài),以使外部(主要是協(xié)處理器8087)對CPU內(nèi)指令隊列的動作進(jìn)行跟蹤。QSl,QS0的組合與指令隊列的狀態(tài)對應(yīng)關(guān)系如表3.5所示。表3.5 QSl,QS0的組合和對應(yīng)的含義QSlQS0性 能00無操作01隊列中操作碼的第一個字節(jié)10隊列空11隊列中非第一個操作碼字節(jié)3.3 8255芯片簡介 INTEL8255是一種通用的可編程并行IO接口芯片,是專為INTEL公司的微處理器設(shè)計的,也可用于其它系列的微型機(jī)系統(tǒng)中。利用8086匯編指令系統(tǒng),編制初始化程序,。3.3.1 8255A的引腳與結(jié)構(gòu)18255A的引腳8255A是可編程

50、的并行輸入輸出接口芯片,它具有三個8位并行端口(A口、B口和C口),具有40個引腳,雙列直插式封裝,由+5V供電,其引腳與功能示意圖如圖3.7所示。圖3.7 8255A的引腳圖 PA、PB、PC三個端口各有8條端口I/O線:PA7PA0,PB7PB0和PC7PC0,共24個引腳,用于8255A與外設(shè)之間的數(shù)據(jù)(或控制、狀態(tài)信號)的傳送。 D7D0:8位三態(tài)數(shù)據(jù)線,接至系統(tǒng)數(shù)據(jù)總線。CPU通過它實現(xiàn)與8255之間數(shù)據(jù)的讀出與寫入,控制字的寫入,以及狀態(tài)字的讀出等操作。 A1A0:地址信號。A1和A0經(jīng)片內(nèi)譯碼產(chǎn)生四個有效地址分別對應(yīng)A、B、C三個獨立的數(shù)據(jù)端口以及一個公共的控制端口。在實際使用中

51、,A1、A0端接到系統(tǒng)地址總線的 A1、A0。 CS:片選信號,由系統(tǒng)地址譯碼器產(chǎn)生,低電平有效。 讀寫控制信號RD和WR:低電平有效,用于決定CPU和8255A之間信息傳送的方向:當(dāng)RD=0時,從8255A讀至CPU;當(dāng)WR=0時,由CPU寫入8255A。CPU對8255各端口進(jìn)行讀/寫操作時的信號關(guān)系如表3.6所示。 RESET:復(fù)位信號,高電平有效。8255A復(fù)位后,A、B、C三個端口都置為輸入方式。 表3.6 8255A各端口讀/寫操作時的信號關(guān)系 :CS RDWR A A 操作 0 1 0 0 0寫端口A 0 1 0 0 1寫端口B 0 1 0 1 0寫端口C 0 1 0 1 1寫控

52、制寄存器 0 0 1 0 0 讀端口A 0 0 1 0 1 讀端口B 0 0 1 1 0 讀端口C 0 0 1 1 1 無操作28255A的內(nèi)部結(jié)構(gòu) 8255A的內(nèi)部結(jié)構(gòu)框圖如圖3.8所示,其內(nèi)部由以下四部分組成。圖3.8 8255A的內(nèi)部結(jié)構(gòu)框圖 1) 端口A、端口B和端口C 端口A、端口B和端口C都是8位端口,可以選擇作為輸入或輸出。還可以將端口C的高4位和低4位分開使用,分別作為輸入或輸出。當(dāng)端口A和端口B作為選通輸入或輸出的數(shù)據(jù)端口時,端口C的指定位與端口A和端口B配合使用,用做控制信號或狀態(tài)信號。 2) A組和B組控制電路 這是兩組根據(jù)CPU送來的工作方式控制字控制8255工作方式的

53、電路。它們的控制寄存器接收CPU輸出的方式控制字,由該控制字決定端口的工作方式,還可根據(jù)CPU的命令對端口C實現(xiàn)按位置位或復(fù)位操作。 3) 數(shù)據(jù)總線緩沖器 這是一個8位三態(tài)數(shù)據(jù)緩沖器,8255A正是通過它與系統(tǒng)數(shù)據(jù)總線相連,實現(xiàn)8255A與CPU之間的數(shù)據(jù)傳送。輸入數(shù)據(jù)、輸出數(shù)據(jù)、CPU發(fā)給8255A的控制字等都是通過該部件傳遞的。 4) 讀/寫控制邏輯 讀/寫控制邏輯電路的功能是負(fù)責(zé)管理8255A與CPU之間的數(shù)據(jù)傳送過程。它接收CS及地址總線的信號A1、A0和控制總線的控制信號RESET、WR、RD,將它們組合后,得到對A組控制部件和B組控制部件的控制命令,并將命令送給這兩個部件,再由它們

54、控制完成對數(shù)據(jù)、狀態(tài)信息和控制信息的傳送。各端口讀/寫操作與對應(yīng)的控制信號之間的關(guān)系見表3.6。 3.3.2 8255A的工作方式與控制字18255A的工作方式 8255A在使用前要先寫入一個工作方式控制字,以指定A、B、C三個端口各自的工作方式。8255A共有三種工作方式: 方式0基本輸入輸出方式,即無須聯(lián)絡(luò)就可以直接進(jìn)行8255A與外設(shè)之間的數(shù)據(jù)輸入或輸出操作。A口、B口、C口的高4位和低4位均可設(shè)置為方式0。 方式1選通輸入輸出方式,此時8255A的A口和B口與外設(shè)之間進(jìn)行輸入或輸出操作時,需要C口的部分I/O線提供聯(lián)絡(luò)信號。只有A口和B口可工作于方式1。 方式2選通雙向輸入輸出方式,即同一端口的I/O線既可以輸入也可以輸出,只有A口可工作于方式2。此種方式下需要C口的部分I/O線提供聯(lián)絡(luò)信號。 28255A的控制字1) 工作方式選擇控制字 8255A的工作方式可由CPU寫一個工作方式選擇控制字到8255A的控

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論