EasyManua.ls Logo

SONIX SN8P2624 - 2.1.1.5 Checksum Calculation

SONIX SN8P2624
94 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
SN8P2624
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD Page 20 Version 0.3
2.1.1.5 CHECKSUM CALCULATION
The last ROM address are reserved area. User should avoid these addresses (last address) when calculate the
Checksum value.
¾ Example: The demo program shows how to calculated Checksum from 00H to the end of user’s code.
MOV A,#END_USER_CODE$L
B0MOV END_ADDR1, A ; Save low end address to end_addr1
MOV A,#END_USER_CODE$M
B0MOV END_ADDR2, A ; Save middle end address to end_addr2
CLR Y ; Set Y to 00H
CLR Z ; Set Z to 00H
@@:
MOVC
B0BSET FC ; Clear C flag
ADD DATA1, A ; Add A to Data1
MOV A, R
ADC DATA2, A ; Add R to Data2
JMP END_CHECK ; Check if the YZ address = the end of code
AAA:
INCMS Z ; Z=Z+1
JMP @B ; If Z != 00H calculate to next address
JMP Y_ADD_1 ; If Z = 00H increase Y
END_CHECK:
MOV A, END_ADDR1
CMPRS A, Z ; Check if Z = low end address
JMP AAA ; If Not jump to checksum calculate
MOV A, END_ADDR2
CMPRS A, Y ; If Yes, check if Y = middle end address
JMP AAA ; If Not jump to checksum calculate
JMP CHECKSUM_END ; If Yes checksum calculated is done.
Y_ADD_1:
INCMS Y ; Increase Y
NOP
JMP @B ; Jump to checksum calculate
CHECKSUM_END:
END_USER_CODE: ; Label of program end

Table of Contents