51单片机 用EEPROM掉电储存 两位数码管秒表 数码管无法正常显示

2025-03-23 12:01:36
推荐回答(3个)
回答1:

整体问题不大,就是在中断中使用write_add()会有机会和在主循环中的read_add()相遇,那就会导致读取失败,建议加入应答判断,当然刷新快影响不大
不知楼主在单独运行存储程序时是怎么调试的,还有来回闪的频率是低于一秒的么?
楼主可以试下在关闭中断的情况下,通过在主循环中通过延时函数,先写入,再读出,然后显示,让它循环显示看看是否有错,如果显示不正常,那就是存储的时序没弄好,
比如在write_add()函数最后面加上1ms的延时,确保存储芯片保存数据,防止写完后接着读出错

楼主还可以换个别的存储地址试一下看看,
确保接线正确

回答2:

大概看了一下
不要在定时器中断里面调用write_add函数,请在main函数里面调用。

回答3:

做过电子钟掉电保存,有两个问题1.频繁读写EEPROM,秒级的话,不用一个月,器件上所有地址都达到读写极限。2,执行读写操作的过程,占用机器周期不短。此时数码管大约有0.1秒熄灭。
至于中断函数和主函数的重入警告,可以将write_add(),read_add()内部调用的相同的函数,做成两个内容相同的函数,分开来调用。