RAM在單片機裏的用途,主要是存放臨時數據

單片機就是個小計算機,跳蚤雖小不但五臟懼全,有時還跳得很高呢!自然,大計算機少不得的數據存儲系統,小不點的單片機一樣有,而且往往和CPU集成在一起,更加顯得小巧靈活.直到90年代初,國內容易得到的單片機就是8031:不帶存儲器的芯片,要想工作,還必需外加RAM和ROM,單片機成了3片機,...現在不同了,大的小的又是51,又是AVR又是STC,還有什麼430,PIC等等,都各說各的好,可是誰業也不敢說"我不要存儲器"!好,廢話少說...
  單片機內,有這麼幾種數據存儲手段:
  1.程序存儲器:裏面存放的是單片機的靈魂:工作程序.小的可能只有1KB(最多隻能裝1024條8位數據,因爲實際指令還有許多2字節,3字節指令,所以它還裝不下1024條指令)大的也有128KB的.這些8位數據要麼在工廠裏做摸子光刻進去,要麼一次性的燒寫進去,要麼...業餘或開發最多的用編程器這麼個特殊工具把調試成功的機器碼裝載進去,或者像AVR單片機那樣自己花幾塊錢做一條下載線,把電腦裏這些東西灌進去(或許是AVR最吸引人之處),它一旦進駐電腦的程序存儲器中,除了藉助上述裝置便不能自由改寫,在單片機運行時,只是從其中讀出指令或固定的數據,所以給程序存儲器一個"只讀存儲器"的別名,簡寫爲ROM,包括用編程器寫紫外線擦除內容的EPROM.用電擦除的EEPROM和現在新興的FLASH ROM;一次性寫入的ROM僅用於電路和程序固定的批量產品中,實際工作起來,都是一樣的.
  爲了定位ROM中的數據,每個8位(bit:二進制位)存儲單元都有一個固定的"地址",通常用16進數表示:例如對於一個所謂4K的ROM,地址從0000H到0FFFH,(即是從0000,0001...4095),單片機運行時從哪個地址取數據,完全由程序本身決定,並不要我們干預.記住,給單片機一通電,它經過一個短暫的復位過程,立即轉向ROM的最低地址0000H,在這裏面放置的往往是一條"跳轉"指令,它從這裏一步跳到另一個地址:程序的真正起始地址,例如51機的0080H.原因?以後再說...
  難道ROM中就只有指令不能來點別的?看好羅,ROM是程序存儲器,除了指令外,還包括運行程序必須的某些固定數據,例如:數據表.假如,我們要求在單片機的某口上輸出00H到FFH(255)按正弦半波變化的數值,每秒10000次,那如果硬要它按照公式一個個計算,對於它來說未免力不從心,可是我們可以把預先計算好的數值存入ROM中,到時候直接取出不是好多了?...又如一個重要的應用:大家一定見過不少單片機的東西上面都有數碼顯示,那些個數字其實就是用單片機的口線控制數碼管的字段電極電位,這些字形也是存放在ROM中的字模表,各個字模和0-9的數字(機器內當然是0000-0101二進數)對應起來,例如常見的共陽極7段數碼管,必須在陽極加正電,7個陰極都是地電位,才能顯示數字"8",數字8對應的顯示字碼值是二進數“10000000“(那個1對應的是小數點,高電位不讓它顯示)。這簡直是非用不可了。。。ROM先說到這裏
     2.數據存儲器:這是個可以隨時存取數據的一塊存儲器,也就是可以讀(取)也可以寫(存)的存儲器,簡稱RAM。現在的單片機裏面使用的RAM屬於靜態RAM或SRAM,這個和電腦用的內存條有所不同,只要你把數據寫入SRAM後,只要不斷電,或者不清除掉,這個數據就一直保存在那裏,電腦是用的動態RAM,要不斷給它加刷新脈衝才能保存數據。因爲單片機處理的信息量比電腦小很多,所以它帶的RAM也比較少:從完全不帶、帶128、256、...1K,2K,到4K,比ROM少多了。因爲實際上RAM只是作爲數據臨時存放的地方,除非進行圖像處理需要存放大量的數據外,一般對於執行較簡單任務的單片機,有這麼多也夠用,如果實在不夠用也只能採取外加SRAM如6116,6264等等來擴展。
    爲了對RAM單元存取8位二進數,當然也的和ROM一樣用“地址”來標示它的具體位置假如某單片機有1K(1024)RAM,它的地址也是從0000到1024,或16進數的0000H到03FFH,可見和ROM的地址是一樣的,不會混淆不清?不會,因爲讀ROM是由單片機的程序指針或轉移指令或查表指令進行,而這些指令是不會進入RAM區的,讀寫RAM是另外的數據傳送指令,也不會進入ROM區,這點也是和電腦不同之處,後者程序和數據都在內存條裏面,地址不同,如果竄位了就會造成不可預見後果。單片機的這種存儲器結構也稱爲哈佛結構。
    RAM在單片機裏的用途,主要是存放臨時數據,例如用單片機測溫,每秒測1次,顯示1分鐘的平均值(1分鐘更新一次);我們先通過傳感器,放大電路,A/D轉換,把溫度這個模擬量轉變爲成比例的二進數,然後每秒鐘1次把數字量通過輸入口順序存入到單片機的RAM中,然後對他們進行兩兩求和再平均的計算(題外話:要單片機進行“除法“運算比較麻煩,例外的是除以2,4,8。。。卻非常簡單!----運用“右移”指令1,2,3次便可)最後的數值顯示出來,然後把這60個存儲單元統統寫0清除舊數據,下次又如此這般地循環進行。。。
    另外在單片機裏面還有若干寄存器,數量不多但是作用很大,除了暫存數據,還可以交換、加工、傳遞等等,以及隨時紀錄單片機當前處於什麼狀態,輸入輸出口,也是作爲特殊功能的寄存器存在,具體各有不同,就不是隨便說說可以搞清楚的,要看有關書籍了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章