找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2976|回复: 3
收起左侧

STC单片机写int型的数组到EEPROM的问题请教

[复制链接]
ID:392135 发表于 2018-9-7 14:13 | 显示全部楼层 |阅读模式
  请问一下如何向EEPROM连续写一个int型的数组呢,芯片是STC8F2K08S2,感谢感谢回答
回复

使用道具 举报

ID:155507 发表于 2018-9-7 21:02 | 显示全部楼层
用c语言关键字union来解决。

union xxx
{
        char c[2];
        int i;
}y;

定义一个“共用体”xxx,y作为“共用体变量”,里面再定义一个char类型的变量数组c[2]和int类型的变量i。

根据union的定义,里面的变量占用同一个内存地址。所以,c[2]和i的内存地址是一样的,说的再通俗一点,就是c[2]的2个数实际上就是i的两个字节。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:395196 发表于 2018-9-7 22:55 | 显示全部楼层
void isp_disable() // 关闭 ISP  { ISP_CONTR = 0x00; //   ISP_ADDRL = 0x00;  ISP_ADDRH = 0x00;  ISP_CMD = 0x00;  ISP_TRIG = 0x00; } //------------ void read_eprom(uint address) // 读EPROM {  uchar i_data;  ISP_CONTR = 0x83;  ISP_ADDRL = address;  address >>= 8;  ISP_ADDRH = address;  ISP_CMD = 0x01;  ISP_TRIG = 0x46;  ISP_TRIG = 0xb9;  /**/  i_data = ISP_DATA ;  isp_disable();  return(i_data); } //------------ void write_eprom(uint address,uchar write_data) {   ISP_DATA = write_data ;   ISP_CONTR = 0x83; //   ISP_ADDRL = address ;  ISP_ADDRH = address>>8;  ISP_CMD = 0x02;  ISP_TRIG = 0x46;  ISP_TRIG = 0xb9;  /**/  isp_disable(); } //------------ void clr_eprom (uint address) //扇区擦除。 {  ISP_CONTR = 0x83; //   ISP_ADDRL = address ;  ISP_ADDRH = address>>8 ;  ISP_CMD = 0x03;  ISP_TRIG = 0x46;  ISP_TRIG = 0xb9;  /**/  isp_disable(); }
回复

使用道具 举报

ID:395251 发表于 2018-9-8 09:33 | 显示全部楼层

用c语言关键字union来解决。

union xxx
{
        char c[2];
        int i;
}y;

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表