单片机的问题

89C51RAM是128B的,就是最多7FH了?那89C52对于RAM的寻址是不是直接寻址、寄存器寻址、寄存器寻址都可以用?

第1个回答  2012-03-24
关于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,因为他们地址相同,只能通过寻址方式区分。

本回答被提问者采纳

单片机程序跑飞的现象、原因以及解决方法
首先,数组越界或数组溢出是程序跑飞的一个重要原因。当函数内定义的数组元素个数小于实际使用时,例如定义了ucDataBuff[10],却尝试访问第11个元素,就会导致程序运行异常,最终跑飞。解决这一问题的关键在于仔细检查函数中使用的数组,确保其大小与实际需求相符。其次,中断服务程序的缺失也可能引发程序跑飞。

51单片机关于寄存器的问题,请帮助我解释一下
P1M0和P1M1是两个寄存器,它们用于设置P1口各个端口的工作状态。每个端口都有四种工作状态,分别为00b、01b、10b、11b。通过P1M0和P1M1的位控制,可以管理P1的八个端口的所有四种工作状态。例如,P1M0.7和P1M1.7控制P1.7端口的工作状态,分别为准双向口、推挽输出、仅为输入和开漏(Open Drain)。同...

单片机常见故障及处理
10.P沟道的MOS管能不用就不用,价格昂贵不说,导通电阻大,功耗大,单片机输出0时很容易打开,但是输出1时,如果MOS管源极接的是高于单片机高电平的电压,是关不断的,需要借助三接管关断。10.把过孔设成外径0.4mm,孔径0.2mm理论上可以,但是有人告诉我PCB加工厂可能做不出来,但我觉的问题不大...

单片机点灯的问题及解决方法?
在进行单片机点灯实验时,可能会遇到以下一些常见问题以及解决办法:1. 点灯不亮或亮度不稳定:首先,检查电路连接是否正确,包括电源、单片机输出引脚、灯的连接。确保电源电压正常,并确保单片机输出引脚已经正确设置为输出模式。如果还是无法点亮灯,可以确认灯是否正常,或者使用示波器检测信号是否正常。2. 点...

求一份单片机答辩的题目和答案 我不是计算机专业的 简单点就行 拜托了...
36个单片机新手入门问题: 1.C语言和汇编语言在各有哪些优缺点? 2.初学者到底是应该先学C还是汇编? 3.400减50,程序语句上如何SUBB实现呢? 4.C或汇编语言可以用于单片机,C++能吗? 5.学了电子线路、C语言,感觉很迷茫怎么办? 6.8位机还能延续多久? 7.搞单片机开发,一定要会C吗? 8.请问作为学生,如何学好单片机...

单片机问题,纯理论
如果IO口无外接元件并让其输出为高电平时,那么IO口正常时应表示为高电平。2:外部上拉漏极开路输出IO口 应该理解为IO口输出只能是漏极开路输出,在实际应用时必须外接上接电阻,就像AT89C51的P0口一样。3:引脚复用 请说明你的单片机型号,这个要具体情况具体分析了。

单片机电磁兼容的问题,急!!!
1.1 单片机的电源电压 1.2 红外接收管与单片机引脚连接的电压及波形,尤其波形 以上两个内容,最好用示波器量,万用表量的不准.2 如果在电源没有问题,波形出现问题的情况下,才有可能考虑到电磁干扰或者电磁辐射引起的.解决办法,用铜纸,或者其他导电的纸,或者用个金属壳,把电机全面的包起来,并且把...

单片机各个模块能运行,组合后就不能运行,不知道主要问题都有哪些
有几个可能的问题:1、硬件资源之间混杂不清,比如你在这里用到了定时器一直在做事,那边你又把总段给关了。2、时序受到影响。有些模块需要比较严格的时序,但是你的一些模块工作的时间比较长,影响到了。3、中断服务程序里面的代码太长。中断服务程序越短越好,你懂的。4、还有很多,其他网友说说吧 ...

stc单片机无法烧录,一直正在检测目标单片机怎么办?
软件问题1. **驱动问题**:确保已正确安装串口驱动。在电脑资源管理器中查看是否已识别出正确的COM口。若驱动安装不正常,尝试获取制造商提供的驱动程序。2. **参数配置检查**:在编程软件中检查参数设置,包括单片机型号、串口号、波特率等是否与实际设备匹配。不匹配的设置会导致软件无法正确识别和操作...

几个关于单片机的问题,求大神全部解答
1、单片机管脚输出高电平时,PNP管截止,线圈上无电流通过,继电器不动作;输出低电平时,PNP管导通,线圈上有电流通过,继电器吸合。图二逻辑相反,高电平吸合、低电平不动作。2、图一咯。首先兼容性较强,单片机供电可以与VCC不是同一个电平(图二若参数不当会无法关断的);其次传统51管脚上电是高...

相似回答