您好, 歡迎來(lái)到化工儀器網(wǎng)! 登錄| 免費(fèi)注冊(cè)| 產(chǎn)品展廳| 收藏商鋪|
當(dāng)前位置:深圳市晧辰電子科技有限公司>>技術(shù)文章>>干貨 | RAM在單片機(jī)里有什么用?
單片機(jī)就是個(gè)小計(jì)算機(jī),,大計(jì)算機(jī)少不了的數(shù)據(jù)存儲(chǔ)系統(tǒng),單片機(jī)一樣有,,而且往往和CPU集成在一起,更加顯得小巧靈活,。
直到90年代初,,國(guó)內(nèi)容易得到的單片機(jī)就是8031:不帶存儲(chǔ)器的芯片,要想工作,,還必須外加RAM和ROM,,單片機(jī)成了3片機(jī)......
現(xiàn)在不同了,大的小的又是51,,又是AVR又是STC,,還有什么430,PIC等等,,都各說(shuō)各的好,,可是誰(shuí)也不敢說(shuō)“我不要存儲(chǔ)器”。
程序存儲(chǔ)器ROM
程序存儲(chǔ)器里面存放的是單片機(jī)的靈魂:工作程序,。
小的可能只有1KB,,多只能裝1024條8位數(shù)據(jù),,因?yàn)閷?shí)際指令還有許多2字節(jié),3字節(jié)指令,,所以它還裝不下1024條指令,。大的也有128KB的。這些8位數(shù)據(jù),,要么在工廠里做模子光刻進(jìn)去,,要么一次性的燒寫(xiě)進(jìn)去。
業(yè)余或開(kāi)發(fā),,多也就是用編程器這么一個(gè)特殊工具,,把調(diào)試成功的機(jī)器碼裝載進(jìn)去,或者像AVR單片機(jī)那樣自己花幾塊錢(qián)做一條下載線,,把電腦里這些東西灌進(jìn)去(或許是AVR吸引人之處),。
它一旦進(jìn)駐電腦的程序存儲(chǔ)器中,除了借助上述裝置便不能自由改寫(xiě),,在單片機(jī)運(yùn)行時(shí),,只是從其中讀出指令或固定的數(shù)據(jù),所以給程序存儲(chǔ)器一個(gè)“只讀存儲(chǔ)器”的別名,,簡(jiǎn)寫(xiě)為ROM,,包括用編程器寫(xiě)紫外線擦除內(nèi)容的EPROM、用電擦除的EEPROM和現(xiàn)在新興的FLASH ROM,。
一次性寫(xiě)入的ROM,,僅用于電路和程序固定的批量產(chǎn)品中,實(shí)際工作起來(lái),,都是一樣的,。
為了定位ROM中的數(shù)據(jù),每個(gè)8位存儲(chǔ)單元都有一個(gè)固定的“地址”,,通常用16進(jìn)制數(shù)表示,。例如,對(duì)于一個(gè)所謂4K的ROM,,地址從0000H到0FFFH(即從0000,,0001...4095),單片機(jī)運(yùn)行時(shí)從哪個(gè)地址取數(shù)據(jù),,*由程序本身決定,,并不要我們干預(yù)。
記住,,給單片機(jī)一通電,,它經(jīng)過(guò)一個(gè)短暫的復(fù)位過(guò)程,立即轉(zhuǎn)向ROM的低地址0000H,,在這里面放置的往往是一條“跳轉(zhuǎn)”指令,,它從這里一步跳到另一個(gè)地址:程序的真正起始地址,,例如51機(jī)的0080H。
ROM是程序存儲(chǔ)器,,除了指令外,,還包括運(yùn)行程序必須的某些固定數(shù)據(jù),例如:數(shù)據(jù)表,。假如,,我們要求在單片機(jī)的接口上輸出00H到FFH(255)按正弦半波變化的數(shù)值,每秒10000次,。如果硬要它按照公式一個(gè)個(gè)計(jì)算,,對(duì)于它來(lái)說(shuō)未免力不從心??墒俏覀兛梢园杨A(yù)先計(jì)算好的數(shù)值存入ROM中,,到時(shí)候直接取出不是好多了?
又如一個(gè)重要的應(yīng)用:大家一定見(jiàn)過(guò)不少單片機(jī)的東西上面都有數(shù)碼顯示,,那些個(gè)數(shù)字其實(shí)就是用單片機(jī)的口線控制數(shù)碼管的字段電極電位,。這些字形也是存放在ROM中的字模表,各個(gè)字模和0-9的數(shù)字(機(jī)器內(nèi)當(dāng)然是0000-0101二進(jìn)制數(shù))對(duì)應(yīng)起來(lái),。常見(jiàn)的共陽(yáng)極7段數(shù)碼管,,必須在陽(yáng)極加正電,7個(gè)陰極都是地電位,,才能顯示數(shù)字"8",,數(shù)字8對(duì)應(yīng)的顯示字碼值是二進(jìn)制數(shù)“10000000“(那個(gè)1對(duì)應(yīng)的是小數(shù)點(diǎn),高電位不讓它顯示),。
數(shù)據(jù)存儲(chǔ)器RAM
這是個(gè)可以隨時(shí)存取數(shù)據(jù)的一塊存儲(chǔ)器,,也就是可以讀(取)也可以寫(xiě)(存)的存儲(chǔ)器,,簡(jiǎn)稱RAM,。
現(xiàn)在的單片機(jī)里面使用的RAM,屬于靜態(tài)RAM或SRAM,,這個(gè)和電腦用的內(nèi)存條有所不同。只要你把數(shù)據(jù)寫(xiě)入SRAM后,,不斷電或者不清除掉,,這個(gè)數(shù)據(jù)就一直保存在那里。電腦用的是動(dòng)態(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ù)外,。一般對(duì)于執(zhí)行較簡(jiǎn)單任務(wù)的單片機(jī),有這么多也夠用,,如果實(shí)在不夠用也只能采取外加SRAM如6116,、6264等等來(lái)擴(kuò)展。
為了對(duì)RAM單元存取8位二進(jìn)制數(shù),,當(dāng)然也得和ROM一樣用“地址”來(lái)標(biāo)示它的具體位置,。假如某單片機(jī)有1K(1024)RAM,它的地址也是從0000到1024,,或16進(jìn)制數(shù)的0000H到03FFH,。可見(jiàn),,和ROM的地址是一樣的,。
不會(huì),,因?yàn)樽xROM是由單片機(jī)的程序指針或轉(zhuǎn)移指令或查表指令進(jìn)行,,而這些指令是不會(huì)進(jìn)入RAM區(qū)的;讀寫(xiě)RAM是另外的數(shù)據(jù)傳送指令,,也不會(huì)進(jìn)入ROM區(qū),。這點(diǎn)也是和電腦不同之處,后者程序和數(shù)據(jù)都在內(nèi)存條里面,,地址不同,,如果竄位了就會(huì)造成不可預(yù)見(jiàn)后果。單片機(jī)的這種存儲(chǔ)器結(jié)構(gòu)也稱為哈佛結(jié)構(gòu),。
RAM在單片機(jī)里的用途
RAM在單片機(jī)里的用途,,主要是存放臨時(shí)數(shù)據(jù)。
例如用單片機(jī)測(cè)溫,,每秒測(cè)1次,,顯示1分鐘的平均值(1分鐘更新一次):
我們先通過(guò)傳感器、放大電路,、A/D轉(zhuǎn)換,,把溫度這個(gè)模擬量轉(zhuǎn)變?yōu)槌杀壤亩M(jìn)制數(shù),然后每秒鐘1次把數(shù)字量通過(guò)輸入口順序存入到單片機(jī)的RAM中,然后對(duì)他們進(jìn)行兩兩求和再平均的計(jì)算,,后的數(shù)值顯示出來(lái),,然后把這60個(gè)存儲(chǔ)單元統(tǒng)統(tǒng)寫(xiě)0清除舊數(shù)據(jù),下次又是如此循環(huán)進(jìn)行,。
另外在單片機(jī)里面還有若干寄存器,,數(shù)量不多但是作用很大,除了暫存數(shù)據(jù),,還可以交換,、加工、傳遞等等,,以及隨時(shí)記錄單片機(jī)當(dāng)前處于什么狀態(tài),,輸入輸出口也是作為特殊功能的寄存器存在,具體各有不同,,就不是隨便說(shuō)說(shuō)可以搞清楚的,,要看有關(guān)書(shū)籍了。
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
以上信息由企業(yè)自行提供,,信息內(nèi)容的真實(shí)性,、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),化工儀器網(wǎng)對(duì)此不承擔(dān)任何保證責(zé)任,。
溫馨提示:為規(guī)避購(gòu)買(mǎi)風(fēng)險(xiǎn),,建議您在購(gòu)買(mǎi)產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。