第6章 輸入.ppt_第1頁
第6章 輸入.ppt_第2頁
第6章 輸入.ppt_第3頁
第6章 輸入.ppt_第4頁
第6章 輸入.ppt_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、6.1 I/O 概 述 補存 輸入/輸出傳送方式 6.2 MCS-51單片機的中斷系統(tǒng) * 7.1 定時/計數(shù)器 7.2 串行通信接口,輸入/輸出、 中斷、 定時與串行通信,6.1 I/O 概 述,6.1.1 I/O接口電路的作用 一個計算機系統(tǒng)的組成, 除了CPU、 存儲器外, 還必須有外部設(shè)備。 計算機通過輸入/輸出設(shè)備和外界進行通信。 計算機所用的數(shù)據(jù)以及現(xiàn)場采集的各種信息都要通過輸入設(shè)備送到計算機; 而計算的結(jié)果和計算機產(chǎn)生的各種控制信號又需通過輸出設(shè)備輸出到外部設(shè)備。,計算機的I/O操作, 即CPU和外部設(shè)備之間的數(shù)據(jù)傳送卻十分復(fù)雜。 主要表現(xiàn)在以下幾個方面: (1) 外部設(shè)備的工作

2、速度與計算機相比要低得多。 (2) 外部設(shè)備的種類繁多, 有機械式、 機電式及電子式等等。 (3) 外部設(shè)備的數(shù)據(jù)信號是多種多樣的, 既有電壓信號, 也有電流信號; 既有數(shù)字量, 還有模擬量。 (4) 外部設(shè)備的數(shù)據(jù)傳送有近距離的, 也有遠距離的; 有的使用并行數(shù)據(jù)傳送, 而有的則使用串行傳送數(shù)據(jù)。,具體說來, 接口電路主要有以下幾項功能: (1) 速度協(xié)調(diào) (2) 數(shù)據(jù)鎖存如輸出鎖存 (3) 三態(tài)緩沖如多數(shù)據(jù)源輸入 (4) 數(shù)據(jù)轉(zhuǎn)換,6.1.2 接口與端口 “接口”一詞是從英文interface翻譯過來的, 具有界面、 相互聯(lián)系等含義。 接口這個術(shù)語在計算機領(lǐng)域中應(yīng)用十分廣泛。 本章所講述的

3、接口則特指計算機與外設(shè)之間在數(shù)據(jù)傳送方面的聯(lián)系, 其功能主要是通過電路實現(xiàn)的, 因此稱之為接口電路, 簡稱接口。 端口是指那些在接口電路用以完成某種信息傳送,并可由編程人員進行尋址讀寫的寄存器。,6.1.3 I/O的編址方式 存儲器是對存儲單元進行編址, 而接口電路則是對其中的端口進行編址。 對端口編址是為I/O操作而進行的, 因此也稱為I/O編址。 常用的I/O編址有兩種方式: 獨立編址方式和統(tǒng)一編址方式(混合編址)。 1. 獨立編址方式8088 不減少內(nèi)存的實際容量,但指令系統(tǒng)復(fù)雜 2. 統(tǒng)一編址方式51 與上面正好相反,且指令所占空間和時間較大,補充 輸入/輸出傳送方式,1 無條件傳送方

4、式 在CPU與有些設(shè)備交換數(shù)據(jù)時,可以認為它們總是處于“就緒”狀態(tài),隨時可以進行數(shù)據(jù)傳送,這就是無條件傳送,或稱立即傳送、同步傳送 。 適合于簡單設(shè)備,如LED數(shù)碼管、按鍵或按鈕等; 也適用于工作速度極快的設(shè)備 無條件傳送的接口和操作均十分簡單 這種傳送有前提:外設(shè)必須隨時就緒,2 查詢傳送方式 查詢傳送又稱為條件傳送, 即數(shù)據(jù)的傳送是有條件的。 在輸入/輸出之前, 先要檢測外設(shè)的狀態(tài), 以了解外設(shè)是否已為數(shù)據(jù)輸入輸出作好了準備, 只有在確認外設(shè)已“準備好”的情況下, CPU才能執(zhí)行數(shù)據(jù)輸入/輸出操作。 通常把通過程序?qū)ν庠O(shè)狀態(tài)的檢測稱之為“查詢”, 所以這種有條件的傳送方式又叫做程序查詢方式

5、。查詢的流程圖如圖51所示。,圖51 查詢方式流程圖,3 中斷傳送方式 查詢傳送方式需要CPU不停地詢問,浪費CPU資源。中斷方式則是在外設(shè)為數(shù)據(jù)傳送作好準備之后,就向CPU發(fā)出中斷請求信號(相當(dāng)于通知CPU),CPU接收到中斷請求信號之后立即作出響應(yīng),暫停正在執(zhí)行的原程序(主程序),而轉(zhuǎn)去為外設(shè)的數(shù)據(jù)輸入輸出服務(wù),待服務(wù)完之后,程序返回,CPU再繼續(xù)執(zhí)行被中斷的原程序。,由于CPU的工作速度很快,傳送1次數(shù)據(jù)(包括轉(zhuǎn)入中斷和退出中斷)所需的時間很短。對外設(shè)來講,似乎是對CPU發(fā)出數(shù)據(jù)傳送請求的瞬間,CPU就實現(xiàn)了;對主程序來講,雖然中斷了1個瞬間,但由于時間很短,也不會有什么影響。 以“送磚

6、工”為例,請同學(xué)們總結(jié)優(yōu)缺點。 無條件 查詢 中斷,6.2 MCS-51單片機的中斷系統(tǒng),6.2.1 中斷的概念(注意和子程序調(diào)用的區(qū)別) 計算機暫時中止正在執(zhí)行的主程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,并在中斷服務(wù)程序執(zhí)行完了之后能自動回到原主程序處繼續(xù)執(zhí)行,這個過程叫做“中斷”。 中斷需要解決兩個主要問題:一是如何從主程序轉(zhuǎn)到中斷服務(wù)程序;二是如何從中斷服務(wù)程序返回主程序。,大體說來,采用中斷系統(tǒng)改善了計算機的性能,主要表現(xiàn)在以下幾個方面: (1)有效地解決了快速CPU與慢速外設(shè)之間的矛盾,可使CPU與外設(shè)并行工作,大大提高了工作效率。(如同時掛載led燈、鍵盤、打印機) (2)可以及時處理控制系統(tǒng)

7、中許多隨機產(chǎn)生的參數(shù)與信息,即計算機具有實時處理的能力,從而提高了控制系統(tǒng)的性能。(如美國國家導(dǎo)彈防御系統(tǒng) ) (3)使系統(tǒng)具備了處理故障的能力,提高了系統(tǒng)自身的可靠性。 (如筆記本防摔系統(tǒng)) 涉及到如下概念:中斷源、中斷優(yōu)先級、中斷響應(yīng)的條件、過程與時間。,6.2.2 中斷源 所謂中斷源就是引起中斷的事件,亦即是什么部件要求中斷。 對于各種計算機來說,其中斷源的允許數(shù)目是不一樣的,例如Z80允許128個中斷源(不包括非屏蔽中斷),而8086/8088則允許256個中斷源。MCS-51單片機相對來說較為簡單,只提供了5個中斷源:2個外部中斷請求 和 個片內(nèi)定時器/計數(shù)器T0和T1的溢出中斷請求

8、TF0和TF1及串行口中斷請求TI或RI(合為一個中斷源)。,MCS-51單片機5個中斷源的中斷請求信號分別鎖存在特殊功能寄存器TCON和SCON中: (1)TCON為定時/計數(shù)器控制寄存器,字節(jié)地址為88H,其中鎖存的中斷源請求標志如表51所示。,表64 TCON鎖存的中斷源,TF1:定時器1溢出標志位。當(dāng)字時器1計滿溢出時,由硬件使TF1置“1”,并且申請中斷。進入中斷服務(wù)程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。 TF0:定時器0溢出標志。其功能及操作情況同TF1。 IE1:外部中斷1請求標志。 IT1:外部中斷1觸發(fā)方式選擇位。0,低電平觸發(fā);1,負跳沿觸發(fā)。 IE0:外

9、部中斷0請求標志。 IT0:外部中斷0觸發(fā)方式選擇位。,(2)SCON串行口控制寄存器,字節(jié)地址為98H。 SCON的低2位鎖存串行口的接收中斷和發(fā)送中斷標志,兩個中斷源的撤銷都需要軟件復(fù)位。 注意:中斷請求標志為兩個,但是中斷服務(wù)程序入口只有一個。,表66 SCON鎖存的中斷源,各中斷源所對應(yīng)的中斷服務(wù)程序的入口地址如下: 中斷源 入口地址 外部中斷 0003H 定時器T0中斷 000BH 外部中斷 0013H 定時器T1中斷 001BH 串行口中斷 0023H,TI:串行口發(fā)送中斷標志。在串行口以方式0發(fā)送時,每當(dāng)發(fā)送完8位數(shù)據(jù)后,由硬件置位TI;若以方式1、2、3發(fā)送時,在發(fā)送停止位的開

10、始時置位TI。TI=1表示串行口發(fā)送器正在向CPU申請中斷。值得注意的是當(dāng)CPU響應(yīng)該中斷后,轉(zhuǎn)向中斷服務(wù)程序時并不復(fù)位TI,TI必須由用戶在中斷服務(wù)程序中用軟件清0(可用CLRTI或其它指令)。,RI:串行口接收中斷標志。若串行口接收器允許接收并以方式0工作,則每當(dāng)接收到第8位數(shù)據(jù)時置位RI;若以方式1、2、3工作,且SM2=0時,則每當(dāng)接收器接收到停止位的中間時置位RI;當(dāng)串行口以方式2或方式3工作,且SM2=1時,僅當(dāng)接收到的第9位數(shù)據(jù)RB8為1后,同時還要接收到停止位的中間時置位RI。RI為1表示串行口接收器正向CPU申請中斷,同樣RI必須由用戶在中斷服務(wù)程序中清0。8031復(fù)位后,S

11、CON也被清0。,6.2.3 中斷的優(yōu)先級 由于中斷是隨機產(chǎn)生的,中斷源一般又不止1個,因此往往會出現(xiàn)這樣的情況:幾個中斷源同時請求中斷;或者當(dāng)某一個中斷正在響應(yīng)中(即正在執(zhí)行該中斷源的中斷服務(wù)程序),又有其它的中斷源請求中斷,這時中斷系統(tǒng)應(yīng)如何處理呢?,在一般情況下,首先把各個中斷源分成若干個優(yōu)先級,然后再按如下原則進行處理: (1)不同級的中斷源同時申請中斷時先高后低; (2)同級的中斷源同時申請中斷時事先規(guī)定; (3)處理低級中斷又收到高級中斷請求時停低轉(zhuǎn)高; (4)處理高級中斷又收到低級中斷請求時高不理低。 MCS-51單片機的中斷系統(tǒng)對優(yōu)先級的控制比較簡單,只規(guī)定了兩個中斷優(yōu)先級,對

12、于每一個中斷源均可編程為高優(yōu)先級中斷或低優(yōu)先級中斷。,在同1個優(yōu)先級中,對5個中斷源的優(yōu)先次序安排如下: 外部中斷0(IE0) 定時器/計數(shù)器T0溢出中斷(TF0) 外部中斷1(IE1) 定時器/計數(shù)器T1溢出中斷(TF1) 串行口中斷(RI+TI),中斷優(yōu)先級控制器IP。其中: PX0:外部中斷0優(yōu)先級控制位。 PT0:定時器0中斷優(yōu)先級控制位。 PX1:外部中斷1優(yōu)先級控制位。 PT1:定時器1中斷優(yōu)先級控制位。 PS:串行口中斷優(yōu)先級控制位。 上面優(yōu)先級控制位規(guī)定1為高優(yōu)先級,0為低優(yōu)先級。,6.2.4 中斷響應(yīng)的條件、過程與時間 1.中斷響應(yīng)的條件 單片機響應(yīng)中斷的條件為中斷源有請求(

13、中斷允許寄存器IE相應(yīng)位置1),且CPU開中斷(即EA=1)。這樣,在每個機器周期內(nèi),單片機對所有中斷源都進行順序檢測,并可在任1個周期的S6期間,找到所有有效的中斷請求,還對其優(yōu)先級進行排隊。,但是,必須滿足下列條件: (1)無同級或高級中斷正在服務(wù); (2)現(xiàn)行指令執(zhí)行到最后1個機器周期且已結(jié)束; (3)若現(xiàn)行指令為RETI或需訪問特殊功能寄存器IE或IP的指令時,執(zhí)行完該指令且緊隨其后的另1條指令也已執(zhí)行完。 單片機便在緊接著的下1個機器周期的S1期間響應(yīng)中斷。否則,將丟棄中斷查詢的結(jié)果。 中斷查詢由硬件自動完成。,2.中斷響應(yīng)過程 單片機一旦響應(yīng)中斷,首先對相應(yīng)的優(yōu)先級有效觸發(fā)器置位。

14、然后執(zhí)行1條由硬件產(chǎn)生的子程序調(diào)用指令,把斷點地址壓入堆棧,再把與各中斷源對應(yīng)的中斷服務(wù)程序的入口地址送入程序計數(shù)器PC,同時清除中斷請求標志(串行口中斷和外部電平觸發(fā)中斷除外),從而程序便轉(zhuǎn)移到中斷服務(wù)程序。以上過程均由中斷系統(tǒng)自動完成。 中斷服務(wù)完成后注意RETI的使用和斷點的恢復(fù)。,各中斷源所對應(yīng)的中斷服務(wù)程序的入口地址如下: 中斷源 入口地址 外部中斷 0003H 定時器T0中斷 000BH 外部中斷 0013H 定時器T1中斷 001BH 串行口中斷 0023H,CPU從上面相應(yīng)的地址開始執(zhí)行中斷服務(wù)程序直到遇到1條RETI指令為止。RETI指令表示中斷服務(wù)程序的結(jié)束。CPU執(zhí)行該指

15、令,一方面清除中斷響應(yīng)時所置位的優(yōu)先級有效觸發(fā)器;另一方面從堆棧棧頂彈出斷點地址送入程序計數(shù)器PC,從而返回主程序。若用戶在中斷服務(wù)程序的開始安排了保護現(xiàn)場指令(一般均為相應(yīng)寄存器內(nèi)容入?;蚋鼡Q工作寄存器區(qū)),則在RETI指令前應(yīng)有恢復(fù)現(xiàn)場指令(相應(yīng)寄存器內(nèi)容出?;驌Q回原工作寄存器區(qū))。,3.中斷響應(yīng)時間 所謂中斷響應(yīng)時間是指從查詢中斷請求標志位到轉(zhuǎn)入中斷服務(wù)程序入口地址所需的機器周期數(shù)(對單一中斷源而言)。 響應(yīng)中斷最短需要3個機器周期。若CPU查詢中斷請求標志的周期正好是執(zhí)行1條指令的最后1個機器周期,則不需等待就可以響應(yīng)。而響應(yīng)中斷執(zhí)行1條長調(diào)用指令需要2個機器周期,加上查詢的1個機器周

16、期,一共需要3個機器周期才開始執(zhí)行中斷服務(wù)程序。 最壞情況下需要8個機器周期。,6.2.5 MCS-51單片機的中斷系統(tǒng) (1)所有中斷的總開關(guān)EA (2)各個中斷的子開關(guān)IE (3)各個中斷的優(yōu)先級IP,圖63 MCS-51的中斷系統(tǒng),6.2.6外部中斷及中斷請求的撤除 1.外部中斷 MCS-51單片機的中斷系統(tǒng)有2個外部中斷源,引腳信號為 和 (即P3.2和P3.3)。其中斷請求觸發(fā)信號有電平觸發(fā)和邊沿觸發(fā)兩種,當(dāng)TCON寄存器中的IT0位和IT1位為“0”時采用電平觸發(fā);為“1”時采用邊沿觸發(fā)。,2.中斷請求的撤除 CPU響應(yīng)中斷請求后,在中斷返回(執(zhí)行RETI指令)前,必須撤除請求,否

17、則會錯誤地再一次引起中斷過程。 如前所述,對于定時器T0與T1的中斷請求及邊沿觸發(fā)方式的外部中斷0和1來說,CPU在響應(yīng)中斷后用硬件清除了相應(yīng)的中斷請求標志TF0、TF1、IE0與IE1,即自動撤除了中斷請求。 電平觸發(fā)方式的IE0與IE1需要電路和程序配合。,S為異步置1端。,INSVR:ANL P1,#0FEH ORL P1,#01H RETI END,6.3 中斷應(yīng)用舉例 在中斷服務(wù)程序編程時,首先要對中斷系統(tǒng)進行初始化,也就是對幾個特殊功能寄存器的有關(guān)控制位進行賦值。具體來說,就是要完成下列工作: (1)開中斷和允許中斷源中斷; (2)確定各中斷源的優(yōu)先級; (3)若是外部中斷,則應(yīng)規(guī)

18、定是電平觸發(fā)還是邊沿觸發(fā)。 (4)編寫中斷服務(wù)程序,處理中斷請求。,例1:若規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級,試寫出有關(guān)的初始化程序。 解:一般可采用位操作指令來實現(xiàn): SETB EA ;開中斷 SETB EX0 ;允許外中斷0中斷 SETB PX0 ;外中斷0定為高優(yōu)先級 CLR IT0 ;電平觸發(fā),例2:若規(guī)定外部中斷1為邊沿觸發(fā)方式,低優(yōu)先級,在中斷服務(wù)程序中將寄存器B的內(nèi)容左環(huán)移一位,B的初值設(shè)為01H。試編寫主程序與中斷服務(wù)程序。 解:程序如下 ORG 0000H ;主程序 LJMP MAIN ;主程序轉(zhuǎn)至MAIN處 ORG 0013H ;中斷服務(wù)程序 LJMP INT ;中斷

19、服務(wù)程序轉(zhuǎn)至INT處,MAIN:SETB EA ;開中斷 SETB EX1 ;允許外中斷1中斷 CLR PX1 ;設(shè)為低優(yōu)先級 SETB IT1 ;邊沿觸發(fā) MOV B,01H ;設(shè)B的初值 HALT:SJMP HALT ;暫停等待中斷,閑著沒事 INT:MOV A,B ;開始中斷服務(wù),AB, RL A ;左環(huán)移一位 MOV B,A ;回送 RETI ;中斷返回,有以下幾點需要說明: (1)由于從0003H到0023H之間分布了5個中斷源的入口地址,因此在一般情況下,主程序與中斷服務(wù)程序均用長轉(zhuǎn)移指令移至其它區(qū)域。 (2)本例題未考慮保護現(xiàn)場與恢復(fù)現(xiàn)場的問題,是否需要,應(yīng)視具體情況而定。 (3

20、)本例是單重中斷,若為多級中斷,則情況要復(fù)雜得多。 (4)主程序處于暫停等待中斷只是為了舉例方便起見,在實際的單片機控制系統(tǒng)中一般是不會這樣用的。,中斷服務(wù)程序的流程,圖6-11為采用單外部中斷源的數(shù)據(jù)采集系統(tǒng)示意圖。將P1口設(shè)置成數(shù)據(jù)輸入口,外圍設(shè)備每準備好一個數(shù)據(jù)時,發(fā)出一個選通信號(正脈沖),使D觸發(fā)器Q非端置0,產(chǎn)生中斷請求信號, P3.0用于撤除中斷請求信號,從而清除IE0標志。,例6-7 單外部中斷源示例,ORG 0000H START: LJMP MAIN ;跳轉(zhuǎn)到主程序 ORG 0003H LJMP INT0 ;轉(zhuǎn)向中斷服務(wù)程序 ORG 0030H ;主程序 MAIN: CLR

21、 IT0 ;設(shè)為電平觸發(fā)方式 SETB EA ;CPU開放中斷 SETB EX0 ;允許INT0中斷 MOV DPTR, #1000H ;設(shè)置數(shù)據(jù)區(qū)地址指針 ,ORG 0200H;中斷服務(wù)程序 INT0: PUSHPSW;保護現(xiàn)場 PUSH ACC CLRP3.0;由P3.0輸出0,使/Q變?yōu)?,撤除中斷請求信號 SETBP3.0;由P3.0輸出1,使D觸發(fā)器能夠工作 MOVA, P1 ;輸入數(shù)據(jù) MOVX DPTR, A ;存入數(shù)據(jù)存儲器 INCDPTR ;修改數(shù)據(jù)指針,指向下一個單元 POPACC;恢復(fù)現(xiàn)場 POPPSW RETI;中斷返回,當(dāng)外部中斷源多于兩個時,可以采用硬件申請與軟件查

22、詢方法,把多個中斷源經(jīng)或非門引入外部中斷源輸入端,同時又連到某I/O口。這樣,每個“源”都可能引起中斷,但在中斷服務(wù)程序中通過軟件查詢,便可確定哪一個是正在申請的中斷源。,例6-9 中斷和查詢結(jié)合的方法擴展多個外中斷源,圖6-12中的中斷線可實現(xiàn)系統(tǒng)的故障顯示。當(dāng)系統(tǒng)的各部分工作正常時,四個故障源輸入端全為低電平,顯示燈全熄滅。只有當(dāng)某部分出現(xiàn)故障時,則對應(yīng)的輸入線由低電平變?yōu)楦唠娖?,從而引?051的中斷,在中斷服務(wù)中通過查詢即可判斷故障源,并進行相應(yīng)的LED顯示。,;匯編語言主程序: ORG0000H;復(fù)位入口地址 AJMPMAIN;轉(zhuǎn)主程序 ORG0003H;外部0中斷入口 AJMPIO;轉(zhuǎn)中斷服務(wù)程序 MAIN: ANLP1, #0AAH;置P1口輸出全為0 SETBIT0;外部中斷0為邊沿觸發(fā)中斷方式 SETBEX0;允許外部中斷0中斷 SETBEA;CPU開中斷 LOOP1:SJMP LOOP1;等待中斷,-例6-9,;匯編語言中斷服務(wù)程序: IO:JNBP1.1, L1;查詢中斷源,P1.1為0轉(zhuǎn)L

溫馨提示

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

評論

0/150

提交評論