㈠ 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