1. 程式人生 > >微控制器原理及應用學習筆記(一)

微控制器原理及應用學習筆記(一)

*在學習51之前,最先接接觸到的是Arduino,這個東西上手確實十分的簡單,可以做出來一些小玩意,但是它的效能終究是不夠強大,對於一些比較厲害的作品,用Arduino就顯得心有餘而力不足了,所以現在開始學習51和stm32。51的學習在大學本科階段,在學校課堂上學到的基本上是一些理論知識,這些東西也確實有一定的必要,畢竟掌握了都是自己的。所以說我準備對這些理論的知識進行一個整理。好,廢話不多說,現在切入正題。
對於一般的大學教材,前面兩章基本上都是對微控制器的一些基本的介紹,主要就是一些對微控制器硬體結構認識過程,這個主要是讓我們有個總體的認識,開始適應微控制器的學習。這些東西就忽略了吧。就從51系列微控制器的指令系統開始吧。這裡使用匯編語言編寫程式的。(以上都是廢話,自動忽略)*

51系列微控制器的指令系統

一:微控制器指令系統的概述
(1)總共111條指令
(單位元組指令49條,雙位元組指令45條,三位元組指令17條)
(一個機器週期、12個時鐘震盪週期指令64條,兩個機器週期、24個時鐘震盪週期指令45條、乘除兩條指令位4個機器週期)
(12MHZ晶振:機器週期位1us)
(2)51指令不區分大小寫
(3)指令格式:操作碼+運算元

二:微控制器的定址方式
(1)暫存器定址方式:MOV A,Rn
(2)直接定址方式:MOV A,40H
(定址範圍:第一:內部RAM的128個單元、第二:特殊功能暫存器SFR,除了以單元形式外還能用暫存器符號形式:即MOV A,80H==MOV A,P0)
(3)暫存器間接定址:(暫存器中放的是運算元地址、暫存器前面加標誌符@)例如:MOV R1,#40H MOV A ,@R1
(定址範圍:第一:訪問內部RAM、第二:片外資料儲存器的64k位元組的間接定址、第三:片外的資料儲存器的低256位元組、第四:堆疊區)
(4)立即定址方式:(運算元在指令中直接給出,需在運算元前面加上#,如果首位是A-F,前面還加0)例如:MOV A,#40H MOV A,#0FFH
(5)基址暫存器加變址暫存器間址定址方式:(以DPTR\PC作為基址暫存器,以累加器A作為變址暫存器)
(6)位定址方式:例如:MOV A,40H 把40H的值送到進位位C
(定址範圍:第一:內部RAM位定址區、第二:特殊功能暫存器中的可定址位)
(7)相對定址方式:(目的地址=轉移指令所在地址+轉移指令位元組數+rel(帶符號的8位二進位制數的補碼數))

三:51系列微控制器的指令系統及一般說明
(1)分類介紹:
資料傳送類(28條)
算數操作類(24條)
邏輯運算類(25條)
控制轉移類(17條)
位操作類 (17條)
(2)指令中符號的意義:
Rn當前暫存器區8個工作暫存器
Ri當前選中的暫存器區中可做間接定址暫存器的2個暫存器
Direct 直接地址,即8位內部資料儲存單元或者特殊功能暫存器地址
#data包含指令中的8位立即數
#data包含指令中的16位立即數
rel相對轉移指令中的偏移量,8位帶符號的補碼數
DPTR資料指標,可用作16位的資料地址暫存器
bit內部RAM或者SFR中直接定址位
C(Cy)

進位標誌位或者位處理機制中的累加器
addr11 11位目的地址
addr16 16位目的地址
@間接定址暫存器
(x)x中的內容
((X))由X定址的單元中的內容
---->箭頭右邊內容被箭頭左邊所替代

(持續更新中!!!)