单片机的问题
89C51RAM是128B的,就是最多7FH了?那89C52对于RAM的寻址是不是直接寻址、寄存器寻址、寄存器寻址都可以用?...
89C51RAM是128B的,就是最多7FH了?那89C52对于RAM的寻址是不是直接寻址、寄存器寻址、寄存器寻址都可以用?
展开
1个回答
展开全部
关于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,可以直接寻址,寄存器寻址、寄存器间接寻址都可
下面我给楼主讲解一下:
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,因为他们地址相同,只能通过寻址方式区分。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询