
Rev. 1.00
16
��ne 1�� �01�
Rev. 1.00
17
��ne 1�� �01�
HT46R003B
Cost-Effective A/D 8-bit OTP MCU
HT46R003B
Cost-Effective A/D 8-bit OTP MCU
Special Function Registers
To ensure successful operation of the microcontroller, certain internal registers are implemented in
the Data Memory area. These registers ensure correct operation of internal functions such as timer,
interrupts, etc., as well as external functions such as I/O data control. The locations of these registers
within the Data Memory begin at the address of “00H”. Any unused Data Memory locations
between these special function registers and the point where the General Purpose Memory begins is
reserved and attempting to read data from these locations will return a value of “00H”.
Indirect Addressing Registers – IAR0, IAR1
The Indirect Addressing Registers, IAR0 and IAR1, although having their locations in normal RAM
register, do not actually physically exist as normal registers. The method of indirect addressing
for RAM data manipulation is using these Indirect Addressing Registers and Memory Pointers, in
contrast to direct memory addressing, where the actual memory address is specified. Actions on
the IAR0 and IAR1 registers will result in no actual read or write operation to these registers but
rather to the memory location specified by their corresponding Memory Pointers, MP0 or MP1. As
the Indirect Addressing Registers are not physically implemented, reading the Indirect Addressing
Registers indirectly will return a result of “00H” and writing to the registers indirectly will result in
no operation.
Memory Pointers – MP0, MP1
Two Memory Pointers, known as MP0 and MP1 are provided. These Memory Pointers are
physically implemented in the Data Memory and can be manipulated in the same way as normal
registers providing a convenient way with which to indirectly address and track data. When any
operation to the relevant Indirect Addressing Registers is carried out, the actual address which the
microcontroller is directed to is the address specified by the related Memory Pointer. Note that for
this device, the Memory Pointers, MP0 and MP1, are both 8-bit registers and used to access the Data
Memory together with their corresponding indirect addressing registers IAR0 and IAR1.
The following example shows how to clear a section of four Data Memory locations already defined
as locations adres1 to adres4.
Indirect Addressing Program Example
data .section ‘data’
adres1 db ?
adres2 db ?
adres3 db ?
adres4 db ?
block db ?
code. section at 0 code
org 00h
start:
mov
a,04h ;
set
size
of
block
mov block,a
mov a,offset adres1 ; Accumulator loaded with first RAM address
mov mp0,a ; set memory pointer with first RAM address
loop:
clr IAR0 ; clear the data at address defined by MP0
inc
mp0
;
increment
memory
pointer
sdz
block ;
check
if
last
memory
location
has
been
cleared
jmp loop
continue:
The important point to note here is that in the example shown above, no reference is made to specific
Data Memory addresses.