500分问几个C51单片机的问题

本人正在做单片机课设,遇到带点问题,现在来百度请教大家,问题如下,大家会哪个,回答哪个。1.单片机能铐多大的程序从哪里看,我用的是KEILC,点击生成的HEX文件,显示的... 本人正在做单片机课设,遇到带点问题,现在来百度请教大家,问题如下,大家会哪个,回答哪个。 1. 单片机能铐多大的程序从哪里看,我用的是 KEIL C,点击生成的HEX文件,显示的大小,是不是就是往单片机考的程序大小,比如HEX文件大小是30k,那是不是实际上就往单片机里铐那么大的程序,我现在用的是AT89C51RC,这个片子好像说是能考32k的程序,但是我现在程序生成的HEX文件35k了已经,但那是考到单片机里还是能运行,这是为什么,是不是会覆盖前面的程序。 2.如果我想换个大一点的程序存储的单片机,改选择啥型号的单片机,我估计我的程序会到40k左右,是该外接存储器,还是再换一个单片机,外接存储器麻烦吗? 3.本人用的是AT89C51RC,RAM 有 500k ,但是在定义变量的时候就会出错,例如下面这段程序 #include<AT89C51RC.h> #define uint unsigned int #define uchar unsigned char unsigned char Fifo[120]; void main() { while(1); } 上面这段程序,如果把Fifo定义成Fifo[121]就会出错,也就是说只要大于120就会出错,而小于120就没事。网友说,把变量定义成idata,这个倒是确实管用,但是随着便另定义得多了,又会出问题,有些问题是莫名其妙的,估计是不是和前面的某些重要的寄存器冲突了,可是我换的是AT89C51RC,应该RAM是够用的吧,是不是应该吧头文件某处改一下,我这个头文件还是找网友要的,一点都不懂,应该改哪,才能使变量的定义正常化,而且我也不想用idata这样的定义方法。 3 在定义变量的时候,int,uchar。unsigned char,有啥区别,把变量定义成char好像有时会溢出,这是为啥。 4.我想换一个AT2405,AT2405只能写512个数,而我需要2000个数的AT24,改选哪个型号的,是不是能通用,不用改程序。 5.以上问题,大家会那个回答那个,只要有一个满意就给你分,一定回答到点子上,谢绝从网复制的帖子。谢谢大家了。 展开
 我来答
第暄栾碧琴
2019-12-22 · TA获得超过3488个赞
知道大有可为答主
回答量:3096
采纳率:29%
帮助的人:234万
展开全部
第1个问题
HEX文件大小是30k,这个并不是程序的真正大小,这个文件会比真正的文件大两三倍
编译时会在窗口下边显示类似下边的内容
Build
target
'Target
1'
compiling
74HC164.C...
linking...
Program
Size:
data=23.0
xdata=0
code=249
creating
hex
file
from
"164"...
"164"
-
0
Error(s),
0
Warning(s).
这里显示的一清二楚,不用我说明了吧
第2个问题
at89c51rd2
64K
at89c51rE2
128K
第3个问题
at89c51rC
8051
based
Full
Static
CMOS
controller
with
Three-Level
Program
Memory
Lock,
32
I/O
lines,
3
Timers/Counters,
8
Interrupts
Sources,
Watchdog
Timer,
2
DPTRs,
32K
Flash
Memory,
512
Bytes
On-chip
RAM
只有512字节,不是500K
外部要定义为xdata
unsigned
char
xdata
因资源有限尽量定为无符号数
第5个问题
AT24C系列很多最大有AT24C1024(1兆位)
AT24C16指令差不多吧,再大就不一样了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式