單片機中一個(gè)程序的運行過(guò)程
取指令的任務(wù)是:根據程序計數器PC中的值從程序存儲器讀出現行指令,送到指令寄存器。分析指令階段的任務(wù)是:將指令寄存器中的指令操作碼取出后進(jìn)行譯碼,分析其指令性質(zhì)。如指令要求操作數,則尋找操作數地址。計算機執行程序的過(guò)程實(shí)際上就是逐條指令地重復上述操作過(guò)程,直至遇到停機指令可循環(huán)等待指令。一般計算機進(jìn)行工作時(shí),首先要通過(guò)外部設備把程序和數據通過(guò)輸入接口電路和數據總線(xiàn)送入到存儲器,然后逐條取出執行。但單片機中的程序一般事先我們都已通過(guò)寫(xiě)入器固化在片內或片外程序存儲器中。因而一開(kāi)機即可執行指令。下面我們將舉個(gè)實(shí)例來(lái)說(shuō)明指令的執行過(guò)程:開(kāi)機時(shí),程序計算器PC變?yōu)?000H。然后單片機在時(shí)序電路作用下自動(dòng)進(jìn)入執行程序過(guò)程。執行過(guò)程實(shí)際上就是取出指令(取出存儲器中事先存放的指令階段)和執行指令(分析和執行指令)的循環(huán)過(guò)程。例如執行指令:MOV A,#0E0H,其機器碼為“74H E0H”,該指令的功能是把操作數E0H送入累加器,0000H單元中已存放74H,0001H單元中已存放E0H。當單片機開(kāi)始運行時(shí),首先是進(jìn)入取指階段,其次序是: 1 程序計數器的內容(這時(shí)是0000H)送到地址寄存器;2 程序計數器的內容自動(dòng)加1(變?yōu)?001H);3 地址寄存器的內容(0000H)通過(guò)內部地址總線(xiàn)送到存儲器,以存儲器中地址譯碼電跟,使地址為0000H的單元被選中;4 CPU使讀控制線(xiàn)有效;5 在讀命令控制下被選中存儲器單元的內容(此時(shí)應為74H)送到內部數據總線(xiàn)上,因為是取指階段,所以該內容通過(guò)數據總線(xiàn)被送到指令寄存器。至此,取指階段完成,進(jìn)入譯碼分析和執行指令階段。 由于本次進(jìn)入指令寄存器中的內容是74H(操作碼),以譯碼器譯碼后單片機就會(huì )知道該指令是要將一個(gè)數送到A累加器,而該數是在這個(gè)代碼的下一個(gè)存儲單元。所以,執行該指令還必須把數據(E0H)從存儲器中取出送到CPU,即還要在存儲器中取第二個(gè)字節。其過(guò)程與取指階段很相似,只是此時(shí)PC已為0001H。指令譯碼器結合時(shí)序部件,產(chǎn)生74H操作碼的微操作系列,使數字E0H從0001H單元取出。因為指令是要求把取得的數送到A累加器,

所以取出的數字經(jīng)內部數據總線(xiàn)進(jìn)入A累加器,而不是進(jìn)入指令寄存器。至此,一條指令的執行完畢。單片機中PC=0002H,PC在CPU每次向存儲器取指或取數時(shí)自動(dòng)加1,單片機又進(jìn)入下一取指階段。這一過(guò)程一直重復下去,直至收到暫停指令或循環(huán)等待指令暫停。CPU就是這樣一條一條地執行指令,完成所有規定的功能。 ROM是只讀存儲器,用于存儲程序代碼;RAM是數據存儲器,用于存放單片機運行時(shí)的數據,也就是說(shuō)RAM中的數據掉電(復位)后就會(huì )消失,而ROM中的數據不會(huì )。
- 中斷最主要的作用是保護現場(chǎng),計時(shí)器用于精確定時(shí)和長(cháng)定時(shí),如果你看不懂,在問(wèn)我!
- 中斷是通過(guò)硬件來(lái)改變CPU的運行方向的。計算機在執行程序的過(guò)程中,當出現CPU以外的某種情況時(shí),由服務(wù)對象向CPU發(fā)出中斷請求信號,要求CPU暫時(shí)中斷當前程序的執行而轉去執行相應的處理程序,待處理程序執行完畢后,再繼續執行原來(lái)被中斷的程序。這種程序在執行過(guò)程中由于外界的原因而被中間打斷的情況稱(chēng)為“中斷”。
“中斷”之后所執行的相應的處理程序通常稱(chēng)之為中斷服務(wù)程序或中斷處理子程序。
原來(lái)正常運行的程序稱(chēng)為主程序。
主程序被斷開(kāi)的位置(或地址)稱(chēng)為“斷點(diǎn)”。
引起中斷的原因,或能發(fā)出中斷申請的來(lái)源,稱(chēng)為“中斷源”。
中斷源要求服務(wù)的請求稱(chēng)為“中斷請求”(或中斷申請)。
當硬件電路將中斷信號送給cpu時(shí),給主程序設置一個(gè)斷點(diǎn),然后去響應中斷請求,當完成中斷的內容后,在返回斷點(diǎn)處繼續執行主程序。
評論