單片機的工作原理是什麼?

信仰玖壹零


一、單片機程序執行過程

單片機的工作過程實質就是執行程序的過程,也就是我們常說的逐條執行指令的過程。單片機每執行一條指令均可分為三個階段:取出指令、分析(譯碼)指令、執行指令。

大多數8位單片機的取指、譯碼、執行這三步都是按照串行順序依次進行的。32位單片機的這三步也是必不可少的,但是它是採用預取指令的流水線方式操作,並採用精簡指令集,每條指令都是單週期指令,所以它允許指令並行操作。例如再取出第一條指令後,開始對這條指令譯碼的同時,取出第二條指令;在第一條指令執行時,第二條指令開始譯碼,然後取出第三條指令,第二條指令同時執行。。。如此循環。從而使CPU在同一時間對不同指令實現不同操作,這樣就實現了指令的並行處理,大大加快指令的執行速度。

二、單片機執行指令的三個階段

下面分別說說單片機執行指令的三個階段。

1、取指令階段

根據程序計數器PC的值,從程序存儲器讀出當前要執行的指令,並將該指令送到指令寄存器。

2、指令譯碼階段

取出指令寄存器中的指令操作碼進行譯碼,解析出指令要實現那種操作。(例如是執行數據傳送還是進行數據的加減運算)

3、執行指令階段

執行指令規定的操作。(例如對於帶操作數的指令,先取出操作碼,再取出操作數,然後按照操作碼的類型對操作數進行操作)

三、單片機工作過程

單片機採用“存儲程序”的工作方式,即事先把程序加載到單片機的存儲器中,當啟動運行後,計算機便自動進行工作。

1、單片機的模型機指令表

下表是單片機的模型機指令表,我們以LDA 23這條指令為例,來說明單片機的指令執行過程。

2、執行一條指令的順序

單片機執行程序是一條指令一條指令執行的,執行一條指令的過程可分為兩個階段。

在單片機中,“存儲程序”第一條指令的第一個字節一定是操作碼。這樣,CPU首先進入取指階段,從存儲器中取出指令,並通過CPU譯碼後,轉入執行指令階段,在這期間,CPU執行指令指定的操作。

取指階段是由一系列相同的操作組成的,因此,取指階段的時間總是相同的。而執行指令的階段是由不同的事件順序組成的,它取決於被執行指令的類型。執行完一條指令後接著執行下一條指令,如此循環往復。

3、執行一條指令的過程

指令“LDA 23”的執行過程是怎樣的呢?這是一條直接尋址指令,執行的過程如下圖所示。

LDA指令的指令週期由3個CPU週期(即機器週期)組成。其中,第一個CPU週期為取指令週期;執行指令階段由2個CPU週期組成,第二個CPU週期中將操作數的地址送往地址寄存器並完成地址譯碼,在第三個CPU週期中,從內存取出操作數並執行裝入的操作。

4、執行一個程序的過程

採用直接尋址方式,執行“7+10”的程序如下表所示。

加入程序存放在起始地址為00010000B(16)的存儲單元中。地址16和17存放第一條指令“LDA 23”,執行第一條指令的過程如下圖所示。

單片機啟動後,PC中的地址即為16,將16送地址寄存器,接著16被放入地址總線上,找到操作碼地址00010000B(16),PC自動加1為17,做好取下一字節的準備;取出“LDA 23”的操作碼10010110B放入數據總線;操作碼經數據總線裝入數據寄存器,因為是操作碼,所以還需要裝入指令譯碼器進行指令譯碼,得到“裝入”的操作。

此時PC中的內容已經是17,地址17送入地址寄存器並放到地址總線上,找到操作碼地址23,PC又自動加1,做好取第二條指令“ADD 24”的準備,如下圖。

找到操作數地址23後,因為是直接尋址,取出23單元中的操作數7放到數據總線,再裝入數據寄存器中,經數據寄存器將操作數7裝入累加器,如下圖所示。至此,第一條指令“LDA 23”執行完畢。

第2,3條指令也是直接尋址方式,執行的過程類似。


老馬識途單片機


單片機是由運算器(ALU)、控制器、存儲器(ROM、RAM、EEPROM)、輸入輸出端口(I/O)等組成的一種集成芯片。



單片機在電路系統中相當於人體的大腦。目前大部分單片機都支持彙編語言、C語言編程。工程師利用匯編語言或者C語言編寫的程序就相當於賦予單片機的靈魂。



單片機的時鐘相當於人類的心臟,為單片機提供了時基脈搏。

單片機的I/O口則相當於人體的神經,單片機通過I/O口向外部發送和獲取信號。而通過在外部添加各種傳感器等外設,如光傳感、溼度傳感以及蜂鳴器等,就相當於給單片機系統添加了眼、鼻、嘴等五官;通過添加電機控制等設備就相當於添加了四肢。



單片機的ROM等存儲器,也相當於大腦的記憶區。

單片機除了以上必須有的功能外,通常還會有一些外設:

定時器,相當於鬧鐘,定時計數作用。

ADC,採集模擬電壓。

IIC/SPI,通訊接口,芯片間近距離通信,相當於人與人當面聊天。

USART,異步串行口通訊,485/232遠程通訊使用,相當於人遠距離通話。

其他外設就不一一講了。如有錯誤還請各位指正😃


二進制君


單片機工作原理是什麼?其實它就是模擬電路、數字電路和C語言的綜合應用,採用集成電路技術構成一個微型計算機!

單片機就是是一種集成電路芯片,採用超大規模集成電路技術,把具有數據處理能力的中央處理器、隨機存儲器、只讀存儲器和多種I/O串行口及中斷系統、定時器、計數器等功能集成在一塊硅片上組成一個微型並且很完善的計算機系統,以前在工業中使用廣範,現在開始融入生活的方方面面。


目前單片機使用的更加廣範,智能儀器儀表、通訊設備、導航系統以及家用電器。例如智能儀器儀表有智能變送器、智能數顯表,通訊設備有各種的手操器家用電器有智能電飯鍋、智能洗衣機、智能電視等。


工業自動化小白


單片機就是多片機集於一片的機,俗稱“微處理器”。

多片指的是:處理器、存儲器、ROM(FLASH)、RAM、I/O、定時器、時鐘電路、復位電路等等。

首先, 我們想實現一些功能,用編程語言(例如c語言)來編寫實現這些功能的程序代碼(編寫程序的軟件可以不是編譯軟件),

其次, 用編譯軟件(例如KEIL等)把程序代碼編譯成機器代碼(例如bin、hex等格式),

最後, 用下載器(線)通過下載接口把代碼寫入單片機的ROM(FLASH)(包括內部EEPROM內容)。

單片機工作狀態:

首先需要時鐘電路提供時鐘信號,

然後運行ROM(FLASH)中的機器代碼,

採集輸入口的信號,通過內部運算,控制輸出口的電平。

內部定時器,中斷,ADC等等模塊都按照機器代碼的內容工作。

以上簡單描述了簡單單片機的簡單工作原理。如要弄清不簡單單片機的不簡單工作原理,則需要海量的學習。



春天說


單片機由中央處理器(CPU)、程序存儲器(Flash)、數據存儲器(SRAM)、定時器/計數器、掉電呼醒專用定時器、I/O口、高速A/D轉換、比較器、看門狗、高速異步串行通信端口UART、CCP/PWM/PCA、高速同步串口SPI、R/C時鐘及高可靠復位等模塊組成,

單片機系統內部結構圖如下:

我介紹的是STC15系列的單片機,謝謝!


分享到:


相關文章: