導航:首頁 > 操作系統 > 單片機是如何區分片內片外ram

單片機是如何區分片內片外ram

發布時間:2022-12-15 07:53:07

單片機中什麼叫片內rom,片外rom,這個片內片外怎麼理解

你可以這樣理解,片內ram就是在單片機內部的ram,ram是隨機儲存器,運行時所產生的數據,關機或復位後就沒有了,而片外rom你就把他當做你手機的儲存卡吧,不是單片機內部的,而rom是程序儲存器,就像我說的,他是你手機的儲存卡,你下載了什麼資料進去,關機了,那些資料還在

② 單片機是如何區分片內與片外RAM的

匯編語言的指令不同,編譯出的機器碼不同,CPU 發出的硬體控制信號就不同。
如傳輸指令:MOV 是片內,MOVX 是片外。

③ 單片機中 什麼是片內RAM和片外RAM,RAM就是數據存儲器嗎

51單片機有以下幾個內存模塊組成:
1】rom或者flash,叫程序存儲區,你寫的程序是存在這裡面的,上電後從這裡面執行。
程序存儲區也分為片內和片外,一般來說,現在的51很多已經做到了64k,所以很少有外擴
片外flash或者片外的rom了,flash或者rom不管是片內還是片外的,只能用來定義常量,是用code來修飾,也就是說,用code來修飾的東西,在程序運行過程中,不能修改;
2】ram有------內部ram的低128位(00-7f),對應c語言就是data,比如我定義一個變數,
data
unsigned
char
var
=
0;
那麼,這個
var變數就是放在內部的低128位ram中
-------內部ram的高128位(80-ff),對應c語言就是idata,比如我定義一個變數,
idata
unsigned
char
var
=
0;
那麼,這個
var變數就是放在內部的高128位ram中
-------特殊功能寄存器(sfr)(80-ff),對應c語言就是sfr比如我定義一個變數,
sfr
unsigned
char
var
=
0x90;
那麼,這個
var變數就是放在內部的特殊功能寄存器中,這是你對var操作,相當於操作一個特殊的寄存器,但是小心,不能隨便定義sfr變數,很危險
------外部ram
64k(0000-ffff)
外部的ram可以擴展到65536個,但是前256個算是一頁,這一頁比較特殊,是用
pdata來修飾的,當然,也可以用xdata來修飾。
除了第一頁的256個以外的其他65280個空間,只能用xdata來修飾;
回過頭來討論pdata和xdata,這兩個都能修飾外部ram的第一頁,但是,pdata只能修飾第一頁,即最前面的256個外部ram,那麼,這最前面的256個到底用pdata還是xdata好的呢?
答案是pdata,因為xdata修飾的變數,用的是dptr定址,pdata用的是r0和r1.dptr因為是16位的,所以可以覆蓋整個的64k外部ram,r0和r1是8位,所以只能定址最前面的256個,也就是外部ram的第一頁,但是,用r0定址,比dptr快一倍,代碼也小的很多
樓主又疑惑了,好多地址是重復的,比如,我向80h地址寫一個數值,單片機怎麼知道讀的是內部的高128位ram?還是sfr?還是外部64k的ram呢?
答案是用指令,如果是直接定址,那麼訪問的就是sfr,如果是r0或者r1間接定址,就是內部高128位ram,如果是dptr或者是r0,r1間接定址,且配合的是movx指令,那麼就是訪問外部64kram中的第80h個地址。
概括一下來說,51的內存由以下組成:
1----程序存儲器(包括片內flash或rom,也包括片外flash或rom,c語言用code定義)
2----內部低128位ram,c語言用data定義
3---內部高128位ram,c語言用idata定義
4---內部sfr,c語言用sfr定義
5---外部65536個ram(通常,很多單片機廠家不會給你擴展那麼多的,一般來說擴展256個位元組或者1024個位元組就差不多了,最近宏晶的出了個擴展4096位元組的。這65536位元組的ram,前256個可以用pdata修飾,也可以用xdata修飾,超過256個之後的,只能用xdata修飾)
以上所說的只是針對51內核的單片機,其他內核的,像arm之類的,不是這種結構的。

④ MCS-51單片機的存儲器分為哪幾個存儲空間,分為哪幾種類型,分為哪幾個存儲區

MCS-51 的存儲器有【片內 RAM、片外 RAM 和 ROM】三個部分。

片內 RAM:

地址范圍:00H~7FH。

容量:128Byte。

(52 系列則增大一倍。)

片外 RAM:

地址范圍:0000H~FFFFH。

容量:64KB。

ROM:

地址范圍:0000H~FFFFH。

容量:64KB。

⑤ 單片機是如何區分片內ram和片外ram

就51單片機來說,C語言編程的話,變數前加xdata,表示用的是外部RAM
匯編語言編程的話,MOVX是訪問外部RAM的指令, MOV 訪問內部RAM的指令

⑥ 80c51單片機的片內片外程序存儲器和片內片外數據存儲器訪問如何區分

管腿EA接高電平,單片機首先訪問內部ROM,當地址值超過4K(0FFFH)時自動訪問外部ROM。EA接低電平,單片機只訪問外部ROM。
對於數據的話,可以通過定義來區分,idata,即片內 RAM 從 0x00~0xFF;pdata,即片外 RAM 從 0x00~0xFF;xdata,即片外 RAM 從 0x0000~0xFFFF。

⑦ 片外rom和片外ram各自的地址范圍單片機如何區分兩者的訪問

原則上說,片外rom和片外ram各自的地址范圍可以重疊,也就是都可以從0000H開始到0FFFFH結束。單片機根據指令區分兩者的訪問,MOVC訪問的是片外rom,MOVX訪問的是片外ram。
但是,對於片內有ROM和內部集成外部RAM的晶元,要統一編址,各自不能重疊。

閱讀全文

與單片機是如何區分片內片外ram相關的資料

熱點內容
51單片機程序單步視頻 瀏覽:239
家庭寬頻如何連接伺服器 瀏覽:117
汽車高壓泵解壓 瀏覽:770
上門正骨用什麼app 瀏覽:758
安卓為什麼免費使用 瀏覽:397
加密貨幣都有哪些平台 瀏覽:625
python和matlab難度 瀏覽:388
python爬蟲很難學么 瀏覽:572
小米解壓積木可以組成什麼呢 瀏覽:816
為什麼滴滴出行app還能用 瀏覽:564
怎麼升級手機android 瀏覽:923
php權威編程pdf 瀏覽:994
扣扣加密技巧 瀏覽:720
蘋果如何創建伺服器錯誤 瀏覽:497
軟考初級程序員大題分值 瀏覽:475
js壓縮視頻文件 瀏覽:580
linux如何通過命令創建文件 瀏覽:991
應用加密app還能訪問應用嘛 瀏覽:435
安卓怎麼用支付寶交違章罰款 瀏覽:667
php面向對象的程序設計 瀏覽:506