复位后,读取芯片唯一身份证ID错误
从单片机STC12C5A60S2中读取芯片唯一身份证ID时,在上电复位后读取的正确,可是在看门狗复位或者热复位后读取的错误,不知什么原因MOV R0,#0F7H ;芯片唯一ID的最低字节
MOV A,@R0
MOV DPTR,#ID_NUM_DA7
MOVX @DPTR,A
MOV R0,#0F6H ;
MOV A,@R0
MOV DPTR,#ID_NUM_DA6
MOVX @DPTR,A
MOV R0,#0F5H
MOV A,@R0
MOV DPTR,#ID_NUM_DA5
MOVX @DPTR,A
MOV R0,#0F4H ;
MOV A,@R0
MOV DPTR,#ID_NUM_DA4
MOVX @DPTR,A
MOV R0,#0F3H ;
MOV A,@R0
MOV DPTR,#ID_NUM_DA3
MOVX @DPTR,A
MOV R0,#0F2H ;
MOV A,@R0
MOV DPTR,#ID_NUM_DA2
MOVX @DPTR,A
MOV R0,#0F1H ;芯片唯一ID的最高字节
MOV A,@R0
MOV DPTR,#ID_NUM_DA1
MOVX @DPTR,A
上传工程看看 和这个帖子可能遇到的是同样问题。
https://www.stcaimcu.com//forum.php?mod=viewthread&tid=10053&highlight=STC12C5A60S2&page=1&extra=#pid98676 上电复位是从系统ISP区运行,RAM中的ID是系统区的固件在上电瞬间写入的,其他的复位方式没有运行系统区的固件,或程序运行中被修改,RAM可能是随机数
建议从只读SFR中读CHIPID,没有CHIPID的型号到FLASH里读ID(程序结尾7字节)
页:
[1]