marchwang88 发表于 2025-1-5 14:00:18

DebugLab 发表于 2025-1-5 10:25
CBYTE是libc ABSACC.H中的定义,是一个指针,不是数值0,#include 即可

IAP_OFFSET是MOVC读的基地址,就 ...

上面的能理解, 并且也是这么换算的。
仔细看您的代码:原来读是要加上程序地址的, 写是不要加。 而我都把读写都加了程序地址。

感谢{:shengli:}


marchwang88 发表于 2025-1-5 14:04:20

DebugLab 发表于 2025-1-5 10:25
CBYTE是libc ABSACC.H中的定义,是一个指针,不是数值0,#include 即可

IAP_OFFSET是MOVC读的基地址,就 ...

感谢。发现问题了, 读是加了偏移量, 写是不要加偏移量的。而我读写都加了偏移量引起。

{:shengli:}

DebugLab 发表于 2025-1-6 13:44:41

marchwang88 发表于 2025-1-5 14:04
感谢。发现问题了, 读是加了偏移量, 写是不要加偏移量的。而我读写都加了偏移量引起。

...
这个读是MOVC读,所以要加偏移地址
IAP读不需要加偏移地址
你用IAP读,就都不需要加偏移地址,都是从0开始
MOVC读速度较快,推荐使用
IAP读(速度较慢,不推荐使用):
unsigned char Iap_Read_Byte(unsigned char sector,unsigned int addr)
{
      unsigned char dat;
      unsigned int add;
      add=sector*0x0200+addr;
      IAP_CONTR|=IAPEN;
      IAP_TPS=IAP_TPS_;
      IAP_CMD=IAP_READ;
      IAP_ADDRL=add;
      IAP_ADDRH=add>>8;
      IAP_TRIG=0x5A;
      IAP_TRIG=0xA5;
      _nop_();
      dat=IAP_DATA;
      Iap_Idle();
      return dat;
}

页: 1 [2]
查看完整版本: EEPROM写一个数据变成全扇区都同时这个数据,这是什么原因引起的?