51单片机、stm32中sfr和define的定义问题求解!!!

作者&投稿:势环 (若有异议请与网页底部的电邮联系)
#define SFR(name,addr) __sfr __no_init volatile unsigned char name @ addr; 这个是什么意思,求解?~

就是告诉编译器将一个你自己指定的变量“name”链接到名字为“addr”的数据段中去,而这个变量是保存在特殊功能寄存器SFR中,并且保存在非初始化数据区(一个目标文件的数据区分为以初始化的和未初始化的),同时该变量是volatile属性的,即程序每次要用到它的时候都会重新从变量所在的物理地址中读取其值,而不是从缓冲寄存器中取,因为它是随时可变的

晕,这个问题太简单,自己查去,只提示你三个字"野指针"

在51单片机中,如果你这么定义:

#define P0 (*(volatile unsigned char*)0x80)
那么执行P0=0x25的时候,汇编就变成
MOV DPTR,#0080H
MOV A,#25H
MOVX @DPTR,A
很明显,你就不是往端口P0赋值0x25,而是像外部总线上的地址0x0080写数据0x25了,了解?
51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,不是访问外部总线。所以只能用 sfr P0=0x80来定义。

STM32单片机就不一样,所有的外设寄存器都处于统一寻址的外部空间中,所以只能用这种方法定义其地址,访问时也类似MOVX指令的执行。

在STM32中有个固件库,已经把那些端口的地址全部存储在一个向量表中,你用的那个DEFINE就是内部已经定义好的。你本来就是使用的固件库就可以对端口的地址进行正确的端口操作,然而在51中,这些端口是不能这样操作的,只能把它都当做特殊的寄存器给他附地址。

因为平台不同,C语言大的框架是相通的,但细节上有所区别

51特殊功能寄存只能直接寻址,不能间接寻址

规定


单片机的分类
2、MSP430单片机 MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。3、STM32单片机 由ST厂商推出的STM32系列单片机,这是一款性价比高的系列单片机,功能强大。其基于专为要求高...

stm32跟普通的51单片机在程序编写方面有什么区别?
1、库函数不同。由ST厂商推出的STM32系列单片机,ST厂商给了丰富的函数库,可以直接使用库函数,所以比起普通的51单片机在程序编写方面要更加的省时。2、运行速度不同。普通的51单片机运行速度较慢,特别是双数据指针,而STM32系列单片机最高工作频率可达72MHz。3、便利程度不同。51单片机的任何器件只...

stm3是软还是硬
软。STM32编程是只有软的,而STM32单片机的成功,和ST的软件生态也是有很大关系的。早期的STM32编程主要以库函数(标准固件库)和寄存器两种方式进行的。STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARMCortex?-M0,M0+,M3,M4和M7内核。

stm32比51难很多吗
2、数据总线宽度不一样,数据总线宽度越宽,处理速度越快。汇编指令集不同,51是mcs51指令集,stm32是arm指令集。指令集内容相似,但是形式上还是有较大差距。51更便宜,性价比更高,懂得人也更多。3、单片机和 STM32 是两种不同的微控制器,它们在设计、性能、功能等方面有所区别。

单片机现在最常用的是什么
2、AVR系列:以ATMEL公司的ATmega16为代表。3、PIC系列:以MICROCHIP公司的PIC16F877为代表。另外,还有专用的工业单片机,平时看到得比较少,比如台湾的合泰、义隆,三星,这些单片机往往体积小,功能很强但比较专一,价格很便宜,比如开发设备很贵,一般人用不起。前两年出现的STM8实力也非常强。16位...

常用的单片机有哪些?
1. 8位单片机中,最广泛应用的是三个主要系列:- 51系列:以Intel MCS51为核心,众多公司购买其核心并生产各自的51单片机。知名产品包括ATMEL公司的AT89S52等,STC公司的STC89C52RC,以及华邦、摩托罗拉、ST等品牌。2. AVR系列:以ATMEL公司的ATmega16为典型代表,这一系列单片机因高效的性能和易于编程的...

stm32和51单片机的区别
包括新的互连型系列在内的STM32系列微控制器具有多种配套软件和开发工具,其中包括意法半导体免费提供的软件库以及第三方工具厂商的广泛支持。意法半导体还将推出一个新的评估板,目前正在向大客户提供STM32F105和STM32F107互连型系列的样片stm32的运算速度大约是51单片机的几十倍吧而且外围接口功能比51强大...

基于51和stm32的rfid门禁区别
51是8位单片机,而stm32是32位单片机。时钟方面stm32运行频率更高,性能更好。两种单片机性能差别比较大。1、片上资源不一样。简单讲stm32单片机外设丰富,比如串口,I2c等。stm32单片机片上flash和RAM更大。以后升级功能,改进功能的空间大。2、成本上51单片机要便宜一些。3、stm32单片机开发资料和参考...

单片机开发板有哪几种
单片机开发板按类型分 1:51单片机开发板 2:AVR单片机开发板 3:stm单片机开发板 4:arm单片机开发板 5:pic单片机开发板 种类还有很多,最精典的是51单片机开发板,资源很多。可以参考吴鉴鹰单片机开发板,资源足,教程详细

常用的单片机有哪些?
2、AVR系列:以ATMEL公司的ATmega16为代表。3、PIC系列:以MICROCHIP公司的PIC16F877为代表。另外,还有专用的工业单片机,平时看到得比较少,比如台湾的合泰、义隆,三星,这些单片机往往体积小,功能很强但比较专一,价格很便宜,比如开发设备很贵,一般人用不起。前两年出现的STM8实力也非常强。16位...

鄯善县19277858572: 单片机 SFR 主要作用是什么?占用了什么空间? -
归茜佳福: SFR是特殊功能寄存器,比如51单片机的P0、P1、P2、P3、SBUF、TMOD、SCON、TH0等等,占用80H~FFH地址空间,与单片机的内部RAM高位地址相同但物理地址是不同的.

鄯善县19277858572: 51单片机、stm32中sfr和define的定义问题求解!!! -
归茜佳福: 在51单片机中,如果你这么定义:#define P0 (*(volatile unsigned char*)0x80) 那么执行P0=0x25的时候,汇编就变成 MOV DPTR,#0080H MOV A,#25H MOVX @DPTR,A 很明显,你就不是往端口P0赋值0x25,而是像外部总线上的地址0x0080写数据0x25了,了解? 51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,不是访问外部总线.所以只能用 sfr P0=0x80来定义.STM32单片机就不一样,所有的外设寄存器都处于统一寻址的外部空间中,所以只能用这种方法定义其地址,访问时也类似MOVX指令的执行.

鄯善县19277858572: 51单片机的头文件里面的sfr P0=0x80和sfr P1=0x90这类的具体意思 -
归茜佳福: 因为你查SFR(特殊功能寄存器)的名称及主要功能表时,P1端口所对应的字节地址就是0x90,在寄存器或存储器中一个单元即一个地址含有8个字节,所以以P1端口为例,一整个P1的8位都在0x90地址上.

鄯善县19277858572: 51单片机中,SFR和S1P1是什么意思,谢谢 -
归茜佳福: SFR,是““特殊功能寄存器””的英文缩写. 51单片机中,有21个特殊功能寄存器,每一个都有自己的特殊功能.有的用于定时、有的用于串行接口、并行接口.....S1P1,是51单片机工作时序的第一部分. 另外还有S1P2、S2P1、......S6P2,共代表12个时钟状态.

鄯善县19277858572: 单片机程序中bit和sfr都是来定义都很买东西的? -
归茜佳福: 51单片机里面新增了一下数据类型 bit 位标量是 c51 编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义 位指针,也不能定义位数组.它的值是一个二进制位,不是 0 就是 1,类似一些高级语 言中的 Boolean 类型中的 True 和 ...

鄯善县19277858572: 51单片机特殊功能寄存器SFR问题?求大虾!!!! -
归茜佳福: SP,A,DPTR都各自是一个寄存器,是众多特殊寄存器中的一个,即SFR中的一个,他们在SFR中的地址不同.单片机内部的内存的结构:由四个部分组成:1 ROM或者Flash2 内部RAM3 SFR4 外部RAM 注意,很多单片机初学者,分不清内部RAM...

鄯善县19277858572: 单片机 sfr定义 -
归茜佳福: 对于SFR是固定的,这些地址是单片机设计时定义的.这些不需要自己去定义,加入相应的头文件如reg51.h就可以了.在使用中可以直接使用.也不用管这些地址是怎么来的.

鄯善县19277858572: 51单片机中,SFR只能采用直接寻址,累加器A,B,DPTR属于SFR为什么又能用寄 -
归茜佳福: 并不是所有SFR都只能采用直接寻址,A、B、DPTR都可以采用寄存器寻址,还有地址能被8整除的寄存器,可以位寻址.

鄯善县19277858572: 在51单片机中,sfr 定义a后(sfr a=“address”), 然后sbit b= a^4, 为什么“address”一定要是8的倍数
归茜佳福: 因为51单片机中特殊功能寄存器SFR只有地址能被8整除的那些才能位寻址.

鄯善县19277858572: 51单片机sfr的问题 -
归茜佳福: 什么叫特殊功能寄存器是存在RAM中啊,特殊功能寄存器是特殊功能寄存器,RAM是RAM.两个是相互独立的物理硬件.就拿51为例子,因为51的内部地址总线是八位的.所以它的最大的内部可寻址空间就是0xff.所以内部就有256八位的寄存器,前128个寄存器就是RAM,后128个寄存器是特殊功能寄存器.打个比喻吧!你家有256间房间(寄存器)每隔房间都有对应的门牌号(地址),其中前128间房间是客房(RAM),用来招待客人的(数据).后面128个房间是控制你家的各个设备机房(特殊功能寄存器,各种设备就是单片机带的外设).

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网