首頁>Club>
10
回覆列表
  • 1 # 認真的橘子5Q

    除了早期的8031,現在的51基本都有rom,大部分是flash rom。 也有一些還有eeprom的。 早期的8051用的是eprom,現在基本都淘汰了。

  • 2 # 恆信電器666

    眾所周知,51 內部的存儲器分為數據存儲器 RAM 和程序存儲器 ROM。以 AT89c51 為例,其中有 128 字節隨機存儲器(又稱數據儲存器 RAM)和 4K 字節的只讀存 儲器(又稱程序存儲器 ROM)。

    先說說這個 4K 字節的程序存儲器或者說只讀存儲器,我們寫的程序經過編譯器 編譯成機器碼都是存在這個區域,所以稱為程序存儲器;但單片機上電執行的時 候,此區域內的數據只能讀取而不能寫入,他的只讀存儲器的名稱從這而來。

    89c51 的 ROM 採用的是 FPEROM(Flash Programmable and Erasable Read Only

    Memory),具體工藝我也不太清楚,號稱可以擦寫 1000 次,也就是說你每天寫

    30 次,一個多月就報廢了。

    在說說 128 字節的隨機存儲器或者說數據存儲器,程序運行過程中,一些中間變 量存儲在這個地方,也能從這個地方獲取需要運算的值,所以稱之為隨機存儲器, 也稱為數據存儲器。個人覺得相當於計算機的內存,掉電丟失。

    看看 MSC-51 指令就知道,所有的數據移動指令都是對 RAM 區操作的,就是因為 無法改變 ROM。

    51 內部的存儲器在物理上可分為 4 個區域:片內 ROM,片外 ROM,片內 RAM 和片外 RAM。從邏輯上可分為三個區域,64KB 片內外統一編址的程序存儲器(ROM),

    128 字節或 256 字節的片內數據存儲器(RAM),64KB 片外數據存儲器(RAM)。

    對應的 keil 編譯器關鍵字為:

    data : 片內數據存儲器(RAM)低 128 字節(51 系列片內只有 128 字節,52 系列有 256 字節)

    bdata: 可位尋址的片內 RAM 以上兩種類型可以快速的存取數據,常用來放臨時性的傳遞變量或使用頻率較高 的變量。

    idata : 片內數據存儲器(RAM)256 字節

    xdata: 片外數據存儲器 64KB

    pdata: 片外數據存儲器低 256 字節

    code: 64KB 程序存儲器(如果變量定義在這個空間,後面就不能修改了,如果 有語句改變它的值,編譯器就會報錯。)

    此外,C51 還有三種存儲模式(這是在開發環境裡面設置的):SMALL, COMPACT,

    LARGE

    SMALL 模式下,如果不做特別說明,參數及局部變量默認為 data 型,放在片內 RAM128 字節內,訪問迅速。由於內部的 RAM 有限,如果變量過多,會導致頻 繁的使用寄存器,而使代碼變的冗長。此時棧也在片內的 RAM,棧長很關鍵, 因為棧長依賴於不同函數的嵌套層數。

    COMPACT:不做特別說明,參數及局部變量默認為 pdata,棧空間在內部 RAM。

    LARGE:參數及局部變量默認為 xdata,使用 DPTR 來尋址。訪問效率低,此外這 種數據指針不能對稱操作。

    全局變量會根據定義的類型或者存儲的模式分配在相應的存儲區內,有固定的地 址,如果全局變量過多則會導致占用太多內存,處理速度變慢。

  • 中秋節和大豐收的關聯?
  • 華為v9升級鴻蒙系統怎麼老是死機?