Ⅰ 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
Ⅱ 單片機內存不夠,應該外擴還是內擴
你所說的「內存」是一個奇妙的概念,具體看你指的是 RAM/數據存儲器 還是 ROM/程序存儲器……
所謂內擴,也得有內部潛力才能挖掘,比如很多單片機片內其實有多個可用的RAM段,很多初學者並不知道如何全部利用。
外擴會使得設計變得復雜、空間佔用增多、BOM成本上升,所以應當經過慎重考慮。先確定你的設計是不是真的需要那麼多資源、同系列單片機是否有資源更多的型號。
存儲器不足,無非兩個方式,一個開源,一個節流。節流主要是通過充分的優化,例如減少額外的庫函數調用、程序代碼充分優化、減少無用的緩沖區、精確計算按需分配、精打細算而不是豪爽地一擲千金……
Ⅲ 單片機的ROM和RAM運行時的區別與聯系
單片機FLASH主要用作程序存貯器,就是替代以前的ROM,最大的有有點是降低了晶元的成本並且可以做到電擦寫,目前市場上單片機的FALSH壽命相差比較大,擦寫次數從1000~10萬的都有,但存儲時間可以保證40年,在選用時要注意.還有一些廉價的單片機為了集成可掉電的數據存儲器,沒有選用價格昂貴的EEPROM,而用FALSH來做的,但要注意其壽命最多就10萬次,而且擦寫不能位元組擦寫,這要注意使用的場合其壽命是否滿足要求.
RAM是數據存儲器,跟計算機裡面的內存差不多,主要是用來存放程序運行中的過程數據,掉電後就會丟失之前的數據,所以程序在上電時需要進行初始化,否則上電後的數據是一個隨機數,可能導致程序奔潰.
ROM就是程序存儲器,掉電後數據不會丟失,但在程序運行過程中其數據不會改變.早期的單片機的ROM因為擦寫修改麻煩,價格昂貴或者價格低廉的OTP型無法修改數據等原因已經被現在的FLASH存儲器替代了.因為FLASH的擦寫很容易,現在的部分單片機支持在線內部編程,通過特定的程序執行方式可以修改FALSH的內容,而實現在線修改程序存儲器.這與上面說的程序存儲器的內容在運行的時候不可被改變是不沖突的,因為在程序正常運行時,其內容不會改變,只工作在只讀狀態下的.
Ⅳ 單片機的RAM和ROM是什麼意思
打個比方吧!假如要搞個什麼活動,有兩塊地方,一個叫ROM.一個叫RAM,和一個老大叫cpu。其中人們規定rom這個地方的所有東西你老大cpu都不能改動它,裡面放著活動的方案,也就相當於你編寫的程序,cpu必須要按照這個方案去主持搞這個活動。這個地方允許放一些其它東西,〔單片機中也就是數據!〕。當這個活動開始的時候,老大cpu就會到rom這里復制裡面的全部內容〔有特別標明的除外,一般是不常用的數據〕放到RAM裡面運行。當需要用要標明的不常用數據時,老大根據數據的編號,也就是地址,去讀回來那個數,再繼續運行!當你要終止這次活動時,ram裡面的東西,就全部扔掉,不保留。下次再需要的時候,再去rom這個地方復制回來,從新開始運行。
寄存器,要說功能的話,每個寄存器都有它的功能!建議你搜索一下單片機寄存器功能,有很多的出來。他們介紹的都很好!在這里我就不說了打字累啊。呵呵
Ⅳ 單片機ROM 和RAM 的本質區別是什麼,在執行中各起什麼作用
ROM是放程序的,單片機工作是只能對ROM讀,RAM即可讀也可以寫,單片機運行時中間變數,程序運行結果都放在RAM里的。RAM比ROM小很多,用的時候須格外珍惜。
Ⅵ 請教,單片機RAM不夠用該如何解決
1、程序優化:
①、將固定的代碼數組等,存到ROM。(51單片機用 code表示存到 ROM)
②、壓縮多餘緩沖區,如數組長度根據需求來定。不要直接a[100]一棍子打死。
③、合理分配變數數據類型,如計數值在0-100內的數,就沒必要用 uint 了,使用 uchar 就夠了。只要兩個狀態的標志位,用 bit 就行了,不要直接 uchar。
④、可以用邏輯運算的,就不要採用算術運算。如 a/8,可以寫成 a>>3,當然 a不是浮點型數據才行。而a*2則是 a<<1;而a%4,可以寫成 a&0x03;
……
……
……
2、擴大RAM
①、買個同系列高RAM區間的單片機。
②、買個同系列高RAM區間的單片機。
③、買個同系列高RAM區間的單片機。
Ⅶ 單片機內部RAM和內部ROM的使用特點
RAM讀寫快速,斷電無法保存。ROM寫周期較慢,好處是斷電不丟失,即所謂非易失性存儲器,ROM有早期的EPROM需要紫外線擦寫,後來EEPROM電擦寫、最近的FLASH「快速電擦寫」——當然速度還是不如RAM快。ROM有擦除壽命1萬到10萬次。
還有一種是兼具RAM和ROM特點的「鐵電存儲器」——FRAM,也屬非易失性存儲器,但擁有RMA般的讀寫速度。但目前價格較高。
Ⅷ 關於單片機RAM和ROM的問題
回答:
1
RAM分為工作寄存區,位定址區,數據緩沖區,和
特殊功能寄存器區
在RAM中的臨時數據
一般為採集到的數據,如空調收集到的溫度數
據,
用戶的輸入,運算的數據等.程序員寫好的代碼燒進去的數據不在這里.
2
ROM是程序存儲器(Program
memory)主要用於存放經調試正確的應用程序,數據和表格.程序員寫的程序是其中一部分