社区
单片机/工控
帖子详情
keil absacc.h头文件volatile的问题
qq_1615656416
2019-02-08 06:19:48
不是因为这个原因absacc.h才加volatile的吧,这明明是对第二个单元赋值4次。编译器会优化成一次?如果这样,编译器怕不是有毒?寄存器读取是比RAM要快的,我觉得是51通用寄存器不多才这样?毕竟加了这个关键字就必须从内存取值了,而不是寄存器。
...全文
434
1
打赏
收藏
keil absacc.h头文件volatile的问题
不是因为这个原因absacc.h才加volatile的吧,这明明是对第二个单元赋值4次。编译器会优化成一次?如果这样,编译器怕不是有毒?寄存器读取是比RAM要快的,我觉得是51通用寄存器不多才这样?毕竟加了这个关键字就必须从内存取值了,而不是寄存器。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dceacho
2019-02-14
打赏
举报
回复
单就那4条指令来说,不考虑volatile情况,直接执行最后条,和按顺序执行最终
结果都一个样
,
Keil
C51中XDATA内存冲突的解决方案
在嵌入式开发中,内存管理是核心基础技术,特别是对于资源受限的8051架构。XDATA作为外部RAM空间,其地址分配直接影响程序稳定性。通过_at_关键字实现绝对地址定位时,容易出现内存重叠
问题
,这本质上是由于编译链接过程中的地址冲突检测机制。理解变量声明与定义的区别、掌握extern关键字的使用,以及合理运用
头文件
保护机制,可以有效避免这类
问题
。对于
Keil
C51开发者,本文提供的
ABS
ACC
.h宏替代方案和内存映射分析技巧,特别适合硬件寄存器映射和共享内存通信等典型应用场景。
【<
abs
acc
.h>
keil
软件里怎么找不到 ,如何找?】
【
keil
软件里怎么找不到 ,如何找?】
((unsigned char
volatile
xxxx *) 0)
#include” 当51单片机通过8255和锁存器74LS273来扩展IO时,经常用到
头文件
abs
acc
.h。 在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD 例如: rval=CBYTE[0x0002];指向程序存贮器的0002h地址 rval=XWORD
abs
acc
.h的理解
abs
acc
.h的理解 xdata是large存储类型,
volatile
是通过硬件来改变指针指向的内容。 #define XBYTE ((unsigned char
volatile
xdata ) 0) 定义 XBYTE 为 指向 xdata 地址空间unsigned char 数据类型的指针,指针值为0 这样,可以直接用XBYTE[0xnnnn]或(XBYTE+0xnnnn)访问...
Keil
C51内存操作避坑指南:如何高效访问RAM和ROM的指定地址?
本文深入解析了在
Keil
C51开发环境中高效、安全地访问RAM和ROM指定地址的实战技巧。通过对比指针访问、绝对宏和_at_关键字等方法,详细阐述了如何根据内存架构选择最佳策略,以规避常见陷阱并优化代码性能,特别强调了基于存储器的指针访问在提升效率方面的关键作用。
单片机/工控
27,521
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章