tft每日頭條

 > 生活

 > 單片機外部ram是什麼

單片機外部ram是什麼

生活 更新时间:2024-12-14 21:53:38

對于51單片機而言,其片載的内部存儲器分為RAM和存儲程序的ROM。

我們以AT89c51為例,它作為經典51單片機,片載128字節RAM和4K字節ROM,注意這裡古典ROM和現代計算機ROM的差别。

我們把ROM和RAM分開讨論。

1. ROM

什麼是4K字節的ROM(隻讀存儲器)呢?

有過基本51單片機開發經曆的童鞋應該記得,我們使用C語言編寫單片機程序後,會點擊開發環境(比如Keil)的編譯(compile)按鈕進行編譯。

此時Keil這個IDE(集成開發環境)就把C語言“譯”成相應的二進制機器碼。

然後我們通過燒錄工具,把二進制機器碼“灌輸”至單片機。

灌輸進單片機的程序去哪了?

沒錯,就儲存在ROM中。所以ROM又被稱為程序存儲器。

對于古董單片機而言,其上電運行時,ROM内的數據隻能被讀取而不能實時寫入,即“隻讀”。

因為,最初的單片機限于閃存技術,在程序運行時,ROM存儲器隻可以被讀取,無法在線寫入。但是,它可以被反複離線擦除并寫入新程序。

所以,隻讀存儲器ROM的Read-only Memory的名稱就從這兒來的。

現代單片機的ROM一般采用FLASH閃存技術,不僅可以離線通過燒錄器寫入,也可以在線通過自身的代碼來修改FLASH數據,達到類似“硬盤”的療效。

比如,單片機算出了1 2 3等于6。

如果我們需要關機重啟後單片機依然保留6這個結果,那麼我們可以事先在程序中添加一段代碼,讓單片機把結果存入FLASH的某一存儲單元中。

然後,即使斷電重新開機,該數據也不會消失,下次再從這個地址讀取,數據即是上次算好的結果,6。

我們以典型的ST單片機為例,其FLASH擦寫次數高達一萬次,而且該技術現在并不是什麼高端貨,一兩塊錢的單片機都能做到。

單片機外部ram是什麼(單片機的RAM和ROM到底是什麼)1

ST某款數據手冊

一兩塊錢的電腦自帶硬盤,是不是很劃算,很好用!

2. RAM

再說說128字節的RAM,RAM又被稱為數據存儲器。

單片機上電之後是怎麼運行的呢?我們把關鍵節點簡要地勾勒一下。

首先,單片機上電後,複位電路觸發單片機複位,使單片機所有狀态處于複位狀态,所有寄存器處于默認值,使得一切都在預料之中。

然後單片機按照設計時的“安排”,開始加載ROM中相應位置的數據,這些數據就是“程序”。

比如指令MOV 20H, A;

就是将累加寄存器A中的值送入RAM的20H這個“坑”中,20H就是這個“坑”的地址。

20H代表十六進制的20,等于十進制的32,即:編号32的坑。

128字節的RAM就有128個“坑”,分别編号00H到7FH(0到127)每個“坑”可以存一個8位的二進制數,即“坑”的大小是一個字節。

這樣一條一條指令執行下去,有的MOV,有的JUMP,單片機就開始“有條不紊地”運行了。

在單片機運行過程中,一些中間變量就暫存在這些“坑”中。

當然,程序也能從這些“坑”中讀取已存的數據,所以它又被稱為數據存儲器,它裡面隻暫存了“純粹的數據”,沒有程序(雖然程序也是二進制數)。

它的寫入讀出速度都比FLASH快,但掉電即丢失,相當于計算機的内存。

我們觀察MSC-51指令集就知道,隻有對RAM區操作得數據移動指令,沒有對ROM的操作指令。

現代單片機對片載Flash的擦寫,往往是通過對寄存器的操作來實現的。

3. 指令

那我們能否自行發明指令呢?

不行!

開發單片機的公司的工程師在設計單片機芯片時,不僅要設計CPU,還要同時設計内部存儲和内部總線等“外設”,這樣單片機才能運作,才叫“單片機”,而不僅僅是一個CPU。

每一個指令在這個小系統中到底産生什麼效果,是這些工程師已經設計好的。

在沒有C語言的年代,你想做具體的數學計算,就得把計算過程分解為一條一條的指令,然後通過指令來實現計算任務。

我們在使用芯片時,不能超過芯片公司規定的指令範圍,去随意發明指令。

因為硬件是已經設計好的,它是死的,它隻能響應芯片公司規定的這些指令。

這也就是為什麼我們在開發時,需要datasheet和數據手冊,因為芯片的指令是人做出來的,所以我們在開發時,需要遵守開發者的規定。

這就是傳統51中内部ROM和RAM的根本區别。


版權歸屬珂學原理,轉載請獲授權。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved