English
Language : 

HT86A36 Datasheet, PDF (17/68 Pages) Holtek Semiconductor Inc – A/D Type Voice 8-Bit MCU
HT86Axx/HT86ARxx
Program Counter
During program execution, the Program Counter is used
to keep track of the address of the next instruction to be
executed. It is automatically incremented by one each
time an instruction is executed except for instructions,
such as ²JMP² or ²CALL², that demand a jump to a
non-consecutive Program Memory address. Note that
the Program Counter width varies with the Program
Memory capacity depending upon which device is se-
lected. However, it must be noted that only the lower 8
bits, known as the Program Counter Low Register, are
directly addressable by user.
When executing instructions requiring jumps to
non-consecutive addresses such as a jump instruction,
a subroutine call, interrupt or reset, etc., the
microcontroller manages program control by loading the
required address into the Program Counter. For condi-
tional skip instructions, once the condition has been
met, the next instruction, which has already been
fetched during the present instruction execution, is dis-
carded and a dummy cycle takes its place while the cor-
rect instruction is obtained.
The lower byte of the Program Counter, known as the
Program Counter Low register or PCL, is available for
program control and is a readable and writable register.
By transferring data directly into this register, a short
program jump can be executed directly, however, as
only this low byte is available for manipulation, the
jumps are limited to the present page of memory, that is
256 locations. When such program jumps are executed
it should also be noted that a dummy cycle will be in-
serted.
The lower byte of the Program Counter is fully accessi-
ble under program control. Manipulating the PCL might
cause program branching, so an extra cycle is needed
to pre-fetch. Further information on the PCL register can
be found in the Special Function Register section.
Stack
This is a special part of the memory which is used to
save the contents of the Program Counter only. The
stack has 8 levels 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 writable. 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 Pro-
gram 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.
T o p o f S ta c k
S ta c k
P o in te r
S ta c k L e v e l 1
S ta c k L e v e l 2
S ta c k L e v e l 3
B o tto m o f S ta c k
S ta c k L e v e l 8
P ro g ra m C o u n te r
P ro g ra m
M e m o ry
Mode
Initial Reset
External Interrupt
Timer 0 Overflow
Timer 1 Overflow
Timer 2 Overflow
Timer 3 Overflow
A/D Converter Interrupt
Skip
Loading PCL
Jump, Call Branch
Return from Subroutine
*12 *11 *10 *9
0000
0000
0000
0000
0000
0000
0000
*12 *11 *10 *9
#12 #11 #10 #9
S12 S11 S10 S9
Program Counter
*8 *7 *6 *5 *4 *3 *2 *1 *0
000000000
000000100
000001000
000001100
000010000
000010100
000011000
Program Counter + 2
*8 @7 @6 @5 @4 @3 @2 @1 @0
#8 #7 #6 #5 #4 #3 #2 #1 #0
S8 S7 S6 S5 S4 S3 S2 S1 S0
Note: *12~*0: Program counter bits
#12~#0: Instruction code bits
Program Counter
S12~S0: Stack register bits
@7~@0: PCL bits
Rev. 1.00
17
March 19, 2010