单片机中 怎样把数据写到指定的memory用来观察 最有好例程。
3个回答
展开全部
针对内部RAM:
方法1:
char data *p; //定义一个指向片内RAM地址的指针
p = 0x30; //片内RAM地址为0x30
*p = 0x12; //向0x30内写入立即数0x12
方法2:
#include <absacc.h>
char x;
x = DBYTE[0x30]; //将片内RANM地址0x30的内容赋给变量x
DBYTE[0x30] = 0x12; //向0x30内写入立即数0x12
方法3:采用 _at_ 直接声明变量所处地址,但该变量必须是全局变量。
char data x _at_ 0x30 ; //x为char型全局变量,地址位于data区地址0x30
x = 0x12; //向0x30内写入立即数0x12
针对外部RAM,类似,只是将变量定义中的data改成xdata即可,方法2中使用XBYTE替代DBYTE,因此:
方法1:
char xdata *p; //定义一个指向片外RAM地址的指针
p = 0x3000; //片外RAM地址为0x3000
*p = 0x12; //向0x3000内写入立即数0x12
方法2:
#include <absacc.h>
char x;
x = XBYTE[0x0030]; //将片外地址0x0030的内容赋给变量x
XBYTE[0x0030] = 0x12; //向0x0030内写入立即数0x12
方法3:采用 _at_ 直接声明变量所处地址,但该变量必须是全局变量。
char xdata x _at_ 0x0030 ; //x为char型全局变量,地址位于xdata区地址0x0030
x = 0x12; //向0x0030内写入立即数0x12
方法1:
char data *p; //定义一个指向片内RAM地址的指针
p = 0x30; //片内RAM地址为0x30
*p = 0x12; //向0x30内写入立即数0x12
方法2:
#include <absacc.h>
char x;
x = DBYTE[0x30]; //将片内RANM地址0x30的内容赋给变量x
DBYTE[0x30] = 0x12; //向0x30内写入立即数0x12
方法3:采用 _at_ 直接声明变量所处地址,但该变量必须是全局变量。
char data x _at_ 0x30 ; //x为char型全局变量,地址位于data区地址0x30
x = 0x12; //向0x30内写入立即数0x12
针对外部RAM,类似,只是将变量定义中的data改成xdata即可,方法2中使用XBYTE替代DBYTE,因此:
方法1:
char xdata *p; //定义一个指向片外RAM地址的指针
p = 0x3000; //片外RAM地址为0x3000
*p = 0x12; //向0x3000内写入立即数0x12
方法2:
#include <absacc.h>
char x;
x = XBYTE[0x0030]; //将片外地址0x0030的内容赋给变量x
XBYTE[0x0030] = 0x12; //向0x0030内写入立即数0x12
方法3:采用 _at_ 直接声明变量所处地址,但该变量必须是全局变量。
char xdata x _at_ 0x0030 ; //x为char型全局变量,地址位于xdata区地址0x0030
x = 0x12; //向0x0030内写入立即数0x12
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询