HT82A832R
Rev. 1.00
6
July 18, 2006
Functional Description
Execution Flow
The system clock for the microcontroller is sourced from
a crystal oscillator. The system clock is internally divided
into four non-overlapping clocks. One instruction cycle
consists of four system clock cycles.
Instruction fetching and execution are pipelined in such
a way that a fetch takes an instruction cycle while
decoding and execution takes the next instruction cycle.
However, the pipelining scheme causes each
instruction to be effectively executed in a cycle. If an
instruction changes the program counter, two cycles are
required to complete the instruction.
Program Counter
PC
The program counter (PC) controls the sequence in
which the instructions stored in the program ROM are
executed and its contents specify a full range of
program memory.
After accessing a program memory word to fetch an
instruction code, the contents of the program counter
are incremented by one. The program counter then
points to the memory word containing the next
instruction code.
When executing a jump instruction, conditional skip
execution, loading to the PCL register, performing a
subroutine call or return from subroutine, initial reset,
internal interrupt, external interrupt or return from
interrupts, the PC manipulates the program transfer by
loading the address corresponding to each instruction.
The conditional skip is activated by instructions. Once
the condition is met, the next instruction, fetched during
the current instruction execution, is discarded and a
dummy cycle replaces it to get the proper instruction.
Otherwise proceed with the next instruction.
The lower byte of the program counter (PCL) is a
readable and writeable register (06H). Moving data into
1
3
0
1
3
0
1
3
0
.
" %
% 4
6
' A
%
% 4
9 6
.
" %
% 4
>
6
' A
%
% 4
6
.
" %
% 4
> 1 6
' A
%
% 4
>
6
>
> 1
%
&
B
1 % 4
%
& 6
Execution Flow
Mode
Program Counter
*11
*10
*9
*8
*7
*6
*5
*4
*3
*2
*1
*0
Initial Reset
0
0
0
0
0
0
0
0
0
0
0
0
USB Interrupt
0
0
0
0
0
0
0
0
0
1
0
0
Timer/EventCounter0Overflow
0
0
0
0
0
0
0
0
1
0
0
0
Timer/EventCounter1Overflow
0
0
0
0
0
0
0
0
1
1
0
0
Play Interrupt
0
0
0
0
0
0
0
1
0
0
0
0
Serial Interface Interrupt
0
0
0
0
0
0
0
1
0
1
0
0
Record Interrupt
0
0
0
0
0
0
0
1
1
0
0
0
Skip
Program Counter+2
Loading PCL
*11
*10
*9
*8
@7
@6
@5
@4
@3
@2
@1
@0
Jump, Call Branch
#11
#10
#9
#8
#7
#6
#5
#4
#3
#2
#1
#0
Return from Subroutine
S11
S10
S9
S8
S7
S6
S5
S4
S3
S2
S1
S0
Program Counter
Note: *11~*0: Program counter bits
S11~S0: Stack register bits
#11~#0: Instruction code bits
@7~@0: PCL bits