51微控制器暫存器學習總結

2021-03-04 02:49:43 字數 5905 閱讀 9438

當=1時,程式從片內rom開始執行,當pc值超過片內rom容量時會自動轉向外部rom空間。

當=0時,程式從外部儲存器開始執行,例如前面提到的片內無rom的8031微控制器,在實際應用中就要把8031的引腳接為低電平。

8051片內有4kb的程式儲存單元,其位址為0000h—0fffh,微控制器啟動復位後,程式計數器的內容為0000h,所以系統將從0000h單元開始執行程式。但在程式儲存中有些特殊的單元,這在使用中應加以注意:

其中一組特殊是0000h—0002h單元,系統復位後,pc為0000h,微控制器從0000h單元開始執行程式,如果程式不是從0000h單元開始,則應在這三個單元中存放一條無條件轉移指令,讓cpu直接去執行使用者指定的程式。

另一組特殊單元是0003h—002ah,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:

0003h—000ah 外部中斷0中斷位址區。

000bh—0012h 定時/計數器0中斷位址區。

0013h—001ah 外部中斷1中斷位址區。

001bh—0022h 定時/計數器1中斷位址區。

0023h—002ah 序列中斷位址區。

可見以上的40個單元是專門用於存放中斷處理程式的位址單元,中斷響應後,按中斷的型別,自動轉到各自的中斷區去執行程式。從上面可以看出,每個中斷服務程式只有8個位元組單元,用8個位元組來存放乙個中斷服務程式顯然是不可能的。因此以上位址單元不能用於存放程式的其他內容,只能存放中斷服務程式。

但是通常情況下,我們是在中斷響應的位址區安放一條無條件轉移指令,指向程式儲存器的其它真正存放中斷服務程式的空間去執行,這樣中斷響應後,cpu讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程式。

可知,0000h-0002h,只有三個儲存單元,3個儲存單元在我們的程式存放時是存放不了實際意義的程式的,通常我們在實際編寫程式時是在這裡安排一條***指令,通過***指令跳轉到從0033h開始的使用者rom區域,再來安排我們的程式語言。從0033開始的使用者rom區域使用者可以通過***指令任意安排,但在應用中應注意,不要超過了實際的儲存空間,不然程式就會找不到。

資料儲存器

資料儲存器也稱為隨機訪問資料儲存器。資料儲存器分為內部資料儲存和外部資料儲存。mcs-51內部ram有128或256個位元組的使用者資料儲存(不同的型號有分別),片外最多可擴充套件64kb的ram,構成兩個位址空間,訪問片內ram用「mov」指令,訪問片外ram用「movx」指令。

它們是用於存放執行的中間結果和過程資料的。mcs-51的資料儲存器均可讀寫,部分單元還可以位定址。

mcs-51微控制器的內部資料儲存器在物理上和邏輯上都分為兩個位址空間,即:

資料儲存器空間(低128單元);

特殊功能暫存器空間(高128單元);

這兩個空間是相連的,從使用者角度而言,低128單元才是真正的資料儲存器。下面我們就來詳細的與大家講解一下:

低128單元:

片內資料儲存器為8位位址,所以最大可定址的範圍為256個單元位址,對片外資料儲存器採用間接定址方式,r0、r1和dptr都可以做為間接定址暫存器,r0、r1是8位的暫存器,即r0、r1的定址範圍最大為256個單元,而dptr是16位位址指標,定址範圍就可達到64kb。也就是說在定址片外資料儲存器時,定址範圍超過了256b,就不能用r0、r1做為間接定址暫存器,而必須用dptr暫存器做為間接定址暫存器。

從上我們可以得到,8051微控制器片內ram共有256個單元(00h-ffh),這256個單元共分為兩部分。其一是位址從00h—7fh單元(共128個位元組)為使用者資料ram。從80h—ffh位址單元(也是128個位元組)為特殊暫存器(sfr)單元。

從圖1中可清楚地看出它們的結構分布。

1、通用暫存器區(00h-1fh)

在00h—1fh共32個單元中被均勻地分為四塊,每塊包含八個8位暫存器,均以r0—r7來命名,我們常稱這些暫存器為通用暫存器。這四塊中的暫存器都稱為r0—r7,那麼在程式中怎麼區分和使用它們呢?聰明的intel工程師們又安排了乙個暫存器——程式狀態字暫存器(psw)來管理它們,cpu只要定義這個寄存的psw的d3和d4位(rs0和rs1),即可選中這四組通用暫存器。

對應的編碼關係如下表所示。惹程式中並不需要用4組,那麼其餘的可用做一般的資料緩衝器,cpu在復位後,選中第0組工作暫存器。

組 rs1 rs0 r0 r1 r2 r3 r4 r5 r6 r701

23 0 0

0 1

1 0

1 1 00h

08h10h

18h 01h

09h11h

19h 02h

0ah12h

1ah 03h

0bh13h

1bh 04h

0ch14h

1ch 05h

0dh15h

1dh 06h

0eh16h

1eh 07h

0fh17h

1fh2、位定址區(20h-2fh)

片內ram的20h—2fh單元為位定址區,既可作為一般單元用位元組定址,也可對它們的位進行定址。位定址區共有16個位元組,128個位,位位址為00h—7fh。位位址分配如下表所示:

ram位定址區位址表

單元位址 msb 位位址 lsb

2fh 7fh 7eh 7dh 7ch 7bh 7ah 79h 78h

2eh 77h 76h 75h 74h 73h 72h 71h 70h

2dh 6fh 6eh 6dh 6ch 6bh 6ah 69h 68h

2ch 67h 66h 65h 64h 63h 62h 61h 60h

2bh 5fh 5eh 5dh 5ch 5bh 5ah 59h 58h

2ah 57h 56h 55h 54h 53h 52h 51h 50h

29h 4fh 4eh 4dh 4ch 4bh 4ah 49h 48h

28h 47h 46h 45h 44h 43h 42h 41h 40h

27h 3fh 3eh 3dh 3ch 3bh 3ah 39h 38h

26h 37h 36h 35h 34h 33h 32h 31h 30h

25h 2fh 2eh 2dh 2ch 2bh 2ah 29h 28h

24h 27h 26h 25h 24h 23h 22h 21h 20h

23h 1fh 1eh 1dh 1ch 1bh 1ah 19h 18h

22h 17h 16h 15h 14h 13h 12h 11h 10h

21h 0fh 0eh 0dh 0ch 0bh 0ah 09h 08

h20h 07h 06h 05h 04h 03h 02h 01h 00h

8051微控制器的儲存器結構

mcs-51微控制器在物理結構上有四個儲存空間:

1、片內程式儲存器

2、片外程式儲存器

3、片內資料儲存器

4、片外資料儲存器

但在邏輯上,即從使用者的角度上,8051微控制器有三個儲存空間:

1、片內外統一編址的64k的程式儲存器位址空間(movc)

2、256b的片內資料儲存器的位址空間(mov)

3、以及64k片外資料儲存器的位址空間(movx)

在訪問三個不同的邏輯空間時,應採用不同形式的指令(具體我們在後面的指令系統學習時將會講解),以產生不同的儲存器空間的選通訊號。

程式記憶體rom

定址範圍:0000h ~ ffffh 容量64kb

ea = 1,定址內部rom;ea = 0,定址外部rom

位址長度:16位

作用: 存放程式及程式執行時所需的常數。

七個具有特殊含義的單元是:

0000h —— 系統復位,pc指向此處;

0003h —— 外部中斷0入口

000bh —— t0溢位中斷入口

0013h —— 外中斷1入口

001bh —— t1溢位中斷入口

0023h —— 串列埠中斷入口

002bh —— t2溢位中斷入口

內部資料儲存器ram

物理上分為兩大區:00h ~ 7fh即128b內ram 和 sfr區。

作用:作資料緩衝器用。

下圖是8051微控制器儲存器的空間結構圖

程式儲存器

乙個微處理器能夠聰明地執行某種任務,除了它們強大的硬體外,還需要它們執行的軟體,其實微處理器並不聰明,它們只是完全按照人們預先編寫的程式而執行之。那麼設計人員編寫的程式就存放在微處理器的程式儲存器中,俗稱唯讀程式儲存器(rom)。程式相當於給微處理器處理問題的一系列命令。

其實程式和資料一樣,都是由機器碼組成的**串。只是程式**則存放於程式儲存器中。

mcs-51具有64kb程式儲存器定址空間,它是用於存放使用者程式、資料和**等資訊。對於內部無rom的8031微控制器,它的程式儲存器必須外接,空間位址為64kb,此時微控制器的端必須接地。強制cpu從外部程式儲存器讀取程式。

對於內部有rom的8051等微控制器,正常執行時,則需接高電平,使cpu先從內部的程式儲存中讀取程式,當pc值超過內部rom的容量時,才會轉向外部的程式儲存器讀取程式。

當=1時,程式從片內rom開始執行,當pc值超過片內rom容量時會自動轉向外部rom空間。

當=0時,程式從外部儲存器開始執行,例如前面提到的片內無rom的8031微控制器,在實際應用中就要把8031的引腳接為低電平。

8051片內有4kb的程式儲存單元,其位址為0000h—0fffh,微控制器啟動復位後,程式計數器的內容為0000h,所以系統將從0000h單元開始執行程式。但在程式儲存中有些特殊的單元,這在使用中應加以注意:

其中一組特殊是0000h—0002h單元,系統復位後,pc為0000h,微控制器從0000h單元開始執行程式,如果程式不是從0000h單元開始,則應在這三個單元中存放一條無條件轉移指令,讓cpu直接去執行使用者指定的程式。

另一組特殊單元是0003h—002ah,這40個單元各有用途,它們被均勻地分為五段,它們的定義如下:

0003h—000ah 外部中斷0中斷位址區。

000bh—0012h 定時/計數器0中斷位址區。

0013h—001ah 外部中斷1中斷位址區。

001bh—0022h 定時/計數器1中斷位址區。

0023h—002ah 序列中斷位址區。

可見以上的40個單元是專門用於存放中斷處理程式的位址單元,中斷響應後,按中斷的型別,自動轉到各自的中斷區去執行程式。從上面可以看出,每個中斷服務程式只有8個位元組單元,用8個位元組來存放乙個中斷服務程式顯然是不可能的。因此以上位址單元不能用於存放程式的其他內容,只能存放中斷服務程式。

但是通常情況下,我們是在中斷響應的位址區安放一條無條件轉移指令,指向程式儲存器的其它真正存放中斷服務程式的空間去執行,這樣中斷響應後,cpu讀到這條轉移指令,便轉向其他地方去繼續執行中斷服務程式。

下圖是rom的位址分配圖:

從上圖中大家可以看到,0000h-0002h,只有三個儲存單元,3個儲存單元在我們的程式存放時是存放不了實際意義的程式的,通常我們在實際編寫程式時是在這裡安排一條***指令,通過***指令跳轉到從0033h開始的使用者rom區域,再來安排我們的程式語言。從0033開始的使用者rom區域使用者可以通過***指令任意安排,但在應用中應注意,不要超過了實際的儲存空間,不然程式就會找不到。

51系列微控制器特殊功能暫存器總結

第一節 片內ram對映 51 00h 7fh 128b片內 data 其中00h 07h bank0,08h 0fh bank1,10h 17h bank2,18h 1fh bank3.20h 2fh 位定址區 bdata 30h 7fh 堆疊區。80h ffh sfr區 52 增加了80h ffh...

51微控制器學習心得四

行的按鍵a端都依次接在低四位,四列按鍵的b端依次接在高四位。我們把鍵值編為 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 對此,我引入了一位高人編寫的鍵值判斷程式 uchar keyscan void for j 0 j 4 j 它的方式比較容易理解,其實就是按照行列...

2 2MCS 51微控制器的儲存器

2.2 mcs 51微控制器的儲存器 mcs 51的儲存器結構與常見的微型計算機的配置方式不同,它把程式儲存器和資料儲存器分開,各有自己的定址系統 控制訊號和功能。程式儲存器用來存放程式和始終要保留的常數,資料儲存器通常用來存放程式執行中所需要的常數或變數。mcs 51的儲存器結構如圖2.4所示。在...