㈠ 單片機中RAM和ROM 是什麼
--ROM存放指令代碼和一些固定數值,程序運行後不可改動;RAM用於程序運行中數據的隨機存取,掉電後數據消失。現在單片機不用外擴了,你只需要直接用內部的。
㈡ 單片機中的rom和ram是怎麼分配的,各有多大
單片機中ROM和RAM地址是重疊的,但物理空間不一樣,通過指令的不同來訪問不同的存儲空間,以51為例,ROM空間和RAM空間各位64K,訪問ROM用MOVC指令,訪問RAM用MOVX執行。當然,還有一部分內部RAM也就是寄存器,使用MOV指令訪問。
㈢ 單片機的RAM和ROM是什麼意思
打個比方吧!假如要搞個什麼活動,有兩塊地方,一個叫ROM.一個叫RAM,和一個老大叫cpu。其中人們規定rom這個地方的所有東西你老大cpu都不能改動它,裡面放著活動的方案,也就相當於你編寫的程序,cpu必須要按照這個方案去主持搞這個活動。這個地方允許放一些其它東西,〔單片機中也就是數據!〕。當這個活動開始的時候,老大cpu就會到rom這里復制裡面的全部內容〔有特別標明的除外,一般是不常用的數據〕放到RAM裡面運行。當需要用要標明的不常用數據時,老大根據數據的編號,也就是地址,去讀回來那個數,再繼續運行!當你要終止這次活動時,ram裡面的東西,就全部扔掉,不保留。下次再需要的時候,再去rom這個地方復制回來,從新開始運行。
寄存器,要說功能的話,每個寄存器都有它的功能!建議你搜索一下單片機寄存器功能,有很多的出來。他們介紹的都很好!在這里我就不說了打字累啊。呵呵
㈣ 8051單片機ram和rom是分開編址的,它是靠什麼來實現
我也一直對這個很困惑,網上找了很多8051的資料說的都很籠統,我感覺這些出書的,要麼自己就沒明白只為了職稱評審,要麼就是自己好不容易弄明白了,就是不說。下面是我的一些見解:看了8086微處理編程,裡面有虛擬內存的概念,就是說8086cpu的地址匯流排有20位,那麼它可以定址2^20=1M個存儲單元,無論是ram還是rom,還是顯卡還是IO設備,都是統一定址的。這是由於cpu的地址匯流排來決定的。比如說32位系統最多用2.93G內存,明明是4G,是因為有一些其他的虛擬存儲空間佔用了內存的地址線,因此有些空間是用不了的。這也就是所謂的馮諾依曼結構計算機吧。言歸正傳,8051用的是哈弗結構,也就是說它的ram和rom都有獨立的地址匯流排來定址,比如8051的ram有256B,那麼就是說它的ram地址匯流排為8位,而能定址64krom,也就說rom地址匯流排有16位,都是獨立的。我想如果地址空間可以重疊,那麼一定採用了獨立匯流排結構。至於cpu怎麼知道相同的一個地址,這個地址是找rom,那個地址找的是ram,那麼一定和指令集有關,也就是定址方式的關系把。這是我的一些思考結果。希望有幫助!
㈤ 單片機外擴RAM和FLASH是干什麼用,該怎麼操作
擴大存儲容量,比如說你想顯示的圖片,數據量很大並且單片機內部放不下時,就放在外擴的flash中了。
在外擴flash中放程序的很少,因為匯流排的速度遠遠低於單片機內部的速度,所以效率低,更不會像你說的那樣寫入外部(虛擬內存?)
外擴ram的讀寫和使用內部時的一樣,你只要設置好編譯器指明外部ram的位置和大小就行了。
因為flash的速度是跟不上cpu的速度的,在讀flash時就有延遲,所以模擬正常但燒寫就不一定那樣。
㈥ 單片機Ram的作用
數據存儲器:這是個可以隨時存取數據的一塊存儲器,也就是可以讀(取)也可以寫(存)的存儲器,簡稱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清除舊數據,下次又如此這般地循環進行。。。
㈦ 單片機RAM如何擴展
1、我用89s52有256的RAM,但也只能夠用一半。個人猜測可能有點像電腦上的進程那樣,每個進程都有4G的虛擬內存,但只有2G是用戶空間,還有2G是系統空間。可能這個也一樣。因為系統也要幫你做一些事,你都用完了RAM,系統怎麼幫你做事呀?
2、這個沒用過,不懂。
3、這個最後再講。
4、5、像上面講的一樣,把你要顯示的東西定義在ROM上面,
而不是定義在RAM上,定義的時候用個code 關鍵字就得了。
就拿89S52來說ROM有8K 而RAM 才256.就樣的話還有必要擴展嗎?數碼管,點陣的顯示代碼定義在ROM上,用的時候和RAM上的一樣,但要注意一點,定義的時候必須初始化,因為在ROM上定義的,你對他賦值是錯誤的,你可以寫個小程序試下。
最後說下3、強烈建議樓主再好好看看書。
在子程序中定義的變數,可以理解為一種臨時變數吧。
因為出了子程序它的生命周期就結束了,回到主函數是不能
再用了的。子函數裡面的變數,和形參,是函數被調用時才對他們分配內存的。調用結束後它們的空間就被釋放了,到下次調用時再分配。(申明為靜態變數和外部變數除外,他們的生命周期是和主函數一樣的)
你最好搞明白各種變數的在哪分配,生命周期是多長。不然你引用一個被銷毀了的東西當然就會出錯了。
還有個函數形參和實參之間的關系的。以前答的。你可以去看下,希望對你有幫助。
http://..com/question/97142601.html
㈧ 單片機ram和rom的區別
RAM-RamdomAccessMemory易揮發性隨機存取存儲器,高速存取,讀寫時間相等,且與地址無關,如計算機內存等。
ROM-Read Only Memory只讀存儲器。
斷電後信息不丟失,如計算機啟動用的BIOS晶元。
存取速度很低,(較RAM而言)且不能改寫。
由於不能改寫信息,不能升級,現已很少使用。
ROM和RAM是計算機內存儲器的兩種型號,ROM表示的是只讀存儲器,即:它只能讀出信息,不能寫入信息,計算機關閉電源後其內的信息仍舊保存,一般用它存儲固定的系統軟體和字型檔等。
RAM表示的是讀寫存儲器,可其中的任一存儲單元進行讀或寫操作,計算機關閉電源後其內的信息將不在保存,再次開機需要重新裝入,通常用來存放操作系統,各種正在運行的軟體、輸入和輸出數據、中間結果及與外存交換信息等,常說的內存主要是指RAM.
㈨ 單片機中ROM 和RAM的區別
--ROM存放指令代碼和一些固定數值,程序運行後不可改動;RAM用於程序運行中數據的隨機存取,掉電後數據消失..
code就是指將數據定義在ROM區域,具只讀屬性,例如一些LED顯示的表頭數據就可以定義成code存儲在ROM。
㈩ 關於單片機片內RAM
主要區別:
ROM 在單片機中是程序存儲的 掉電後依然存在 程序一般不能修改其值
RAM 在單片機中是數據存儲的 掉電後數據丟失 可以由程序隨時修改