用EEPROM扩展片外数据存储器以及编程问题

时间:2022-04-16 23:25:52
可以用EEPROM扩展片外数据存储器,将数据写在片外EEPROM中。可是在KEIL C51中要如何定义用来存放数据的变量,它代表的地址是片外EEPROM地址呢?如果用EEPROM扩展片外数据存储器,它的编址是接着片内RAM的吗?如果是,可不可以定义一个指针后,直接将一个常数赋给它,该常数为片外EEPROM的地址,这样就可直接将数据存放到指针指向的地址单元了?

5 个解决方案

#1


好好研究一下 MOVX 指令,MOVX @DPTR,A 中的DPTR 就相当于你说的指针。
不过,一定要确保单片机与EEPROM的连线正确。

#2


我想有C来写。KEIL C51中C与汇编能不能同时在一个项目中使用?

#3


可以的 
有些没有必要的 
在 精度要求高的场合必须用汇编

#4


#include <absacc.h>  /* 这个头文件必要 */

#define  OUT_PORT   XBYTE[ 0x6000 ]

上面的语句在片外数据区定义一个变量 OUT_PORT, 地址是 0x6000

0x6000 是我随便写的,这个地址必须在你的硬件扩展的有效范围内

#5


这是个 8 位的变量,这样使用

OUT_PORT = 0x55;   // 写 0x6000 单元

xxx = OUT_PORT;    // 读 0x6000 单元, xxx 是另个我变量

#1


好好研究一下 MOVX 指令,MOVX @DPTR,A 中的DPTR 就相当于你说的指针。
不过,一定要确保单片机与EEPROM的连线正确。

#2


我想有C来写。KEIL C51中C与汇编能不能同时在一个项目中使用?

#3


可以的 
有些没有必要的 
在 精度要求高的场合必须用汇编

#4


#include <absacc.h>  /* 这个头文件必要 */

#define  OUT_PORT   XBYTE[ 0x6000 ]

上面的语句在片外数据区定义一个变量 OUT_PORT, 地址是 0x6000

0x6000 是我随便写的,这个地址必须在你的硬件扩展的有效范围内

#5


这是个 8 位的变量,这样使用

OUT_PORT = 0x55;   // 写 0x6000 单元

xxx = OUT_PORT;    // 读 0x6000 单元, xxx 是另个我变量