Special Function Registers; Indirect Addressing Registers - Iar0, Iar1; Memory Pointers - Mp0, Mp1 - Holtek HT46R003B Manual

Cost-effective a/d 8-bit otp mcu
Table of Contents

Advertisement

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
mov block,a
mov a,offset adres1
mov mp0,a
loop:
clr IAR0
inc mp0
sdz block
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.
Rev. 1.00
; set size of block
; Accumulator loaded with first RAM address
; set memory pointer with first RAM address
; clear the data at address defined by MP0
; increment memory pointer
; check if last memory location has been cleared
17
��ne 1�� �01�

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the HT46R003B and is the answer not in the manual?

Table of Contents