SN8P2808
8-bit micro-controller build-in 4*32 LCD and 12-bit ADC.
2.1.1.5 CHECKSUM 计算
ROM 区末端位置的几个字限制使用,进行Checksum 计算时,用户应避免对该单元的访问。
¾ 例:示例程序演示了如何对00H到用户程序结束进行Checksum计算。
MOV
B0MOV
A,#END_USER_CODE$L
END_ADDR1, A
; 用户程序结束地址低位地址存入end_addr1。
MOV
B0MOV
CLR
A,#END_USER_CODE$M
END_ADDR2, A
Y
Z
; 用户程序结束地址中间地址存入end_addr2。
; 清Y。
; 清Z。
CLR
@@:
MOVC
B0BCLR
FC
; 清标志位C。
ADD
MOV
ADC
JMP
DATA1, A
A, R
DATA2, A
END_CHECK
;
;
; 检查YZ 地址是否为代码的结束地址。
AAA:
INCMS
JMP
JMP
Z
@B
Y_ADD_1
; 若Z != 00H,进行下一个计算。
; 若Z = 00H,Y+1。
END_CHECK:
MOV
CMPRS
A, END_ADDR1
A, Z
; 检查Z 地址是否为用户程序结束地址低位地址。
; 否,则进行Checksum 计算。
JMP
AAA
MOV
CMPRS
JMP
A, END_ADDR2
A, Y
AAA
; 是则检查Y 的地址是否为用户程序结束地址中间地址。
; 否,则进行Checksum 计算。
JMP
CHECKSUM_END
; 是则Checksum 计算结束。
Y_ADD_1:
INCMS
NOP
Y
;
JMP
@B
; 跳转到Checksum 计算。
CHECKSUM_END:
END_USER_CODE:
…
…
; 程序结束。
SONiX TECHNOLOGY CO., LTD
Page 18
Version 1.1