|
发表于 2019-5-20 16:48:16
来自手机
|
显示全部楼层
本帖最后由 壹法拉 于 2019-5-20 18:19 编辑
单片机读取EEPROM的数据,只能一个个字节地读取。对于51单片机,每个字节8位,超过8位的,需要自己另行处理。比如int类型的数据是16位的,需要自己把这个字节分成2个8位的数据分别存入。读取时,同样要分别读取2个8位的,再合并成一个16位的。
如果你自信地存入一个int字节,读取它时,你会发现,缺了8位。
每个8位字节,都是有具体地址的,这点跟PC机编程不一样(有操作系统管理地址)。而且,不能简单的重写字节,需要先刷新字节才能写,直接写入会出现意外的结果。EEPROM的刷新方式是有约定的,有的是一次刷新一个扇区。也就是说,你只写了一个字节,那么要改写这个字节前,要刷新整个扇区的512字节;而刷新的次数是有限制的;这就需要根据具体情况,发挥自己的智慧了。
PC机和单片机读写EEPROM中的数据时,必须针对确定地址的逐个字节地读写。特殊的数据类型,需要自己编写专用的读或写函数。这也许就是你说的“架构”吧。
另一个值得注意的是:EEPROM呗刷新后,每个字节的每一位都是1;也就是每个字节都是0XFF; 而PC编程时,默认的新字节都是0;
EEPROM中的数据一旦被写成0;再往这个字节里写什么都是0;必须刷新之后再写入才是正确的数据;一般来说刷新的次数是十万次吧;厂家有说明的;
单片机编程,你会感到,自己说了算,自己可以控制单片机的每一个字节的每一位。这叫“独立自主”;而PC机编程是有操作系统在帮你管理。自动帮你分配管理地址,也不可能让你胡乱读写。这有点像“有个爹”;
你的脑子里要有想象力,知道怎样操作才能达到自己想要的结果;清楚每一位数据的变化; |
|