以前用STC8H8K64U读写EEPROM,使用官方例程,一向都正常,但近日换用STC8H2K12U-SOP16时,却出现了一点小问题。
现象是当连续写入,再连续读出时,读出的第0字节是错误的,正确的数据跑到第1字节了,第1字节的正确数据跑到第2字节了----- 依此类推。
具体请参考:https://www.stcaimcu.com/thread-18985-1-1.html
源代码如下:
复制代码 经过多次测试,发现加长读函数的延时,即可解决,
改后的读函数如下:
- unsigned char IapRead(int addr)
- {
- char dat;
-
- IAP_CONTR = 0x80; //使能IAP
- IAP_CMD = 1; //设置IAP读命令
- IAP_ADDRL = addr; //设置IAP低地址
- IAP_ADDRH = addr >> 8; //设置IAP高地址
- IAP_TRIG = 0x5a; //写触发命令(0x5a)
- IAP_TRIG = 0xa5; //写触发命令(0xa5)
- _nop_();_nop_();
- dat = IAP_DATA; //读IAP数据
- IapIdle(); //关闭IAP功能
-
- return dat;
- }
复制代码
该问题请大家测试一下。谢谢!
|