第7章輸入輸出接口與中斷技術(shù)_第1頁(yè)
第7章輸入輸出接口與中斷技術(shù)_第2頁(yè)
第7章輸入輸出接口與中斷技術(shù)_第3頁(yè)
第7章輸入輸出接口與中斷技術(shù)_第4頁(yè)
第7章輸入輸出接口與中斷技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩187頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6 6章章 輸入輸出接口與中斷技術(shù)輸入輸出接口與中斷技術(shù)NoImage7.1 7.1 輸入輸出接口概述輸入輸出接口概述7.2 CPU7.2 CPU與外設(shè)之間數(shù)據(jù)傳送的方式與外設(shè)之間數(shù)據(jù)傳送的方式7.3 7.3 中斷技術(shù)中斷技術(shù)7.4 8086/80887.4 8086/8088的中斷系統(tǒng)和中斷處理的中斷系統(tǒng)和中斷處理7.5 7.5 可編程中斷控制器可編程中斷控制器NoImage1. 1. 掌握理解接口基本結(jié)構(gòu)的特點(diǎn)。掌握理解接口基本結(jié)構(gòu)的特點(diǎn)。2. 2. 掌握掌握CPUCPU與外設(shè)之間的數(shù)據(jù)傳送方式。與外設(shè)之間的數(shù)據(jù)傳送方式。3. 3. 掌握無條件傳送與有條件傳送的編程。掌握無條件傳送與有

2、條件傳送的編程。4. 4. 正確理解中斷、中斷系統(tǒng)及其功能。正確理解中斷、中斷系統(tǒng)及其功能。5. 5. 掌握單個(gè)中斷源的中斷的條件與過程。掌握單個(gè)中斷源的中斷的條件與過程。6. 6. 正確理解和靈活運(yùn)用中斷向量表。正確理解和靈活運(yùn)用中斷向量表。7. 7. 掌握中斷控制器內(nèi)部掌握中斷控制器內(nèi)部8 8個(gè)部件的功能及其關(guān)系。個(gè)部件的功能及其關(guān)系。 在計(jì)算機(jī)應(yīng)用中在計(jì)算機(jī)應(yīng)用中, ,必然同各種各樣的外設(shè)打交道。當(dāng)它必然同各種各樣的外設(shè)打交道。當(dāng)它被用于管理、生產(chǎn)過程的檢測(cè)與控制以及科學(xué)計(jì)算時(shí),都被用于管理、生產(chǎn)過程的檢測(cè)與控制以及科學(xué)計(jì)算時(shí),都要求把控制程序和原始數(shù)據(jù)通過相應(yīng)的輸入設(shè)備送入計(jì)算要求把控

3、制程序和原始數(shù)據(jù)通過相應(yīng)的輸入設(shè)備送入計(jì)算機(jī);機(jī);CPUCPU在程序的控制下,對(duì)這些信息進(jìn)行加工處理,然后在程序的控制下,對(duì)這些信息進(jìn)行加工處理,然后把結(jié)果以用戶所需要的方式通過輸出設(shè)備予以輸出。把結(jié)果以用戶所需要的方式通過輸出設(shè)備予以輸出。 外設(shè)與計(jì)算機(jī)的連接不能像存儲(chǔ)器那樣直接連接到總外設(shè)與計(jì)算機(jī)的連接不能像存儲(chǔ)器那樣直接連接到總線上,而必須通過各自的接口電路與主機(jī)相連。線上,而必須通過各自的接口電路與主機(jī)相連。7.1.1 CPU7.1.1 CPU與外設(shè)間的連接與外設(shè)間的連接7.1 7.1 輸入輸出概述輸入輸出概述MEMMEMI/OI/O設(shè)備設(shè)備不不同同點(diǎn)點(diǎn)品種有限品種有限品種繁多品種繁多

4、功能單一功能單一功能多樣功能多樣傳送一個(gè)字節(jié)傳送一個(gè)字節(jié)傳送規(guī)律不同傳送規(guī)律不同與與CPUCPU速度匹配速度匹配與與CPUCPU速度不匹配速度不匹配易于控制易于控制難于控制難于控制結(jié)論結(jié)論可與可與CPUCPU直接連接直接連接需經(jīng)過需經(jīng)過I/OI/O接口電接口電路與路與CPUCPU連接連接 CPUCPU與外設(shè)的輸入輸出操作類似于存儲(chǔ)器的讀寫操作,與外設(shè)的輸入輸出操作類似于存儲(chǔ)器的讀寫操作,即即I/OI/O(讀(讀/ /寫);但外設(shè)與存儲(chǔ)器有許多不同點(diǎn),其比較寫);但外設(shè)與存儲(chǔ)器有許多不同點(diǎn),其比較如下表所示。如下表所示。 接口電路傳送的信息可分為接口電路傳送的信息可分為數(shù)據(jù)信息、狀態(tài)信息和控?cái)?shù)據(jù)

5、信息、狀態(tài)信息和控制信息制信息三類:三類: 1. 1. 數(shù)據(jù)信息數(shù)據(jù)信息 數(shù)據(jù)信息數(shù)據(jù)信息是最基本的一種信息,包括:是最基本的一種信息,包括: (1)(1)數(shù)字量:數(shù)字量:通常為通常為8 8位二進(jìn)制數(shù)或位二進(jìn)制數(shù)或ASCIIASCII碼。碼。 7.1.2 7.1.2 接口電路傳送的信息接口電路傳送的信息非電量信息非電量信息傳感器傳感器電量電量 信號(hào)信號(hào)處理處理A/DA/DCPUCPU (2)(2)模擬量:模擬量:當(dāng)計(jì)算機(jī)用于檢測(cè)、數(shù)據(jù)采集或控制時(shí),當(dāng)計(jì)算機(jī)用于檢測(cè)、數(shù)據(jù)采集或控制時(shí),大量的現(xiàn)場(chǎng)信息是連續(xù)變化的物理量(如:溫度、壓力、大量的現(xiàn)場(chǎng)信息是連續(xù)變化的物理量(如:溫度、壓力、流量、位移、

6、速度等),經(jīng)傳感器把非電量轉(zhuǎn)換成電量并流量、位移、速度等),經(jīng)傳感器把非電量轉(zhuǎn)換成電量并經(jīng)過放大即得到模擬電流或電壓,這些模擬量,計(jì)算機(jī)不經(jīng)過放大即得到模擬電流或電壓,這些模擬量,計(jì)算機(jī)不能直接接收和處理,必須經(jīng)過能直接接收和處理,必須經(jīng)過A/DA/D轉(zhuǎn)換,才能輸入計(jì)算機(jī);轉(zhuǎn)換,才能輸入計(jì)算機(jī);而計(jì)算機(jī)輸出的數(shù)字量也必須經(jīng)而計(jì)算機(jī)輸出的數(shù)字量也必須經(jīng)D/AD/A轉(zhuǎn)換后才能去控制執(zhí)轉(zhuǎn)換后才能去控制執(zhí)行機(jī)構(gòu)。行機(jī)構(gòu)。 (3)(3)開關(guān)量:開關(guān)量:具有具有“0”0”和和“1”1”兩個(gè)狀態(tài)的量,用一位兩個(gè)狀態(tài)的量,用一位二進(jìn)制數(shù)表示。二進(jìn)制數(shù)表示。 例如電機(jī)的啟與停,開關(guān)的合與開等。例如電機(jī)的啟與停,

7、開關(guān)的合與開等。 2.2.狀態(tài)信息狀態(tài)信息 反映外設(shè)當(dāng)前所處工作狀態(tài)的信息,以作為反映外設(shè)當(dāng)前所處工作狀態(tài)的信息,以作為CPUCPU與外與外設(shè)間可靠交換數(shù)據(jù)的條件。輸入時(shí),它告知設(shè)間可靠交換數(shù)據(jù)的條件。輸入時(shí),它告知CPUCPU有關(guān)輸入有關(guān)輸入設(shè)備的數(shù)據(jù)是否準(zhǔn)備好(設(shè)備的數(shù)據(jù)是否準(zhǔn)備好(ReadyReady1 1?);輸出時(shí),它告知?);輸出時(shí),它告知CPUCPU輸出設(shè)備是否空閑(輸出設(shè)備是否空閑(BusyBusy0 0?)。?)。CPUCPU是通過接口電是通過接口電路來掌握路來掌握I/OI/O設(shè)備的狀態(tài),以決定可否輸入或輸出數(shù)據(jù)。設(shè)備的狀態(tài),以決定可否輸入或輸出數(shù)據(jù)。 3.3.控制信息控制信

8、息 用于控制外設(shè)的啟停。用于控制外設(shè)的啟停。CPUCPUI/OI/O設(shè)備設(shè)備I/OI/O接口接口123ABABDBDBCBCBDATADATASTATUSSTATUS CONTROL CONTROLCPU CPU 與外設(shè)之間的接口信息與外設(shè)之間的接口信息 接口電路基本結(jié)構(gòu)及其連接如圖所示。接口電路根接口電路基本結(jié)構(gòu)及其連接如圖所示。接口電路根據(jù)傳送不同信息的需要,其基本結(jié)構(gòu)安排有其特點(diǎn)。據(jù)傳送不同信息的需要,其基本結(jié)構(gòu)安排有其特點(diǎn)。 (1 1)3 3種信息的性質(zhì)不同,應(yīng)通過不同的端口分別傳送。種信息的性質(zhì)不同,應(yīng)通過不同的端口分別傳送。如,數(shù)據(jù)輸入如,數(shù)據(jù)輸入/ /輸出寄存器、狀態(tài)寄存器與命令

9、控制寄存器各輸出寄存器、狀態(tài)寄存器與命令控制寄存器各占占1 1個(gè)端口,每個(gè)端口都有自己的端口地址,故能用不同的端個(gè)端口,每個(gè)端口都有自己的端口地址,故能用不同的端口地址來區(qū)分不同性質(zhì)的信息。口地址來區(qū)分不同性質(zhì)的信息。 (2 2)在用輸入輸出指令尋址外設(shè)的)在用輸入輸出指令尋址外設(shè)的CPUCPU中,中,外設(shè)的狀態(tài)作外設(shè)的狀態(tài)作為一種輸入數(shù)據(jù)為一種輸入數(shù)據(jù),而,而CPUCPU的控制命令是作為一種輸出數(shù)據(jù)的,的控制命令是作為一種輸出數(shù)據(jù)的,從而可通過數(shù)據(jù)總線來分別傳送。從而可通過數(shù)據(jù)總線來分別傳送。 (3 3)端口地址由端口地址由CPUCPU地址總線的低地址總線的低8 8位或低位或低1616位地址

10、信息位地址信息來確定來確定,CPUCPU根據(jù)根據(jù)I/OI/O指令提供的端口地址來尋址端口,然后指令提供的端口地址來尋址端口,然后同外設(shè)交換信息。同外設(shè)交換信息。 在微型計(jì)算機(jī)系統(tǒng)中,主要的輸入輸出方法有以下在微型計(jì)算機(jī)系統(tǒng)中,主要的輸入輸出方法有以下3 3種:種: 程序傳送程序傳送 中斷方式中斷方式 直接存貯器存取直接存貯器存取(DMA)(DMA)方式方式 這些方式不僅要實(shí)現(xiàn)主機(jī)與外設(shè)之間數(shù)據(jù)的傳輸,還要實(shí)這些方式不僅要實(shí)現(xiàn)主機(jī)與外設(shè)之間數(shù)據(jù)的傳輸,還要實(shí)現(xiàn)狀態(tài)信息、命令信息的傳輸?,F(xiàn)狀態(tài)信息、命令信息的傳輸。7.2 7.2 CPUCPU與與I/OI/O設(shè)備之間的數(shù)據(jù)傳送方式設(shè)備之間的數(shù)據(jù)傳送

11、方式 一般,這些外設(shè)隨時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備一般,這些外設(shè)隨時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備, ,而無須檢而無須檢測(cè)其狀態(tài)。測(cè)其狀態(tài)。 這里先要弄清有關(guān)輸入緩沖與輸出鎖存的基本概念。這里先要弄清有關(guān)輸入緩沖與輸出鎖存的基本概念。 輸入數(shù)據(jù)輸入數(shù)據(jù)時(shí)時(shí), ,因簡(jiǎn)單外設(shè)輸入數(shù)據(jù)的保持時(shí)間相對(duì)于因簡(jiǎn)單外設(shè)輸入數(shù)據(jù)的保持時(shí)間相對(duì)于CPUCPU的接收速度來說較長(zhǎng),故輸入數(shù)據(jù)通常不用加鎖存器來的接收速度來說較長(zhǎng),故輸入數(shù)據(jù)通常不用加鎖存器來鎖存鎖存, ,而直接使用三態(tài)緩沖器與而直接使用三態(tài)緩沖器與CPUCPU數(shù)據(jù)總線相連即可。數(shù)據(jù)總線相連即可。 輸出數(shù)據(jù)時(shí)輸出數(shù)據(jù)時(shí), ,一般都需要鎖存器將要輸出的數(shù)據(jù)保持一一般都需

12、要鎖存器將要輸出的數(shù)據(jù)保持一段時(shí)間段時(shí)間, ,其長(zhǎng)短和外設(shè)的動(dòng)作相適應(yīng)。鎖存時(shí),在鎖存允許其長(zhǎng)短和外設(shè)的動(dòng)作相適應(yīng)。鎖存時(shí),在鎖存允許端端CE=1(CE=1(為無效電平為無效電平) )時(shí)時(shí), ,數(shù)據(jù)總線上的新數(shù)據(jù)不能進(jìn)入鎖存數(shù)據(jù)總線上的新數(shù)據(jù)不能進(jìn)入鎖存器。只有當(dāng)確知外設(shè)已取走器。只有當(dāng)確知外設(shè)已取走CPUCPU上次送入鎖存器的數(shù)據(jù)上次送入鎖存器的數(shù)據(jù), ,方方能在能在CE=0CE=0(為有效電平)時(shí)將新數(shù)據(jù)再送入鎖存器保留。(為有效電平)時(shí)將新數(shù)據(jù)再送入鎖存器保留。輸入輸出輸入輸出( (無條件程序傳送無條件程序傳送) )原理圖如圖所示。原理圖如圖所示。 在輸入時(shí),假定來自外設(shè)的數(shù)據(jù)已輸入至三

13、態(tài)緩沖器,在輸入時(shí),假定來自外設(shè)的數(shù)據(jù)已輸入至三態(tài)緩沖器,于是當(dāng)于是當(dāng)CPUCPU執(zhí)行執(zhí)行ININ指令時(shí),所指定的端口地址經(jīng)地址總線的指令時(shí),所指定的端口地址經(jīng)地址總線的低低1616位或低位或低8 8位送至地址譯碼器,位送至地址譯碼器,CPUCPU進(jìn)入了輸入周期進(jìn)入了輸入周期, ,選中選中的地址信號(hào)和的地址信號(hào)和M/IOM/IO(以及(以及RDRD)相)相“與與”后后, ,去選通輸入三態(tài)緩去選通輸入三態(tài)緩沖器,把外設(shè)的數(shù)據(jù)與數(shù)據(jù)總線連通并讀入沖器,把外設(shè)的數(shù)據(jù)與數(shù)據(jù)總線連通并讀入CPUCPU。顯然,這。顯然,這樣做必須是當(dāng)樣做必須是當(dāng)CPUCPU執(zhí)行執(zhí)行ININ指令時(shí)指令時(shí), ,外設(shè)的數(shù)據(jù)是已

14、準(zhǔn)備好的,外設(shè)的數(shù)據(jù)是已準(zhǔn)備好的,否則就會(huì)讀錯(cuò)。否則就會(huì)讀錯(cuò)。在輸出時(shí),假定在輸出時(shí),假定CPUCPU的輸出信息經(jīng)數(shù)據(jù)總線已送到輸?shù)妮敵鲂畔⒔?jīng)數(shù)據(jù)總線已送到輸出鎖存器的輸入端;當(dāng)出鎖存器的輸入端;當(dāng)CPUCPU執(zhí)行執(zhí)行OUTOUT指令時(shí)指令時(shí), ,端口的地址由端口的地址由地址總線的低位地址送至地址譯碼器,地址總線的低位地址送至地址譯碼器,CPUCPU進(jìn)入了輸出進(jìn)入了輸出周期周期, ,所選中的地址信號(hào)和所選中的地址信號(hào)和M/IOM/IO(以及(以及WR WR 信號(hào))相信號(hào))相“與與”后,去選通鎖存器,把輸出信息送至鎖存器保留后,去選通鎖存器,把輸出信息送至鎖存器保留, ,由它再由它再把信息通過外

15、設(shè)輸出。顯然,在把信息通過外設(shè)輸出。顯然,在CPUCPU執(zhí)行執(zhí)行OUTOUT指令時(shí)指令時(shí), ,必須必須確信所選外設(shè)的鎖存器是空的。確信所選外設(shè)的鎖存器是空的。例:一個(gè)采用同步傳送的數(shù)據(jù)采集系統(tǒng)如圖所示。例:一個(gè)采用同步傳送的數(shù)據(jù)采集系統(tǒng)如圖所示。 這是一個(gè)這是一個(gè)1616位精度的數(shù)據(jù)采集系統(tǒng)。被采集的數(shù)據(jù)是位精度的數(shù)據(jù)采集系統(tǒng)。被采集的數(shù)據(jù)是8 8個(gè)模擬量,由繼電器繞組個(gè)模擬量,由繼電器繞組P0P0、P1P1、P7P7分別控制觸點(diǎn)分別控制觸點(diǎn)K0K0、K1K7K1K7逐個(gè)接通。每次采樣用一個(gè)逐個(gè)接通。每次采樣用一個(gè)4 4位位( (每位為一個(gè)十進(jìn)制每位為一個(gè)十進(jìn)制數(shù)數(shù)) )數(shù)字電壓表測(cè)量,把被采

16、樣的模擬量轉(zhuǎn)換成數(shù)字電壓表測(cè)量,把被采樣的模擬量轉(zhuǎn)換成1616位位BCDBCD代代碼碼( (即對(duì)應(yīng)即對(duì)應(yīng)4 4位十進(jìn)制數(shù)的位十進(jìn)制數(shù)的4 4個(gè)個(gè)BCDBCD碼碼),),高高8 8位和低位和低8 8位通過兩位通過兩個(gè)不同的端口(其地址分別為個(gè)不同的端口(其地址分別為10H10H和和11H)11H)輸入。輸入。CPUCPU通過端通過端口口20H 20H 輸出控制信號(hào)輸出控制信號(hào), ,以控制某個(gè)繼電器的吸合以控制某個(gè)繼電器的吸合, ,實(shí)現(xiàn)采集實(shí)現(xiàn)采集不同通道的模擬量。不同通道的模擬量。 采集過程要求:采集過程要求: (1)(1)先斷開所有的繼電器線圈及觸頭先斷開所有的繼電器線圈及觸頭, ,不采集數(shù)據(jù)

17、。不采集數(shù)據(jù)。 (2)(2)延遲一段時(shí)間后延遲一段時(shí)間后, ,使使K0K0閉合閉合, ,采集第采集第1 1個(gè)通道的模擬個(gè)通道的模擬量量, ,并保持一段時(shí)間并保持一段時(shí)間, ,以使數(shù)字電壓表能將模擬電壓轉(zhuǎn)換為以使數(shù)字電壓表能將模擬電壓轉(zhuǎn)換為1616位位BCDBCD碼。碼。 (3)(3)分別將高分別將高8 8位與低位與低8 8位位BCDBCD碼存入內(nèi)存碼存入內(nèi)存, ,完成第完成第1 1個(gè)模個(gè)模擬量的輸入與存。擬量的輸入與存。 (4)(4)利用移位與循環(huán)實(shí)現(xiàn)利用移位與循環(huán)實(shí)現(xiàn)8 8個(gè)模擬量的依次采集、輸入個(gè)模擬量的依次采集、輸入與轉(zhuǎn)存與轉(zhuǎn)存。數(shù)據(jù)采集程序如下:數(shù)據(jù)采集程序如下: START: STA

18、RT: MOV DX,0100H ;01HDH,MOV DX,0100H ;01HDH,置吸合第置吸合第1 1個(gè)繼電器代碼個(gè)繼電器代碼 ;00HDL,;00HDL,置斷開所有繼電器代碼置斷開所有繼電器代碼 LEA BX,DSTOR ;LEA BX,DSTOR ;置輸入數(shù)據(jù)緩沖器的地址指針置輸入數(shù)據(jù)緩沖器的地址指針 XOR AL,AL ;XOR AL,AL ;清清ALAL及進(jìn)位位及進(jìn)位位CFCF AGAIN: AGAIN: MOV AL,DLMOV AL,DL OUT 20H,AL ; OUT 20H,AL ;斷開所有繼電器線圈斷開所有繼電器線圈 CALL NEAR DELAY1 ;CALL N

19、EAR DELAY1 ;模擬繼電器觸點(diǎn)的釋放時(shí)間模擬繼電器觸點(diǎn)的釋放時(shí)間 MOV AL,DHMOV AL,DH OUT 20H,AL ; OUT 20H,AL ;先使先使P0P0吸合吸合 CALL NEAR DELAY2 ;CALL NEAR DELAY2 ;模擬觸點(diǎn)閉合及數(shù)字電壓表的轉(zhuǎn)換時(shí)間模擬觸點(diǎn)閉合及數(shù)字電壓表的轉(zhuǎn)換時(shí)間 IN AX,10H ;IN AX,10H ;輸入輸入 MOV BX,AX ;MOV BX,AX ;存入內(nèi)存存入內(nèi)存 INC BX INC BX INC BX INC BX RCL DH,1 ;DH RCL DH,1 ;DH左移左移( (大循環(huán)大循環(huán))1)1位位, ,為下

20、一個(gè)觸點(diǎn)吸合為下一個(gè)觸點(diǎn)吸合 作準(zhǔn)備作準(zhǔn)備 JNC AGAIN ;8JNC AGAIN ;8位都輸入完了嗎?沒有,則循環(huán)位都輸入完了嗎?沒有,則循環(huán) DONEDONE: ; ;輸入已完,則執(zhí)行別的程序段。輸入已完,則執(zhí)行別的程序段。 數(shù)據(jù)的傳輸靠執(zhí)行指令實(shí)現(xiàn)。數(shù)據(jù)的傳輸靠執(zhí)行指令實(shí)現(xiàn)。 IN AL(AX)IN AL(AX),PORTPORT MOV MEM MOV MEM,AL(AX)AL(AX)7.2.1 7.2.1 程序傳送程序傳送 外部設(shè)備的狀態(tài)信息用外部設(shè)備的狀態(tài)信息用ININ指令輸入,然后測(cè)試;指令輸入,然后測(cè)試;主機(jī)用主機(jī)用OUTOUT指令向外設(shè)提供狀態(tài)信息,從而達(dá)到聯(lián)絡(luò)的目的。指

21、令向外設(shè)提供狀態(tài)信息,從而達(dá)到聯(lián)絡(luò)的目的。 這種輸入輸出方式的優(yōu)點(diǎn)簡(jiǎn)單、這種輸入輸出方式的優(yōu)點(diǎn)簡(jiǎn)單、 實(shí)現(xiàn)容易。實(shí)現(xiàn)容易。 但存但存在明顯的在明顯的缺點(diǎn)缺點(diǎn):第第1 1,為了測(cè)試和等待外部設(shè)備作好傳輸數(shù)據(jù)的準(zhǔn)備,為了測(cè)試和等待外部設(shè)備作好傳輸數(shù)據(jù)的準(zhǔn)備,常常要花費(fèi)大量的時(shí)間,在這段時(shí)間內(nèi),程序不能完成其它常常要花費(fèi)大量的時(shí)間,在這段時(shí)間內(nèi),程序不能完成其它任務(wù),所以使系統(tǒng)的時(shí)間利用率大大降低。任務(wù),所以使系統(tǒng)的時(shí)間利用率大大降低。 第第2 2,CPUCPU在一段時(shí)間里只能和一個(gè)外部設(shè)備之間傳輸數(shù)在一段時(shí)間里只能和一個(gè)外部設(shè)備之間傳輸數(shù)據(jù),其它設(shè)備只能等待。據(jù),其它設(shè)備只能等待。 第第3 3,不

22、能發(fā)現(xiàn)和處理預(yù)先無法估計(jì)的錯(cuò)誤和異常現(xiàn)象。,不能發(fā)現(xiàn)和處理預(yù)先無法估計(jì)的錯(cuò)誤和異?,F(xiàn)象。所以這種輸入輸出方式只適用于所以這種輸入輸出方式只適用于CPUCPU數(shù)據(jù)處理任務(wù)不繁忙,數(shù)據(jù)處理任務(wù)不繁忙,而且外部設(shè)備數(shù)較少的情況。而且外部設(shè)備數(shù)較少的情況。 程序傳送方式可分為無條件傳送和有條件傳送兩種:程序傳送方式可分為無條件傳送和有條件傳送兩種: 1 1、無條件傳送、無條件傳送( (又稱同步傳送又稱同步傳送) ) 這種傳送方式這種傳送方式只對(duì)固定的外設(shè)只對(duì)固定的外設(shè)(如開關(guān)、繼電器、(如開關(guān)、繼電器、7 7段碼顯示器、機(jī)械式傳感器等簡(jiǎn)單外設(shè))段碼顯示器、機(jī)械式傳感器等簡(jiǎn)單外設(shè))在規(guī)定的時(shí)間用在規(guī)定的

23、時(shí)間用ININ或或OUTOUT指令來進(jìn)行信息的的輸入或輸出,其實(shí)質(zhì)是用程指令來進(jìn)行信息的的輸入或輸出,其實(shí)質(zhì)是用程序來定時(shí)同步傳送數(shù)據(jù)。序來定時(shí)同步傳送數(shù)據(jù)。 對(duì)少量數(shù)據(jù)傳送來說,它是最省時(shí)間的一種傳送方法,對(duì)少量數(shù)據(jù)傳送來說,它是最省時(shí)間的一種傳送方法,適用于各類巡回檢測(cè)和過程控制。一般的說,這些外設(shè)隨適用于各類巡回檢測(cè)和過程控制。一般的說,這些外設(shè)隨時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備,而無需檢測(cè)其狀態(tài)。時(shí)做好了數(shù)據(jù)傳送的準(zhǔn)備,而無需檢測(cè)其狀態(tài)。 2 2、條件傳送、條件傳送( (又稱程序查詢傳送,異步傳送又稱程序查詢傳送,異步傳送) ) 它是一種程序查詢,但與前述的無條件的同步傳送不同,它是一種程序查詢

24、,但與前述的無條件的同步傳送不同,是有條件的。是有條件的。此條件是:在執(zhí)行輸入或輸出指令前,要先查此條件是:在執(zhí)行輸入或輸出指令前,要先查詢接口中狀態(tài)寄存器的狀態(tài)。詢接口中狀態(tài)寄存器的狀態(tài)。輸入時(shí),由其指示要輸入的數(shù)輸入時(shí),由其指示要輸入的數(shù)據(jù)是否據(jù)是否“準(zhǔn)備就緒準(zhǔn)備就緒”;而輸出時(shí),又由它指示輸出設(shè)備是否而輸出時(shí),又由它指示輸出設(shè)備是否“空閑空閑”,由此條件來決定執(zhí)行輸入或輸出。由此條件來決定執(zhí)行輸入或輸出。 圖圖6.3 查詢工作方式示意圖查詢工作方式示意圖 (1) (1) 單一外設(shè)的查詢工作單一外設(shè)的查詢工作數(shù)據(jù)輸出口和狀態(tài)輸入口共用一個(gè)地址。數(shù)據(jù)輸出口和狀態(tài)輸入口共用一個(gè)地址。 (2)

25、(2) 多個(gè)外設(shè)查詢方式工作多個(gè)外設(shè)查詢方式工作 CPUCPU逐個(gè)外設(shè)進(jìn)行查詢,若發(fā)現(xiàn)哪個(gè)外設(shè)準(zhǔn)備就逐個(gè)外設(shè)進(jìn)行查詢,若發(fā)現(xiàn)哪個(gè)外設(shè)準(zhǔn)備就緒,就對(duì)該外設(shè)實(shí)施數(shù)據(jù)傳送。緒,就對(duì)該外設(shè)實(shí)施數(shù)據(jù)傳送。 讀入的數(shù)據(jù)是位讀入的數(shù)據(jù)是位, ,而而讀入的狀態(tài)信息往往是讀入的狀態(tài)信息往往是位,如圖位,如圖6.66.6所示。所以所示。所以, ,不同的外設(shè)其狀態(tài)信息可不同的外設(shè)其狀態(tài)信息可以使用同一個(gè)端口,但只以使用同一個(gè)端口,但只要使用不同的位就行。要使用不同的位就行。 這種查詢輸入方式的程這種查詢輸入方式的程序流程圖如圖序流程圖如圖6.76.7所示。所示。 查詢輸入部分的程序:查詢輸入部分的程序: POLL:

26、POLL:IN AL,STATUSPORT ;IN AL,STATUSPORT ;讀狀態(tài)端口的信息讀狀態(tài)端口的信息 TEST AL,80TEST AL,80 ; ;設(shè)設(shè)“準(zhǔn)備就緒準(zhǔn)備就緒”(READY)(READY)信信息息 在在D7D7位位 JE POLL ;JE POLL ;未未“準(zhǔn)備就緒準(zhǔn)備就緒”,則循環(huán)再,則循環(huán)再查查 IN AL,DATA_PORT ;IN AL,DATA_PORT ;已已“準(zhǔn)備就緒準(zhǔn)備就緒”(READY=1),(READY=1),則則 讀入數(shù)據(jù)讀入數(shù)據(jù) )程序查詢輸出程序查詢輸出 同樣的同樣的, ,在輸出時(shí)也必須了解外設(shè)的狀態(tài),看外設(shè)是在輸出時(shí)也必須了解外設(shè)的狀態(tài),

27、看外設(shè)是否有否有“空閑空閑”( (即外設(shè)數(shù)鎖存器已空,或未正處于輸出狀態(tài)即外設(shè)數(shù)鎖存器已空,或未正處于輸出狀態(tài)),),若若有有 “ “ 空閑空閑 ” ”,則,則 執(zhí)行輸執(zhí)行輸 出指令;否則出指令;否則 就等待再查。就等待再查。 因此,接口電因此,接口電 路中也必須要路中也必須要 有狀態(tài)信息的有狀態(tài)信息的 端口,其方框端口,其方框 圖如圖圖如圖6.86.8所所 示。示。 輸出過程輸出過程: :當(dāng)輸出裝置把輸出的數(shù)據(jù)輸出以后,當(dāng)輸出裝置把輸出的數(shù)據(jù)輸出以后,發(fā)出一個(gè)發(fā)出一個(gè)(Acknowledge)(Acknowledge)信號(hào),使觸發(fā)器置信號(hào),使觸發(fā)器置“”,也即使也即使“BUSY”BUSY”線

28、為線為0(Empty0(EmptyBUSY),BUSY),當(dāng)輸入這個(gè)狀當(dāng)輸入這個(gè)狀態(tài)信息后態(tài)信息后( (經(jīng)經(jīng)337 7),知道外設(shè)為),知道外設(shè)為“空空”,于是就執(zhí)行,于是就執(zhí)行輸出指令。待輸出指令執(zhí)行后,由地址信號(hào)和輸出指令。待輸出指令執(zhí)行后,由地址信號(hào)和/ /及及相相“與與”, ,經(jīng)經(jīng)1 1發(fā)出選通信號(hào)發(fā)出選通信號(hào), ,把在數(shù)據(jù)總線上的輸出把在數(shù)據(jù)總線上的輸出數(shù)據(jù)送至鎖存器;同時(shí),觸發(fā)觸發(fā)器為數(shù)據(jù)送至鎖存器;同時(shí),觸發(fā)觸發(fā)器為“”狀態(tài)狀態(tài), ,它一它一方面通知外設(shè):輸出數(shù)據(jù)已準(zhǔn)備好,可以執(zhí)行輸出操作,方面通知外設(shè):輸出數(shù)據(jù)已準(zhǔn)備好,可以執(zhí)行輸出操作,另一方面在數(shù)據(jù)由輸出裝置輸出以前,一直為

29、另一方面在數(shù)據(jù)由輸出裝置輸出以前,一直為“”, ,告知告知(CPU(CPU通過讀狀態(tài)端口知道通過讀狀態(tài)端口知道) )外設(shè)外設(shè)“”,阻止,阻止輸出新的數(shù)據(jù)。輸出新的數(shù)據(jù)。 查詢式輸出的端口信與程序流程圖分別如圖查詢式輸出的端口信與程序流程圖分別如圖6.96.9與與6.106.10所示。所示。 查詢輸出部分的程序:查詢輸出部分的程序: POLL: IN AL,STATUS_PORT ;POLL: IN AL,STATUS_PORT ;查狀態(tài)端口中的狀態(tài)信息查狀態(tài)端口中的狀態(tài)信息D7 D7 TEST AL TEST AL,80H 80H JNE POLL JNE POLL; ;D7;D71 1即忙線

30、即忙線1,1,則循環(huán)再查則循環(huán)再查 MOV ALMOV AL,STORE STORE ; ;否則否則, ,外設(shè)空閑外設(shè)空閑, ,由內(nèi)存讀取數(shù)據(jù)由內(nèi)存讀取數(shù)據(jù) OUT DATA_PORT,AL ;OUT DATA_PORT,AL ;輸出到輸出到DATADATA地址端口單元地址端口單元 其中其中,STATUS,STATUS和和TATATATA分別為狀態(tài)端口和數(shù)據(jù)端口的符號(hào)址;分別為狀態(tài)端口和數(shù)據(jù)端口的符號(hào)址;STORESTORE為待輸出為待輸出數(shù)據(jù)的內(nèi)存單元的符號(hào)地址。數(shù)據(jù)的內(nèi)存單元的符號(hào)地址。 ) )一個(gè)采用查詢方式的數(shù)據(jù)采集系統(tǒng)一個(gè)采用查詢方式的數(shù)據(jù)采集系統(tǒng) 一個(gè)有個(gè)模擬量輸入的數(shù)據(jù)采集系統(tǒng),

31、用查詢方式一個(gè)有個(gè)模擬量輸入的數(shù)據(jù)采集系統(tǒng),用查詢方式與傳送信息,電路如圖與傳送信息,電路如圖6.116.11所示。所示。 8 8個(gè)輸入模擬量,經(jīng)過多路開關(guān)個(gè)輸入模擬量,經(jīng)過多路開關(guān)它由端口它由端口4 4輸出的輸出的3 3位二進(jìn)制碼(位二進(jìn)制碼(D2D2、D1D1、D0D0)控制)控制(000(000相應(yīng)于相應(yīng)于UA0UA0輸入輸入相應(yīng)于相應(yīng)于UA7UA7輸入輸入) ),每次送出一個(gè)模擬量至,每次送出一個(gè)模擬量至轉(zhuǎn)換器;同時(shí),轉(zhuǎn)換器由端口轉(zhuǎn)換器;同時(shí),轉(zhuǎn)換器由端口4 4輸出的輸出的4 4位控制啟位控制啟動(dòng)與停止。轉(zhuǎn)換器的信號(hào)由端口動(dòng)與停止。轉(zhuǎn)換器的信號(hào)由端口2 2的的0 0輸至數(shù)據(jù)總線輸至數(shù)據(jù)

32、總線; ;經(jīng)轉(zhuǎn)換后的數(shù)據(jù)由端口經(jīng)轉(zhuǎn)換后的數(shù)據(jù)由端口3 3輸入輸入至數(shù)據(jù)總線。所以,這樣的一個(gè)數(shù)據(jù)采集系統(tǒng),需要用到至數(shù)據(jù)總線。所以,這樣的一個(gè)數(shù)據(jù)采集系統(tǒng),需要用到3 3個(gè)端口,它們有各自的地址。個(gè)端口,它們有各自的地址。 采集過程要求:采集過程要求: (1) (1) 初始化。初始化。 (2) (2) 先停止轉(zhuǎn)換。先停止轉(zhuǎn)換。 (3) (3) 啟動(dòng)轉(zhuǎn)換,查輸入狀態(tài)信息。啟動(dòng)轉(zhuǎn)換,查輸入狀態(tài)信息。 (4) (4) 當(dāng)輸入數(shù)據(jù)已轉(zhuǎn)換完(當(dāng)輸入數(shù)據(jù)已轉(zhuǎn)換完(REAREA1,1,即準(zhǔn)備就緒)即準(zhǔn)備就緒), ,則經(jīng)則經(jīng)由端口輸入至由端口輸入至CPUCPU的累加器的累加器ALAL中中, ,并轉(zhuǎn)送內(nèi)存。并轉(zhuǎn)

33、送內(nèi)存。 (5) (5) 設(shè)置下一個(gè)內(nèi)存單元與下一個(gè)輸入通道設(shè)置下一個(gè)內(nèi)存單元與下一個(gè)輸入通道, ,循環(huán)次循環(huán)次。數(shù)據(jù)采集過程的程序?yàn)椋簲?shù)據(jù)采集過程的程序?yàn)椋?STARE: MOV DL,0F8H ;STARE: MOV DL,0F8H ;設(shè)置啟動(dòng)設(shè)置啟動(dòng)A/DA/D轉(zhuǎn)換的信號(hào)轉(zhuǎn)換的信號(hào), ,且低位選通多路且低位選通多路 開關(guān)通道開關(guān)通道 MOV AX,SEG DSTOR ;MOV AX,SEG DSTOR ;設(shè)置輸入數(shù)據(jù)的內(nèi)存單元地址指針設(shè)置輸入數(shù)據(jù)的內(nèi)存單元地址指針 MOV ES,AXMOV ES,AX LEA DI,DSTOR LEA DI,DSTOR AGAIN AGAIN:MOV A

34、L,DLMOV AL,DL AND AL,0EFH ; AND AL,0EFH ;使使D4D4 OUT 04,AL ;OUT 04,AL ;停止停止A/DA/D轉(zhuǎn)換轉(zhuǎn)換 CALL DELAY ;CALL DELAY ;等待停止等待停止A/DA/D轉(zhuǎn)換操作的完成轉(zhuǎn)換操作的完成 MOV AL,DL MOV AL,DL OUT 04,AL ; OUT 04,AL ;選輸入通道并啟動(dòng)選輸入通道并啟動(dòng)A/DA/D轉(zhuǎn)換轉(zhuǎn)換 POLLPOLL: IN AL,02 ;IN AL,02 ;輸入狀態(tài)信息輸入狀態(tài)信息 SHR AL,1 ;SHR AL,1 ;查查ALAL的的D0D0 JNC POLL ; JNC P

35、OLL ;判判READY=1?READY=1?若若D0=0,D0=0,未準(zhǔn)備好未準(zhǔn)備好, ,則循環(huán)再查則循環(huán)再查 IN AL,03 ;IN AL,03 ;若已準(zhǔn)備就緒若已準(zhǔn)備就緒, ,則經(jīng)端口將采樣數(shù)據(jù)輸入至則經(jīng)端口將采樣數(shù)據(jù)輸入至A A STOSB ; STOSB ;輸入數(shù)據(jù)轉(zhuǎn)送內(nèi)存單元輸入數(shù)據(jù)轉(zhuǎn)送內(nèi)存單元 IN CDL ;IN CDL ;輸入模擬量通道增輸入模擬量通道增1 1 JNE AGAIN ;8 JNE AGAIN ;8個(gè)模擬量未輸入完則循環(huán)個(gè)模擬量未輸入完則循環(huán) ; ;輸入已完輸入已完, ,執(zhí)行別的程序執(zhí)行別的程序 總結(jié)上述程序查詢輸入總結(jié)上述程序查詢輸入/ /輸出傳送方式的執(zhí)行過

36、程輸出傳送方式的執(zhí)行過程, , 其步驟是:其步驟是: ( ()CPU)CPU從從I/OI/O接口的狀態(tài)端口中讀入所尋址的外設(shè)接口的狀態(tài)端口中讀入所尋址的外設(shè)的狀態(tài)的狀態(tài) 信息信息“”“”或或“BUSY”BUSY”。 ( () )根據(jù)讀入的狀態(tài)信息進(jìn)行判斷。程序查詢輸入根據(jù)讀入的狀態(tài)信息進(jìn)行判斷。程序查詢輸入時(shí),若狀態(tài)信息時(shí),若狀態(tài)信息READYREADY0 0,則外設(shè)數(shù)據(jù)未準(zhǔn)備好,則外設(shè)數(shù)據(jù)未準(zhǔn)備好,CPUCPU繼繼續(xù)等待查詢續(xù)等待查詢, ,直至直至READYREADY,外設(shè)已準(zhǔn)備好數(shù)據(jù),外設(shè)已準(zhǔn)備好數(shù)據(jù), ,執(zhí)行下執(zhí)行下一步操作一步操作; ;程序查詢輸出時(shí),若狀態(tài)信息程序查詢輸出時(shí),若狀態(tài)信

37、息BUSYBUSY,則外,則外設(shè)正在設(shè)正在“忙忙”,CPU,CPU繼續(xù)等待查詢繼續(xù)等待查詢, ,直至外設(shè)直至外設(shè)“空閑空閑”,BUSY,BUSY0 0時(shí),執(zhí)行下一步操作。時(shí),執(zhí)行下一步操作。( () )執(zhí)行輸入執(zhí)行輸入/ /輸出指令,進(jìn)行輸出指令,進(jìn)行I/OI/O傳送。完成數(shù)據(jù)的傳送。完成數(shù)據(jù)的輸入輸出,同時(shí)將外設(shè)的狀態(tài)信息復(fù)位,一個(gè)位的數(shù)據(jù)輸入輸出,同時(shí)將外設(shè)的狀態(tài)信息復(fù)位,一個(gè)位的數(shù)據(jù)傳送結(jié)束。傳送結(jié)束。 當(dāng)計(jì)算機(jī)工作任務(wù)較輕或當(dāng)計(jì)算機(jī)工作任務(wù)較輕或CPUCPU不太忙時(shí),可以應(yīng)用程序不太忙時(shí),可以應(yīng)用程序查詢輸入輸出傳送方式查詢輸入輸出傳送方式, ,它能較好地協(xié)調(diào)外設(shè)與它能較好地協(xié)調(diào)外設(shè)與

38、CPUCPU之間定之間定時(shí)的差別;程序和接口電路比較簡(jiǎn)單。其主要缺點(diǎn)是時(shí)的差別;程序和接口電路比較簡(jiǎn)單。其主要缺點(diǎn)是:CPU:CPU必必須作程序等待循環(huán)須作程序等待循環(huán), ,不斷測(cè)試外設(shè)的狀態(tài)不斷測(cè)試外設(shè)的狀態(tài), ,直至外設(shè)為交換數(shù)直至外設(shè)為交換數(shù)據(jù)準(zhǔn)備就緒時(shí)為止。這種循環(huán)等待方式很花費(fèi)時(shí)間,大大降據(jù)準(zhǔn)備就緒時(shí)為止。這種循環(huán)等待方式很花費(fèi)時(shí)間,大大降低了低了CPUCPU的運(yùn)行效率。的運(yùn)行效率。 程序查詢傳送方式不僅要降低程序查詢傳送方式不僅要降低CPUCPU的運(yùn)行效率,而的運(yùn)行效率,而且,在一般實(shí)時(shí)控制系統(tǒng)中,往往有數(shù)十乃至數(shù)百個(gè)外且,在一般實(shí)時(shí)控制系統(tǒng)中,往往有數(shù)十乃至數(shù)百個(gè)外設(shè),由于它們的

39、工作速度不同,要求設(shè),由于它們的工作速度不同,要求CPUCPU為它們服務(wù)是為它們服務(wù)是隨機(jī)的,有些要求很急迫,若用查詢方式除浪費(fèi)大量等隨機(jī)的,有些要求很急迫,若用查詢方式除浪費(fèi)大量等待查詢時(shí)間外,還很難使每一個(gè)外設(shè)都能工作在最佳工待查詢時(shí)間外,還很難使每一個(gè)外設(shè)都能工作在最佳工作狀態(tài)。作狀態(tài)。 為了提高為了提高CPUCPU執(zhí)行有效程序的工作效率和提高系統(tǒng)執(zhí)行有效程序的工作效率和提高系統(tǒng)中多臺(tái)外設(shè)的工作效率,可以讓外設(shè)處于能主動(dòng)申請(qǐng)中中多臺(tái)外設(shè)的工作效率,可以讓外設(shè)處于能主動(dòng)申請(qǐng)中斷的工作方式,這在有多個(gè)外設(shè)及速度不匹配時(shí),尤為斷的工作方式,這在有多個(gè)外設(shè)及速度不匹配時(shí),尤為重要。重要。7.2.

40、2 7.2.2 中斷傳送中斷傳送 所謂所謂中斷中斷是外設(shè)或其它中斷源中止是外設(shè)或其它中斷源中止CPUCPU當(dāng)前正在執(zhí)行當(dāng)前正在執(zhí)行的程序,而轉(zhuǎn)向?yàn)樵撏庠O(shè)服務(wù)(如完成它與的程序,而轉(zhuǎn)向?yàn)樵撏庠O(shè)服務(wù)(如完成它與CPUCPU之間傳送之間傳送一個(gè)數(shù)據(jù))的程序,一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工一個(gè)數(shù)據(jù))的程序,一旦服務(wù)結(jié)束,又返回原程序繼續(xù)工作。作。 這樣,外設(shè)處理數(shù)據(jù)期間,這樣,外設(shè)處理數(shù)據(jù)期間,CPUCPU就不必浪費(fèi)大量的時(shí)就不必浪費(fèi)大量的時(shí)間去查詢他們的狀態(tài),只待外設(shè)處理完畢主動(dòng)向間去查詢他們的狀態(tài),只待外設(shè)處理完畢主動(dòng)向CPUCPU提出提出請(qǐng)求(向請(qǐng)求(向CPUCPU發(fā)出中斷請(qǐng)求信號(hào)),而發(fā)出中

41、斷請(qǐng)求信號(hào)),而CPUCPU在每一條指令執(zhí)在每一條指令執(zhí)行的結(jié)尾階段,均查詢是否有中斷請(qǐng)求信號(hào)行的結(jié)尾階段,均查詢是否有中斷請(qǐng)求信號(hào)(這種查詢是(這種查詢是由硬件完成的,不占用由硬件完成的,不占用CPUCPU的工作時(shí)間),若有,則暫停的工作時(shí)間),若有,則暫停執(zhí)行現(xiàn)行的程序,轉(zhuǎn)去為申請(qǐng)中斷的某個(gè)外設(shè)服務(wù),以完執(zhí)行現(xiàn)行的程序,轉(zhuǎn)去為申請(qǐng)中斷的某個(gè)外設(shè)服務(wù),以完成數(shù)據(jù)傳送。成數(shù)據(jù)傳送。 中斷傳送方式的好處是:大大提高了中斷傳送方式的好處是:大大提高了CPUCPU的工作效率。的工作效率。 中斷傳送方式的特點(diǎn):中斷傳送方式的特點(diǎn): 雖然程序中斷功能參與了控制,但數(shù)據(jù)的傳輸仍然要雖然程序中斷功能參與了控

42、制,但數(shù)據(jù)的傳輸仍然要靠在程序中排入靠在程序中排入I/OI/O指令完成。這一點(diǎn)和程序直接控制輸入輸指令完成。這一點(diǎn)和程序直接控制輸入輸出方式是相同的。出方式是相同的。 外部設(shè)備要求與外部設(shè)備要求與CPUCPU傳輸數(shù)據(jù)的狀態(tài)信息,不是用指令傳輸數(shù)據(jù)的狀態(tài)信息,不是用指令輸入和測(cè)試的,而是從輸入和測(cè)試的,而是從CPUCPU的中斷請(qǐng)求輸入端直接加入的。的中斷請(qǐng)求輸入端直接加入的。 正正是由于是由于CPUCPU具有響應(yīng)外部中斷請(qǐng)求的能力,避免了用指令查詢具有響應(yīng)外部中斷請(qǐng)求的能力,避免了用指令查詢外部設(shè)備狀態(tài)造成的大量時(shí)間浪費(fèi),從而使系統(tǒng)的時(shí)間利用率外部設(shè)備狀態(tài)造成的大量時(shí)間浪費(fèi),從而使系統(tǒng)的時(shí)間利用

43、率大大提高了大大提高了。 中斷控制輸入輸出是靠硬件和軟件相配合實(shí)現(xiàn)的。中斷控制輸入輸出是靠硬件和軟件相配合實(shí)現(xiàn)的。 與程序直接控制輸入輸出相比較,中斷控制輸入輸出大與程序直接控制輸入輸出相比較,中斷控制輸入輸出大大提高了大提高了CPUCPU的時(shí)間利用率,的時(shí)間利用率, 這是這種輸入輸出方式的這是這種輸入輸出方式的主要主要優(yōu)點(diǎn)優(yōu)點(diǎn)。 但它實(shí)現(xiàn)起來相對(duì)地復(fù)雜了。一個(gè)微機(jī)系統(tǒng)中,但它實(shí)現(xiàn)起來相對(duì)地復(fù)雜了。一個(gè)微機(jī)系統(tǒng)中, 微微處理器本身必須設(shè)計(jì)得具有響應(yīng)和處理地中斷請(qǐng)求的能力,處理器本身必須設(shè)計(jì)得具有響應(yīng)和處理地中斷請(qǐng)求的能力,而且在組成微機(jī)系統(tǒng)時(shí),往往還需要配有專用的邏輯電路而且在組成微機(jī)系統(tǒng)時(shí),

44、往往還需要配有專用的邏輯電路中斷控制器,共同組成中斷控制機(jī)構(gòu),增強(qiáng)中斷控制和管中斷控制器,共同組成中斷控制機(jī)構(gòu),增強(qiáng)中斷控制和管理的能力。理的能力。 利用程序中斷傳送方式,雖然可以提高利用程序中斷傳送方式,雖然可以提高CPUCPU的工作效的工作效率,但它仍需由率,但它仍需由CPU CPU 通過程序來傳送數(shù)據(jù),并在處理中斷通過程序來傳送數(shù)據(jù),并在處理中斷時(shí),還要時(shí),還要“保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)”和和“恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)”,而這兩部分操作,而這兩部分操作的程序段又與數(shù)據(jù)傳送沒有直接關(guān)系,卻要占用一定時(shí)間,的程序段又與數(shù)據(jù)傳送沒有直接關(guān)系,卻要占用一定時(shí)間,使每傳送一個(gè)字節(jié)大約需要幾十微秒到幾百微秒。這對(duì)高

45、使每傳送一個(gè)字節(jié)大約需要幾十微秒到幾百微秒。這對(duì)高速外設(shè)以及成組交換的場(chǎng)合,就顯的太慢了。速外設(shè)以及成組交換的場(chǎng)合,就顯的太慢了。 7.2.3 7.2.3 直接存儲(chǔ)器存取直接存儲(chǔ)器存取(DMA)(DMA)傳送傳送 直接存儲(chǔ)器存取直接存儲(chǔ)器存取DMA(Direct Memory Access)DMA(Direct Memory Access)又稱又稱為數(shù)據(jù)通道方式,為數(shù)據(jù)通道方式,是一種由專門的硬件電路執(zhí)行是一種由專門的硬件電路執(zhí)行I/OI/O交交換的傳送方式換的傳送方式,它讓外設(shè)接口可直接與內(nèi)存進(jìn)行高速的,它讓外設(shè)接口可直接與內(nèi)存進(jìn)行高速的數(shù)據(jù)傳送,數(shù)據(jù)傳輸不是靠執(zhí)行數(shù)據(jù)傳送,數(shù)據(jù)傳輸不是靠執(zhí)

46、行I/OI/O指令,數(shù)據(jù)不經(jīng)過指令,數(shù)據(jù)不經(jīng)過CPUCPU內(nèi)的任何寄存器,也就不破壞任何寄存器原來存的內(nèi)的任何寄存器,也就不破壞任何寄存器原來存的內(nèi)容,而是在存儲(chǔ)器和外部設(shè)備之間的通路上直接傳輸內(nèi)容,而是在存儲(chǔ)器和外部設(shè)備之間的通路上直接傳輸數(shù)據(jù)。這樣就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類的額外操作,可實(shí)數(shù)據(jù)。這樣就不必進(jìn)行保護(hù)現(xiàn)場(chǎng)之類的額外操作,可實(shí)現(xiàn)對(duì)存儲(chǔ)器的直接存取?,F(xiàn)對(duì)存儲(chǔ)器的直接存取。 這種專門的硬件電路就是這種專門的硬件電路就是DMADMA控制器,簡(jiǎn)稱為控制器,簡(jiǎn)稱為DMACDMAC。 DMADMA的查詢過程:的查詢過程: DMADMA的工作過程大致如下:的工作過程大致如下: 當(dāng)接口準(zhǔn)備就緒當(dāng)接口

47、準(zhǔn)備就緒, ,便向便向DMACDMAC發(fā)發(fā)DMADMA請(qǐng)求請(qǐng)求; ; CPU CPU通過通過HOLDHOLD引腳接收引腳接收DMACDMAC發(fā)出的總線請(qǐng)求;發(fā)出的總線請(qǐng)求; 通常通常CPUCPU在完成當(dāng)前總線操作以后,就會(huì)立即在在完成當(dāng)前總線操作以后,就會(huì)立即在HLDA HLDA 引腳上向引腳上向DMACDMAC發(fā)出允許信號(hào)而響應(yīng)總線請(qǐng)求;發(fā)出允許信號(hào)而響應(yīng)總線請(qǐng)求; 待待CPUCPU將總線置高阻將總線置高阻( (放棄總線控制權(quán)放棄總線控制權(quán)) ); DMA DMA請(qǐng)求得到請(qǐng)求得到DMACDMAC的確認(rèn),的確認(rèn),DMACDMAC開始對(duì)總線實(shí)施控制并向外設(shè)送出開始對(duì)總線實(shí)施控制并向外設(shè)送出DMA

48、DMA的應(yīng)答信號(hào)的應(yīng)答信號(hào), ,同時(shí)送出地址信號(hào)和控制信號(hào),以實(shí)現(xiàn)外設(shè)與內(nèi)存同時(shí)送出地址信號(hào)和控制信號(hào),以實(shí)現(xiàn)外設(shè)與內(nèi)存或內(nèi)存與內(nèi)存的數(shù)據(jù)傳送?;騼?nèi)存與內(nèi)存的數(shù)據(jù)傳送。 數(shù)據(jù)傳送;數(shù)據(jù)傳送; DMAC DMAC將規(guī)定的數(shù)據(jù)傳送完之后,通過向?qū)⒁?guī)定的數(shù)據(jù)傳送完之后,通過向CPUCPU發(fā)發(fā)HOLDHOLD信號(hào)(將信號(hào)(將HOLDHOLD信號(hào)信號(hào)變?yōu)榈碗娖剑蛔優(yōu)榈碗娖剑?DMAC DMAC放棄對(duì)總線的控制,亦即撤消對(duì)總線的請(qǐng)求;放棄對(duì)總線的控制,亦即撤消對(duì)總線的請(qǐng)求; CPU CPU檢測(cè)到檢測(cè)到HOLDHOLD信號(hào)變?yōu)榈碗娖胶?,也將信?hào)變?yōu)榈碗娖胶?,也將HLDAHLDA信號(hào)變?yōu)榈碗娖叫盘?hào)變?yōu)榈碗?/p>

49、平, ,于于是是,CPU,CPU又恢復(fù)對(duì)系統(tǒng)總線的控制權(quán)。又恢復(fù)對(duì)系統(tǒng)總線的控制權(quán)。 歸納起來歸納起來,DMADMA數(shù)據(jù)傳送與程序控制數(shù)據(jù)傳送相比較,數(shù)據(jù)傳送與程序控制數(shù)據(jù)傳送相比較, 首先是傳送途徑不同:程序控制數(shù)據(jù)傳送必須經(jīng)過首先是傳送途徑不同:程序控制數(shù)據(jù)傳送必須經(jīng)過CPU(CPU(其中其中某個(gè)寄存器某個(gè)寄存器) ),而,而DMADMA傳送不經(jīng)過傳送不經(jīng)過CPUCPU。其次,程序控制數(shù)據(jù)傳。其次,程序控制數(shù)據(jù)傳送涉及的源地址、目的地址是由送涉及的源地址、目的地址是由CPUCPU提供的,地址的修改和傳提供的,地址的修改和傳送數(shù)據(jù)塊長(zhǎng)度的控制也由送數(shù)據(jù)塊長(zhǎng)度的控制也由CPUCPU完成,數(shù)據(jù)傳

50、送所需要的控制信完成,數(shù)據(jù)傳送所需要的控制信號(hào)也由號(hào)也由CPUCPU發(fā)出,但發(fā)出,但DMADMA傳送,這一切都由傳送,這一切都由DMADMA控制器提供、控制器提供、 發(fā)出和完成。發(fā)出和完成。 這就是說,本來該由程序完成的數(shù)據(jù)傳送,在這就是說,本來該由程序完成的數(shù)據(jù)傳送,在DMADMA傳送時(shí)傳送時(shí)由硬件取代了。因而不僅減輕了由硬件取代了。因而不僅減輕了CPUCPU的負(fù)擔(dān),而且可以使數(shù)據(jù)的負(fù)擔(dān),而且可以使數(shù)據(jù)傳輸速度大大提高。但是,傳輸速度大大提高。但是,DMADMA傳送必須由程序或中斷方式提傳送必須由程序或中斷方式提供協(xié)助,供協(xié)助,DMADMA傳送的初始化或結(jié)束處理是由程序或中斷服務(wù)完傳送的初始

51、化或結(jié)束處理是由程序或中斷服務(wù)完成的。成的。 中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技中斷是一種十分重要而復(fù)雜的軟硬件相結(jié)合的技術(shù),它的出現(xiàn)給計(jì)算機(jī)結(jié)構(gòu)與應(yīng)用帶來了新的突破。術(shù),它的出現(xiàn)給計(jì)算機(jī)結(jié)構(gòu)與應(yīng)用帶來了新的突破。 ( (一一) ) 中斷中斷 在在CPUCPU執(zhí)行程序過程中,由于某種事件發(fā)生,強(qiáng)迫執(zhí)行程序過程中,由于某種事件發(fā)生,強(qiáng)迫CPUCPU暫時(shí)停止正在執(zhí)行的程序而轉(zhuǎn)向?qū)Πl(fā)生的事件進(jìn)行暫時(shí)停止正在執(zhí)行的程序而轉(zhuǎn)向?qū)Πl(fā)生的事件進(jìn)行處理,事件處理結(jié)束后又能回到原中止的程序,接著中處理,事件處理結(jié)束后又能回到原中止的程序,接著中止前的狀態(tài)繼續(xù)執(zhí)行原來的程序,這一過程稱為止前的狀態(tài)繼續(xù)執(zhí)行

52、原來的程序,這一過程稱為中斷中斷。7.3.1 7.3.1 中斷概述中斷概述7.3 7.3 中斷技術(shù)中斷技術(shù)中斷源中斷源中斷中斷請(qǐng)求請(qǐng)求 當(dāng)當(dāng) 前前 程程 序序中斷中斷服務(wù)服務(wù)程序程序程序斷點(diǎn)程序斷點(diǎn)中斷返回中斷返回中斷響應(yīng)中斷響應(yīng) (二)中斷源(二)中斷源 即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來源。即引起中斷的事件或原因,或發(fā)出中斷申請(qǐng)的來源。通常中斷源有以下幾種通常中斷源有以下幾種 : (1)(1)外部設(shè)備外部設(shè)備: :一般中、慢速外設(shè)如鍵盤、行式打印機(jī)、一般中、慢速外設(shè)如鍵盤、行式打印機(jī)、A/DA/D轉(zhuǎn)換器等,在完成自身的操作后,向轉(zhuǎn)換器等,在完成自身的操作后,向CPUCPU發(fā)出中斷請(qǐng)

53、求發(fā)出中斷請(qǐng)求, ,要求要求CPUCPU為它服務(wù)。對(duì)于高速的外設(shè)如磁盤或磁帶,它可為它服務(wù)。對(duì)于高速的外設(shè)如磁盤或磁帶,它可以向以向CPUCPU提出總線請(qǐng)求,進(jìn)行提出總線請(qǐng)求,進(jìn)行DMADMA傳送。傳送。 (2)(2)實(shí)時(shí)時(shí)鐘實(shí)時(shí)時(shí)鐘:在自動(dòng)控制中,常遇到定時(shí)檢測(cè)與控:在自動(dòng)控制中,常遇到定時(shí)檢測(cè)與控制,這時(shí)可采用外部時(shí)鐘電路制,這時(shí)可采用外部時(shí)鐘電路, ,并可編程控制其定時(shí)間隔。并可編程控制其定時(shí)間隔。當(dāng)需要定時(shí)的時(shí)刻,當(dāng)需要定時(shí)的時(shí)刻,CPUCPU發(fā)出命令發(fā)出命令, ,啟動(dòng)時(shí)鐘電路開始計(jì)時(shí)啟動(dòng)時(shí)鐘電路開始計(jì)時(shí), ,待定時(shí)已到,時(shí)鐘電路就發(fā)中斷申請(qǐng),由待定時(shí)已到,時(shí)鐘電路就發(fā)中斷申請(qǐng),由CP

54、UCPU轉(zhuǎn)向去執(zhí)行轉(zhuǎn)向去執(zhí)行服務(wù)程序。服務(wù)程序。 (3)(3)故障源故障源:計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如發(fā):計(jì)算機(jī)內(nèi)設(shè)有故障自動(dòng)檢測(cè)裝置,如發(fā)生運(yùn)算出錯(cuò)(溢出生運(yùn)算出錯(cuò)(溢出) )、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、存儲(chǔ)器讀出出錯(cuò)、外部設(shè)備故障、電源掉電以及越限報(bào)警等意外事件時(shí),這些裝置都能使電源掉電以及越限報(bào)警等意外事件時(shí),這些裝置都能使CPUCPU中斷,進(jìn)行相應(yīng)的中斷處理。中斷,進(jìn)行相應(yīng)的中斷處理。 以上以上3 3種屬于隨機(jī)中斷源。由隨機(jī)引起的中斷種屬于隨機(jī)中斷源。由隨機(jī)引起的中斷, ,稱為稱為強(qiáng)迫中斷強(qiáng)迫中斷。 (4)(4)為調(diào)試程序設(shè)置的中斷源為調(diào)試程序設(shè)置的中斷源:這是:這是CPUC

55、PU執(zhí)行了特殊執(zhí)行了特殊指令指令( (自陷指令)或由硬件電路引起的中斷自陷指令)或由硬件電路引起的中斷, ,主要是供用主要是供用戶調(diào)試程序時(shí)而采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)戶調(diào)試程序時(shí)而采取的檢查手段。如斷點(diǎn)設(shè)置、單步調(diào)試等試等. .這些都要由中斷系統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為自這些都要由中斷系統(tǒng)實(shí)現(xiàn)。一般稱這種中斷為自愿中斷。愿中斷。 (三)(三) 中斷的類型中斷的類型 8086/80888086/8088微機(jī)最多可以支持微機(jī)最多可以支持256256種中斷,它們被分為種中斷,它們被分為四種類型:四種類型: 異常中斷異常中斷 軟件中斷軟件中斷 外部可屏蔽中斷外部可屏蔽中斷 外部非屏蔽中斷外部非

56、屏蔽中斷 每個(gè)中斷都指定了一個(gè)類型碼,也稱為中斷號(hào)。對(duì)應(yīng)每個(gè)中斷都指定了一個(gè)類型碼,也稱為中斷號(hào)。對(duì)應(yīng)每一種中斷應(yīng)當(dāng)有一個(gè)中斷服務(wù)程序每一種中斷應(yīng)當(dāng)有一個(gè)中斷服務(wù)程序(ISP(ISPInterrupt Interrupt Service Program Service Program ) (1) (1) 異常中斷異常中斷 是指令執(zhí)行過程中引起的內(nèi)部異常操作處理。包括除是指令執(zhí)行過程中引起的內(nèi)部異常操作處理。包括除法錯(cuò)誤異常、調(diào)試異常、斷點(diǎn)中斷等。法錯(cuò)誤異常、調(diào)試異常、斷點(diǎn)中斷等。 異常中斷的例子:異常中斷的例子: 0 0型型除法錯(cuò)誤異常除法錯(cuò)誤異常 1 1型型調(diào)試異常調(diào)試異常 . (2) (2

57、) 軟件中斷軟件中斷 執(zhí)行有定義的執(zhí)行有定義的 INT n INT n 指令而引發(fā)的中斷,稱為軟件指令而引發(fā)的中斷,稱為軟件中斷。軟件中斷進(jìn)一步分為中斷。軟件中斷進(jìn)一步分為BIOSBIOS中斷和中斷和DOSDOS中斷中斷。 軟件中斷使用軟件中斷使用05H05H、10H10H0FFH0FFH中的若干個(gè)中斷號(hào);中的若干個(gè)中斷號(hào); 異常中斷和軟件中斷是由處理器內(nèi)部產(chǎn)生的。異常中斷和軟件中斷是由處理器內(nèi)部產(chǎn)生的。 (3) (3) 外部可屏蔽中斷外部可屏蔽中斷 外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方法,外部可屏蔽中斷是處理器響應(yīng)各種外部硬件中斷的最常用的方法, 通過處理器的通過處理器的I

58、NTRINTR引腳產(chǎn)生引腳產(chǎn)生; 外部可屏蔽中斷受處理器內(nèi)部的中斷允許標(biāo)志位外部可屏蔽中斷受處理器內(nèi)部的中斷允許標(biāo)志位IFIF的控制;的控制; 處理器只有一個(gè)處理器只有一個(gè)INTRINTR引腳可以接受外部可屏蔽中斷請(qǐng)求,為了管理引腳可以接受外部可屏蔽中斷請(qǐng)求,為了管理 眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器眾多的外部中斷源,微機(jī)系統(tǒng)中采用可編程中斷控制器82598259; PC PC系列機(jī)通過兩片系列機(jī)通過兩片82598259級(jí)連可以響應(yīng)級(jí)連可以響應(yīng)1515個(gè)外部中斷源。個(gè)外部中斷源。 (4 4) 外部非屏蔽中斷外部非屏蔽中斷 為外部緊急請(qǐng)求提供服務(wù)的中斷,為外部緊急請(qǐng)求提供服務(wù)的中

59、斷,通過處理器的通過處理器的NMINMI引腳產(chǎn)生引腳產(chǎn)生; NMI NMI與與IFIF標(biāo)志的狀態(tài)無關(guān);標(biāo)志的狀態(tài)無關(guān); NMI NMI有一個(gè)專用的類型號(hào)有一個(gè)專用的類型號(hào)02H02H; 使用非屏蔽中斷的典型例子是電源故障中斷。使用非屏蔽中斷的典型例子是電源故障中斷。 ( (二二) ) 中斷系統(tǒng)及其功能中斷系統(tǒng)及其功能 中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與中斷系統(tǒng)是指為實(shí)現(xiàn)中斷而設(shè)置的各種硬件與軟件軟件, ,包括中斷控制邏輯及相應(yīng)管理中斷的指令。包括中斷控制邏輯及相應(yīng)管理中斷的指令。 中斷系統(tǒng)應(yīng)具有下列功能:中斷系統(tǒng)應(yīng)具有下列功能: 1. 1. 能響應(yīng)中斷、處理能響應(yīng)中斷、處理 中斷與返回中

60、斷與返回 當(dāng)某個(gè)中斷源發(fā)出中斷請(qǐng)求時(shí)當(dāng)某個(gè)中斷源發(fā)出中斷請(qǐng)求時(shí), ,CPUCPU能根據(jù)條件決能根據(jù)條件決定是否響應(yīng)該中斷請(qǐng)求定是否響應(yīng)該中斷請(qǐng)求。若允許響應(yīng),則。若允許響應(yīng),則CPUCPU必須在執(zhí)必須在執(zhí)行完現(xiàn)行指令后行完現(xiàn)行指令后, ,保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)( (即把斷點(diǎn)處的即把斷點(diǎn)處的PCPC值值和各寄存器的內(nèi)容與標(biāo)志位的狀態(tài)推入堆棧和各寄存器的內(nèi)容與標(biāo)志位的狀態(tài)推入堆棧),),然后再然后再轉(zhuǎn)到需要處理的中斷服務(wù)程序的入口,同時(shí)轉(zhuǎn)到需要處理的中斷服務(wù)程序的入口,同時(shí), ,清除中斷清除中斷請(qǐng)求觸發(fā)器。當(dāng)處理完中斷服務(wù)程序后請(qǐng)求觸發(fā)器。當(dāng)處理完中斷服務(wù)程序后, ,再恢復(fù)現(xiàn)場(chǎng)和再恢復(fù)現(xiàn)場(chǎng)和

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論