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

本人正在做单片机课设,遇到带点问题,现在来百度请教大家,问题如下,大家会哪个,回答哪个。 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.以上问题,大家会那个回答那个,只要有一个满意就给你分,一定回答到点子上,谢绝从网复制的帖子。谢谢大家了。

第1个回答  2019-12-22
第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指令差不多吧,再大就不一样了

51单片机C51语言的几个问题。
问题1:sbit a = PSW^2;这不是一条简单的赋值语句,a也不是什么变量,而是把他和PSW的第二位关联起来,相当于a是它的别名一样,如果a变化的话PSW的第二位会变,PSW的第二位变化时a当然也会变(假设你叫李宇春,现在这条语句就是说把春哥也变成你的名字),其实是一个东西,这么做的原因是,...

关于C51单片机单片机的几个问题
--51 单片机里面,确实没有 PC 的地址,因为,谁都不需要这个地址。4、MOV 20H,@DPTR 这个语句错了是因为DPTR只能用于片外寻址么 --这个指令,并不存在。DPTR只能用于片外寻址么 --查一下指令表,就知道了。5、”80C51单片机子程序调用时能自动保护断点和现场“,这句话错了是不是因为只能...

求解几道MCS51单片机的答案
11. C51 中,若定义8 位有符号类型的变量,可定义为 char 型变量,其值域为 -128~127 ;unsigned int 型变量的长度为 无符号整型 ,其值域为 0~65535 。5. 若MCS-51 晶振频率为12MHz,则T0 工作于计数方式时,可以接受的计数脉冲频率范围为 1000000~1000000\/65536 ...

C51单片机学习求助!
你如果是想学习ARM为最终目的,那我建议你就不必要去学习单片机了,因为单片机就算你达到精通,那也对你学习ARM没有太多帮忙,当然不能说没有帮忙,至少你可以知道一个大体的硬件框架,但这要付出的时间却是很多。但以你的实际情况来看 你是从事自动监控行业的,若是你现在的工作有部分涉及到单片机和ARM...

c51单片机程序运行顺序的问题?
周围是强电,电磁干扰很厉害,不知道采用STC15会不会出问题?任何单片机在强电磁干扰下都可能会出问题,所以从设计上要把隔离和抗辐射做足。A、当程序进入外部中断1时断开加热,这个时候只有等待到启动加热信号才跳出外部中断,那么其他程序都不执行了吗?比如这个时候收到启动语句6(异步电机正转信号)。...

51单片机的问题
是通过89C51片内振荡器输出经12分频后的脉冲进行计数,--对。直至溢出。--这要看你的软件,也可以让它永远不溢出。8.80C51单片机的扩展程序存储器与片内程序存储器存储空间重叠。--可以重叠,也可以不重叠。--这要看,是谁设计电路了。9.在中断响应时断点地址自动入栈 --对。

C51单片机分类
一、楼主:“C51单片机的分类”,这种说法是不妥的,如果要强行分的话:1,低电压:2.7-3.6V;高电压5.0V 2,一次性编程和多次编程。3,在线编程和编程器编程。再也不能分了,除非根据ROM,RAM大小来分。二,真正应该说是单片机的分类,它是根据CORE(内核)如8051内核称为51系列单片机;如arm7...

谁能帮我检查下,这个C51单片机的汇编语言有什么错误!
存在以下几个问题:1. 在按键的延时去抖动后,没有重新读取按键键值,即:L8: ACALL DELAY CJNE A,#0FFH,SAVE 这两条指令中间应插入:MOV A, P1,否则你用来比较的A还是第一次读到的A 2. 你在检测到按键按下后,没有等待键释放再去检测下一个按键。从你的程序中看,检测到按键按下后,...

51单片机的编程问题?
C51语句: P0_0 = 1;P0_0声明为sbit,因此编译成:setb 80h,这将把位地址空间的0x80地址的bit的值置1。这个位正是P0口的bit0,执行后,P0.0将输出高阻态。而P0.1-.7不会变化。2:C51为什么要嵌套汇编 51单片机一个显著优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合...

C51单片机分类
有些RAM有256B,而有些只有128BIT;有些40个管脚(AT89C51、89C52、89S52),有些20个管脚(AT89C2051、89C4051);有些有内部晶振,有些没有;但这些都是稍微一点点的区别,基本都还是算一样的。单片机是一个很大的类,这个类下面有很多子类,C51是单片机其中一个子集,其它的子类还有PIC、AVR、...

相似回答
大家正在搜