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

本人正在做单片机课设,遇到带点问题,现在来百度请教大家,问题如下,大家会哪个,回答哪个。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.以上问题,大家会那个回答那个,只要有一个满意就给你分,一定回答到点子上,谢绝从网复制的帖子。谢谢大家了。
另外250分在这 http://zhidao.baidu.com/question/93150076.html
展开
 我来答
意法半导体(中国)投资有限公司 2020-01-15
展开全部
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
百度网友0ad5d59
2009-04-11 · TA获得超过1192个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:574万
展开全部
这都有500分 .太好赚了...
1.
楼上已经回答了.直接看编译那里.
Program Size: data=23.0 xdata=0 code=249
data =内部数据区大小
xdata = 外部数据区大小
code = 代码区大小,,,也就是你说的占用单片机的那块.
方法二吧你的hex转化成bin 直接看bin文件大小也可以
hex2bin有转化工具..不过要网上下载

2. AT89C58这种都可以.
stc89c58等等,flash都是64K的
肯定换单片机..外部的太麻烦..价格也不便宜.

3
RAM 有 500 BYTE
其中内部256 外部256
如果要运行速度快一点的用
unsigned char idata Fifo[180];//这个在内部ram中
unsigned char xdata Fifo[180];//慢一点在外部ram中

4 ---下一个
int 是16位有符号 也就是比较的时候是可以负数的 (-32768) - 32767
uchar 那是外面重定义过的
比如 #define uchar unsigned char
或者 typedef unsigned char uchar;
相当于 8位无符号数,,//一般都用这个定义,消耗少,没有负数0-255
unsigned char 8位无符号,(没有负数) 范围 0-255

5 直接用at24c16里面吧 16/2 = 2*1024 = 2048可以存2048字节
如果还不够就继续往上面找
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
意法半导体(中国)投资有限公司
2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
百度网友d4ed3b5d6
2009-04-11 · 超过33用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:101万
展开全部
1.最简单就是用编程器软件加载后就会显示hex文件的大小,那才是它实际的大小。
通常windows显示的比实际大很多,这关系到文件系统。比如fat32下看到的大小和ntfs下看到的同一文件大小可能不一样。

2.可以选用64krom的单片机STC89C516RD,AT89C51RD2等。扩展rom软件用c语言就可以不用修改,只是硬件稍麻烦些。

3.这款单片机是512k但是“unsigned char Fifo[120]; ”只会编译生成低128字节的ram区而程序本身还占用一部分,而从80h后是和sfr共用,此时只能用“idata”关键字访问。
而大于256bytes在单片机中称为外部ram区,详见AT89C51RC技术资料。
访问这高256bytes必须用“xdata”关键字访问。
AT89C51RC这样做其实就是把一部分外部的ram做到了片内,简化硬件而已,但使用同外部的ram是一样的。

4.int在8位单片机中表示2个字节值-32768~+32767,uchar不是变量类型而是在程序前用了“#define uchar unsigned char ”宏定义,表示uchar=unsigned char
表示无符号字符型,值为0~255.而char值表示-128~+127。

5.没有用过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式