优享家 发表于 2014-6-22 11:05:06

C语言:位地址怎样写入EEPROM中

本帖最后由 优享家 于 2014-6-22 17:29 编辑

比如如下地址应该怎样写入EEPROM中呢,写入EEPROM是以字节写入
bit sWitch = 0;
bit Breathe = 0;
bit Bre_Mark = 0;
bit Flash_Mark = 0;
bit Color_Mark = 0;
bit Sun_Mark = 0;   
bit Follow_Mark = 0;
bit Condition_Mark = 0;

看到这里有写到用结构,但是还是不明白————如果我要写入EEPROM是不是就是将ii写入
C语言中是否可以自己定义既可字节寻址又可位寻址的变量?
仅字节 寻址那绝对可以
仅位寻址 可以用结构体定义
那么既可 字节 又可 位寻址 如何做呢?
是不是定义了 位寻址,再用其他方式 字节寻址?
联合+结构
sturct i
{
    unsigned CHAR b0:1;
    unsigned CHAR b1:1;
    unsigned CHAR b2:1;
    unsigned CHAR b3:1;
    unsigned CHAR b4:1;
    unsigned CHAR b5:1;
    unsigned CHAR b6:1;
    unsigned CHAR b7:1;
};
union tt
{
    unsigned CHAR TEMP;
    struct ii bb;
};
——已经解决,见下方

孤独的凯 发表于 2014-6-22 11:49:19

楼主,24系列EEPORM只能按照字节写入的,如果定义的是位变量,可以转为字符型写入,一个位用一个字节。或者八个位共用一个字节,但重复擦写比较麻烦。

优享家 发表于 2014-6-22 12:44:39

孤独的凯 发表于 2014-6-22 11:49
楼主,24系列EEPORM只能按照字节写入的,如果定义的是位变量,可以转为字符型写入,一个位用一个字节。或者 ...

没有其他办法吗,比如8个位地址转为一个字节,再写入EEPROM中

孤独的凯 发表于 2014-6-22 13:27:22

你可以将你的位按照2^0 2^1 2^3...2^7相加起来再存到eeprom中,读取的时候可以放弃其他几位的读取,但写的时候必须把它全部读出 因为eeprom必须按字节擦写,不读出来写会覆盖掉原来的其他数据

优享家 发表于 2014-6-22 17:27:38

这个调试是OK的,大家有需要可以去看下这个链接http://blog.csdn.net/pipi87/article/details/5838108
union Mark       
{
    uchar Switch;
        struct{
    uchar Bre:1;
    uchar Flash:1;
    uchar Color:1;
    uchar Sun:1;
    uchar Follow:1;
    uchar Condition:1;
    uchar Light:1;
    uchar White:1;
        }bits;
};
volatile union Mark Mark;

优享家 发表于 2014-6-22 17:47:42

孤独的凯 发表于 2014-6-22 13:27
你可以将你的位按照2^0 2^1 2^3...2^7相加起来再存到eeprom中,读取的时候可以放弃其他几位的读取,但写 ...

谢谢,已经解决,凯可以看看
页: [1]
查看完整版本: C语言:位地址怎样写入EEPROM中