① 關於keil uvision4 軟體編程51單片機內存問題
FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED
MODULE: D:\KEIL\C51\LIB\C51L.LIB (-----)
LIMIT: 0800H BYTES
----
沒有破解,有 800H 位元組的限制。
② 51單片機ram不夠用,怎麼優化程序
1.肯定的,嵌套越多,要壓棧保存的信息就越多,佔用的RAM就越多了,對51來說,最多就是CPU內256位元組的RAM。
2.是的。
3.沒用過這晶元……我用的最多的是AVR
4因為你定義了一個pagebuf[512],512位元組啊!51單片機的data撐死才256位元組(還沒算壓棧保存數據需要的RAM),所以編譯器自動將這個數組放在了XDATA中。
③ 單片機C語言keil編譯出現錯誤,寄存器容量不足,怎麼改正,急!!!!
我用keil2,keil4編譯都沒有問題的。
重新建一個工程,再試下。
下圖就是用keil4編譯的結果。估計是沒有破解。或者破解的不對。
④ 51單片機程序空間大小
AT89C52的程序空間是8KB是確認無疑的,但指的是存放純二進制的機器碼,就是二進制數。而KeilC編譯的HEX代碼文件並不是純二進制數,是以ASCII碼格式存放的文件,而且其中還有一些編譯信息,如地址、校驗和等。所以,不能看HEX文件的大小來確定下載到單片機內的真正的程序空間大小,也就是說HEX文件的大小並不是真正下載的單片機的程序大小。而下載到單片機的代碼空間大小要看Keilc編譯時給出的代碼數的提示,才是真正要下載到單片機內的代碼空間。舉個例子,下圖是一個程序編譯後的提示,真正的二進制代碼是337個位元組,而HEX文件卻是1KB。這里還有一個誤區,你看到的HEX文件的大小是操作系統給出的大小吧,它是取整KB的,就是說HEX文件不足1KB時,也顯示是1KB。
再明確一點說吧,假如編譯後的代碼是750418,用純二進制數(即BIN格式,有些匯編程序的編譯器輸出的就是BIN格式)的代碼保存就是3個位元組,而用HEX格式保存就是6個位元組,因為要用6個ASCII碼來表示。這來算來,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大於二倍的。
好,回到你的問題來,你的HEX文件是19KB,你看一下編譯後的代碼大小提示,肯定是不會超過8KB的,否則編譯時肯定會報錯的。
⑤ keil51提示data空間不足,編譯失敗,只是調用了一個函數。
Target裡面選擇變數默認在xdata中就可以了!或者手動給一些變數加上xdata修飾符!
⑥ keil c51 at89c52 自定義變數空間不夠用怎麼辦
第一可以外擴RAM,第二選擇一款增強型單片機,編譯時project-->選中Memory Model選擇large variables in XDATA;然後學程序某些變數使用unsigned uchar xdata xxx;但是變數一定在所選的單片機的RAM空間范圍內。