單片機外部程序存儲器
1. 單片機存儲器的程序存儲器
MCS-51中,程序存儲器通過16位程序計數器(PC)定址,具有64KB定址能力,也即可以在64KB的地址空間任意定址。其中,具有4KB片內程序存儲器空間,地址為000H-0FFFH(注:8031無片內程序存儲器);片外程序存儲器空間最大可擴展到64KB,地址為0000H-FFFFH,片內、外統一編址。
1、程序存儲器片內與片外地址
由於片內、外統一編址,所以片內4KB存儲空間地址000H-0FFFH與片外存儲器地址000H-0FFFH發生沖突。但是,CPU是訪問片內存儲器還是訪問片外存儲器,可由引腳上所接的電平來確定。
1)當EA引腳接高電平時,若程序計數器(PC)值超出片內存儲空間,則自動轉向片外程序存儲器空間執行程序;
2)當EA引腳接低電平時,單片機只能執行片外程序存儲器的程序。
另外,因為8031沒有片內程序存儲器,所以就將EA引腳固定接低電平,通過外部擴展程序存儲器來存放程序;而對其它MCS-51,若沒有片外程序存儲器,那應將引腳固定接高電平。通過EA引腳所接電平不同,解決了程序存儲器中片內、片外地址沖突問題。
2、程序存儲器中的特殊單元
MCS-51程序存儲器中,有6個存儲單元具有特殊用途。
0000H單元為系統啟動地址。MCS-51單片機啟動復位後,程序計數器(PC)的內容為0000H,所以系統將從0000H單元取指令,並開始執行程序。程序設計時一般在該地址存放一條絕對跳轉指令,轉入主程序的入口地址。
另外0003H一002AH日被均勻地分成5段,用於5個中斷服務程序的入口。
其中0003H、000BH、0013H、O01BH、0023H為5個中斷源的中斷服務程序的入口地址。
中斷源的中斷服務程序的入口地址,即當中斷產生相應的中斷服務程序的起始地址被裝入程序計數器(PC),系統將從該地址取指令,並執行程序 。 8051有256個單元的內片數據存儲器,其中00H-7FH為片內隨機存儲器RAM,也叫低128B;80H-FFH為特殊功能寄存器,也叫高128B。低128B又分為工作寄存器區、位定址區、用戶RAM區。
1.工作寄存器區(00H-1FH)
在00H-1FH共32個單元,被均勻地分為四組工作寄存器堆:RB0、RB1、RB2、RB3,每組寄存器堆包含8個工作寄存器,均以R0-R7來命名,這些寄存器被稱為通用寄存器。工作寄存器用於臨時存放8位信息。在使用時,由程序狀態字寄存器中的RS0、RS1來選擇工作寄存器堆。
2.位定址區(20H-2FH)
片內數據存儲器的20H-2FH存儲區為位定址區,既可作為一般單元按位元組定址,也可按位進行定址。位定址區有16個位元組,位地址為00H-7FH。
3.用戶RAM區(30H-7FH)
用戶RAM區主要用作數據緩沖區和堆棧。這個存儲區只能按位元組定址,用作存放數據及作為堆棧區。通常堆棧區被設置在這塊存儲區,由堆棧寄存器SP指定,CPU復位時SP=07H,使得堆棧實際上是從08H開始的,但08H-1FH屬於工作寄存器區 。 MCS-51單片機的特殊功能寄存器 符號 地址 功能介紹 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序狀態字 TH2* CDH 定時器/計數器2(高8位) TL2* CCH 定時器/計數器2(低8位) RLDH* CBH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器高八位 RLDL* CAH 外部輸入(P1.1)計數器/自動再裝入模式時初值寄存器低八位 T2CON* C8H T2定時器/計數器控制寄存器 IP B8H 中斷優先順序控制寄存器 P3 B0H P3口鎖存器 IE A8H 中斷允許控制寄存器 P2 A0H P2口鎖存器 SBUF 99H 串列口鎖存器 SCON 98H 串列口控制寄存器 P1 90H P1口鎖存器 TH1 8DH 定時器/計數器1(高8位) TH0 8CH 定時器/計數器0(高8位) TL1 8BH 定時器/計數器1(低8位) TL0 8AH 定時器/計數器0(低8位) TMOD 89H T0、T1定時器/計數器方式控制寄存器 TCON 88H T0、T1定時器/計數器控制寄存器 DPH 83H 數據地址指針(高8位) DPL 82H 數據地址指針(低8位) SP 81H 堆棧指針 P0 80H P0口鎖存器 PCON 87H 電源控制寄存器
2. 單片機訪問外部程序存儲器用什麼指令
外部程序存儲器ROM MOVC外部數據存儲器RAM MOVX內部數據存儲器RAM MOV