A. 簡述MCS-51單片機中斷響應的過程
嘉鴻視頻教學 www.study8.net.cn 專業提供211重點大學各類視頻教育、教學資料 單片機技術(34講)--吉林大學 趙宏偉 主講 單片機及應用(32講)--東南大學 劉其奇教授 先修課程 數字邏輯電路 計算機組成原理 介面技術 匯編語言 課程性質:應用型課程 前 言: 單片機在一塊半導體材料上集成了CPU、存儲器、I/O介面等各種功能部件,具有體積小、功耗低、價格便宜、功能強、可靠性好和使用方 便靈活的特點。單片機在工業控制、數據採集、智能化儀表、辦公自動化以及家用電器方等各個領域中得到了越來越廣泛的應用。 將單片機技術與測量控制技術相結合,可以使工業自動控制變得更方便、控制效果更佳。在機電一體化方面,單片機也發揮了它的特殊作 用,使許多傳統產業發生了巨大的變化,使許多工業產品體積縮小,能耗降低,功能增加,操作方便。由於單片機在如此廣泛的領域里獲得了 應用,世界上許多集成電路生產廠家相繼推出了各種類型的單片機,其中,MCS-51系列單片機以其優越的性能、成熟的技術和高可靠性,佔領 了工業控制的主要市場。特別是在我國,〖WTBZ〗MCS-51系列單片機已成為單片機應用領域的主流。 課程簡介: 本課程精選了單片機應用技術的基礎知識、感測器與檢測技術以及〖WTBZ〗PC微機控制技術的部分內容,並使之融為一體,在應用技術的 復合方面具有新意。 本課程以MCS-51系列的8位單片機為教學對象,介紹單片機的發展概況、原理及應用。全書共分14章,內容包括:單片機概述,〖WTBZ〗 MCS-51系列單片機的結構,〖WTBZ〗MCS-51系列單片機指令系統,程序設計基礎,中斷系統,〖WTBZ〗MCS-51系列單片機內部定時器/計數器及 其應用,串列介面,單片機應用系統擴展設計基礎,模擬量輸入輸出介面技術,人機介面技術,功率介面技術,單片機應用系統設計技術,單 片機實用技術舉例,新型單片機介紹。 本課程可作為高等院校電氣信息類各專業「單片機原理及應用技術」課程的教程,同時可供有關工程技術人員參考。 教材目錄: 第1章 單片機概述 1.1單片機發展概況 1.2單片機的分類 1.3單片機應用介紹 思考題與習題 第2章 MCS-5單片機的結構 2.1 MCS-51單片機的結構和引腳 2.1.1引腳定義及功能 2.1.2 MCS-51單片機的基本組成 2.2 8051單片機存儲器結構及其用途 2.2.1 程序存儲器 2.2.2 數據存儲器地址空間 2.3 並行I/0口 2.3.1並行I/0口的結構 2.3.2 並行I/0口操作注意事項 2.4 時鍾電路 2.4.1內部時鍾電路 2.4.2 外部時鍾電路 2.4.3 時鍾與時序 2.5 復位電路 2.5.1單片機復位原理 2.5.2 復位電路 思考題與習題 第3章 MCS-51單片機指令系統 3.1指令格式和定址方式 3.1.1指令格式 3.1.2 定址方式 3.2指令系統 3.2.1定址空間及符號注釋 3.2.2 數據傳送指令 3.2.3 算術運算指令 3.2.4 邏輯運算指令 3.2.5 控制轉移指令 3.2.6 位操作指令 思考題與習題 第4章 程序設計基礎 4.1 MCS-51單片機匯編語言的偽指令 4.2匯編語言程序的基本結構 4.3實用程序設計舉例 4.3.1 數制轉換程序 4.3.2 算術和邏輯運算類程序設計 4.3.3 查表程序設計 思考題與習題 第5章 中斷系統 5.1 中斷概念 5.2中斷源與中斷請求 5.3中斷允許控制 5.4中斷優先順序控制 5.5中斷響應與中斷處理 思考題與習題 第6章 MCS-51單片機內部定時器/計數器及其應用 6.1 定時器的結構及工作原理 6.2定時器的控制 6.2.1工作模式寄存器TMOD 6.2.2 控制寄存器TCON 6.3 定時器的工作模式及其應用 6.3.1模式0及應用 6.3.2模式1及應用 6.3.3模式2及應用 6.3.4模式3及應用 6.3.5綜合應用舉例 思考題與習題 第7章 串列介面 7.1 串列通信概念 7.2 串列介面的工作方式 7.2.1串列介面的結構 7.2.2串列介面的工作方式 7.3 串列介面的波特率 7.4 串列介面的應用 7.4.1串列介面工作方式0的I/O擴展應用 7.4.2串列口的非同步通信應用 思考題與習題 第8章 單片機應用系統擴展設計基礎 8.1程序存儲器擴展 8.1.1 EPROM程序存儲器的擴展設計 8.1.2擴展E2PROM 8.2 數據存儲器的擴展設計 8.2.1 數據存儲器擴展舉例 8.2.2 擴展數據和程序存儲器綜合舉例 8.3 並行I/O擴展設計 8.3.1 簡單的I/O擴展設計 8.3.2 8255可編程並行I/O介面擴展電路設計 8.3.3 8155可編程I/O介面擴展設計 8.3.4 串列口擴展I/O介面 8.4 外部中斷擴展方法 8.4.1 利用定時器擴展外部中斷源 8.4.2 中斷加查詢擴展中斷源 思考題與習題 第9章 模擬量輸入輸出介面技術 9.1 模擬量輸入介面技術概述 9.1.1 感測器技術 9.1.2 模擬量信號處理技術 9.2 A/D轉換器的主要性能指標及分類 9.2.1 A/D轉換器的主要性能指標 9.2.2 A/D轉換器的分類 9.3 常用的A/D轉換晶元 9.3.1 ADC0809 8位A/D轉換器 9.3.2 AD574 12位A/D轉換器及介面 9.3.3 雙積分A/D轉換器及介面技術 9.3.4 V/F轉換器與單片機介面 9.4 D / A轉換器及介面技術 9.4.1 D / A轉換器的主要性能指標 9.4.2 D AC0832 8位D / A轉換器 9.4.3 MCS-51單片機與12位D / A轉換器DAC1208的介面 9.4.4 F / V轉換電路 思考題與習題 第10章 人機介面技術 10.1 開關介面 10.1.1 機械式開關介面的基本應用 10.1.2 電子式開關介面的基本應用 10.2 鍵盤介面 10.2.1 硬體消除抖動法 10.2.2 軟體消除抖動法 10.2.3 簡單鍵盤介面 10.2.4 矩陣式鍵盤介面 10.2.5 BCD碼撥盤介面 10.3 LED顯示介面 10.3.1 發光二極體介面 10.3.2 LED數碼管介面 10.4 LCD液晶顯示介面 10.4.1 欄位型LCD及其應用 10.4.2 圖形式液晶顯示驅動器 第11章 功率介面技術 11.1開關型介面 11.1.1 簡單開關量輸出介面 11.1.2 光電耦合介面 11.1.3 繼電器介面 11.2電壓調節介面 11.2.1 可控硅工作原理 11.2.2 可控硅在電壓調節中的應用 11.2.3 固態繼電器 思考題與習題 第12章 單片機應用系統設計技術 12.1設計原則與要求 12.2硬體設計要求 12.3軟體設計要求 12.4 邏輯電平設計要求 12.5可靠性設計要求 12.6 印刷電路的設計要求. 12.7 電源系統的設計要求 12.8 單片機開發裝置的選擇 思考題與習題 第13章 單片機實用技術舉例 13.1 智能化溫度儀表的設計 13.2 PID智能控制器的設計 13.3單片機數字萬用表的設計 13.4 電子血壓計的設計 13.5 步進電機在精確走步中的應用 13.6 單片機在串列通信中的應用 13.7 單片機在氣象參數測量中的應用 13.8 單片機在模糊控制中的應用 思考題與習題 第14章 新型單片機介紹 14.1 MSP430系列單片機 14.2 EM78P447S單片機 14.3 PIC系列單片機 14.4 AT89系列單片機 14.5 AVR系列單片機 14.6 其他系列單片機 思考題與習題
B. 舉例說明單片機中斷處理過程
如主函數
main()
{
循環{
語句1
語句2
語句3
}
}
中斷函數
interupt 1 in1()
{
清中斷標示位
執行中語句
}
如果執行到語句2,那麼單片機PC寄存器內容,也就是當前正在執行的語句的地址,就會壓到堆棧,PC取中斷函數的地址,去執行中斷函數,執行完了之後,再出堆棧,把原來正在執行的語句地址復制到PC,所以又能准確的回到語句2了。
中斷的過程概括為 壓棧(保存現場)-執行中斷-出棧(還原現場)
C. 單片機中斷處理流程
當某中斷產生而且被CPU響應,主程序被中斷,接下來將執行如下操作:
1.
當前正被執行的指令全部執行完畢;
2.
PC值被壓入棧;
3.
現場保護;
4.
阻止同級別其他中斷;
5.
將中斷向量地址裝載到程序計數器PC;
6.
執行相應的中斷服務程序。
中斷服務程序ISR完成和該中斷相應的一些操作。ISR以RETI(中斷返回)指令結束,將PC值
從棧中取回,並恢復原來的中斷設置,之後從主程序的斷點處繼續執行。
D. 關於單片機試題:簡述中斷處理過程。
第一步:保護現場,將當前位置的PC地址壓棧。
第二步:跳轉到中斷服務程序,執行中斷服務程序。
第三步:恢復現場,將棧頂的值回送給PC
第四步:跳轉到被中斷的位置開始執行下一個指令。
E. 51單片機中斷響應過程舉例
CPU響應中斷時,首先把當前指令的下一條指令(就是中斷返回後將要執行的指令)的地址送入堆棧,然後根據中斷標記,將相應的中斷入口地址送入PC,PC是程序指針,CPU取指令就根據PC中的值,PC中是什麼值,就會到什麼地方去取指令,所以程序就會轉到中斷入口處繼續執行。這些工作都是由硬體來完成的,不必我們去考慮。這里還有個問題,大家是否注意到,每個中斷向量地址只間隔了8個單元,如0003-000B,在如此少的空間中如何完成中斷程序呢?很簡單,你在中斷處安排一個LJMP指令,不就可以把中斷程序跳轉到任何地方了嗎?
一個完整的主程序看起來應該是這樣的:
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0 ;轉外中斷0
ORG 000BH
RETI ;沒有用定時器0中斷,在此放一條RETI,萬一 「不小心「產生了中斷,也不會有太大的後果。 資料來源:吳鑒鷹吧
中斷程序完成後,一定要執行一條RETI指令,執行這條指令後,CPU將會把堆棧中保存著的地址取出,送回PC,那麼程序就會從主程序的中斷處繼續往下執行了。注意:CPU所做的保護工作是很有限的,只保護了一個地址,而其它的所有東西都不保護,所以如果你在主程序中用到了如A、PSW等,在中斷程序中又要用它們,還要保證回到主程序後這裡面的數據還是沒執行中斷以前的數據,就得自己保護起來。
F. 簡述單片機中斷系統使用步驟
中斷的基本概念
1.數據傳送方式
程序控制方式
無條件傳送方式:輸入輸出操作完全取決於程序的安排,而不管外設的狀態。
程序查詢方式:先查詢外設的當前狀態,獲得埠信息;I/O操作完全由CPU控制。缺點:浪費CPU時間,效率低。
中斷傳送方式
CPU不必定時查詢介面狀態,介面在數據發送或接收數據准備好後通知CPU;
CPU通過執行一個中斷服務程序來完成數據傳送。
介面沒有準備好時,CPU繼續執行主程序,提高CPU工作效率。
DMA(Direct Memory Access):直接存儲器存取方式
I/O設備在DMA介面控制下直接把成塊信息送到主存儲器,或從主存儲器取出成塊信息送給I/O設備,中間不經CPU參與。
比中斷、查詢方式更加提高了CPU的利用率。
2.中斷概念:CPU在正常運行程序時,由於CPU以外某一事件的發生,引起CPU暫停正在運行的程序,而轉到為該事件的發生預先安排好的服務程序中去執行。
相關文章
使用單片機實現PWM調光的C語言實例免費下載
使用單片機實現花樣燈的C語言實例免費下載
使用單片機實現查表顯示LED燈的C語言實例免費下載
使用單片機實現8位LED左移的C語言實例免費下載
使用單片機實現8位LED右移的C語言實例免費下載
使用51單片機實現液晶讀寫的源代碼免費下載
抗抖動計數電路的工作原理及應用設計
使用PIC單片機實現熱敏電阻數字化方法詳細說明
G. 2、簡述MCS-51單片機的中斷響應過程
還是我來告訴你吧!(正在看書是電話響了,暫停看書,去接電話。。。接完電話從剛才的地方繼續看書!這個過程就是中斷響應的過程!而且呼叫方是否是美女直接影響中斷響應級別!)這個例子非常的恰當不過我要更正一下,正在看書時電話響了,暫停看書,記下當前看到的頁數(將下一條指令的地址壓入單片機堆棧中),去接電話。。。接完電話從剛才的地方繼續看書(將指令的地址從堆棧彈出)!這個過程就是中斷響應的過程!而且呼叫方是否是美女直接影響中斷響應級別,這句話的意思是如果你正在接電話,有美女打電話過來,你要暫停當前的電話,先接通美女的電話,然後回來繼續講你剛才講的電話。
H. 說明80C51單片機的中斷過程.
中斷響應
中斷響應就是單片機CPU對中斷源提出的中斷請求的接受。中斷請求被響應後,再經過一系列的操作,而後轉向中斷服務程序,完成中斷所要求的處理任務。下面簡要說明80c51的中斷響應過程:
1.外中斷采樣和內中斷置位
1.1外中斷采樣
-
要想知道外中斷是否有請求發生,需要對外中斷進行采樣。
當通過軟體將寄存器TCON的IT0(或IT1)位設置為0時,/INT0(或/INT1)為電平觸發方式,CPU在每個機器周期的S5P2(第五個狀態第2拍節)期間對/INT0(或/INT1)采樣,一旦在P3.2(或P3.3)上檢測到低電平時,則認為有外部中斷申請,隨即由硬體使TCON的IE0(或IE1)位置1,向CPU申請中斷。在中斷響應完成後轉向中斷服務子程序,再由硬體自動對IE0(或IE1)位清0.
當寄存器TCON的IT0(或IT1)位為1,/INT0(或/INT1)為脈沖觸發方式,則CPU在每個機器的S5P2期間對/INT0(或/INT1)采樣,當檢測到前一周期為高電平、後一周期為低電平時,由硬體使TCON的IE0(IE1)位置1,向CPU申請中斷,在中斷響應完成後轉向中斷服務子程序時,再由硬體自動對IE0(IE1)位清0.在邊沿觸發方式中,為保證CPU在兩個機器周期內檢測到由高到低的負跳變,高電平與低電平的持續時間不得少於一個機器周期的時間。
1.2內中斷置位
80c51把所有中斷標志都集中到TCON和SCON寄存器中。其中外中斷是使用采樣的方法把中斷請求鎖定在TCON寄存器的IE0(IE1)標志位上,而定時中斷和串列中斷的中斷請求由於都發生在晶元的內部,定時中斷可以直接去置位TCON的TF0(TF1),串列中斷可以直接去置位SCON的RI和TI。內中斷不存在采樣問題。
2.中斷查詢
所謂查詢,就是由CPU測試TCON和SCON中各標志位的狀態,以確定有沒有中斷請求發生以及是哪一個中斷請求。單片機是在每一個機器周期的最後狀態(S6),按優先順序順序對中斷請求標志進行查詢,即先查詢高級中斷後查詢低級中斷,同級中斷按「外部中斷0—定時中斷0—外部中斷1—定時中斷1—串列中斷」的順序查詢。如果查詢到有標志位為「1」,則表明有中斷請求發生,接著就從相鄰的下一個機器周期的S6狀態開始進行中斷響應。
由於中斷請求是隨機發生的,CPU無法預先得知,因此在程序執行過程中,中斷查詢要在指令執行的每個機器周期中不停地重復進行。換句話說,就相當於你在看書的時候,每一秒鍾都會抬起頭來聽一聽,看一看,是不是有人按門鈴,是否有電話,燒的開水是否開了。。。。。。看來,單片機比人蠢多了。
3.中斷響應
當查詢到有效的中斷請求時,緊接著就進行中斷響應。中斷響應時,根據寄存器TCON、SCON中的中斷標記,由硬體自動生成一條長調用指令LCALL XXXX,這里的XXXX就是程序存儲器中斷區中相應中斷的入口地址。對於80c51的5個獨立中斷源,這些入口地址已由系統設定。這樣在產生了相應的中斷以後,就可轉到相應的位置去執行。
例如,對於外部中斷0的響應,產生的長調用指令為
LCALL 0003H
生成LCALL指令後,緊接著就由CPU執行,首先將當前程序計數器PC的內容(准備執行的指令的地址)壓入堆棧以保護斷點,再將中斷入口地址裝入PC,使程序轉向相應的中斷區入口地址。從中斷源所對應的向量地址中可以看出,一個中斷向量入口地址到下一個中斷向量入口地址之間只有8個單元。也就是說,中斷服務程序的長度如果超過了8B,就會佔用下一個中斷的入口地址,導致出錯。但一般情況下,很少有一段中斷服務程序只佔用少於8B的情況,為此可以在中斷入口處寫一條「LJMPXXXX」或「AJMPXXXX」指令,這樣可以把實際處理中斷的程序放到ROM的任何一個位置。
例如,若採用外中斷0,在程序的開始處可以這樣寫:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_0
;以下是主程序
MAIN:
;以下是外中斷0服務程序
INT_0:
RETI
END
中斷服務程序完成後,一定要執行一條RETI指令,執行這條指令後,CPU將會把堆棧中保存著的地址取出,送回PC,那麼程序就會從主程序的中斷處繼續往下執行了。
說明 CPU所做的保護工作是很有限的,只保護了一個地址(主程序中斷處的地址),而其他的所有東西都不保護,所以如果你在主程序中用到了如A、DPTR、PSW等,在中斷程序中要用它們,還要保證回到主程序後這裡面的數據還是沒執行中斷以前的數據,就得自己保護起來。
-
CPU會在機器周期的S5P2階段讀入中斷標志,並在下一個機器周期中檢查,如果中斷條件成立時,系統會自行產生一個LCALL到相對應的中斷服務常式中,可是如果有下面3種情況時,系統是不會對中斷要求信號有反應的:
a有相等或更高級的中斷正在執行中,這與處理突發事件的狀況相同,既然已經在處理突發情況,當然就不再接受其他中斷條件,除非接下來的中斷情形的優先權比較高。
由此得到一個觀念:所有的中斷程序都應該盡量簡捷,一處理完中斷事項後立即回主程序,才不會佔用過多時間,進而影響系統的性能。
b目前的機器周期不是該指令的最後一個周期,由於80c51在指令執行時,分別有1個、2個和4個機器周期之分,也就是說,必須完全執行完此指令後,系統對中斷信號才會有所反應。比方說,當系統正在執行MULAB指令(需花4個機器周期)時,中斷信號必須出現在第4個機器周期上才算有效。這也就意味著,中斷信號必須持續足夠長的時間,以便80c51的CPU有時間去反應。
c若正在執行的指令為RETI或者是關於中斷設置IE、IP的指令時,對正好出現的中斷信號不反應,因為上述的情況剛好是某個中斷服務程序的結束,或是允許/禁止某個中斷的指令,當然是等到這些指令執行完畢後,才會對中斷信號有所反應,這些指令最多佔用兩個機器周期的時間,所以這時的中斷信號必須保持有兩個機器周期以上的時間,才能被80c51接受。
中斷的撤除
中斷響應後,TCON或SCON中的中斷請求標志應及時清除。否則就意味著中斷請求仍然存在,弄不好就會造成中斷的重復查詢和響應,因此就存在一個中斷請求的撤除問題。
1 定時器中斷請求的撤除
定時中斷響應後,硬體自動把標志位TF0(或TF1)清0,因此定時中斷的中斷請求是自動撤除的,不需要用戶干預。
2 串列中斷軟體撤除
對於串列中斷,CPU響應中斷後,沒有用硬體清除它們的中斷標志RI、TI,必須在中斷服務程序中用軟體清除,以撤除其中斷請求。
3 外中斷請求的撤除
外部中斷的撤除包括中斷標志位IE0(或IE1)的清0和外中斷請求信號的撤除。其中IE0(或IE1)清「0」是在中斷響應後由硬體電路自動完成的。剩下的只是外中斷引腳請求信號的撤除了。下面對脈沖和電平兩種觸發方式分別進行討論。
a對於脈沖方式的中斷請求,由於脈沖信號過後就消失了,也可以說中斷請求信號是自動撤除的。
b對於電平方式的外部中斷,中斷標志的撤除是自動的,但中斷請求信號的低電平可能繼續存在,在以後機器周期采樣時,又會把已清0的IE0或IE1標志位重新置1.為此,要徹底解決電平方式外中斷的撤除,除了標志位清0之外,必要時還需在中斷響應後把中斷請求信號引腳從低電平強制改變為高電平,為此,可在系統中增加如圖所示電路
外中斷請求標志撤除電路
從圖可以看出,外部中斷0請求信號在D觸發器(可選用74LS74)的時鍾輸入端。當外部設備有中斷請求信號(為低電平)出現時,Q端輸出為低電平,/INT0有效,向CPU發出中斷請求信號。CPU響應中斷後,在中斷服務程序中由軟體安排1個低電平中斷應答信號,從P1.0送至D觸發器的/SD(置位端,低電平有效),使D觸發器的Q端輸出為高電平,從而撤除了低電平的外中斷0請求信號。/SD端所需的低電平可通過在中斷服務程序中增加一下指令的得到:
ANLP1,#0FEH ;使P1.0輸出為低電平,D觸發器置位
在中斷服務程序中還要加上撤除外中斷0標志指令,即
CLRIE0 ;清外中斷標志,以便下次可再次中斷
可見,電平方式外部中斷請求信號的撤除是通過軟、硬體相結合的方法實現的。
I. 簡述單片機中斷相應過程
中斷,無非就是你正在運行當前程序的時候有中斷條件產生,進入中斷函數,中如果是匯編寫的程序就要手動保護中斷要用的寄存器里之前的程序運行的數據,(壓棧),運行完中斷程序後把之前保護的數據再送回相應的功能寄存器(出棧),然後繼續之前的程序運行。
J. 51單片機中斷過程
你好:
看你對定時器中斷不是很了解,我可以給你一個詳細的解釋:首先了解一下51單片機的周期,51單片機的機器周期計算方式是12/晶振(Hz),也就是說單片機每隔這么一段時間會讓定時寄存器加1,如果是12MHz晶振,就是1us定時寄存器會自己加1。然後,當你配置好定時器相關寄存器後,打開TRx(定時器啟動開關),定時器啟動,你的11.0592MHz的晶振根據上述公式算出為每1.0851us定時寄存器加1,當然不是從0開始加,而是從你的初值的基礎上開始加,加到溢出時就是定時寄存器滿之後產生中斷信號,這個信號是由硬體自動置位的。最後根據相應的中斷號進去中斷入口函數,里邊只要重裝初值就可以了,之後就可以自己寫點處理程序進去。
那麼根據你的1.0592MHz晶振,45872×1.0851就是50000左右,剛好是換算後的50us中斷一次。那麼num每50us自增一次,計數到20就是一秒了。
有不懂的地方可隨時回復我。
希望我的回答能幫助到你。