找回密码
 立即注册
查看: 316|回复: 10

eeprom参数被修改问题

[复制链接]

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 09:55:41 | 显示全部楼层 |阅读模式
最近用STC8h8k64u单片机做个项目,发现设置在eeprom的参数隔几天就被修改了,不知何故?之前也是经常这样用,从未出现过这样的问题,麻烦给分析一下,谢谢
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2025-1-15 10:25:09 | 显示全部楼层
啥叫E2?

点评

估计是eeprom  发表于 2025-1-15 10:55
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:01:26 | 显示全部楼层
EEPROM
回复

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:01:59 | 显示全部楼层
  1. ;**********************************************************************************
  2. ;************************  读STC单片机内部E2子程   ******************************
  3. ;**********************************************************************************
  4. ;   stc8H8K64U  编程容量自定义 4k    +--8个扇区(0000H----0FFFH)   8扇区    4K容量
  5. ;****************************************************************************
  6. ;**********************************************************************************
  7. ;************************  读STC12c04、8内部E2子程   ******************************
  8. ;**********************************************************************************
  9. ;      stc8A8K60D4     +--8个扇区(0000H----0FFFH)   8扇区    4K容量
  10. ;----------------------------------------------------------------------------------
  11. READE2_R0:MOV IAP_ADDRH,#00H          ;把以#00R0H(#00R0)为地址的E2RAM的
  12.      MOV IAP_ADDRL,00H                ;内容回写入R0为间址的RAM内
  13.      CALL READ_GT                     ;stc8A4K60S2A12  +--8个扇区(0000H----0FFFH)   8扇区    4K容量 stc8A8K64D4
  14.      MOV @R0,A                        ;
  15.      RET                              ;
  16. ;******************************************************************
  17. READE2_A:MOV IAP_ADDRH,#00H           ;
  18.      MOV IAP_ADDRL,00H                ;内容回写入寄存器A中                         8扇区
  19.      CALL READ_GT                     ;利用了第一个扇区
  20.      RET                              ;
  21. ;******************************************************************
  22. ;------------------------------------------------------------------
  23. ;*******************  编程STC89C52内部E2子程   ********************
  24. ;******************************************************************
  25. ;功能:把RAM R0中的内容回写入 EERAM相应空间,R0不变 ,R1,A使用过
  26. ;******************************************************************
  27. ;******************************************************************************************
  28. WRITEE2:;MOV AUXR,#00H                 ;
  29.       PUSH   00H                       ;\
  30.       PUSH   01H                       ;
  31.       MOV    R0,#08H                   ;
  32.       MOV    R1,#08H                   ;\读EE中数据入内部扩展RAM相应空间
  33. WRITEEA:CALL READE2_A                  ;\
  34.       MOVX   @R1,A                     ;\
  35.       INC    R0                        ;\
  36.       INC    R1                        ;\
  37.       CJNE   R0,#0D0H,WRITEEA          ;\
  38.       POP    01H                       ;\
  39.       POP    00H                       ;/内部RAM与内部扩展RAM数据交换
  40.       MOV    A,@R0                     ;
  41.       MOVX   @R1,A                     ;/
  42.       ;*****************************************
  43.       CALL   SECTOR_ERASE               ; 扇区擦除
  44.      ;******************************************
  45.       CALL   rst                       ;
  46.       MOV    R0,#08H                   ;
  47. WRITEEB:MOVX A,@R0                     ;
  48.       MOV    IAP_DATA,A                ;
  49.       MOV    IAP_ADDRH,#00H            ;
  50.       MOV    IAP_ADDRL,00H             ;
  51.       CALL   WRI_GT                    ;
  52.       INC    R0                        ;
  53.       NOP                              ;
  54.       NOP                              ;
  55.       CJNE   R0,#0D0H,WRITEEB          ;
  56.       RET                              ;
  57. ;*************************************************************************************
  58. SECTOR_ERASE:MOV IAP_ADDRH,#00H        ;\   清除第一个 扇区(00H----1FFH)
  59.       MOV    IAP_ADDRL,#00H            ;
  60.       CALL   SECTOR_ERASE_GT           ;
  61.       RET                              ;
  62. ;************************************************************************************
  63. SECTOR_ERASE3:MOV IAP_ADDRH,#02H       ;\
  64.       MOV IAP_ADDRL,#00H               ;    清除第二个扇区(200H----3FFH)
  65.       CALL SECTOR_ERASE_GT             ;
  66.       RET                              ;
  67. ;*************************************************
  68. SECTOR_ERASE_GT:
  69.       MOV IAP_CONTR,#80H               ;
  70.       MOV IAP_TPS,#12                  ;;;;;;;;;;;;;;;;;
  71.       MOV IAP_CMD,#IAP_SECTOR_ERASE    ;扇区擦除
  72.       MOV IAP_TRIG,#5AH                ;
  73.       MOV IAP_TRIG,#0A5H               ;
  74.       MOV IAP_CONTR,#0H                ;
  75.       MOV IAP_CMD,#0H                  ;
  76.       MOV IAP_TRIG,#0H                 ;
  77.       MOV IAP_ADDRH,#80H               ;
  78.       MOV IAP_ADDRL,#0H                ;
  79.       RET                              ;
  80. ;*************************************************
  81. READ_GT:
  82.      MOV IAP_CONTR,#80H               ;
  83.      MOV IAP_TPS,#12                  ;;;;;;;;;;;;;;;;;
  84.      MOV IAP_CMD,#IAP_BYTE_READ       ;字节读
  85.      MOV IAP_TRIG,#5AH                ;
  86.      MOV IAP_TRIG,#0A5H               ;
  87.      NOP                              ;
  88.      MOV A,IAP_DATA                   ;
  89.      MOV IAP_CONTR,#0H                ;
  90.      MOV IAP_CMD,#0H                  ;
  91.      MOV IAP_TRIG,#0H                 ;
  92.      MOV IAP_ADDRH,#80H               ;
  93.      MOV IAP_ADDRL,#0H                ;
  94.      RET                              ;
  95. ;*******************************************************************
  96. WRI_GT:
  97.       MOV IAP_CONTR,#80H               ;
  98.       MOV IAP_TPS,#12                  ;;;;;;;;;;;;;;;;;
  99.       MOV IAP_CMD,#IAP_BYTE_PROGRAM    ;字节编程(写)
  100.       MOV IAP_TRIG,#5AH                ;
  101.       MOV IAP_TRIG,#0A5H               ;
  102.       NOP                              ;
  103.       MOV IAP_CONTR,#0H                ;
  104.       MOV IAP_CMD,#0H                  ;
  105.       MOV IAP_TRIG,#0H                 ;
  106.       MOV IAP_ADDRH,#80H               ;
  107.       MOV IAP_ADDRL,#0H                ;
  108.       RET                              ;
  109. ;-----------------------------------------------------------------------
  110. ;-----------------------------------------------------------------------
  111. READ_E2_RAM:MOV R0,#30H                ;\读EE中数据入内部扩展RAM相应空间
  112. READ_E2_RAM1:CALL READE2_A             ;\STC89C52RC--8个扇区(2000H----2FFFH)
  113.       MOVX @R0,A                       ;\STC89C54RD+--58个扇区(8000H----F3FFH)
  114.       INC R0                           ;\
  115.       CJNE R0,#0D0H,READ_E2_RAM1       ;\
  116.       RET                              ;
  117. ;------------------------------------------------------------------------------------N
  118. END
复制代码
回复 支持 反对

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:06:02 | 显示全部楼层
EEPROM的读写没问题,掉电也不消失,但在设备实时运行时,就时不时把EEPROM的内容都变成了FF了
回复 支持 反对

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:07:21 | 显示全部楼层
主程序每天做过软件复位动作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:186
  • 最近打卡:2025-06-14 09:52:20
已绑定手机

95

主题

976

回帖

2473

积分

超级版主

积分
2473
QQ
发表于 2025-1-15 11:11:35 | 显示全部楼层
读写EEPROM测试程序-通过串口1输出-20220302.zip (41.96 KB, 下载次数: 23)
热线19952583534
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:20:19 | 显示全部楼层
麻烦分析一下原因
回复 支持 反对

使用道具 举报 送花

4

主题

4

回帖

30

积分

新手上路

积分
30
发表于 2025-1-15 11:45:43 | 显示全部楼层
程序看了,我主程序中除了没有关闭中断,其他应该都正确,但问题是设置参数都正确啊,为什么中途被改写了
截图202501151142143964.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2057

回帖

7066

积分

论坛元老

积分
7066
发表于 2025-1-15 12:14:58 | 显示全部楼层
华子*** 发表于 2025-1-15 11:06
EEPROM的读写没问题,掉电也不消失,但在设备实时运行时,就时不时把EEPROM的内容都变成了FF了
...

EEPROM的内容都变成了FF,说明EEPROM被擦除。
如果低电改写数据时,要避免擦除EEPROM后没来得及写入新数据产生低压复位,或者电压低到芯片不能正常运行范围导致程序跑飞。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 13:08 , Processed in 0.146109 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表