關(guān)于單片機RAM的作用
前128單元具體分為:
本文引用地址:http://dyxdggzs.com/article/201611/319886.htm1.工作寄存器區:共4個(gè)組,每組為8個(gè)存儲單元,即00H-07H,08H-0FH,10H-17H,18H-1FH,具體選擇哪一個(gè)由程序狀態(tài)字(PSW)中的RS1和RS0的組合決定(在此我就不展開(kāi)了,呵呵……)
2.位尋址區:20H-2FH,共16個(gè)單元,每一位可以進(jìn)行位尋址(16*8=128個(gè)位地址),就是每一個(gè)觸發(fā)位,就是bit可以尋址
3.便箋區:從30H-7FH,共80個(gè)單元,用于存放用戶(hù)數據或作堆棧區使用。
4.從80H-FFH為專(zhuān)用寄存器占用,其中還離散的分布SFR(21個(gè)特殊功能寄存器)
二、256B
其中00H~7FH
可分為3個(gè)區域:
00H~1FH 是通用寄存器區
20H~2FH 是位尋址區
30H~7FH 是用戶(hù)RAM區
80H~FFH是特殊功能寄存器區
三、AT89S51單片機的ram,只有128字節,地址范圍:00H~7FH。
SFR不是RAM,是特殊功能寄存器,地址范圍:80H~FFH,SFR在其中離散分布著(zhù)。
AT89S52單片機的ram,就有256字節,地址范圍:00H~FFH。
SFR,特殊功能寄存器,仍然在地址范圍:80H~FFH。
兩者的地址重疊了,區別方法如下:
對80H~FFH直接尋址,就是讀寫(xiě)SFR,特殊功能寄存器;
對80H~FFH間接尋址,就是讀寫(xiě)RAM。
先說(shuō)說(shuō)這幾個(gè)詞是什么意思:
1,DATA,51的內部RAM,只有128B(字節)大小,不管是最新的什么增強型單片機;
2,XDATA,外部RAM,只能使用MOVX尋址
3,CODE,代碼區,即是你的代碼的大小,AT89C51為4K,C52為8K等,增強型的有更多的選擇。
然后說(shuō)明一下,幾種RAM的區別:
1,DATA,也是上面1提到的DATA RAM,占51的128B;
2,IDATA,大小也為128B,與DATA構成256字節的內存(如AT89C52)
3,PDATA,外部RAM的前256B(就是一個(gè)頁(yè)的大小),是XDATA的一部分;
4,XDATA,外部RAM
所以你的那個(gè)單片機的1280B,其實(shí)組成為:
DATA :128B
IDATA:128B
XDATA:1024B
所以你的問(wèn)題,“使用片內RAM”打勾只是軟件仿真用的;你的XDATA用了758B,說(shuō)明你特意用XDATA關(guān)鍵字定了這么大的內存,比如大數組或者內存模式時(shí),使用了lager模式,那么編譯器會(huì )自動(dòng)把超出的部分放到XDATA里,我猜你應該是這里選擇了lager模式,不過(guò)你的內容這么大,也只能選擇lager模式。
評論