English
Language : 

HT46RU26 Datasheet, PDF (8/86 Pages) Holtek Semiconductor Inc – A/D Type 8-Bit MCU with UART
HT46RU26/HT46CU26
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. However, it
must be noted that only the lower 8 bits, known as the
Program Counter Low Register, are directly address-
able 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 writeable regis-
ter. 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.
As the Program Memory is stored in four banks, note
that the Bank Selection is under the control of bits 5 and
6 of the Bank Pointer. It is these two Bank Pointer bits
that control the highest address bits of the Program
Counter as shown in the diagram.
Mode
Program Counter
b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0
Initial Reset
0 0 0 0 00000000000
External, A/D Converter or SPI
0 0 0 0 00000000100
Interrupt - configuration option select
Timer/Event Counter 0 Overflow
0 0 0 0 00000001000
Timer/Event Counter 1 Overflow
0 0 0 0 00000001100
UART Bus Interrupt
I2C Bus or SPI Interrupt
- configuration option select
0 0 0 0 00000010000
0 0 0 0 00000010100
Multi-function Interrupt
0 0 0 0 00000011000
Skip
Program Counter + 2 (within the current bank)
Loading PCL
PC14 PC13 PC12 PC11 PC10 PC9 PC8 @7 @6 @5 @4 @3 @2 @1 @0
Jump, Call Branch
BP.6 BP.5 #12 #11 #10 #9 #8 #7 #6 #5 #4 #3 #2 #1 #0
Return from Subroutine
S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
Program Counter
Note:
Configuration Options select the function of some interrupt vectors
PC14~PC8: Current Program Counter bits
@7~@0: PCL bits
BP.5, PB.6: Bank Pointer bit.
1413 12
#12~#0: Instruction code address bits
S14~S0: Stack register bits
87
0
P ro g ra m C o u n te r
BP BP
.6 .5
B a n k P o in te r (B P )
Rev. 1.00
8
June 12, 2008