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

下載本文檔

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

文檔簡(jiǎn)介

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

CPU執(zhí)行程序時(shí),

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

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

,

引起CPU暫時(shí)中斷正在運(yùn)行的程序,

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

程序,

以處理該事件,

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

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

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

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

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

圖7-1中斷處理過(guò)程流程圖圖7-2兩級(jí)中斷嵌套的示意圖7.1.3

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

外部中斷

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

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

外部中斷

2.可屏蔽中斷INTR

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

內(nèi)部中斷

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

①0型中斷——除法出錯(cuò)中斷。

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

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

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

中斷向量和中斷向量表

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

(1)直接寫(xiě)入。

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

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

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

80x86CPU對(duì)各種中斷的響應(yīng)過(guò)程是不同的,主要區(qū)別在于如何獲得相應(yīng)的中斷類(lèi)型號(hào)。

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

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

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

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

8259A的功能

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

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

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

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

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

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

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

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

Intel8259A的引腳及功能

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

Intel8259A的引腳及功能

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

8259A的工作方式

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

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

8259A的工作方式

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

8259A的工作方式

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

8259A的工作方式

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

8259A的級(jí)聯(lián)

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

8259A的編程

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

8259A的編程

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

2)8259A的初始化編程

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

8259A的編程

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

8259A的編程

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

8259A的編程

(1)ICW1。

ICW1用于設(shè)置8259A的基本工作方式。剛才提到了當(dāng)?shù)刂肪€(xiàn)A0=0時(shí),若對(duì)8259A寫(xiě)入D4=1則啟動(dòng)了初始化編程寫(xiě)入的字節(jié)被當(dāng)成ICW1,D4=1是它的特征位,其余各位作用如下。A0=0表示是偶地址,D4=1是初始化命令字ICW1的標(biāo)志。D0(ICW4)表示初始化過(guò)程是否需要寫(xiě)ICW4。D0=1表示是8086/8088系統(tǒng),必須寫(xiě)ICW4,D0=0表示不需要寫(xiě)ICW4。D1(SNGL)用于表示系統(tǒng)是單片8259A還是多片8259A。D0=1表示單片,D0=0表示級(jí)聯(lián)。D3(LJIM)表示中斷請(qǐng)求信號(hào)起作用的觸發(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位無(wú)意義。7.3.6

8259A的編程

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

8259A的編程

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

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

8259A的編程

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

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

8259A的編程

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

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

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

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

8259A的編程

3)8259A的工作編程

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

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

8259A的編程

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

8259A的編程

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

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

②固定優(yōu)先權(quán)固定優(yōu)先權(quán)是指中斷請(qǐng)求信號(hào)IR0~I(xiàn)R7的級(jí)別是固定的。7.3.6

8259A的編程

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

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

8259A的編程

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

8259A的編程

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

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

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

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

8259A的編程

【例7.2】試編程實(shí)現(xiàn)主機(jī)每次響應(yīng)8259A的IR2中斷請(qǐng)求,顯示字符串“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,中斷類(lèi)型號(hào)的高5位為00001OUT21H,ALMOVAL,05H ;設(shè)置ICW4,非AEOI方式,完全嵌套方式

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

STI ;開(kāi)中斷

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中斷處理過(guò)程主要包括哪幾個(gè)基本階段?中斷服務(wù)程序中為什么要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)?如何實(shí)現(xiàn)?7-3什么是內(nèi)部中斷和外部中斷?如何分類(lèi)?7-4INTR中斷和NMI中斷有什么區(qū)別?7-5中斷向量表的作用是什么?如何設(shè)置中斷向量表?中斷類(lèi)型號(hào)為15H的中斷向量存放在哪些存儲(chǔ)器單元?微機(jī)原理及應(yīng)用

第8章

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

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

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

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

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

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

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

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

、

、

A1、A0

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

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

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

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

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

(2)

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

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

GATE:門(mén)控信號(hào),用于控制計(jì)數(shù)的進(jìn)行。多數(shù)情況下,GATE=1時(shí),允許計(jì)數(shù),GATE=0時(shí),中止計(jì)數(shù)。用一句話(huà)來(lái)說(shuō),GATE信號(hào)的作用是用來(lái)禁止、允許或開(kāi)始計(jì)數(shù)過(guò)程。

CLK:時(shí)鐘信號(hào)。作用是:在8253進(jìn)行定時(shí)或計(jì)數(shù)工作時(shí),每輸入一個(gè)時(shí)鐘信號(hào),便使定時(shí)計(jì)數(shù)值減1。

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

二、

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

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

8253是一可編程的芯片,在使用之前必須對(duì)它進(jìn)行編程。

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

Ⅰ:只寫(xiě)低8位,則高8位自動(dòng)置0;――對(duì)應(yīng)8位計(jì)數(shù)

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

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

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

控制字:0101

0000――二進(jìn)制50H

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

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

【例題8.2】:

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

0011――二進(jìn)制33H初始化編程:MOVAL,33H;0011

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

設(shè)8253的端口地址為:04H~07H,若用通道2工作在方式2,按二進(jìn)制計(jì)數(shù),計(jì)數(shù)值為02F0H,進(jìn)行初始化編程。控制字:初始化編程:MOVAL,0B4H;1011

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

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

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

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

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

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

【例題8.4】:

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

0000BOUT07H,ALMOVAL,80HOUT05H,AL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PC揚(yáng)聲器電路框圖:四、

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

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

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

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

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

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

【例題8.6】:四、

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

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

NEXT:MOVAH,7INT21H;鍵盤(pán)輸入無(wú)回顯

CMPAL,'1'

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

四、

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

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

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

MOVDX,12H;DX:AX=1234DCH=1193180Hz時(shí)鐘

四、

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論