微控制器中乙個程式的執行過程分為取指令,分析指令和執行指令幾個步驟。
取指令的任務是:根據程式計數器pc中的值從程式儲存器讀出現行指令,送到指令暫存器。
分析指令階段的任務是:將指令暫存器中的指令操作碼取出後進行解碼,分析其指令性質。如指令要求運算元,則尋找運算元位址。計算機執行程式的過程實際上就是逐條指令地重複上述操作過程,直至遇到停機指令可迴圈等待指令。一般計算機進行工作時,首先要通過外部裝置把程式和資料通過輸入介面電路和資料匯流排送入到儲存器,然後逐條取出執行。但微控制器中的程式一般事先我們都已通過寫入器固化在片內或片外程式儲存器中。因而一開機即可執行指令。
下面我們將舉個例項來說明指令的執行過程:
開機時,程式計算器pc變為0000h。然後微控制器在時序電路作用下自動進入執行程式過程。執行過程實際上就是取出指令(取出儲存器中事先存放的指令階段)和執行指令(分析和執行指令)的迴圈過程。
例如執行指令:mov a,#0e0h,其機器碼為「74h e0h」,該指令的功能是把運算元e0h送入累加器,0000h單元中已存放74h,0001h單元中已存放e0h。當微控制器開始執行時,首先是進入取指階段,其次序是:
1 程式計數器的內容(這時是0000h)送到位址暫存器;
2 程式計數器的內容自動加1(變為0001h);
3 位址暫存器的內容(0000h)通過內部位址匯流排送到儲存器,以儲存器中位址解碼電跟,使位址為0000h的單元被選中;
4 cpu使讀控制線有效;
5 在讀命令控制下被選中儲存器單元的內容(此時應為74h)送到內部資料匯流排上,因為是取指階段,所以該內容通過資料匯流排被送到指令暫存器。
至此,取指階段完成,進入解碼分析和執行指令階段。
由於本次進入指令暫存器中的內容是74h(操作碼),以解碼器解碼後微控制器就會知道該指令是要將乙個數送到a累加器,而該數是在這個**的下乙個儲存單元。所以,執行該指令還必須把資料(e0h)從儲存器中取出送到cpu,即還要在儲存器中取第二個位元組。其過程與取指階段很相似,只是此時pc已為0001h。指令解碼器結合時序部件,產生74h操作碼的微操作系列,使數字e0h從0001h單元取出。因為指令是要求把取得的數送到a累加器,
所以取出的數字經內部資料匯流排進入a累加器,而不是進入指令暫存器。至此,一條指令的執行完畢。微控制器中pc=0002h,pc在cpu每次向儲存器取指或取數時自動加1,微控制器又進入下一取指階段。這一過程一直重複下去,直至收到暫停指令或迴圈等待指令暫停。cpu就是這樣一條一條地執行指令,完成所有規定的功能。
rom是唯讀儲存器,用於儲存程式**;ram是資料儲存器,用於存放微控制器執行時的資料,也就是說ram中的資料掉電(復位)後就會消失,而rom中的資料不會。
中斷最主要的作用是保護現場,計時器用於精確定時和長定時,如果你看不懂,在問我!
中斷是通過硬體來改變cpu的執行方向的。計算機在執行程式的過程中,當出現cpu以外的某種情況時,由服務物件向cpu發出中斷請求訊號,要求cpu暫時中斷當前程式的執行而轉去執行相應的處理程式,待處理程式執行完畢後,再繼續執行原來被中斷的程式。這種程式在執行過程中由於外界的原因而被中間打斷的情況稱為「中斷」。
「中斷」之後所執行的相應的處理程式通常稱之為中斷服務程式或中斷處理子程式。
原來正常執行的程式稱為主程式。
主程式被斷開的位置(或位址)稱為「斷點」。
引起中斷的原因,或能發出中斷申請的**,稱為「中斷源」。
中斷源要求服務的請求稱為「中斷請求」(或中斷申請)。
當硬體電路將中斷訊號送給cpu時,給主程式設定乙個斷點,然後去響應中斷請求,當完成中斷的內容後,在返回斷點處繼續執行主程式。
51微控制器做乙個計時器
同樣我們使用的仍然是stc的8051微控制器,這段 是用來做乙個計時器,通過數碼管實時顯示出來,因為板子上數碼管有6個,所以可以設定小時,分鐘,秒三個單位,在proteus上也是可以模擬的,計時結束可以用蜂鳴器,或者繼電器介面連線 乙個鬧鈴,鬧鈴用電磁式的就可以,當然簡單來說蜂鳴器就是乙個不錯的選擇...
51微控制器(計時器 時鐘應用)
ps 使用的是51微控制器,晶振為11.0592m的,時間選擇5ms。這篇部落格好像是第一篇微控制器部落格誒 演算法 簡單的計時器應用,最開始 根據 2 16 t f 12 計算得到值,將其轉換為16進製制 注意 單位的改變,例如晶振要乘上 10e6 時間 要轉換為秒s 乘上 10e 3 由此可以得...
微控制器中段程式 微控制器中乙個程式的執行過程
微控制器中乙個程式的執行過程 微控制器中乙個程式的執行過程分為取指令,分析指令和執行指令幾個步 驟。取指令的任務是 根據程式計數器 pc中的值從程式儲存器讀出現行指 令,送到指令暫存器。分析指令階段的任務是 將指令暫存器中的指令操作碼取出後進行解碼,分析其指令性質。如指令要求運算元,則尋找運算元位址...