SN8P1700
8-bit micro-controller build-in 12-bit ADC
GENERAL PURPOSE PROGRAM MEMORY AREA
The 40891-word at ROM locations 0010H~0FFEH are used as general-purpose memory. The area is stored
instruction’s op-code and look-up table data. The SN8P1700 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).
ꢂ
Notice: 1:The SN8P1702’s ROM size is about 1K words and the SN8P1704’s ROM size is about 2K words.
LOOKUP TABLE DESCRIPTION
In the ROM’s data lookup function, the X register is pointed 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 is executed, the low-byte data of ROM then
will be stored in ACC and high-byte data stored in R register.
ꢃExample: To look up the ROM data located “TABLE1”.
B0MOV
B0MOV
MOVC
Y, #TABLE1$M ; To set lookup table1’s middle address
Z, #TABLE1$L
; To set lookup table1’s low address.
; To lookup data, R = 00H, ACC = 35H
;
; Increment the index address for next address
INCMS
JMP
INCMS
NOP
Z
@F
Y
; Z+1
; Not overflow
; Z overflow (FFH ꢁ00), ꢁY=Y+1
; Not overflow
;
MOVC
.
; To lookup data, R = 51H, ACC = 05H.
;
@@:
.
TABLE1:
DW
DW
DW
0035H
5105H
2012H
; To define a word (16 bits) data.
; “
; “
ꢂ
ꢂ
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 overflow, Y
register must be added 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 12-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
JMP
Z
; Z+1
@F
; Not overflow
INCMS
NOP
Y
; Y+1
; Not overflow
@@:
ENDM
SONiX TECHNOLOGY CO., LTD
Page 29
Revision 1.94