天天看點

單片機斷電後靜态存儲區裡面還有資料嗎_一文讀懂:RAM在單片機裡有什麼用?...

單片機就是個小計算機,大計算機少不了的資料存儲系統,單片機一樣有,而且往往和CPU內建在一起,更加顯得小巧靈活。

直到90年代初,國内容易得到的單片機就是8031:不帶存儲器的晶片,要想工作,還必須外加RAM和ROM,單片機成了3片機......

現在不同了,大的小的又是51,又是AVR又是STC,還有什麼430,PIC等等,都各說各的好,可是誰也不敢說“我不要存儲器”。

單片機的資料存儲手段

01 程式存儲器ROM

程式存儲器裡面存放的是單片機的靈魂:工作程式。

小的可能隻有1KB,最多隻能裝1024條8位資料,因為實際指令還有許多2位元組,3位元組指令,是以它還裝不下1024條指令。大的也有128KB的。這些8位資料,要麼在工廠裡做模子光刻進去,要麼一次性的燒寫進去。

業餘或開發,最多也就是用程式設計器這麼一個特殊工具,把調試成功的機器碼裝載進去,或者像AVR單片機那樣自己花幾塊錢做一條下載下傳線,把電腦裡這些東西灌進去(或許是AVR最吸引人之處)。

它一旦進駐電腦的程式存儲器中,除了借助上述裝置便不能自由改寫,在單片機運作時,隻是從其中讀出指令或固定的資料,是以給程式存儲器一個“隻讀存儲器”的别名,簡寫為ROM,包括用程式設計器寫紫外線擦除内容的EPROM、用電擦除的EEPROM和現在新興的FLASH ROM。

單片機斷電後靜态存儲區裡面還有資料嗎_一文讀懂:RAM在單片機裡有什麼用?...

一次性寫入的ROM,僅用于電路和程式固定的批量産品中,實際工作起來,都是一樣的。

為了定位ROM中的資料,每個8位存儲單元都有一個固定的“位址”,通常用16進制數表示。例如,對于一個所謂4K的ROM,位址從0000H到0FFFH(即從0000,0001...4095),單片機運作時從哪個位址取資料,完全由程式本身決定,并不要我們幹預。

記住,給單片機一通電,它經過一個短暫的複位過程,立即轉向ROM的最低位址0000H,在這裡面放置的往往是一條“跳轉”指令,它從這裡一步跳到另一個位址:程式的真正起始位址,例如51機的0080H。

ROM是程式存儲器,除了指令外,還包括運作程式必須的某些固定資料,例如:資料表。假如,我們要求在單片機的接口上輸出00H到FFH(255)按正弦半波變化的數值,每秒10000次。如果硬要它按照公式一個個計算,對于它來說未免力不從心。可是我們可以把預先計算好的數值存入ROM中,到時候直接取出不是好多了?

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

02 資料存儲器RAM

這是個可以随時存取資料的一塊存儲器,也就是可以讀(取)也可以寫(存)的存儲器,簡稱RAM。

現在的單片機裡面使用的RAM,屬于靜态RAM或SRAM,這個和電腦用的記憶體條有所不同。隻要你把資料寫入SRAM後,不斷電或者不清除掉,這個資料就一直儲存在那裡。電腦用的是動态RAM,要不斷給它加重新整理脈沖才能儲存資料。

因為單片機處理的資訊量比電腦小很多,是以它帶的RAM也比較少:從完全不帶、帶128、256、...1K、2K,到4K,比ROM少多了。

因為實際上RAM隻是作為資料臨時存放的地方,除非進行圖像處理需要存放大量的資料外。一般對于執行較簡單任務的單片機,有這麼多也夠用,如果實在不夠用也隻能采取外加SRAM如6116、6264等等來擴充。

單片機斷電後靜态存儲區裡面還有資料嗎_一文讀懂:RAM在單片機裡有什麼用?...

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

會不會混淆不清?

不會,因為讀ROM是由單片機的程式指針或轉移指令或查表指令進行,而這些指令是不會進入RAM區的;讀寫RAM是另外的資料傳送指令,也不會進入ROM區。這點也是和電腦不同之處,後者程式和資料都在記憶體條裡面,位址不同,如果竄位了就會造成不可預見後果。單片機的這種存儲器結構也稱為哈佛結構。

RAM在單片機裡的用途

RAM在單片機裡的用途,主要是存放臨時資料。

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

我們先通過傳感器、放大電路、A/D轉換,把溫度這個模拟量轉變為成比例的二進制數,然後每秒鐘1次把數字量通過輸入口順序存入到單片機的RAM中,然後對他們進行兩兩求和再平均的計算,最後的數值顯示出來,然後把這60個存儲單元統統寫0清除舊資料,下次又是如此循環進行。

結 語

另外在單片機裡面還有若幹寄存器,數量不多但是作用很大,除了暫存資料,還可以交換、加工、傳遞等等,以及随時記錄單片機目前處于什麼狀态,輸入輸出口也是作為特殊功能的寄存器存在,具體各有不同,就不是随便說說可以搞清楚的,要看有關書籍了。

單片機斷電後靜态存儲區裡面還有資料嗎_一文讀懂:RAM在單片機裡有什麼用?...
單片機斷電後靜态存儲區裡面還有資料嗎_一文讀懂:RAM在單片機裡有什麼用?...

掃碼入群 掃碼添加管理者微信

加入“電子産品世界”粉絲交流群

↓↓↓↓點選,檢視更多新聞