0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入探究單片機(jī)中的RAM與ROM

STM32嵌入式開發(fā) ? 來源:單片機(jī)與嵌入式 ? 作者:單片機(jī)與嵌入式 ? 2021-10-27 11:36 ? 次閱讀

其實(shí),單片機(jī)就是個(gè)小計(jì)算機(jī)。大計(jì)算機(jī)少不了的數(shù)據(jù)存儲系統(tǒng),單片機(jī)一樣有,而且往往和CPU集成在一起,顯得更加小巧靈活。

直到90年代初,國內(nèi)容易得到的單片機(jī)是8031:不帶存儲器的芯片,要想工作,必須外加RAMROM,于是單片機(jī)成了3片機(jī)。。。。。。

而現(xiàn)在不同了,無論大的,還是小的,又是51,又是AVR,又是STC,還有什么430、PIC……都各說各的好,可誰也不敢說“我不要存儲器”。

單片機(jī)的數(shù)據(jù)存儲手段

1 程序存儲器ROM

程序存儲器里面存放的是單片機(jī)的靈魂:工作程序。

小的可能只有1KB,最多只能裝1024條8位數(shù)據(jù),因?yàn)閷?shí)際指令還有許多2字節(jié),3字節(jié)指令,所以它還裝不下1024條指令。大的也有128KB的。這些8位數(shù)據(jù),要么在工廠里做模子光刻進(jìn)去,要么一次性的燒寫進(jìn)去。

業(yè)余或開發(fā),最多也就是用編程器這么一個(gè)特殊工具,把調(diào)試成功的機(jī)器碼裝載進(jìn)去,或者像AVR單片機(jī)那樣自己花幾塊錢做一條下載線,把電腦里這些東西灌進(jìn)去(或許是AVR最吸引人之處)。

它一旦進(jìn)駐電腦的程序存儲器中,除了借助上述裝置便不能自由改寫,在單片機(jī)運(yùn)行時(shí),只是從其中讀出指令或固定的數(shù)據(jù),所以給程序存儲器一個(gè)“只讀存儲器”的別名,簡寫為ROM,包括用編程器寫紫外線擦除內(nèi)容的EPROM、用電擦除的EEPROM和現(xiàn)在新興的FLASH ROM。相關(guān)文章:EEPROM和Flash這樣講,我早就懂了。

一次性寫入的ROM,僅用于電路和程序固定的批量產(chǎn)品中,實(shí)際工作起來,都是一樣的。

為了定位ROM中的數(shù)據(jù),每個(gè)8位存儲單元都有一個(gè)固定的“地址”,通常用16進(jìn)制數(shù)表示。例如,對于一個(gè)所謂4K的ROM,地址從0000H到0FFFH(即從0000,0001.。.4095),單片機(jī)運(yùn)行時(shí)從哪個(gè)地址取數(shù)據(jù),完全由程序本身決定,并不要我們干預(yù)。

記住,給單片機(jī)一通電,它經(jīng)過一個(gè)短暫的復(fù)位過程,立即轉(zhuǎn)向ROM的最低地址0000H,在這里面放置的往往是一條“跳轉(zhuǎn)”指令,它從這里一步跳到另一個(gè)地址:程序的真正起始地址,例如51機(jī)的0080H。

ROM是程序存儲器,除了指令外,還包括運(yùn)行程序必須的某些固定數(shù)據(jù),例如:數(shù)據(jù)表。假如,我們要求在單片機(jī)的接口上輸出00H到FFH(255)按正弦半波變化的數(shù)值,每秒10000次。如果硬要它按照公式一個(gè)個(gè)計(jì)算,對于它來說未免力不從心??墒俏覀兛梢园杨A(yù)先計(jì)算好的數(shù)值存入ROM中,到時(shí)候直接取出不是好多了?

又如一個(gè)重要的應(yīng)用:大家一定見過不少單片機(jī)的東西上面都有數(shù)碼顯示,那些個(gè)數(shù)字其實(shí)就是用單片機(jī)的口線控制數(shù)碼管的字段電極電位。這些字形也是存放在ROM中的字模表,各個(gè)字模和0-9的數(shù)字(機(jī)器內(nèi)當(dāng)然是0000-0101二進(jìn)制數(shù))對應(yīng)起來。常見的共陽極7段數(shù)碼管,必須在陽極加正電,7個(gè)陰極都是地電位,才能顯示數(shù)字“8”,數(shù)字8對應(yīng)的顯示字碼值是二進(jìn)制數(shù)“10000000“(那個(gè)1對應(yīng)的是小數(shù)點(diǎn),高電位不讓它顯示)。

2 數(shù)據(jù)存儲器RAM

這是個(gè)可以隨時(shí)存取數(shù)據(jù)的一塊存儲器,也就是可以讀(取)也可以寫(存)的存儲器,簡稱RAM。

現(xiàn)在的單片機(jī)里面使用的RAM,屬于靜態(tài)RAM或SRAM,這個(gè)和電腦用的內(nèi)存條有所不同。只要你把數(shù)據(jù)寫入SRAM后,不斷電或者不清除掉,這個(gè)數(shù)據(jù)就一直保存在那里。電腦用的是動態(tài)RAM,要不斷給它加刷新脈沖才能保存數(shù)據(jù)。

因?yàn)閱纹瑱C(jī)處理的信息量比電腦小很多,所以它帶的RAM也比較少:從完全不帶、帶128、256、。。.1K、2K,到4K,比ROM少多了。

因?yàn)閷?shí)際上RAM只是作為數(shù)據(jù)臨時(shí)存放的地方,除非進(jìn)行圖像處理需要存放大量的數(shù)據(jù)外。一般對于執(zhí)行較簡單任務(wù)的單片機(jī),有這么多也夠用,如果實(shí)在不夠用也只能采取外加SRAM如6116、6264等等來擴(kuò)展。

為了對RAM單元存取8位二進(jìn)制數(shù),當(dāng)然也得和ROM一樣用“地址”來標(biāo)示它的具體位置。假如某單片機(jī)有1K(1024)RAM,它的地址也是從0000到1024,或16進(jìn)制數(shù)的0000H到03FFH。可見,和ROM的地址是一樣的。

3 會不會混淆不清?

答案是不會的,因?yàn)樽xROM是由單片機(jī)的程序指針或轉(zhuǎn)移指令或查表指令進(jìn)行,而這些指令是不會進(jìn)入RAM區(qū)的;讀寫RAM是另外的數(shù)據(jù)傳送指令,也不會進(jìn)入ROM區(qū)。

這點(diǎn)也是和電腦不同之處,后者程序和數(shù)據(jù)都在內(nèi)存條里面,地址不同,如果竄位了就會造成不可預(yù)見后果。單片機(jī)的這種存儲器結(jié)構(gòu)也稱為哈佛結(jié)構(gòu)。

RAM在單片機(jī)里的用途

RAM在單片機(jī)里的用途,主要是存放臨時(shí)數(shù)據(jù)。

例如用單片機(jī)測溫,每秒測1次,顯示1分鐘的平均值(1分鐘更新一次):

我們先通過傳感器、放大電路、A/D轉(zhuǎn)換,把溫度這個(gè)模擬量轉(zhuǎn)變?yōu)槌杀壤亩M(jìn)制數(shù),然后每秒鐘1次把數(shù)字量通過輸入口順序存入到單片機(jī)的RAM中,然后對他們進(jìn)行兩兩求和再平均的計(jì)算,最后的數(shù)值顯示出來,然后把這60個(gè)存儲單元統(tǒng)統(tǒng)寫0清除舊數(shù)據(jù),下次又是如此循環(huán)進(jìn)行。

總結(jié)

另外,在單片機(jī)里面還有若干寄存器,數(shù)量不多但是作用很大,除了暫存數(shù)據(jù),還可以交換、加工、傳遞等等,以及隨時(shí)記錄單片機(jī)當(dāng)前處于什么狀態(tài),輸入輸出口也是作為特殊功能的寄存器存在,具體各有不同,就不是隨便說說可以搞清楚的,要看有關(guān)書籍了。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6027

    文章

    44462

    瀏覽量

    631289
  • 放大電路
    +關(guān)注

    關(guān)注

    102

    文章

    1778

    瀏覽量

    106425
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5276

    瀏覽量

    119699
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    549

    瀏覽量

    85592
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1352

    瀏覽量

    114393

原文標(biāo)題:單片機(jī)中的RAM vs ROM

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)rom ram flash

    個(gè)概念rom(read only memory)只讀存儲器 顧名思義,就是只能讀取數(shù)據(jù)的存儲器,它的意思并不是絕對的不能寫數(shù)據(jù),而是單片機(jī)本身不能寫數(shù)據(jù),可是可以通過電腦寫入數(shù)據(jù)。rom的功能就是存儲
    發(fā)表于 07-10 15:18

    單片機(jī)RAM ROM區(qū)別,單片機(jī)與電腦的區(qū)別 精選資料分享

    RAM運(yùn)行內(nèi)存ROM存儲內(nèi)存對于古老的單片機(jī)來說它的ROM是用來固化一些程序的 寫好了之后只能讀取 所以ROM read only memo
    發(fā)表于 07-14 07:34

    單片機(jī)ROMRAM

    單片機(jī)ROMRAM----我們選型MCU的時(shí)候內(nèi)存空間一定是要考慮的參數(shù),比如ROM、RAM1.DRAM分為很多種,主要有SRAM、FP
    發(fā)表于 09-02 18:42

    單片機(jī)ramrom的區(qū)別是什么

    Memory) 程序存儲器在單片機(jī)中用來存儲程序數(shù)據(jù)及 …單片機(jī)運(yùn)行時(shí)需要調(diào)用某個(gè)程序/函數(shù)/固定數(shù)據(jù)時(shí)就需要讀取ROM,然后在RAM執(zhí)
    發(fā)表于 01-26 07:02

    單片機(jī)擴(kuò)展外部ROMRAM讀寫時(shí)序

    單片機(jī)擴(kuò)展外部ROMRAM讀寫時(shí)序,PPT介紹。
    發(fā)表于 12-12 21:36 ?9次下載

    單片機(jī)ROM,RAM和FLASH的作用

    式電度表,它的內(nèi)核是一款單片機(jī),該單片機(jī)的程序就是存放在 ROM 里的。電度表在工作過程,是要運(yùn)算數(shù)據(jù)的,要采集電壓和電流,并根據(jù)電壓和電流計(jì)算出電度來。電壓和電流時(shí)一個(gè)適時(shí)的數(shù)據(jù),
    發(fā)表于 11-24 10:01 ?1786次閱讀

    單片機(jī)ROM,RAM和FLASH的作用

    單片機(jī)中用來存儲程序數(shù)據(jù)及常量數(shù)據(jù)或變量數(shù)據(jù),凡是c文件及h文件中所有代碼、全局變量、局部變量、’const’限定符定義的常量數(shù)據(jù)、startup.asm文件的代碼(類似ARM的bootloader或者X86
    發(fā)表于 12-28 14:06 ?2.7w次閱讀

    單片機(jī)ROM,RAM和FLASH的作用

    單片機(jī)中用來存儲程序數(shù)據(jù)及常量數(shù)據(jù)或變量數(shù)據(jù),凡是c文件及h文件中所有代碼、全局變量、局部變量、’const’限定符定義的常量數(shù)據(jù)、startup.asm文件的代碼(類似ARM的bootloader或者X86
    的頭像 發(fā)表于 03-16 16:27 ?1w次閱讀

    單片機(jī)RAM ROM區(qū)別,單片機(jī)與電腦的區(qū)別

    RAM運(yùn)行內(nèi)存ROM存儲內(nèi)存對于古老的單片機(jī)來說它的ROM是用來固化一些程序的 寫好了之后只能讀取 所以ROM read only memo
    發(fā)表于 11-14 19:36 ?12次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>中</b><b class='flag-5'>RAM</b> <b class='flag-5'>ROM</b>區(qū)別,<b class='flag-5'>單片機(jī)</b>與電腦的區(qū)別

    淺談單片機(jī)romram與代碼的關(guān)系,以及為什么要加上拉電阻

    ROM,RAM以及code,dataram掉電丟失rom掉電不丟失因?yàn)?b class='flag-5'>單片機(jī)RAM很有限,所以將不變的保存到
    發(fā)表于 11-25 18:36 ?8次下載
    淺談<b class='flag-5'>單片機(jī)</b><b class='flag-5'>rom</b>和<b class='flag-5'>ram</b>與代碼的關(guān)系,以及為什么要加上拉電阻

    區(qū)分單片機(jī)RAM、ROM、Flash

    復(fù)習(xí)單片機(jī)ROM、RAM、Flash的區(qū)別
    發(fā)表于 12-01 20:36 ?20次下載
    區(qū)分<b class='flag-5'>單片機(jī)</b><b class='flag-5'>RAM</b>、<b class='flag-5'>ROM</b>、Flash

    單片機(jī)ramrom的區(qū)別

    Memory) 程序存儲器在單片機(jī)中用來存儲程序數(shù)據(jù)及 …單片機(jī)運(yùn)行時(shí)需要調(diào)用某個(gè)程序/函數(shù)/固定數(shù)據(jù)時(shí)就需要讀取ROM,然后在RAM執(zhí)
    發(fā)表于 12-02 09:36 ?13次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>ram</b>和<b class='flag-5'>rom</b>的區(qū)別

    (轉(zhuǎn))深入分析STM32單片機(jī)RAM和FLASH

    (轉(zhuǎn))深入分析STM32單片機(jī)RAM和FLASH
    發(fā)表于 12-02 11:51 ?11次下載
    (轉(zhuǎn))<b class='flag-5'>深入</b>分析STM32<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>RAM</b>和FLASH

    單片機(jī)RAM vs ROM

    單片機(jī)RAM vs ROM
    的頭像 發(fā)表于 09-28 17:57 ?1117次閱讀

    巧言單片機(jī)RAMROM

    巧言單片機(jī)RAMROM
    的頭像 發(fā)表于 10-17 15:45 ?734次閱讀