㈠ 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的,否則編譯時肯定會報錯的。
㈡ 51單片機程序長度有限制嗎 程序存儲
51單片機理論上最大支持64K的程序定址空間,但實際上現在有些51核心的單片機可以通過BANK的切換支持到256K的程序。但實際上的單片機空間都不會這么大,有2K,4K,8K等等很多規格,具體要查你所使用的單片機手冊。
另外,HEX文件的大小與BIN文件是不一樣的,因為HEX文件中還包含了實際數據的地址,長度,校驗等信息,而BIN中只有實際數據,所以HEX肯定要比BIN大了。程序的長度要看BIN的大小為准。HEX而BIN是可以互相轉換的,網上有很多轉換的小工具。
㈢ 怎麼知道自己在51單片機內編的C程序有多大,因為各種單片機內存不同,要根據程序大小來選機子。謝謝
一般情況下,根據你編譯的hex的大小就可以確定了,STC89S58一般肢體模仿動作的超大程序都可以寫進去,這點你也可以放心,而且STC公司出了一款類似ARM晶元的單片機,自帶AD,你可以看看這一款。STC90C516RD+
㈣ 51單片機C語言程序大小
STC89C51最大支持4k大小的程序HEX,建議換大點的程序存儲器的51器件. 還有STC8905X,X表示程序存儲器大小,為4*X KB,還要注意內部RAM的空間大小,這直接決定數據存儲的大小!
不會吧!有點旋啊,你編譯 能通過么?
一般.C文件14K的話,HEX不會超過8K,52肯定是夠的!
㈤ 51單片機的程序大小問題
1、4K容量的程序Flash空間,肯定是無法裝載燒寫5K代碼的。
2、HEX文件在編程器軟體打開後,可以看到實際程序容量(機器碼)大小。文件大小會稍大。
3、模擬可能是沒有代碼限制的。
4、解決方法:去掉STARTUP.A51文件。在編譯選項中,改變優化代碼等級為9。並選擇Favor size。重新編譯程序試試。完成項目要求前提下,節省一些code常量定義。
㈥ 51單片機long,double,float,int范圍是多大,各多少位元組
在keilC51或者iar for c8051編譯器下:
一、int 占兩個位元組 范圍:-32768~+32767
二、long佔四個位元組 范圍:-2147483648~+2147483647
三、float佔四個位元組 范圍:3.40E+38 ~ +3.40E+38
四、double佔8個位元組 范圍:-1.79E+308 ~ +1.79E+308
51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel的8004單片機,後來隨著Flash rom技術的發展,8004單片機取得了長足的進展,成為應用最廣泛的8位單片機之一。
(6)51單片機程序大小怎麼算擴展閱讀:
51單片機功能特性
1、可以模擬63K程序空間,接近64K 的16位地址空間;
2、可以模擬64Kxdata 空間,全部64K 的16位地址空間;
3、可以真實模擬全部32 條IO腳;
4、完全兼容keilC51 UV2 調試環境,可以通過UV2 環境進行單步,斷點, 全速等操作;
5、可以使用C51語言或者ASM匯編語言進行調試 ;
6、可以非常方便地進行所有變數觀察,包括滑鼠取值觀察,即滑鼠放在某 變數上就會立即顯示出它此的值;
7、可選 使用用戶晶振,支持0-40MHZ晶振頻率;
8、片上帶有768位元組的xdata,您可以在模擬時選 使用他們,進行xdata 的模擬;
9、可以模擬雙DPTR 指針;
10、可以模擬去除ALE 信號輸出. ;
11、自適應300-38400bps 的所有波特率通訊;
12、體積非常細小,非常方便插入到用戶板中.插入時緊貼用戶板,沒有連接電纜,這樣可以有效地減少運行中的干擾,避免模擬時出現莫名其妙的故障;
13、模擬插針採用優質鍍金插針,可以有效地防止日久生銹,選擇優質園腳IC插座,保護模擬插針,同時不會損壞目標板上的插座. ;
14、模擬時監控和用戶代碼分離,不可能產生不能模擬的軟故障;
15、RS-232介面不計成本採用MAX202集成電路,串列通訊穩定可靠,絕非一般三極體的簡易電路可比。
㈦ 如何計算單片機的程序存儲空間
1.單片機的位數取決於其CPU寄存器一次能處理的數據寬度,比如51單片機是8位的,因為其ACC是8位,一次只能處理8位數據,STM32的R寄存器是32位的,一次能處理最大32位的數據,所以是32位單片機。
2.程序存儲空間在在嚴格意義上講是取決於其程序計數器(PC)的寬度,比如51單片機的PC是16位的,所以就是64KB存儲空間。像STM32單片機的PC是32位的,所以可以有4G的存儲空間,但實際上使用只是其中很小的,幾百KB的空間。
㈧ 51單片機程序的大小怎麼看好想不是看hex文件的大小的。
keil編譯後,可以看到
如 Program Size: data=14.0 xdata=0 code=177
data區是14個位元組 code區 177個位元組
㈨ 51單片機 用匯編語言怎麼編程:幾個有符號數的比較大小
51單片機中,沒有專門的有符號數比較指令,只能通過一些變通的方法來實現,比如:
比較30H和40H中有符號數的大小,結果放在R2中,大於則為1,等於為0,小於為128:
CMPDAT:
MOV A,30H
JB ACC.7,CMPF1
MOV B,A
MOV A,40H
JB ACC.7,CMPZ2 ;30H正,40H負所以30H>40H
CJNE A,B,CMPZ1 ;均為正,比較大小
MOV R2,#0
RET
CMPZ1:
JC,CMPZ2
CMPZ11:
MOV R2,#128
RET
CMPZ2:
MOV R2,#1
RET
CMPF1:
ANL A,#7FH
MOV B,A
MOV A,40H
JNB ACC.7,CMPF3 ;30H負,40H負
SJMP CMPZ11 ;30負,40H正,所以30H<40H
CMPF3:
ANL A,#7FH
CJNE A,B,CMPF10 ;兩個均為負數
MOV R2,#0
RET
CMPF10:
JC CMPZ2 ;30H<40H(負數小者大)
SJMP CMPZ11 ;30H>40H