SN8P1829
8-Bit MCU build-in 12-bit ADC + PGIA + Charge-pump Reg 128 dots LCD driver
SONiX TECHNOLOGY CO., LTD
Page 17
Version 1.0
GENERAL PURPOSE PROGRAM MEMORY AREA
The 8174-word at ROM locations 0010H~1FFEH is used as general-purpose memory. The area stored instruction’s
op-code and look-up table data. The SN8P1829 includes jump table function by using program counter (PC) and
look-up table function by using ROM code registers (R, X, Y, Z).
The boundary of program memory is separated by the high-byte program counter (PCH) every 100H. In jump table
function and look-up table function, the program counter can’t leap over the boundary by program counter
automatically. Users need to modify the PCH value to “PCH+1” as the PCL overflow (from 0FFH to 000H).
LOOK-UP TABLE DESCRIPTION
In the ROM’s data look-up function, the X-register points to the highest 8-bit, Y-register to the middle 8-bit and
Z-register to the lowest 8-bit data of ROM address. After MOVC instruction executed, the low-byte data of ROM stores
in ACC and high-byte data stores in R register.
Example: To look-up the ROM data located “TABLE1”.
B0MOV
Y, #TABLE1$M
; To set look-up table1’s middle address
B0MOV
Z, #TABLE1$L
; To set look-up table1’s low address.
MOVC
; To look-up data, R = 00H, ACC = 35H
;
; Increment the index address for next address
INCMS Z
;
Z+1
JMP
@F
; Not overflow
INCMS
Y
; Z overflow (FFH
00),
Y=Y+1
NOP
; Not overflow
;
@@:
MOVC
; To look-up data, R = 51H, ACC = 05H.
.
.
;
TABLE1:
DW
0035H
; To define a word (16 bits) data.
DW
5105H
; “
DW
2012H
; “
CAUSION: The Y-register can't increase automatically if Z-register cross boundary from 0xFF to 0x00.
Therefore, user must take care
such
situation to avoid
loop-up table errors.
If
Z-register
overflows, Y-register must be added by one. The following INC_YZ macro shows a simple method
to process Y and Z registers automatically.
Note: Because the program counter (PC) is only 13-bit, the X register is useless in the application. Users
can omit “B0MOV X, #TABLE1$H”. SONiX ICE support more larger program memory addressing
capability. So make sure X register is “0” to avoid unpredicted error in loop-up table operation.
Example: INC_YZ Macro
INC_YZ
MACRO
INCMS
Z
; Z+1
JMP
@F
; Not overflow
INCMS
Y
; Y+1
NOP
; Not overflow
@@:
ENDM