
SN8P1700
8位微控制器内置的12位ADC
通用的程序存储区
在4089
1
-word在ROM中的位置0010H i 0FFEh过被用作通用存储器。该区域存储
指令的操作码和查找表的数据。该SN8P1700包括跳转表功能,通过程序计数器
(PC)和查找表通过使用ROM码的寄存器(R, X,Y, Z)的函数。
程序存储器的边界是由高字节的程序计数器( PCH )每100H分离。在跳转表
功能和查表功能,程序计数器不能越过了程序计数器的边界
自动。用户需要修改PCH的值改为“ PCH + 1 ”为PCL溢出(从0FFH到000H ) 。
注意事项: 1: SN8P1702的ROM大小约为1K字和SN8P1704的ROM大小约为2K字。
查找表说明
在ROM中的数据进行查找,在X寄存器指向的最高8位,Y寄存器的中间8位和Z
注册到ROM地址的最低8位数据。后MOVC指令被执行的ROM,低字节数据,然后
将被存储在存储在R寄存器ACC和高字节数据。
示例:查找位于“ TABLE1”的ROM数据。
B0MOV
B0MOV
MOVC
Y, # TABLE1 $ M
Z, # TABLE1 $ L
INCMS
JMP
INCMS
NOP
@@:
表1:
MOVC
.
DW
DW
DW
Z
@F
Y
.
0035H
5105H
2012H
;要设置查找表1的中间地址
;要设置查找表1的低地址。
;查找数据, R = 00H , ACC = 35H
;
;增量索引查找下一地址
; Z+1
;不溢出
; 溢出( FFH
00),
Y=Y+1
;不溢出
;
;查找数据, R = 51H , ACC = 05H 。
;
;定义一个字(16位)的数据。
;“
;“
CAUSION :在Y寄存器不能自动增加,如果寄存器Z跨境从0xFF到0x00 。
因此,用户必须注意这种情况以免查表错误。若Z溢出,Y
寄存器必须添加的。下面INC_YZ宏表示一种简单的方法来处理Y和Z
自动注册。
注意:由于程序计数器(PC )只有12位, X寄存器是应用程序无用。用户
可以省略“ B0MOV X , # TABLE1 $ H” 。松翰ICE支持更多更大的程序内存寻址
能力。所以一定要确保X寄存器为“0” ,以避免查表操作不可预测的错误。
例如: INC_YZ宏
INC_YZ
万家乐
INCMS
JMP
INCMS
NOP
@@:
ENDM
Z
@F
Y
; Z+1
;不溢出
; Y+1
;不溢出
松翰科技股份有限公司
第29页
修订版1.94