AT89S52單片機(jī)存儲器結(jié)構(gòu)
AT89S52單片機(jī)的存儲器結(jié)構(gòu)共分片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器4個部分。
1.程序存儲器
設(shè)計人員編寫的程序存放在微處理器的程序存儲器中。
AT89S52具有64KB程序存儲器尋址空間,它是用于存放用戶程序、數(shù)據(jù)和表格等信息,程序存儲器的結(jié)構(gòu)如圖1所示。
圖1 AT89S52程序存儲器的結(jié)構(gòu)
AT89S52片內(nèi)片外的程序存儲器在統(tǒng)一邏輯空間中,地址從0000H~FFFFH,共有64K字節(jié)范圍。引腳接高電平時,程序從片內(nèi)程序存儲器0000H開始執(zhí)行,即訪問片內(nèi)存儲器。當(dāng)PC值超出片內(nèi)ROM容量時,會自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行。引腳接低電平時,迫使系統(tǒng)全部執(zhí)行片外程序存儲器0000H開始存放的程序。
2.?dāng)?shù)據(jù)存儲器
AT89S52 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。地址為00H~FFH。這256個單元共分為兩部分。其一是地址從00H~7FH單元(共128個字節(jié))為用戶數(shù)據(jù)RAM。從80H~FFH地址單元(也是128個字節(jié))為特殊寄存器(SFR)單元。高128 字節(jié)與特殊功能寄存器重疊,也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。
在00H~1FH共32個單元中被均勻地分為四塊,每塊包含八個8位寄存器,均以R0~R7來命名,稱這些寄存器為通用寄存器。這四塊中的寄存器都稱為R0~R7,利用PSW的第3和第4位(RS0和RS1),即可選中這四組通用寄存器。
內(nèi)部數(shù)據(jù)存儲器的20H—2FH單元為位尋址區(qū),可作為一般單元用字節(jié)尋址,也可對它們的位進(jìn)行尋址,位尋址區(qū)地址如表1所示
表1 RAM位尋址區(qū)地址表
3. 中斷服務(wù)程序的入口地址
在程序存儲區(qū)中,為中斷服務(wù)程序保存了一段中斷服務(wù)程序的入口地址:其中一組特殊單元是0003H—0032H,各個單元各有用途,它們被分為六段,每個段8個字節(jié),專門留給中斷服務(wù)程序使用,被稱為中斷矢量區(qū)。AT89S52共有8個中斷源,6個中斷矢量,它們的定義如下表2所,
表2 中斷服務(wù)程序的入口地址
4.特殊功能寄存器SFR(Special? Function Register)
特殊功能寄存器是指有特殊用途的寄存器集合,也稱為專用寄存器,本質(zhì)上是一些具有特殊功能的片內(nèi)RAM單元,反映單片機(jī)的運(yùn)行狀態(tài),很多功能也通過特殊功能寄存器來定義和控制程序的執(zhí)行。
AT89S52單片機(jī)內(nèi)部高128(80~FFH)地址分配給特殊功能寄存器。這個地址空間和芯片內(nèi)數(shù)據(jù)存儲器的高128字節(jié)地址完全重疊,但兩者在物理硬件上是完全獨(dú)立的,用尋址方式來區(qū)分這個完全重疊的地址空間。使用直接尋址方式訪問這個地址空間時,訪問的是特殊功能寄存器;使用間接尋址方式訪問這個地址空間時,訪問的是數(shù)據(jù)存儲器。
AT89S52有32個特殊功能寄存器,它們被離散地分布在內(nèi)部RAM的80H~FFH地址中,這些寄存的功能已作了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。
5.幾個注意問題
1)地址的重疊性
單片機(jī)中的所有存儲器都必須分配地址,可以尋址的地址范圍為64KB,數(shù)據(jù)存儲器與程序存儲器都占用相同的地址。
程序存儲器中片內(nèi)片外0000H~0FFFFH低4KB地址完全重疊,但是我們使用引腳進(jìn)行區(qū)分:=0時,選擇片外,=1時,選擇片內(nèi),這樣就完全區(qū)分開來了。
數(shù)據(jù)存儲器中片內(nèi)外0000H~00FFH的256個單元地址完全重疊,片內(nèi)外數(shù)據(jù)的訪問采用不同指令來區(qū)分:MOV指令訪問片內(nèi)數(shù)據(jù)存儲器,MOVX指令訪問片外數(shù)據(jù)存儲器。
2)程序存儲器(ROM)與數(shù)據(jù)存儲器(RAM)的區(qū)分
程序存儲器(ROM)與數(shù)據(jù)存儲器(RAM)的區(qū)分在使用上是嚴(yán)格區(qū)分的,程序存儲器只能放置程序指令及常數(shù)表格,對程序存儲器中數(shù)據(jù)的訪問只可以使用MOVC指令。而數(shù)據(jù)存儲器則存放數(shù)據(jù),片內(nèi)外的操作指令分別用MOV,MOVX進(jìn)行操作。
3)位地址空間的區(qū)域劃分
片內(nèi)RAM中的20H~2FH的128位,以及SFR中的位地址,這些位尋址單元與位指令集構(gòu)成了位處理器系統(tǒng)。
編輯:admin 最后修改時間:2020-04-06