AT89S52在KEIL中如何设置?

2024-11-02 10:17:56
推荐回答(2个)
回答(1):

AT89S52有256字节片内数据存储器。高128字节与特殊功能寄存器重叠。
也就是说高128字节与特殊功能寄存器有相同的地址,而物理上是分开的。迹滑穗
当一条指令访问高于7FH的地址时,寻址方式决定 CPU 访问高128字节RAM 还是访问特殊功能寄存器空间。

正是单片机的上述硬件结构导致:
低128字节的RAM空间可以以“直接寻址”或“间接寻址”方式访问;
高128字节的RAM空间只能以“间接寻址”方式访问;
若以“直接寻址”方式访问一个位于高128字节的地址,其实访问的是单片机的特殊寄存器空间;

所以说,不是“变量不能超过128字节”,而是“可以以“直接寻址方式”访问的RAM空间不能超过128字节

在KEIL中,使用 DATA,IDATA等关键字定义变量的访问方式
DATA :直接寻址方式,亦让锋是KEIL的默认设置
IDATA:间接寻址方式,可以访问整个256字节RAM空间姿卜

由上,可以把你程序中的一些访问不是很频繁的变量,改为以间接寻址方式访问,比如: unigned char idata temp;

供参考。

回答(2):

256字虚宴节分成两个区的拆嫌,分别给不同类型的变量
分为高低各128字节,不能混着用的
随便找个单片机旅誉手的书都有写