目前單片機種類繁多,而51 單片機做爲最基礎的一款8位單片機,其資源最少,同時也是最容易學習的一款單片機。學習51單片機的工做原理及其存儲結構是十分有必要的。學習
單片機執行程序的過程,其實就是在執行咱們編寫的程序的過程(逐條執行指令),該執行過程能夠當作是:取指令--------分析指令-------執行指令。spa
取指令:根據 PC(程序計數器)的值從程序存儲器中取出指令(編寫的程序即爲指令),送到指令寄存器。(送到哪裏去???)blog
分析指令:將指令寄存器中的指令操做碼取出後進行譯碼,分析其指令性質,分析完成便找出操做數的地址。資源
執行指令:即對分析完成後獲得操做數的地址,對該地址的數據進行更新。基礎
計算機執行程序的過程其實是逐條指令重複以上三個過程,直到遇到停機或循環等待指令。原理
舉例:循環
開機後,PC 計數器 初始值爲 0000H,接着單片機在時序電路下自動進入執行程序過程,循環對程序區進行取指令,執行指令操做。程序
對於彙編語句: MOV A , #0E0H im
該語句的功能表示將操做數 E0H 送到 累加器 A 上。(74H 表示 的指令是將一個數送到 A 累加器去)此時 程序計數器 0000H 位置上存放了 74H , 0001H 上存放了 E0H 。 數據
執行該語句的次序爲:
一、取指階段:PC 上 地址 0000H 上的內容送到地址寄存器去,即將74H 經過數據總線送到了指令寄存器去。 此時 PC == 0000H,
二、譯碼階段:因爲本次進入指令寄存器的是 74H 故 譯碼後單片機知道該指令是將一個操做數送到A累加器中, 此時 PC == 0001H,
三、執行階段:分析完指令後,將操做數 E0H 從 PC 的0001H 處取出,送到CPU,因爲前面有了指令 74H ,因此 數據總線不會講 E0H送到指令寄存器,而是將操做數送入累加器中。 此時 PC == 0002H,
四、以此一直循環,直到系統停機。(附圖說明)