單片機運行原理的一點點總結
來源:互聯網發布者:宋元浩 關鍵詞: 單片機 更新時間: 2023/01/04
單片機是將中央處理單元(CPU)、儲存器、輸寫輸出集成在一片芯片上,能夠說單片機就是一臺微型計算機,只是和我們平常運用的計算機相比它的功能有所不同,也沒有我們用的計算機那樣壯大。
計算機能夠運行一個個應用,單片機能夠依照工程師的編寫可執行文件,達到林林種種的功能。那么,單片機是怎么知道要執行什么指令,做什么動作呢,我們的指令又是怎么被單片機識別呢?了解這個過程,能夠加深對單片機的了解。
首先要從CPU的組成說起,CPU是由晶體管組成的,這些晶體管是一種半導體器件,假如二極管就是最為常見的半導體器件。電流只能從正極流向負極,反向則截止。
晶體管通過各種組合方式構成門電路:與門,或門,非門,異或門......。門電路又稱為邏輯門,是數字電路的根底,常見門電路,及其真值表:
與門電路
與門電路能夠想象為兩個串聯開關控制一個燈泡,獨有同時閉合兩個開關,燈泡才會被點亮。開關表示晶體管的導通與截止,燈泡的點亮與熄滅表示電路輸出的高低電平。
其他門電路也是由各種晶體管構成,不同的輸寫,有不同的輸出,構成各種功能。各種門電路通過復雜的組合就成了CPU了。其次用CPU完成各種復雜計算的。
加法器
有了CPU,我們用它來算一道小學生算術題1+1=2,看看它是怎么計算的,從一個簡略加法器初始,加法器由半加器組成。
半加器:
半加器由一個與門和異或門構成。不考慮低位進位來的進位值,獨有兩個輸寫,兩個輸出。
1+1=2,2在二進制中表示為0010。在半加器中:異或門輸寫不同的電平(不是同時高或低),輸出為高,也就是1+0或0+1,輸出1,當兩個都輸寫為1輸出為0,與門則輸出為1,也就是進位。能夠把它抽象成一個黑盒子。
全加器:
用兩個半加器可以組成一個全加器。
當多位數相加時,半加器可用于最低位求和,并給出進位數。第二位的相加有兩個待加數(B和進位CO),還有一個來自前面低位送來的進位數 (A)。這三個數相加,得出本位和數(全加和數)和進位數。同樣能夠把它抽象出來。
假如要計算多位數的相加,則須要多個全加器以及其他門電路,組合出更復雜的加法器。減法的運算能夠用加法來分解:
減法:10 - 5 = 10 +(-5),須通過反碼,補碼等操作。
其他運算器也有有關的門電路來組成,相關知識這里不展開。
從加法器我們不難得出,CPU的運算是各種門電路的高低電平的輸寫和輸出,高電平為1,低電平為0,把我們平常的十進制數字轉成二進制數輸寫,輸出二進制數。
寄存器
兩個數字相加用全加器的組合來完成,假如是多個數字的相加呢?假如1+2+3+4+5+……+100,該怎么完成呢?
依照我們的計算過程來看這個問題,我們先把前兩個數拿出來相加,得到的和再和第三個數相加,依次累加到100,轉換到單片機來完成,那就要把所有的相加數放到一個存儲器中,以便在每次的相加中取出,還要把每次相加的和數保存起來用到下一次的相加,這就用到了寄存器了。
寄存器-1保存1-100的數字,寄存器-2保存每次的相加結果。計算1-100的相加,寄存器-2的初始值為0,依次取出寄存器-1的數字和寄存器-2的結果相加:
1+0=1,
2+1=3,
3+3=6,
4+6=10……
鎖存器:
但是寄存器是怎么幫我們保存數據的呢?這就要鎖存器(Latch)來幫助了,兩個或非門組成了一個最簡略的鎖存器。
簡略的說,這個單元記住了之前S端的輸寫1,直到我們把R端設為1,輸出端Q才變回0。
其次在這個簡略鎖存器加上控制端G和一個輸寫端D就變成了D鎖存器:
它有兩個輸寫端,分別是一個信號控制G,一個輸寫數據信號D,一個輸出Q。它的功能就是在G有效的時候把D的值傳給Q,也就是鎖存的過程。
觸發器:
把兩個D鎖存器聯合到一起就成了D觸發器(DATA flip-flop)。觸發器也叫雙穩態門,又稱雙穩態觸發器,是一種能夠在兩種狀態下運行的數字邏輯電路。觸發器一直保持它們的狀態,直到它們收到輸寫脈沖,又稱為觸發。常見的觸發器包含:RS 觸發器、D 觸發器和 JK觸發器等,其中D觸發器最為常用。
當鎖存器-1控制G為有效信號時,D的輸寫傳到到鎖存器-2的輸寫,但是此時鎖存器-2的控制信號不是有效的,所以鎖存器-2的輸出Q沒有變更;當鎖存器-1的控制G變為沒效,鎖存器-2的控制信號變為有效,鎖存器-2的輸出Q就變更了,也就是觸發器的D輸寫傳到了Q,并且D沒有輸寫就一直不變。
時序電路:
我們再來看看1—100的累加過程,假如寄存器-1和寄存器-2的存儲速度不一樣,或者運算單元取數不協調,也就是寄存器-2沒來得及存儲,或者寄存器-1還沒取出下一個參與運算的數字,則此次的運算就會就會出錯,又會影響到下一次的運算,這個影響會沒限放大到之后的結果,并且單片機還有很多外設須要同步運行,這時就須要一個統一指揮來同步各個局部的行動,什么時候該做什么,做到哪一步了。
這個指揮就是時鐘。時鐘電路產生脈沖信號給電路,能夠認為給一次脈沖信號,單片機各個部位就動一下,電路就刷新一下,這就做到了行動統一。前面的D鎖存器,D觸發器G輸寫端就是時鐘脈沖信號輸寫,控制G輸寫信號,進而控制Q的輸出,或者記住Q值。這是內存最初的樣子。
到此,我們知道了寄存器就是一種時序邏輯電路,但這種時序邏輯電路只包括存儲電路。寄存器的存儲電路是由鎖存器或觸發器構成的,拿來暫時寄存參與運算的數據和運算結果。
一個鎖存器或觸發器能存儲1位二進制數,所以由N個鎖存器或觸發器能夠構成N位寄存器,一般有8位寄存器、16位寄存器等。它被廣泛的用于各類數字系統和計算機中。
運行程序
有了前面的鋪墊,我們來嘗試分析一下,代碼從是怎么被單片機識別的,并轉換成功能輸出的。
首先工程師把代碼邏輯寫好,再編譯成單片機的可執行程序,這個可執行程序現實中上就是變成由0,1組成的按一定規律排列好的二進制數,再用燒錄器寫進單片機。
單片機內部就是由我們前面學的門電路的各種組合,門電路也由半導體器件構成,這些半導體PN結是一種特殊的熔絲。空白的單片機內部是矩陣排列的熔絲,在燒錄過程,程序中0的地方就熔斷,1的地方就導通。燒錄好之后,單片機就有了邏輯功能。
執行程序過程:從程序存儲區讀取程序指令——分析指令——執行指令。
讀取指令:就是依據程序計算器(PC)的地址取出相應的指令,送到指令寄存器。
分析指令:將指令寄存器中的指令操作碼取出后進行譯碼,分析其指令性質。如指令是我們之前的加法運算中的取加數,則尋找加數的地址。
執行指令:沒非是把一條二進制代碼,轉換成數字信號(高低電平),操作邏輯門電路,就像我們的加法器一樣輸寫輸出。把經過邏輯門運算的結果輸出,把單片機的有關引腳電平輸出高或低。
也就是單片機上電開機,單片機處于初始狀態,能夠認為初始狀態中程序計算器(PC)就有了第一個指令地址,在時序電路作用下,送到指令寄存器,分析指令,執行指令,輸出功能,如此循環。單片機就這樣自動進入執行程序過程。
當然單片機運行的過程是很復雜的,這里只是個人簡略的了解,總結。
這里還沒有內容,您有什么問題嗎?
電子電路資源推薦
- 實用電子元器件與電路基礎(第2版)
來源:下載中心
- 汽車嵌入式系統的開發流程
來源:下載中心
- 焊接基礎知識
來源:大學堂
- 放大器穩定性系列教程
來源:大學堂
- 單片機運行原理的一點點總結
來源:電路圖
- 戴維寧定理:概念介紹及其求解過程
來源:電路圖
推薦帖子 最新更新時間:2025-03-21 01:16
- 用430BOOST-SHARP96的GERBER文件打了幾塊板子,已附實物圖
- 剛好公司用到了夏普記憶屏,像素是128*128的,也是1.3寸. 最近看到了最近非常火的金剛狼開發板,從而得到信息TI也有用過夏普的低功耗屏. 于是就直接發出了TI提供的GERBER文件進行制作,看看回來是什么效果. 也申請了 TI 首屆低功耗設計大賽之玩轉MSP430 FR
wgsxsm
微控制器 MCU
- 藍牙4.0協議棧按鍵流程分析筆記
- 之前在藍牙技術群看到好多網友不知道按鍵流程到底是什么情況,平時也沒時間,在群里也一兩句說不明白,也就說了下可以去看下zigbee按鍵流程過程,其實都是相通的,現在特意發帖分享下,希望能起到一個拋磚引玉的作用。 在介紹藍牙按鍵流程分析之前,我們需要了解一個概念,那就是就是OSA
wateras1
無線連接
- dsp關于無刷直流電機
- 誰有基于dsp對無刷直流電機控制的程序? dsp關于無刷直流電機 以附件的形式發給你了!!
狂掃巨
DSP 與 ARM 處理器
- 能不能把Flash或EPROM當作掉電后保存數據的存儲介質?
- 51中的Flash性能怎么樣?能不能把Flash當作掉電后保存數據的存儲介質? 最近在看華邦的一款W77E58單片機的資料,里面寫著內建32KB的flash EPROM。我覺得很奇怪,到底是FLASH還是EPROM?更或者是FLASH EPROM。 同事說可以用這里面的FLASH
amsung_gs
嵌入式系統
- 請教TMS320VC5509A二次Boot問題,謝謝
- 本人自行編寫的二次加載(Pageload)程序在CCS3.3開發環境下通過連接仿真器可以將FLASH中的用戶程序搬移到DSP的RAM中并能保證其正確運行。但是,當我將二次加載(Pageload)程序燒寫到FLASH中,想利用C5509A內部固化的bootloader先完成二次加載
969121641
DSP 與 ARM 處理器
- 4*4*4 光立方詳細制作過程
- 雙色: http://v.youku.com/v_show/id_XNjE1NzkyNjEy.html?qq-pf-to=pcqq.c2c 單色: http://v.youku.com/v_show/id_XNjE1NzgzMjky.html?qq-pf-to=pcqq.c2
a553110519
51單片機
- N MOS在源漏之間產生的負電壓尖峰對MOS管的損壞是否有影響
- 【Altera SoC體驗之旅】+Altera SoC特點總結
- 請求大神,關于引腳P1.0,P1.1的問題
- 轉讓 OK6410
- 收到了ADI的魔方了,外觀很精致很贊哦
- 太陽能手機充電器的電路設計
- 【DIY手機】+ xijiele
- 關于CD4051
- AVR單片機學習資料
- 【諜照】PopMetal上運行Chrome OS
- TI2015 年電源管理指南
- ADI《模擬對話》合訂本(2014-2015),免費下載啦~~~~
- 啟動代碼
- [轉、編]FM電路集錦
- 【LCD12864學習】第8篇任意直線
- 【玩轉ADuCM360】 自己做的ADuCM360 ADC初始化程序-----芯片由VOCO_2000網友提供
- 誰用stm32實現過紅外測距,進來交流一下。
- msp430怎么用硬件spi讀取字庫
- #以拆會友#在便攜式DVD里遨游
- STM32中斷觸發問題
- LT3692AIFE 四路輸出 5V、2.5V、1.8V 和 1.2V 多頻同步、兩級轉換器的典型應用電路
- 本工程是用于驗證 立創商城NST1001(C399508)
- ATAVRSB201-1,使用 ATmega16HVA AVR MCU 智能電池設備的評估套件,用于單節鋰離子電池應用
- REF196 精密微功率、低壓差堆疊電壓基準的典型應用電路
- AKD4683-B,帶 2CH ADC 4CH DAC 的 AK4683 24 位音頻編解碼器評估板
- 帶NFC卡片功能的熱插拔簡易試軸器
- 【新疆工程學院】基于NE555呼吸燈
- ESP8266_12V繼電器模塊
- CH395Q
- 使用 Analog Devices 的 LT1183CS 的參考設計