51单片机把数据存入指定的地址或在读指定地址的数据用C语言怎么写?
答案:3 悬赏:20
解决时间 2021-03-17 11:38
- 提问者网友:护她一生,唯爱
- 2021-03-16 22:55
单片机C语言
最佳答案
- 二级知识专家网友:ー何必说爱
- 2021-03-16 23:31
1. 绝对宏:
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址
2. _at_关键字
直接在数据定义后加上_at_ const即可,但是注意:
(1)绝对变量不能被初使化;
(2)bit型函数及变量不能用_at_指定。
例如:
idata struct link list _at_ 0x40;指定list结构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。
在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD
具体使用可看一看absacc.h便知,例如:
rval=CBYTE[0x0002];指向程序存贮器的0002h地址
rval=XWORD[0x0002];指向外RAM的0002h地址
2. _at_关键字
直接在数据定义后加上_at_ const即可,但是注意:
(1)绝对变量不能被初使化;
(2)bit型函数及变量不能用_at_指定。
例如:
idata struct link list _at_ 0x40;指定list结构从40h开始。
xdata char text[25b] _at_0xE000;指定text数组从0E000H开始
提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。
全部回答
- 1楼网友:无字情书
- 2021-03-17 01:08
1:用_at_来指定指定的地址.
2:用数据指针来读取指定的地址.
- 2楼网友:滚刀废物浮浪人
- 2021-03-17 00:37
简单的说就是 volatile
告诉 编译器 不要对 该unsigned char data *rcv 变量进行优化,也就是让编译器不把该rcv变量不存入寄存器(寄存器,这东东您应该懂吧!),无论如何都不加载rcv到任何寄存器,即便是使用时也是直接从内存地址读取,不用寄存器做缓(冲)存(储)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯