单片机的问题

89C51RAM是128B的,就是最多7FH了?那89C52对于RAM的寻址是不是直接寻址、寄存器寻址、寄存器寻址都可以用?... 89C51RAM是128B的,就是最多7FH了?那89C52对于RAM的寻址是不是直接寻址、寄存器寻址、寄存器寻址都可以用? 展开
 我来答
wolf_lhy
2012-03-24 · TA获得超过6606个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:523万
展开全部
关于51单片机内存问题,一直是个疑惑大家的问题,因为51单片机是个很另类的单片机。
下面我给楼主讲解一下:
51单片机之所以另类,是因为,他寻址内存的空间,不是靠总线,是用指令的方式。
51单片机有以下几个内存模块组成:
ROM或者Flash就不说了。
RAM有------内部RAM的低128位(00-7F)
-------内部RAM的高128位(80-FF)---【89C51单片机没有这一段空间】
-------特殊功能寄存器(SFR)(80-FF)
------外部RAM 64K(0000-FFFF)

楼主又疑惑了,好多地址是重复的,比如,我向80H地址写一个数值,单片机怎么知道读的是内部的高128位RAM?还是SFR?还是外部64K的RAM呢?

答案是用指令,如果是直接寻址,那么访问的就是SFR,如果是R0或者R1间接寻址,就是内部高128位RAM,如果是DPTR或者是R0,R1间接寻址,且配合的是MovX指令,那么就是访问外部64KRAM中的第80H个地址。

对于你内部的128B,可以直接寻址,寄存器寻址、寄存器间接寻址都可
追问
我的意思是52型的内部RAM的高128B不就是7F到FF吗?为什么只允许用寄存器间接寻址?
追答
因为所有51类型的单片机,都有一个区域叫SFR,这个SFR地址刚好也是80-FFH,与高128B的内部RAM是重地址的,那么怎么区分呢?只能通过指令的寻址方式。
直接寻址,是访问的SFR,间接寻址是访问的高128RAM
“我的意思是52型的内部RAM的高128B不就是7F到FF吗?为什么只允许用寄存器间接寻址?”
这下你明白了吧?不管你是寄存器寻址还是直接寻址,都访问的是SFR,只有间接寻址才能访问高128RAM,因为他们地址相同,只能通过寻址方式区分。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式