单片机的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机的问题相关的知识,希望对你有一定的参考价值。

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

参考技术A 关于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,因为他们地址相同,只能通过寻址方式区分。

本回答被提问者采纳

STM32单片机SPI问题

大家好,STM32F103R8T6单片机的SPI口有两个,看数据手册20-23管脚依次为SPI1_NSS、SPI1_SCK、SPI1_MISO、SPI1_MOSI,请问这四个管脚和SPI口的CS、SCK、SDI、SDO是怎么对应的?这样命名有什么说法吗?可以直接对应相连吗?希望能给予指导。

● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

● SCK:串口时钟,作为主设备的输出,从设备的输入

●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。
参考技术A “和SPI口的CS、SCK、SDI、SDO是怎么对应的”
这是你从设备上的标识吧。
一般接线为(左边主设备,右边从设备):
SPIx_nSS======CS
SPIx_SCK======SCK
SPIx_MISO======SDO
SPIx_MOSI======SDI本回答被提问者采纳
参考技术B 就是和SPI协议的几个管脚相对应的,需要用的时候对应连接上就行 参考技术C 基本的底层驱动都是有的,如果使用到某个传感器,而网上一时还没有对应的驱动库,可以自己根据传感器的手册编写对应的驱动

以上是关于单片机的问题的主要内容,如果未能解决你的问题,请参考以下文章

5V单片机与3.3V单片机串口通信问题

5V单片机与3.3V单片机串口通信问题

STC单片机开漏模式问题

单片机RS485通信问题

5V单片机与3.3V单片机串口通信问题

单片机 C语言 关于数组的问题