HT46R01/HT46R02/HT46R03
·
·
·
Stack
Arithmetic operations: ADD, ADDM, ADC, ADCM,
SUB, SUBM, SBC, SBCM, DAA
This is a special part of the memory which is used to
save the contents of the Program Counter only. The
stack can have either 4, 6 or 8 levels depending upon
which device is selected and is neither part of the data
nor part of the program space, and is neither readable
nor writable. The activated level is indexed by the Stack
Pointer, SP, and is neither readable nor writeable. At a
subroutine call or interrupt acknowledge signal, the con-
tents of the Program Counter are pushed onto the stack.
At the end of a subroutine or an interrupt routine, sig-
naled by a return instruction, RET or RETI, the Program
Counter is restored to its previous value from the stack.
After a device reset, the Stack Pointer will point to the
top of the stack.
Logic operations: AND, OR, XOR, ANDM, ORM,
XORM, CPL, CPLA
Rotation RRA, RR, RRCA, RRC, RLA, RL, RLCA,
RLC
·
·
Increment and Decrement INCA, INC, DECA, DEC
Branch decision, JMP, SZ, SZA, SNZ, SIZ, SDZ,
SIZA, SDZA, CALL, RET, RETI
Program Memory
The Program Memory is the location where the user
code or program is stored. These devices are supplied
with One-Time Programmable, OTP, memory where us-
ers can program their application code into the device.
By using the appropriate programming tools, OTP de-
vices offer users the flexibility to freely develop their ap-
plications which may be useful during debug or for
products requiring frequent upgrades or program
changes. OTP devices are also applicable for use in ap-
plications that require low or medium volume production
runs.
If the stack is full and an enabled interrupt takes place,
the interrupt request flag will be recorded but the ac-
knowledge signal will be inhibited. When the Stack
Pointer is decremented, by RET or RETI, the interrupt
will be serviced. This feature prevents stack overflow al-
lowing the programmer to use the structure more easily.
However, when the stack is full, a CALL subroutine in-
struction can still be executed which will result in a stack
overflow. Precautions should be taken to avoid such
cases which might cause unpredictable program
branching.
Structure
The Program Memory has a capacity of 1K by 14, 2K by
14 or 4K by 15 bits depending upon which device is se-
lected. The Program Memory is addressed by the Pro-
gram Counter and also contains data, table information
and interrupt entries. Table data, which can be setup in
any location within the Program Memory, is addressed
by separate table pointer registers.
P
r
o
g
r
a
m
C
o
u
n
t
e
r
T
o
p
o
f
S
t
a
c
k
S
t
a
c
k
L
e
v
e
l
1
S
S
t
t
a
a
c
c
k
k
L
L
e
e
v
v
e
e
l
l
2
3
S
t
a
c
k
P
r
o
g
r
a
m
P
o
i
n
t
e
r
M
e
m
o
r
y
Special Vectors
Within the Program Memory, certain locations are re-
served for special usage such as reset and interrupts.
B
o
t
t
o
m
o
f
S
t
a
c
k
S
t
a
c
k
L
e
v
e
l
N
·
Location 000H
Note: For the HT46R01, N=4, i.e. 4 levels of stack
This vector is reserved for use by the device reset for
program initialisation. After a device reset is initiated,
the program will jump to this location and begin execu-
tion.
available.
For the HT46R02, N=6, i.e. 6 levels of stack
available.
For the HT46R03, N=8, i.e. 8 levels of stack
available.
·
Location 004H
This vector is used by the external interrupt. If the ex-
ternal interrupt pin on the device receives an edge
transition, the program will jump to this location and
begin execution if the external interrupt is enabled and
the stack is not full. The external interrupt active edge
transition type, whether high to low, low to high or both
is specified in the CTRL1 register.
Arithmetic and Logic Unit - ALU
The arithmetic-logic unit or ALU is a critical area of the
microcontroller that carries out arithmetic and logic op-
erations of the instruction set. Connected to the main
microcontroller data bus, the ALU receives related in-
struction codes and performs the required arithmetic or
logical operations after which the result will be placed in
the specified register. As these ALU calculation or oper-
ations may result in carry, borrow or other status
changes, the status register will be correspondingly up-
dated to reflect these changes. The ALU supports the
following functions:
·
Location 008H
This internal vector is used by the Timer/Event Coun-
ter 0. If a counter overflow occurs, the program will
jump to this location and begin execution if the
timer/event counter interrupt is enabled and the stack
is not full.
Rev. 1.00
8
September 21, 2007