⑴ 請教,單片機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區間的單片機。
⑵ 如何知道單片機rom 和ram夠不夠
rom就是放程序的,比如rom為4K,你編寫的程序超過了4K,那這個肯定不行,必須在4K以內。ran就是內存,你的程序跑起來比較卡,就說ran或者cpu速度不夠了。不過這些可以優化代碼得到相應的緩解的,比如延時用定時器來代替。
⑶ 用單片機計算 內存不夠
解決方案:
一、在原有的單片機上改動。
1、優化程序,有效果,但效果其實不大。
2 、自己擴展片外的RAM,一來是費硬體的錢,二來是電路要不停的飛線。
二、換一大內存的單片機。比如STC32F103C8T6,三個串口,16K的RAM。
三、減少串口對數據的接收量,比如只檢查$GPRMC信息,提取到坐標後就把其他信息丟棄了。
⑷ 單片機RAM不夠用怎麼辦
用的是panstamp NRG,上面集成了一塊CC430F5137單片機,RAM為4kB,做一個數據測量系統,每天測量的數據都先存在RAM里,一天結束後上傳pc,但是現有RAM不夠用。
解決辦法:
可以採用串列匯流排控制的EEPROM擴展。
⑸ ram 單片機片內ram不夠用,怎麼辦
,很納悶,那個程序keil編譯結果顯示code超過32k,77e58code大小也只有32k,可是燒片子居然,沒事,程序還照樣跑。
看來77e58果然超強啊! 答 1: 有問題的 答 2: 有什麼問題的? 答 3: 不妨試試有兩個建議:一是重新優化你的代碼;二是條件允許的話外擴SRAM。 答 4: 77e58片內有1280位元組的RAM 答 5: 我想問的就是可以從哪些方面進行優化?
不知道通常可以從哪些方面進行優化啊,有哪些技巧的啊? 答 6: 我早年使過7758,但是你最後描述的現象是絕對不可能的!我早年使過7758,但是你最後描述的現象是絕對不可能的!
那個時代使用7758僅僅因為她有2個串口!雙dptr,片外ram多1千! 答 7: 但是你最後描述的現象是絕對不可能的???是說這個絕對不可能嗎?
另外,很納悶,那個程序k
⑹ 關於51單片機外擴RAM的問題。請大俠們幫忙解答,先謝過。
現在的rom和ram都很豐富,rom有好幾k的,你寫程序肯定夠了,除非你要用大量的數據,才會使用大量的程序空間,比如幾十k,才會考慮去擴充。
擴充是用p0口和p2口擴充,p0口是數據,p2口是地址,用373鎖存就可以擴展了。地址如果不是很大,可以用138解碼,這樣可以擴展多片晶元,如果很大,就採用線選咯。
⑺ 51單片機定義數組太大RAM不夠用如何擴展
選用內存比較大的單片機或按8080匯流排擴展內存
不管是片上256B以外的內存還是外擴內存,編程中變數前都要加xdata 修飾
其實你只要用xdata 修飾,編譯就能通過,但如果你實際上沒有擴展內存,運行時才會出錯
⑻ 怎麼看單片機自帶的ROM/RAM夠不夠用
這個主要是看所做項目大小,程序大小與ROM掛鉤,從程序量上估計ROM是否夠用,變數的多少與RAM有關,從變數的多少估算RAM是否夠用。單片機運行是不佔用或很少佔用內存的。
⑼ 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
⑽ 單片機片內ram不夠用,怎麼辦
優化程序,看程序中哪些固定buf大小用不了那麼多的改小
可以使用動態分配buf空間
外接擴展ram晶元