注意,开机时, R0是地址01H的别名, R1是地址02H的别名,
PowerUp: CLR A CheckRegister: MOV R0, A MOV R1, A CJNE A, 00H, $ ;不相等是会死机,如果不相等肯定是寄存器硬件有问题了 NOP CJNE A, 01H, $ NOP DJNZ ACC, CheckRegister ;检验ACC,R0与R1
NOP MOV R0, #2 CheckInternalRAM: MOV R1, #0 CheckNextValue: MOV @R0, 01H MOV A, @R0 CJNE A, 01H, $ NOP DJNZ R1, CheckNextValue ;0-1会变成0FFH ;这段的意思是从00到FF再到01写入@R0, ;比较写入值与读出值
NOP INC R0 CJNE R0, #IDATALEN, CheckInternalRAM ;上面那段(对R0)是从2-IDATALEN执行 NOP MOV R0, #IDATALEN CLR A ClearInternalRAM: MOV @R0, A DJNZ R0, ClearInternalRAM ;从地址IDATALEN到地址1清0 LJMP $ END |