微機原理及應(yīng)用 課件 第7、8章 中斷系統(tǒng)、計數(shù)器定時器與DMA控制器_第1頁
微機原理及應(yīng)用 課件 第7、8章 中斷系統(tǒng)、計數(shù)器定時器與DMA控制器_第2頁
微機原理及應(yīng)用 課件 第7、8章 中斷系統(tǒng)、計數(shù)器定時器與DMA控制器_第3頁
微機原理及應(yīng)用 課件 第7、8章 中斷系統(tǒng)、計數(shù)器定時器與DMA控制器_第4頁
微機原理及應(yīng)用 課件 第7、8章 中斷系統(tǒng)、計數(shù)器定時器與DMA控制器_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理及應(yīng)用第7章中斷系統(tǒng)學(xué)習(xí)目標(biāo):掌握中斷技術(shù)的基本概念了解8086中斷系統(tǒng)及其對各種類型中斷的響應(yīng)流程了解8259A中涉及到的有關(guān)概念掌握8259A的編程應(yīng)用7.1中斷的基本概念返回7.1.1中斷、中斷源及中斷系統(tǒng)7.1.2中斷處理過程7.1.3中斷嵌套7.1.1中斷、中斷源及中斷系統(tǒng)1.中斷CPU暫時停止正在運行的程序,轉(zhuǎn)去執(zhí)行請求CPU為之服務(wù)的內(nèi)/外部事件的服務(wù)程序,待該服務(wù)程序執(zhí)行完后,又返回到被暫停的程序繼續(xù)運行的過程,稱為中斷。簡言之,就是CPU正常運行程序時被“中間打斷”后繼續(xù)運行的過程。正在運行的程序通常稱為主程序,服務(wù)程序稱為中斷服務(wù)程序。7.1.1中斷、中斷源及中斷系統(tǒng)1.中斷

CPU執(zhí)行程序時,

由于發(fā)生了某種隨機

的事件(外部或內(nèi)部)

,

引起CPU暫時中斷正在運行的程序,

轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)

程序,

以處理該事件,

該事件處理完后又返回被中斷的程序

繼續(xù)執(zhí)行,

這一過程稱為中斷。。7.1.1中斷、中斷源及中斷系統(tǒng)2.中斷源引起中斷的事件稱為“中斷源”。中斷源主要有以下幾類。(1)外部設(shè)備請求中斷。一般外部設(shè)備有鍵盤、磁盤驅(qū)動器、打印機等,工作告一段落發(fā)出中斷請求,要求CPU為它服務(wù)。(2)實時時鐘請求中斷。例如,定時/計數(shù)器,先由CPU發(fā)出指令,讓時鐘電路開始計數(shù)工作,待規(guī)定的時間到,時鐘電路發(fā)出中斷申請,CPU轉(zhuǎn)向中斷服務(wù)程序。(3)故障請求中斷。當(dāng)出現(xiàn)電源掉電、存儲出錯或溢出等故障時,發(fā)出中斷請求,CPU轉(zhuǎn)向執(zhí)行故障處理程序,如啟動備用電源報警等。(4)由軟件引起的,如程序錯、運算錯、為調(diào)試程序而特意設(shè)置的斷點等。3.中斷系統(tǒng)中斷系統(tǒng)是指實現(xiàn)中斷功能的軟硬件的統(tǒng)稱。為了滿足各種情況下的中斷請求,中斷系統(tǒng)應(yīng)具有以下功能。(1)能實現(xiàn)中斷響應(yīng)、中斷服務(wù)及中斷返回。當(dāng)某一中斷源發(fā)出中斷請求時,CPU能決定是否響應(yīng)這一中斷請求,若允許這一中斷請求,則CPU在保護斷點后將轉(zhuǎn)移到響應(yīng)的中斷服務(wù)程序中,中斷處理完后CPU返回原斷點處繼續(xù)執(zhí)行原程序。(2)能實現(xiàn)中斷優(yōu)先權(quán)排隊。當(dāng)有兩個或多個中斷源同時提出中斷請求時,中斷系統(tǒng)能根據(jù)各中斷源的性質(zhì)給出處理的先后順序,確保優(yōu)先級高的中斷請求先處理。(3)能實現(xiàn)中斷嵌套。若在中斷過程中又有新的優(yōu)先級較高的中斷源提出請求,則中斷系統(tǒng)要能讓CPU暫停執(zhí)行當(dāng)前中斷服務(wù)程序,而轉(zhuǎn)去處理優(yōu)先級高的中斷請求,處理完后再返回原級別較低的中斷服務(wù)程序中。7.1.2

中斷處理過程盡管不同微型計算機的中斷系統(tǒng)有所不同,但實現(xiàn)中斷過程基本相同。一個完整的中斷處理過程包括

中斷請求中斷排隊中斷響應(yīng)中斷處理中斷返回

圖7-1中斷處理過程流程圖圖7-2兩級中斷嵌套的示意圖7.1.3

中斷嵌套7.280x86中斷系統(tǒng)返回7.2.1外部中斷7.2.2內(nèi)部中斷7.2.3中斷向量和中斷向量表7.2.480x86中斷響應(yīng)過程80x86微機具有一個簡單而靈活的中斷系統(tǒng),可處理256種不同的中斷請求。這些中斷可分為外部中斷(硬件中斷)和內(nèi)部中斷(軟件中斷)。每一種又包括許多類型。各種類型的中斷被分配一個中斷類型號。80x86中斷源如圖7-3所示。7.280x86中斷系統(tǒng)7.2.1

外部中斷

由CPU外部硬件電路發(fā)出的電信號引起的中斷稱為外部中斷(亦稱硬件中斷),外部中斷又分為非屏蔽中斷和可屏蔽中斷。1.非屏蔽中斷NMI非屏蔽中斷NMI信號連到CPU的NMI引腳,其不受CPU中斷允許標(biāo)志位IF的控制,一旦發(fā)生,立即轉(zhuǎn)至中斷類型號為2的中斷處理服務(wù)程序。NMI 的優(yōu)先級高于INTR。當(dāng)CPU采樣到有NMI請求時,在內(nèi)部將其鎖存,并自動提供中斷類型號2,然后按照下列順序處理。7.2.1

外部中斷(1)將中斷類型號乘以4,得到中斷向量地址0008H;(2)將標(biāo)志寄存器中的內(nèi)容壓入堆棧保護;(3)清除IF和TF標(biāo)志,屏蔽INTR中斷和單步中斷;(4)保存斷點,即把斷點處的IP和CS內(nèi)容壓棧;(5)從中斷向量表中取中斷服務(wù)程序的入口地址,分別送至CS和IP;(6)轉(zhuǎn)入相應(yīng)中斷服務(wù)程序并執(zhí)行;(7)恢復(fù)斷點及標(biāo)志寄存器中的內(nèi)容,中斷返回。7.2.1

外部中斷

2.可屏蔽中斷INTR

可屏蔽中斷INTR信號連接到CPU的INTR引腳,它受CPU中斷允許標(biāo)志位IF的控制,即當(dāng)IF=1時,CPU才能響應(yīng)INTR引腳上的中斷請求。當(dāng)可屏蔽中斷被響應(yīng)時,CPU需要執(zhí)行7個總線周期。(1)執(zhí)行第一個總線周期,通知外部中斷系統(tǒng)做準(zhǔn)備。(2)執(zhí)行第二個總線周期,從外部中斷系統(tǒng)獲取中斷類型號,并乘以4,形成中斷向量地址。(3)執(zhí)行一個總線寫周期,將標(biāo)志寄存器內(nèi)容壓棧,且使IF和TF都為0。(4)執(zhí)行一個總線寫周期,將CS內(nèi)容壓棧。(5)執(zhí)行一個總線寫周期,把當(dāng)前的IP內(nèi)容壓棧。(6)執(zhí)行一個總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的偏移地址并送入IP。(7)執(zhí)行一個總線讀周期,從中斷向量表中讀取中斷服務(wù)程序的段地址并送入CS。7.2.2

內(nèi)部中斷

由CPU執(zhí)行某些指令所引起的中斷稱為內(nèi)部中斷(亦稱軟件中斷)。內(nèi)部中斷響應(yīng)后不需要總線周期,處理過程與NMI過程基本相同。內(nèi)部中斷包括如下幾類。(1)專用中斷。

①0型中斷——除法出錯中斷。

②1型中斷——單步中斷。

③3型中斷——斷點中斷(INT指令)。

④4型中斷——溢出中斷(INTO指令)。(2)指令中斷——INTn指令,其類型號就是指定的n。它和INT與INTO一樣,都是引起CPU中斷響應(yīng)的指令中斷,所不同的是,INT和INTO是單字節(jié)指令,而INTn是兩字節(jié)指令,第二個字節(jié)是類型號n。INTn主要是用于系統(tǒng)定義或用戶自定義的軟件中斷。7.2.3

中斷向量和中斷向量表

中斷向量是指中斷服務(wù)程序的入口地址,它包括中斷服務(wù)程序的段基址CS和偏移地址IP(共占4個字節(jié)地址)。因此,通過使用中斷向量,可以找到中斷服務(wù)程序的入口地址,實現(xiàn)程序轉(zhuǎn)移。中斷向量表是存放中斷服務(wù)程序入口地址的表格,它存放于系統(tǒng)內(nèi)存的最低端,共1KB,每4個字節(jié)存放一個中斷服務(wù)程序的入口地址,較高地址的兩個字節(jié)存放中斷服務(wù)程序入口的段地址,較低地址的兩個字節(jié)存放中斷服務(wù)程序入口的偏移地址,這4個單元的最低地址稱為中斷向量地址,其值為中斷類型號乘4。80x86系統(tǒng)各服務(wù)程序的段基址CS和偏移地址IP在中斷向量表中按中斷號順序存放,見表7-2。

(1)直接寫入。

MOVDS,0000HMOVSI,中斷類型號乘4MOVAX,中斷服務(wù)程序偏移地址MOV[SI],AXMOVAX,中斷服務(wù)程序段地址MOV[SI+2],AX

(2)利用DOS功能調(diào)用。設(shè)置中斷向量(DOS功能調(diào)用INT21H)。功能號:AH=25H。入口參數(shù):AL=中斷類型號;DS:DX=中斷向量(段地址:偏移地址)。獲取中斷向量(DOS功能調(diào)用INT21H)。功能號:AH=35H。入口參數(shù):AL=中斷類型號。出口參數(shù):ES:BX=中斷向量(段地址:偏移地址)。表7-2中斷向量表7.2.4

80x86中斷響應(yīng)過程

80x86CPU對各種中斷的響應(yīng)過程是不同的,主要區(qū)別在于如何獲得相應(yīng)的中斷類型號。

1.內(nèi)部中斷響應(yīng)過程

CPU在執(zhí)行內(nèi)部中斷時沒有中斷響應(yīng)周期。對于除法溢出、單步、斷點和溢出中斷,中斷類型號是自動形成的,而對于INTn指令,其中斷類型號由INTn指令中給定的n決定,獲得中斷類型號以后的處理過程順序如下。(1)將類型號乘4,計算出中斷向量的地址。(2)CPU的標(biāo)志寄存器入棧,以保護各個標(biāo)志位,此操作類似于PUSHF指令。(3)清除IF和TF標(biāo)志,屏蔽新的INTR中斷和單步中斷。(4)保存斷點,即把斷點處的IP和CS值壓入堆棧,先壓入CS值,再壓入IP值。(5)根據(jù)第一步計算出來的地址從中斷向量表中取出中斷服務(wù)程序的入口地址(段地址和偏移地址),分別送至CS和IP中。(6)轉(zhuǎn)入中斷服務(wù)程序執(zhí)行。7.2.4

80x86中斷響應(yīng)過程

2.外部中斷響應(yīng)過程(1)非屏蔽中斷響應(yīng)。NMI中斷不受IF標(biāo)志位的影響,也不用外部接口給出中斷類型號,CPU響應(yīng)NMI中斷時也沒有中斷響應(yīng)周期。CPU會自動按中斷類型號2來計算中斷向量的地址,其后的中斷處理過程和內(nèi)部中斷一樣。(2)可屏蔽中斷響應(yīng)。當(dāng)INTR信號有效時,如果中斷允許標(biāo)志位IF=1,則CPU在當(dāng)前指令執(zhí)行完畢后產(chǎn)生兩個連續(xù)的中斷響應(yīng)總線周期。在第一個中斷響應(yīng)總線周期,CPU將地址/數(shù)據(jù)總線置高阻,發(fā)出第一個中斷響應(yīng)信號給8259A中斷控制器,表示CPU響應(yīng)此中斷請求,禁止來自其他總線控制器的總線請求。在最大模式時,CPU還要啟動信號,通知總線仲裁器8289,使系統(tǒng)中其他處理器不能訪問總線。在第二個中斷響應(yīng)總線周期,CPU送出第二個信號,該信號通知8259A中斷控制器將相應(yīng)中斷請求的中斷類型號放到數(shù)據(jù)總線上供CPU讀取。CPU讀取中斷類型號n后的中斷處理過程也和內(nèi)部中斷一樣。圖7-480x86中斷處理流程7.3可編程中斷控制器Intel8259A返回7.3.18259A的功能7.3.28259A的內(nèi)部結(jié)構(gòu)和引腳功能7.3.3Intel8259A的引腳及功能7.3.48259A的工作方式7.3.58259A的級聯(lián)7.3.68259A的編程7.3.78259A在微機系統(tǒng)中的應(yīng)用7.3.1

8259A的功能

Intel8259A可編程控制器用于管理外部可屏蔽的中斷請求。因為CPU芯片的外部請求引腳INTR只有一根,但外部的中斷源可以有多個,如時鐘、鍵盤串口/并口和軟盤等多個中斷源,所以PC系列機中,用Intel8259A來協(xié)助CPU管理外部中斷源。一片8259A管理8級中斷源。在PC-AT機中用兩片8259A級聯(lián)管理15級中斷源。若用9片8259A級聯(lián)不用附加外部電路就能管理64級中斷源。

Intel8259A是一種可編程的、具有強大中斷管理功能的大規(guī)模集成電路芯片,其主要功能如下。(1)具有8級優(yōu)先權(quán)控制,通過級聯(lián)可以擴展到64級。(2)每一級均可通過編程實現(xiàn)屏蔽或開放。(3)能向CPU提供相應(yīng)的中斷類型號。(4)可通過編程選擇不同的工作方式。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

8259A主要由以下幾部分組成:中斷請求寄存器IRR、中斷屏蔽寄存器IMR、中斷服務(wù)寄存器ISR、優(yōu)先權(quán)裁決器、控制邏輯、數(shù)據(jù)總線緩沖器、讀/寫邏輯、級聯(lián)緩沖器/比較器。其結(jié)構(gòu)如圖7-5所示,各部分功能如下。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

(1)中斷請求寄存器(IRR)。IRR是一個8位的鎖存器,用來寄存外部設(shè)備送來的IR0~IR7中斷請求信號。IR0~IR7可以連接8個外設(shè)的中斷請求信號,當(dāng)IR0~IR7中的任何一個變?yōu)楦唠娖綍r,IRR的相應(yīng)位置為“1”。(2)中斷服務(wù)寄存器(ISR)。ISR是一個8位的寄存器,用來存放當(dāng)前正在服務(wù)的中斷級。響應(yīng)中斷后,8259A收到第一個中斷響應(yīng)信號時,使當(dāng)前被響應(yīng)的中斷請求所對應(yīng)的ISR置“1”,而相應(yīng)的IRR復(fù)位。在中斷嵌套時,ISR中有多個位為“1”。(3)中斷屏蔽寄存器(IMR)。IMR是一個8位的寄存器,用于寄存要屏蔽的中斷。某位為“1”,表示屏蔽相應(yīng)中斷請求;為“0”,則表示開放相應(yīng)中斷請求。7.3.2

8259A的內(nèi)部結(jié)構(gòu)和引腳功能

(4)優(yōu)先權(quán)裁決器(PR)。PR用來識別和管理各中斷請求信號的優(yōu)先級別。(5)數(shù)據(jù)總線緩沖器。它是用于連接系統(tǒng)的數(shù)據(jù)總線,是一個8位的雙向三態(tài)緩沖器,傳輸寫入8259A的控制字,讀取8259A的狀態(tài)信息及CPU讀取的中斷類型號。(6)讀/寫邏輯。用來接收端口地址信息和CPU的讀寫控制信號和,產(chǎn)生相應(yīng)的控制信號,控制命令字的寫入和狀態(tài)字的讀取。(7)控制邏輯。根據(jù)編程設(shè)定的工作方式管理的8259A負責(zé)向CPU發(fā)中斷請求信號INT和接收來自CPU的中斷響應(yīng)信號,并將信號轉(zhuǎn)換成內(nèi)部所需的各種控制信號。(8)級聯(lián)緩沖器/比較器。用于控制多片8259A的級聯(lián),使得系統(tǒng)的中斷級可以擴展。最多可用9片級聯(lián),一片為主片,其他為從片。7.3.3

Intel8259A的引腳及功能

8259A是一種具有28引腳雙列直插式封裝的大規(guī)模集成電路專用芯片,其引腳信號如圖7-5所示。(1)D0~D7。雙向三態(tài)數(shù)據(jù)線,在系統(tǒng)中與數(shù)據(jù)總線相連。(2)IR0~IR7。中斷請求輸入信號。(3)RD。讀控制信號輸入,與控制總線相連。低電平有效,它有效表示由8259A讀至CPU。(4)WR。寫控制信號輸入,與控制總線相連。低電平有效,它有效表示寫信號至8259A。(5)CS。片選信號輸入,與地址譯碼電路相連。低電平有效,它有效表示正在訪問該8259A。(6)A0。地址線輸入,在使用中8259A占用相鄰兩個端口地址,A0與配合,A0=1選中奇地址端口。A0=0選中偶地址端口。在80x86的PC系列機中,主片8259A的端口地址為20H和21H。7.3.3

Intel8259A的引腳及功能

(7)CAS0~CAS2。3根級聯(lián)信號線,對主片8259A,它為輸出;對從片8259A,它為輸入。主、從片8259A的,為CAS0~CAS2對應(yīng)相連,主片8259A在第一個響應(yīng)周期內(nèi)通過CAS0~CAS2送出識別碼,而和此識別碼相符的從片8259A在接收到第二個信號后將中斷類型碼發(fā)送到數(shù)據(jù)總線上。(8)。從編程/緩沖器允許信號,雙向。是作為輸入還是輸出取決于8259A是否采用緩沖方式,若不用緩沖方式,則是輸入,反之,則作為輸出。作為輸入的使用時,用于區(qū)分主、從片8259A。主片8259A的=1,從片的=0。作為輸出的使用時作為數(shù)據(jù)總線緩沖器的使能信號。(9)INT。中斷請求信號輸出。8259A用此線向CPU發(fā)送中斷請求信號。接至CPU的INTR引腳。(10)。中斷響應(yīng)信號輸入。與CPU的引腳相連。7.3.4

8259A的工作方式

8259A的工作方式有多種,可以通過編程來設(shè)定。用戶可根據(jù)系統(tǒng)工作的要求來選擇相應(yīng)的工作方式,然后通過對8259A寫入初始化命令字來確定其工作方式。

1.中斷屏蔽方式(1)普通屏蔽方式。利用操作命令字OCW1使屏蔽寄存器IMR中的一位或數(shù)位置1來屏蔽一個或數(shù)個中斷源的中斷請求。若要開放某一個中斷源的中斷請求,則將IMR中相應(yīng)的位置0。(2)特殊屏蔽方式。在某些場合,執(zhí)行某一個中斷服務(wù)程序時,要求允許另一個優(yōu)先級比它低的中斷請求被響應(yīng),此時可采用特殊屏蔽方式。它可通過OCW3的D6D5=11來設(shè)定。7.3.4

8259A的工作方式

2.中斷嵌套方式(1)全嵌套方式。這是最常用的一種工作方式,中斷優(yōu)先級別固定,IR0最高,IR7最低。當(dāng)IRi中斷請求響應(yīng)時,相應(yīng)的ISRi位置1,在中斷服務(wù)過程中,禁止同級和優(yōu)先級低于本級的中斷請求。(2)特殊全嵌套方式。與全嵌套方式基本相同,所不同的是在特殊全嵌套方式下,當(dāng)執(zhí)行某一級中斷服務(wù)程序時可響應(yīng)同級的中斷請求,從而實現(xiàn)對同級中斷請求的特殊嵌套(8259A級聯(lián)使用時,某從片的8個中斷源對主片來說可以認為是同級的)。特殊全嵌套方式用于多片級聯(lián)。7.3.4

8259A的工作方式

3.優(yōu)先級控制方式(1)優(yōu)先級自動循環(huán)方式。在這種方式下,優(yōu)先級的順序不是固定不變的,一個設(shè)備得到中斷服務(wù)后,其優(yōu)先級自動降為最低。其初始的優(yōu)先級順序規(guī)定為IR0,IR1,IR2,…,IR7。該方式用于系統(tǒng)中多個中斷源優(yōu)先級相等的場合。(2)優(yōu)先級特殊循環(huán)方式。這種方式與優(yōu)先級自動循環(huán)方式唯一的區(qū)別是,其初始的優(yōu)先級不是固定的IR0為最高,然后開始循環(huán),而是由程序指定IR0~IR7中任意一個為最高優(yōu)先級,然后再按順序自動循環(huán),決定優(yōu)先級。7.3.4

8259A的工作方式

4.中斷結(jié)束方式(1)自動中斷結(jié)束方式。在中斷服務(wù)程序中,中斷返回前不需要發(fā)出中斷結(jié)束命令就會自動清除該中斷源所對應(yīng)的ISR位(實際上在CPU發(fā)出第二個信號時,8259即自動清除ISR中的對應(yīng)位)。這種方式用在多個中斷不會嵌套的系統(tǒng)中。(2)非自動中斷結(jié)束方式。在中斷服務(wù)程序返回之前必須發(fā)中斷結(jié)束命令才能使ISR中的當(dāng)前服務(wù)位清除。7.3.5

8259A的級聯(lián)

眾所周知,一片8259A可管理8級中斷源,那么如果要管理多于8個中斷源的中斷,又該如何進行呢?實際上8259A在芯片的設(shè)計過程中已經(jīng)考慮到了這個問題,這就是利用級聯(lián)的方法,將多片8259A連接在一起來管理多于8個中斷源的中斷系統(tǒng)。圖7-6給出了多片8259A組成的級聯(lián)中斷系統(tǒng)圖。7.3.6

8259A的編程

在使用8259A時,除了按規(guī)定的信號接好電路外,還必須用程序選定其工作狀態(tài),例如,中斷請求的優(yōu)先權(quán)分配、中斷屏蔽、中斷矢量等,每一種狀態(tài)都由一個命令字或一個命令字中的某些位來規(guī)定。8259A的命令字可分為初始化命令字ICW(InitializationCommandWord)和工作命令字OCW(OperationCommandWord)兩種,因此8259A的編程也分為初始化編程和工作編程兩步。在8259A內(nèi)部,有相應(yīng)的一組寄存器分別將這些命令字鎖存以控制其工作。7.3.6

8259A的編程

1)8259A寄存器的讀寫對于8259A的內(nèi)部寄存器,除了在編程時CPU可用輸出指令對它們逐一寫入外,在查詢狀態(tài)時還可用輸入指令將其內(nèi)容讀出。為了尋址各寄存器,除了用地址信號A0譯碼外,還需要用這些命令字的某些位作為訪問某個寄存器的特征,或者按寫入的先后順序來區(qū)分。例如:要對ICW1操作,此時除了將地址線A0置0外還需要將ICW1命令字D4置1,此時表示選中了ICW1命令字,或者說啟動了ICW1的初始化編程。

2)8259A的初始化編程

8259A必須先進行初始化編程,后進行工作編程。初始化編程由寫入ICW1(稱為主初始化命令字)開始,然后寫入ICW2。至于是否寫ICW3和ICW4,取決于ICW1的內(nèi)容。7.3.6

8259A的編程

從圖7-7中可以看出,初始化命令字的寫入順序是:ICW1→ICW2→ICW3→ICW4,這4個命令字必須按照順序?qū)懭?,一般不重?fù)寫。無論何時,當(dāng)CPU向8259A送入一條地址線A0=0、數(shù)據(jù)線D4=1的命令時,該命令被譯碼為初始化命令字ICW1,它啟動8259A的初始化過程,即相當(dāng)于RESET信號的作用。7.3.6

8259A的編程

8259A在進行初始化時將完成如下操作。①清除中斷屏蔽寄存器IMR,即中斷屏蔽寄存器的各位均復(fù)位為0。②設(shè)置IR7為最低優(yōu)先級的完全嵌套方式,固定優(yōu)先權(quán)排序。完全嵌套方式是指當(dāng)一個中斷請求被響應(yīng)后,就會自動屏蔽同級和低級的中斷請求,但能開放高級的中斷請求,即某中斷未服務(wù)完,同級或低級有中斷請求,不會使8259A的INT變?yōu)楦唠娖健"矍宄厥馄帘畏绞?。在某些?yīng)用場合,可能要求能在軟件的控制下動態(tài)地改變系統(tǒng)的優(yōu)先權(quán)結(jié)構(gòu),也就是若CPU正處在中斷服務(wù)的過程中,希望能屏蔽一些較低優(yōu)先權(quán)的中斷源的中斷申請,而允許一些優(yōu)先權(quán)更低的中斷源的中斷申請。當(dāng)然在通常情況下,當(dāng)較高優(yōu)先權(quán)的中斷源正處在中斷服務(wù)過程中時,所有中斷優(yōu)先權(quán)較低的中斷源都被屏蔽。④設(shè)置讀IRR方式。7.3.6

8259A的編程

(1)ICW1。

ICW1用于設(shè)置8259A的基本工作方式。剛才提到了當(dāng)?shù)刂肪€A0=0時,若對8259A寫入D4=1則啟動了初始化編程寫入的字節(jié)被當(dāng)成ICW1,D4=1是它的特征位,其余各位作用如下。A0=0表示是偶地址,D4=1是初始化命令字ICW1的標(biāo)志。D0(ICW4)表示初始化過程是否需要寫ICW4。D0=1表示是8086/8088系統(tǒng),必須寫ICW4,D0=0表示不需要寫ICW4。D1(SNGL)用于表示系統(tǒng)是單片8259A還是多片8259A。D0=1表示單片,D0=0表示級聯(lián)。D3(LJIM)表示中斷請求信號起作用的觸發(fā)方式。D3=1表示電平觸發(fā),D3=0表示邊沿觸發(fā)。D2(ADI)和D7、D6、D5(A7、A6、A5)用于8080/8085系統(tǒng)中設(shè)置中斷服務(wù)程序入口地址的A7、A6、A5,在8086/8088系統(tǒng)中,此3位無意義。7.3.6

8259A的編程

(2)ICW2(主片地址為21H,從片地址為A1H)。功能:用來設(shè)置中斷信號的類型碼。格式如下:工作于8080/8085系統(tǒng)中時,8位全部有用,表示CALL指令的高8位;工作于8086/8088系統(tǒng)中時,D7~D3表示中斷矢量的高5位,D2~D0不需編程而是由中斷源序號填入。7.3.6

8259A的編程

(3)ICW3(主片口地址為21H,從片口地址為A1H,多片級聯(lián)時使用)。

ICW3是8259A的級聯(lián)命令字,單片8259A工作時,不需要寫入,多片8259A級聯(lián)工作時,需要分別寫入ICW3,主片ICW3的D7~D0對其8條中斷請求線IR7~IR0,若某條IR線上接有從8259A片,則主ICW3的相應(yīng)位寫1,否則寫0。各從片的ICW3僅D2~D0有意義,作為從片標(biāo)識碼,高5位固定為0。這個從片標(biāo)識碼須和本片所接主片IRi線的序號(i)一致。在中斷響應(yīng)時,主片通過CAS2~CAS0送出被允許中斷的從片標(biāo)識碼。各從片用自己的ICW3和CAS0~CAS2的信號比較。二者一致的從片確定為當(dāng)前中斷源,才可發(fā)送自己的中斷矢量。7.3.6

8259A的編程

(4)ICW4。其格式如下。其中高3位無意義。

D4(SFNM)指定了中斷的嵌套方式。D4=0為一般嵌套方式。一般完全嵌套是指當(dāng)一個中斷源請求被響應(yīng)后就會自動屏蔽同級和低級的中斷請求,但能開放高級的中斷請求,即某中斷未服務(wù)完,同級或低級有中斷請求,不會使8259A的INT變?yōu)橛行Ц唠娖健τ趩纹?259A的中斷系統(tǒng),這種安排是沒有問題的。但對于多片8259A級聯(lián)組成的系統(tǒng),當(dāng)某個從片中的一個中斷正在服務(wù)時,主片將這個從片的所有中斷屏蔽。這是因為盡管該從片多個中斷源各有優(yōu)先級別,但由于它們都通過同一個中斷申請INT引腳接到主片的同一個IRi上,也就是說在主片上,它們的優(yōu)先級別均相同,所以說即使本片中有比正在服務(wù)的中斷級別更高的中斷源發(fā)出請求,也不能得到響應(yīng)即不能中斷嵌套。7.3.6

8259A的編程

D3(BUF)為數(shù)據(jù)緩沖選擇。D3=1時,8259A的數(shù)據(jù)總線和系統(tǒng)總線之間要加三態(tài)緩沖器。此時8259A的引腳變成輸出線以控制緩沖器的接通。當(dāng)D3=0時,設(shè)定為非緩沖方式,由所接的電平高低確定5259A片是主片還是從片。當(dāng)D3=1且又是級聯(lián)方式時,這時規(guī)定當(dāng)ICW4的D2=1時表示主片,當(dāng)D2=0時表示從片。當(dāng)然D3=0時,D2就無意義了。

D2(M/S)表示本片8259A是主片還是從片,D2=0時表示從片,D2=1時表示主片。

D1(AEOI)說明了中斷的結(jié)束方式。中斷結(jié)束的方式有兩種:一種是正常方式,另一種是自動方式。D1=0是中斷的正常結(jié)束方式,在這種方式下,中斷結(jié)束時向8259A送一個EOI命令字(OCW2),于是中斷服務(wù)寄存器ISR中與中斷源相應(yīng)的位被清除。D1=1是中斷的特殊結(jié)束方式,在中斷響應(yīng)時,8259A送出中斷矢量后自動將ISR復(fù)位,不需要送結(jié)束命令字OCW2。

D0(UPM)指定了系統(tǒng)中所采用的CPU系列。當(dāng)D0=0時系統(tǒng)用8080/8085CPU。當(dāng)D0=1時系統(tǒng)用8086/8088CPU系列。7.3.6

8259A的編程

3)8259A的工作編程

8259A在初始化編程后,應(yīng)再進行工作編程,即寫入工作命令字共有三個OCW1、OCW2和OCW3。它們各有自己的特征位,因此寫入時沒有順序的要求。在中斷服務(wù)程序中,某些命令字可能會多次重復(fù)寫入。(1)OCW1(主片口地址為21H,從片口地址為A1H)。

OCW1又被稱為中斷屏蔽字,用來設(shè)置中斷屏蔽寄存器IMR中各位的值。8259A輸入信號IRi的屏蔽操作與中斷屏蔽寄存器IMR中各位的值一一對應(yīng)。將OCW1中的某個Mi位置1時,IMR的相應(yīng)位也置1,從而屏蔽相應(yīng)的輸入IRi信號。三個工作命令字中僅OCW1占有奇地址(A0=1)。7.3.6

8259A的編程

(2)OCW2(主片口地址為20H,從片口地址為A0H)。寫OCW2的作用:①對8259A發(fā)中斷結(jié)束命令,實際上也就是清ISR中的置位;②改變優(yōu)先權(quán)的排序結(jié)構(gòu)。它和工作命令字OCW3都占有偶地址(A0=0),但其特征位為D4D3=00。因此不會混淆。同樣對它們的寫入也沒有要求是早寫還是晚寫。其中A0=0,D4D3=00為OCW2的標(biāo)志。這些操作命令通常以組合方式出現(xiàn),而不是按位設(shè)置的,為了說明組合命令的意義,首先介紹有關(guān)位的定義。7.3.6

8259A的編程

D7(R):優(yōu)先權(quán)控制位。優(yōu)先權(quán):它是指響應(yīng)中斷過程中中斷請求信號級別的高低。一般情況下,IR0級別最高,IR7級別最低,但在實際應(yīng)用中,中斷源的優(yōu)先權(quán)情況是比較復(fù)雜的,不一定有明顯的等級,而且優(yōu)先權(quán)還有可能改變,所以不能總規(guī)定IR0的優(yōu)先權(quán)最高,而IR7的優(yōu)先權(quán)最低,要根據(jù)情況來改變。在8259A中有兩種控制優(yōu)先權(quán)的方法。

①自動循環(huán)在某些應(yīng)用的情況下,若干中斷源有相等的優(yōu)先權(quán)。因此當(dāng)某個中斷源服務(wù)完成后,它的優(yōu)先權(quán)變?yōu)樽畹汀@?,在循環(huán)前,若IR4和IR6同時有中斷請求,而當(dāng)時的IR0最高,IR7最低。因此就先服務(wù)IR4的請求,當(dāng)IR4服務(wù)完畢后它的優(yōu)先權(quán)最低,而IR6的優(yōu)先權(quán)就最高了。

②固定優(yōu)先權(quán)固定優(yōu)先權(quán)是指中斷請求信號IR0~IR7的級別是固定的。7.3.6

8259A的編程

D6(SL)位表示特殊旋轉(zhuǎn)。當(dāng)D6=1時,允許由D2~D0(L2~L0)編碼指定對應(yīng)的IRi為最低優(yōu)先權(quán)。那么此時最高優(yōu)先級為IRi-1。當(dāng)D6=0時,L2~L0編碼無效。

D5(EOI):中斷結(jié)束命令位。D5=1表示中斷結(jié)束(EOI命令)。當(dāng)用8259A來實現(xiàn)中斷管理時,返回指令I(lǐng)RET前必須給8259A送一條EOI命令(即D5=1的OCW2)。8259A收到這條命令后,將中斷服務(wù)寄存器ISR中的相應(yīng)位清除,然后才好為其他中斷源服務(wù)。當(dāng)D6D5=1時,則為特殊的中斷結(jié)束(SEOI命令),它將復(fù)位ISR中由OCW2中的L2~L0指定的位。7.3.6

8259A的編程

(3)OCW3(主片口地址20H,從片口地址A0H)。寫入OCW3的地址和OCW2的相同,都是A0=0,但其特征位是D4D3=01。功用:OCW3常用來配合讀8259A內(nèi)部寄存器的內(nèi)容。格式如下。7.3.6

8259A的編程

D6、D5兩位用來設(shè)定和清除特殊屏蔽。這里首先介紹一下。一般情況下的屏蔽是:當(dāng)交給優(yōu)先權(quán)的中斷源正處在中斷服務(wù)的過程中時,所有優(yōu)先權(quán)較低的中斷申請全都被屏蔽了。特殊屏蔽是指:若CPU正處在中斷服務(wù)過程中,希望能屏蔽一些較低優(yōu)先權(quán)中斷源的中斷,而允許一些優(yōu)先權(quán)更低的中斷源發(fā)出中斷申請。設(shè)置特殊屏蔽為:D6D5=11;清除特殊屏蔽為:D6D5=10。

D1、D0兩位組合表示中斷請求寄存器(IRR)或是讀中斷服務(wù)寄存器(ISR)。當(dāng)OCW3的D1D0=11時,也對同一個地址(A0)作輸入,則讀入的是中斷服務(wù)寄存器(ISR)的內(nèi)容。除了以上兩個寄存器外,任何時候?qū)?259A用奇地址A0=1作輸入,都可以讀出IMR的內(nèi)容。7.3.7

8259A在微機系統(tǒng)中的應(yīng)用【例7.1】8259A在IBMPC/XT中的應(yīng)用。其連接圖如圖7-8所示。7.3.7

8259A在微機系統(tǒng)中的應(yīng)用表7-3IBMPC/AT的中斷源和類型號中斷向量地址指針8259A引腳引腳中斷類型號優(yōu)先級中斷源00020H主片IR008H0(最高)定時器00024H主片IR109H1鍵盤00028H主片IR20AH2從片8259A001C0H從片IR070H3時鐘/日歷鐘001C4H從片IR171H4IRO9(保留)001C8H從片IR272H5IRO10(保留)001CCH從片IR373H6IRO11(保留)001D0H從片IR474H7IRO12(保留)001D4H從片IR575H8協(xié)處理器001D6H從片IR676H9硬盤控制器001D8H從片IR777H10IRQ15(保留)0002CH主片IR30BH11異步通信口(COM2)00030H主片IR40CH12異步通信口(COM1)00034H主片IR50DH13并行打印口2200038H主片IR60EH14軟盤驅(qū)動器0003CH主片IR70FH15(最低)并行打印口117.3.6

8259A的編程

【例7.2】試編程實現(xiàn)主機每次響應(yīng)8259A的IR2中斷請求,顯示字符串“THISISA8259AINTERRUPT!”,中斷10次結(jié)束。流程圖如圖7-9所示。

DATASEGMENTMESSDB'THISISA8259AINTERRUPT!',0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATA

MOVDS,AX

CLI ;關(guān)中斷

PUSH

DSMOVAX,SEGDISPLAY ;取中斷服務(wù)程序入口段地址

MOVDS,AXMOVDX,OFFSETDISPLAY;取中斷服務(wù)程序入口偏移地址

MOVAX,250AH ;設(shè)置中斷向量

INT21HPOPDSMOVAL,13H ;設(shè)置ICW1,邊沿觸發(fā),單片8259A,需ICW4OUT20H,ALMOVAL,08H ;設(shè)置ICW2,中斷類型號的高5位為00001OUT21H,ALMOVAL,05H ;設(shè)置ICW4,非AEOI方式,完全嵌套方式

OUT21H,ALINAL,21H ;讀取IMRANDAL,0FBH ;開放IR2OUT21H,ALMOVBL,10 ;初始化中斷次數(shù)

STI ;開中斷

WAIT1:CMPBL,0

NOPJNZWAIT1CLIINAL,21HORAL,04H ;禁止IR2中斷

OUT21H,ALSTIMOVAH,4CH ;返回DOS

INT21HDISPLAYPROCNEAR

LEADX,MESS ;顯示字符串

MOVAH,09HINT21HDECBL ;中斷次數(shù)減1MOVAL,20H ;發(fā)送中斷結(jié)束命令

OUT20H,ALIRETDISPLAYENDPCODEENDSENDSTART思考與練習(xí)7-1什么是中斷?什么是中斷系統(tǒng)?中斷系統(tǒng)的主要功能有哪些?7-2中斷處理過程主要包括哪幾個基本階段?中斷服務(wù)程序中為什么要保護現(xiàn)場和恢復(fù)現(xiàn)場?如何實現(xiàn)?7-3什么是內(nèi)部中斷和外部中斷?如何分類?7-4INTR中斷和NMI中斷有什么區(qū)別?7-5中斷向量表的作用是什么?如何設(shè)置中斷向量表?中斷類型號為15H的中斷向量存放在哪些存儲器單元?微機原理及應(yīng)用

第8章

計數(shù)器/定時器與DMA控制器

一、了解常見接口芯片8253、8237的內(nèi)部結(jié)構(gòu)二、掌握上述芯片的工作原理三、理解8253等芯片在微機系統(tǒng)中的應(yīng)用。學(xué)習(xí)目標(biāo):8.1可編程定時器/計數(shù)器8253返回

一、8253的功能與結(jié)構(gòu)二、8253的控制字三、8253工作方式與工作時序四、8253的初始化編程及應(yīng)用【知識點】:

一、8253的功能與結(jié)構(gòu)

(1)每片有三個獨立的16位計數(shù)器通道,稱為通道0~通道2;(2)每個計數(shù)器都可以按照二進制或十進制計數(shù);(3)每個計數(shù)器的最高計數(shù)速率可達2.6MHZ;(4)每個計數(shù)器具有6種可編程工作方式;(5)所有輸入、輸出都與TTL電平兼容,便于與外界接口電路相連。1.8253主要功能:

8253的內(nèi)部結(jié)構(gòu)如圖:它主要包括以下幾個主要部分:(1)數(shù)據(jù)總線緩沖器

數(shù)據(jù)總線緩沖器是8位雙向三態(tài)緩沖器,主要用于8253與CPU之間進行數(shù)據(jù)傳輸。該數(shù)據(jù)包括8253控制字、計數(shù)器計算初值及計數(shù)器當(dāng)前計數(shù)值三個部分。2.8253的內(nèi)部結(jié)構(gòu)2.8253的內(nèi)部結(jié)構(gòu)(2)讀/寫控制邏輯

讀/寫控制邏輯電路接受輸入到8253的

、

、

A1、A0

信號,經(jīng)過邏輯控制電路的組合產(chǎn)生相應(yīng)操作,具體操作如下圖所示:A1A0執(zhí)行的操作01000對計數(shù)器0設(shè)置初值01001對計數(shù)器1設(shè)置初值01010對計數(shù)器2設(shè)置初值01011寫控制字00100讀計數(shù)器0當(dāng)前計數(shù)值00101讀計數(shù)器1當(dāng)前計數(shù)值00110讀計數(shù)器2當(dāng)前計數(shù)值00111無操作(3態(tài))1××××禁止(3態(tài))011××無操作(3態(tài))2.8253的內(nèi)部結(jié)構(gòu)(3)控制寄存器

接收CPU對8253的初始化控制字。對控制字寄存器只能寫入不能讀出。(4)三個計數(shù)器

每個計數(shù)器內(nèi)部都包含一個16位的計數(shù)初值寄存器、一個16位的減法計數(shù)寄存器和一個16位的當(dāng)前計數(shù)輸出寄存器。當(dāng)前計數(shù)輸出寄存器跟隨減法計數(shù)寄存器內(nèi)容變化,當(dāng)有一個鎖存器命令出現(xiàn)后,當(dāng)前計數(shù)輸出寄存器鎖定當(dāng)前計數(shù),直到被CPU讀走之后,又隨減法計數(shù)寄存器的變化而變化。

8253芯片是具有24個引腳的雙列直插式集成電路芯片,其引腳分布如圖所示:

每個引腳的功能定義如下:(1)D7~D0:雙向、三態(tài)數(shù)據(jù)線引腳;3.8253的引腳3.8253的引腳

(2)

:輸入引腳,讀信號,低電平有效,有效時表示正在讀取某個計數(shù)器的當(dāng)前計數(shù)值。

(3):輸入引腳,讀信號,低電平有效,有效時表示正對某個計數(shù)器寫入計數(shù)初值或?qū)懭肟刂谱帧?4):輸入引腳,片選信號,低電平有效,CPU通過該信號有效選中8253,對其進行讀寫操作。(5)A1、A0:輸入引腳,8253端口選擇線,可對三個計數(shù)器和控制寄存器尋址。

GATE:門控信號,用于控制計數(shù)的進行。多數(shù)情況下,GATE=1時,允許計數(shù),GATE=0時,中止計數(shù)。用一句話來說,GATE信號的作用是用來禁止、允許或開始計數(shù)過程。

CLK:時鐘信號。作用是:在8253進行定時或計數(shù)工作時,每輸入一個時鐘信號,便使定時計數(shù)值減1。

OUT:OUT是8253向外輸出的信號。它的作用是:計數(shù)器工作時,當(dāng)定時/計數(shù)值減為0時,即在OUT線上輸出一個OUT信號,用以指示定時或計數(shù)已到。

二、

8253的控制字8253是一個可編程的芯片,有一個8位的控制字寄存器,在初始化編程時,由CPU向8253的控制字寄存器寫入一個控制字,用來選擇計數(shù)器,設(shè)置工作方式、計算方法以及CPU訪問計算器的讀/寫方法等。8253控制字的格式如圖所示。

其中:D7、D6用于選擇定時器;D5、D4用于確定時間常數(shù)的讀/寫格式;D3、D2、D1用來設(shè)定計數(shù)器的工作方式;D0用來設(shè)定計數(shù)方式.1.8253控制字格式:2.8253初始化編程原則

8253是一可編程的芯片,在使用之前必須對它進行編程。

初始化編程的步驟為:(1)寫入每一通道控制字,規(guī)定各通道的工作方式;(2)寫入每一通道的計數(shù)值,分三種情況:

Ⅰ:只寫低8位,則高8位自動置0;――對應(yīng)8位計數(shù)

Ⅱ:只寫高8位,則低8位自動置0;――對應(yīng)16位計數(shù)

Ⅲ:規(guī)定為16位計數(shù),先寫低8位,后寫高8位。――對應(yīng)16位計數(shù)D0:用于確定計數(shù)數(shù)制,0,二進制;1,BCD例題賞析

【例題8.1】:設(shè)8253的端口地址為:04H~07H,要使計數(shù)器1工作在方式0,僅用8位二進制計數(shù),計數(shù)值為128,進行初始化編程。

控制字:0101

0000――二進制50H

初始化編程:MOVAL,50H;0101

0000BOUT07H,ALMOVAL,80HOUT05H,AL例題賞析

【例題8.2】:

設(shè)8253的端口地址為:F8H~FBH,若用通道0工作在方式1,按二――十進制計數(shù),計數(shù)值為5080H,進行初始化編程??刂谱郑?011

0011――二進制33H初始化編程:MOVAL,33H;0011

0011BOUT0FBH,ALMOVAL,80HOUT0F8H,AL;先送低八位MOVAL,50HOUT0F8H,AL;再送高八位例題賞析【例題8.3】:

設(shè)8253的端口地址為:04H~07H,若用通道2工作在方式2,按二進制計數(shù),計數(shù)值為02F0H,進行初始化編程??刂谱郑撼跏蓟幊蹋篗OVAL,0B4H;1011

0100BOUT07H,ALMOVAL,0F0HOUT06H,AL;先送低八位MOVAL,02HOUT06H,AL;再送高八位1011

0100――二進制0B4H三、8253工作方式與工作時序8253共有6種工作方式,對它們的操作遵守以下三條基本原則。(1)當(dāng)控制字寫入8253時,所有的控制邏輯電路立即復(fù)位,輸出端OUT進入初始狀態(tài)。(2)當(dāng)初始值寫入計數(shù)器后,要經(jīng)過一個時鐘周期,減法計數(shù)器才開始工作,時鐘脈沖的下降沿使計數(shù)器進行減法操作。計數(shù)器的最大初始值是0,用二進制計數(shù)時0相當(dāng)于216

,用十進制計數(shù)時0相當(dāng)于104。(3)通常,在時鐘脈沖CLK的上升沿采樣門控信號GATE。門控信號的觸發(fā)方式有上升沿觸發(fā)和電平觸發(fā)兩種。

①門控信號為電平觸發(fā)的有:方式0、方式4。②門控信號為上升沿觸發(fā)的有:方式1、方式5。③門控信號可為電平觸發(fā)也可為上升沿觸發(fā)的有:方式2、方式3溫馨提示:采用這種工作方式,8253可完成計數(shù)功能,且計數(shù)器只計一遍。當(dāng)控制字寫入控制字寄存器后,輸出端OUT為低電平,當(dāng)計數(shù)初值寫入后,在下一個CLK脈沖的下降沿將計數(shù)初值寄存器內(nèi)容裝入減法計數(shù)寄存器,然后減法計數(shù)器開始減1計算。在計數(shù)過程中,OUT保持為低電平,當(dāng)計數(shù)到0后,OUT變高電平,可作為中斷請求信號,并保持到重新寫入新的控制字或新的計數(shù)值為止。1.方式0(計數(shù)結(jié)束產(chǎn)生中斷)三、8253工作方式與工作時序1.方式0(計數(shù)結(jié)束產(chǎn)生中斷)

當(dāng)GATE=0時,暫停計數(shù),減法計數(shù)寄存器值保持不變;當(dāng)GATE=1時,繼續(xù)計數(shù)。

分成兩種情況:若是8位計數(shù),則寫入新值后的下一個脈沖按新值計數(shù);若是16位計數(shù),則在寫入第一個字節(jié)后,停止計數(shù),寫入第二個字節(jié)后的下一個脈沖按新值計數(shù)。方式0下波形如圖所示:①在計數(shù)過程中,可由GATE信號控制暫停:②在計數(shù)過程中可以改變計數(shù)值,且這種改變是立即有效的:例題賞析

【例題8.4】:

端口地址為:04H~07H,1#計數(shù)器,方式0,8位計數(shù),二進制初值為:80H,進行初始化編程。MOVAL,50H;0101

0000BOUT07H,ALMOVAL,80HOUT05H,AL

在這種方式下,在CPU向8253寫入控制字后OUT變高,并保持,寫入計數(shù)值后并不立即計數(shù),只有當(dāng)外界GATE信號啟動后(一個正脈沖)的下一個脈沖才開始計數(shù),OUT變低,計數(shù)到0后,OUT才變高,此時再來一個GATE正脈沖,計數(shù)器又開始重新計數(shù),輸出OUT再次變低,…,因此輸出為一單拍負脈沖。方式1的波形見圖所示:2.方式1(可編程的硬件觸發(fā)單拍脈沖)2.方式1(可編程的硬件觸發(fā)單拍脈沖)

從波形圖中不難看出,工作方式1有如下特點:①輸出OUT為寬度為計數(shù)初值的單脈沖;②輸出受門控信號GATE的控制,分三種情況:計數(shù)到0后,再來GATE脈沖,則重新開始計數(shù)OUT變低;在計數(shù)過程中來GATE脈沖,則從下一CLK脈沖開始重新計數(shù),OUT保持為低;改變計數(shù)值后,只有當(dāng)GATE脈沖啟動后,才按新值計數(shù),否則原計數(shù)過程不受影響,仍繼續(xù)進行,即新值的改變是從下一個GATE開始的。③計數(shù)值是多次有效的,每來一個GATE脈沖,就自動裝入計數(shù)值開始從頭計數(shù),因此在初始化時,計數(shù)值寫入一次即可。例題賞析

若要使計數(shù)器0工作在方式1,按BCD計數(shù),計數(shù)值為3000。則初始化程序段為:MOVAL,23H;設(shè)方式控制字OUT07H,AL;輸至控制字寄存器MOVAL,30H;設(shè)計數(shù)值OUT04H,AL;輸至計數(shù)器0的高8位【例題8.5】:3.方式2(速率發(fā)生器,分頻器)

在這種方式下,CPU輸出控制字后,輸出OUT就變高,寫入計數(shù)值后的下一個CLK脈沖開始計數(shù),計數(shù)到1后,輸出OUT變低,經(jīng)過一個CLK以后,OUT恢復(fù)為高,計數(shù)器重新開始計數(shù),…,因此在這種方式下,只需寫入一次計數(shù)值,就能連續(xù)工作,輸出連續(xù)相同間隔的負脈沖(前提:GATE保持為高),即周期性地輸出,設(shè)LSB=N,則每隔N個CLK輸出一個負脈沖(周期為N)。方式2的波形見圖所示:3.方式2(速率發(fā)生器,分頻器)

①通道可以連續(xù)工作;②GATE可以控制計數(shù)過程,當(dāng)GATE為低時暫停計數(shù),恢復(fù)為高后重新從初值;(注意:該方式與方式0不同,方式0是繼續(xù)計數(shù))③重新設(shè)置新的計數(shù)值即在計數(shù)過程中改變計數(shù)值,則新的計數(shù)值是下次有效的,同方式1。從波形圖中不難看出,工作方式2有如下特點:

4.方式3(方波速率發(fā)生器)

這種方式下的輸出與方式2都是周期性的,不同的是周期不同,CPU寫入控制字后,輸出OUT變高,寫入計數(shù)值后開始計數(shù),不同的是減2計數(shù),當(dāng)計數(shù)到一半計數(shù)值時,輸出變低,重新裝入計數(shù)值進行減2計數(shù),當(dāng)計數(shù)到0時,輸出變高,裝入計數(shù)值進行減2計數(shù),循環(huán)不止。4.方式3(方波速率發(fā)生器)的工作方式

計數(shù)值為偶數(shù):計數(shù)值為奇數(shù):4.方式3(方波速率發(fā)生器)①通道可以連續(xù)工作;

②關(guān)于計數(shù)值的奇偶,若為偶數(shù),則輸出標(biāo)準(zhǔn)方波,高低電平各為N/2個;若為奇數(shù),則在裝入計數(shù)值后的下一個CLK使其裝入,然后減1計數(shù),(N+1)/2,OUT改變狀態(tài),再減至0,OUT又改變狀態(tài),重新裝入計數(shù)值循環(huán)此過程,因此,在這種情況下,輸出有(N+1)/2個CLK個高電平,(N-1)/2個CLK個低電平;

③GATE信號能使計數(shù)過程重新開始,當(dāng)GATE=0時,停止計數(shù),當(dāng)GATE變高后,計數(shù)器重新裝入初值開始計數(shù),尤其是當(dāng)GATE=0時,若OUT此時為低,則立即變高,其它動作同上;

④在計數(shù)期間改變計數(shù)值不影響現(xiàn)行的計數(shù)過程,一般情況下,新的計數(shù)值是在現(xiàn)行半周結(jié)束后才裝入計數(shù)器。但若中間遇到有GATE脈沖,則在此脈沖后即裝入新值開始計數(shù)。從波形圖中不難看出,工作方式3有如下特點:5.方式4(軟件觸發(fā)的選通信號發(fā)生器)

在這種方式下,也是當(dāng)CPU寫入控制字后,OUT立即變高,寫入計數(shù)值開始計數(shù),當(dāng)計數(shù)到0后,OUT變低,經(jīng)過一個CLK脈沖后,OUT變高,這種計數(shù)是一次性的(與方式0有相似之處),只有當(dāng)寫入新的計數(shù)值后才開始下一次計數(shù)。方式4工作波形:5.方式4(軟件觸發(fā)的選通信號發(fā)生器)

從波形圖中不難看出,工作方式4有如下特點:

①當(dāng)計數(shù)值為N時,則間隔N+1個CLK脈沖輸出一個負脈沖(計數(shù)一次有效);

②GATE=0時,禁止計數(shù),GATE=1時,恢復(fù)繼續(xù)計數(shù);③在計數(shù)過程中重新裝入新的計數(shù)值,則該值是立即有效的(若為16位計數(shù)值,則裝入第一個字節(jié)時停止計數(shù),裝入第二個字節(jié)后開始按新值計數(shù))。6.方式5(硬件觸發(fā)的選通信號發(fā)生器)

在這種方式下,當(dāng)控制字寫入后,OUT立刻變高,寫入計數(shù)值后并不立即開始計數(shù),而是由GATE的上升沿觸發(fā)啟動計數(shù)的,當(dāng)計數(shù)到0時,輸出變低,經(jīng)過一個CLK之后,輸出恢復(fù)為高,計數(shù)停止,若再有GATE脈沖來,則重新裝入計數(shù)值開始計數(shù),上述過程重復(fù)。方式5的波形見圖所示。與方式1有相似之處。6.方式5(硬件觸發(fā)的選通信號發(fā)生器)

在這種方式下,若設(shè)置的計數(shù)值是N,則在GATE脈沖后,經(jīng)過(N+1)個CLK才一個負脈沖;②若在計數(shù)過程中又來一個GATE脈沖,則重新裝入初值開始計數(shù),輸出不變,即計數(shù)值多次有效;③若在計數(shù)過程中修改計數(shù)值,則該計數(shù)值在下一個GATE脈沖后裝入開始按此值計數(shù)。從波形圖中不難看出,工作方式5有如下特點:四、

8253的初始化編程及應(yīng)用以便選擇計數(shù)器和規(guī)定計數(shù)器的工作方式,任一計數(shù)通道的控制字都要從8253的控制端口寫入。某個計數(shù)器寫入控制字后,任何時候都可以按控制字中的RW1、RW2規(guī)定寫入計數(shù)初值。寫入計數(shù)初值時,還必須注意:如果在方式控制字中的BCD位為1,則寫入的計數(shù)初值應(yīng)為十六進制數(shù)。在計數(shù)過程中,若要讀取當(dāng)前的計數(shù)值,則需要采用以下方法。先寫入一個方式控制字,該方式控制字SC1、SC2指明要讀取的計數(shù)通道,RW1、RW2設(shè)為00;然后再按照初始化該計數(shù)器時的讀/寫方法讀取計數(shù)值。1.寫入控制字2.寫入計數(shù)初值3.讀計數(shù)值8253是一個可編程的芯片,有一個8位的控制字寄存器,在初始化編程時,由CPU向8253的控制字寄存器寫入一個控制字,用來選擇計數(shù)器,設(shè)置工作方式、計算方法以及CPU訪問計算器的讀/寫方法等。8253控制字的格式如圖所示。

其中:D7、D6用于選擇定時器;D5、D4用于確定時間常數(shù)的讀/寫格式;D3、D2、D1用來設(shè)定計數(shù)器的工作方式;D0用來設(shè)定計數(shù)方式.1.8253控制字格式:四、

8253的初始化編程及應(yīng)用

輸入數(shù)字鍵1~8發(fā)出不同頻率的聲音,模擬電子琴的功能。調(diào)整程序中分頻系數(shù)和延時時間參數(shù),可以獲得不同的聲音效果。

PC系統(tǒng)分配給主板上的8253的I/O端口地址是40H~43H,圖8-10描繪了這一部分接口電路的原理框圖。系統(tǒng)輸入時鐘頻率為1193.18kHz,它的3個計數(shù)器分別用于:①地址為40H的計數(shù)通道0用于產(chǎn)生系統(tǒng)時鐘的基本定時中斷,輸出方波序列的頻率為18.2Hz;【例題8.6】:四、

8253的初始化編程及應(yīng)用

PC揚聲器電路框圖:四、

8253的初始化編程及應(yīng)用

②地址為41H的計數(shù)通道1用于產(chǎn)生DRAM存儲器系統(tǒng)刷新信號,輸出負脈沖序列的頻率為68.2878kHz;③地址為42H的計數(shù)通道2用于為機內(nèi)揚聲器提供發(fā)聲音調(diào),輸出方波序列的頻率約為100Hz。

任何一臺PC都內(nèi)含一只小型揚聲器,用于發(fā)出各種信號音或報警聲。邏輯與門電路用于控制揚聲器聲音的通斷,編程這一邏輯門就可以調(diào)整揚聲器通斷時間產(chǎn)生不同的聲音效果。邏輯與門由8255A端口B的PB0和PB1兩位來控制,“1”接通、“0”關(guān)閉,該端口的地址為61H。由于端口B余下的6位還用作系統(tǒng)其他的控制,因此在編程中應(yīng)注意保護這6位的狀態(tài)不受任何影響。四、

8253的初始化編程及應(yīng)用

DATASEGMENTMESSAGEDB'Use1...8toplaythemusic!','$'FREQUDW262,294,330,347,392,440,494,524;

不同頻率對應(yīng)的分頻系數(shù)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,MESSAGE

【例題8.6】:四、

8253的初始化編程及應(yīng)用MOVAH,09HINT21H;顯示MESSAGE緩沖器中的字符串

MOVAL,10110110B;選擇工作方式3,使用計數(shù)器2OUT43H,AL;通過AL將控制字寫入43H端口

NEXT:MOVAH,7INT21H;鍵盤輸入無回顯

CMPAL,'1'

JBEXITCMPAL,'8'JAEXIT;輸入字符非1~8的數(shù)字鍵則退出程序續(xù):

四、

8253的初始化編程及應(yīng)用

SUBAL,30H;數(shù)字1~8的ASCII減去30HMOVAH,0MOVBX,AXSUBBX,1SHLBX,1;計算分頻系數(shù)的偏移地址

MOVCX,FREQU[BX];取出頻率值MOVAX,34DCH

MOVDX,12H;DX:AX=1234DCH=1193180Hz時鐘

四、

8253的初始化編程及應(yīng)用

DIVCX;(DXAX)/CX的商→AXMOVBX,AXOUT42H,AL;商的低8位送入計數(shù)通道2MOVAL,AHOUT42H,AL;商的高8位送入計數(shù)通道2

INAL,61H;讀取8255的狀態(tài),以控制PB0和PB1ORAL,03H;把PB0和PB1置1

OUT61H,AL;使揚聲器發(fā)聲四、

8253的初始化編程及應(yīng)用MOVCX,0FFFFHDELAY:MOVDX,1000H;延時時間參數(shù)DEC_DX:DECDXJ

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論