HT48CA3
Rev. 1.40
4
July 16, 2003
Functional Description
Execution Flow
The system clock for the MCU is derived from either a
crystal or an RC oscillator. The system clock is internally
divided into four non-overlapping clocks. One instruc-
tion 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 de-
coding and execution takes the next instruction cycle.
However, the pipelining scheme causes each instruc-
tion to effectively execute in a cycle. If an instruction
changestheprogramcounter,twocyclesarerequiredto
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 pro-
gram memory.
After accessing a program memory word to fetch an in-
struction code, the contents of the program counter are
incrementedbyone.Theprogramcounterthenpointsto
the memory word containing the next instruction code.
When executing a jump instruction, conditional skip ex-
ecution, loading register, subroutine call or return from
subroutine, initial reset, internal interrupt, external inter-
rupt 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 to the next instruction.
The lower byte of the program counter (PCL) is a read-
able and writeable register (06H). Moving data into the
PCL performs a short jump. The destination will be
within the current program ROM page.
When a control transfer takes place, an additional
dummy cycle is required.
4
1
4
1
4
1
! ) ,
, 6
7
8
! ,
, 6
9 7
! ) ,
, 6
:
7
8
! ,
, 6
7
! ) ,
, 6
:
7
8
! ,
, 6
:
7
:
:
&
!
,
;
, 6
, & 7
Execution flow
Mode
Program Counter
*14~*8
*7
*6
*5
*4
*3
*2
*1
*0
Initial Reset
0000000
0
0
0
0
0
0
0
0
External Interrupt
0000000
0
0
0
0
0
1
0
0
Timer/EventCounter0Overflow
0000000
0
0
0
0
1
0
0
0
Timer/EventCounter1Overflow
0000000
0
0
0
0
1
1
0
0
Skip
*14~*13, (*12~*0+2): (within current bank)
Loading PCL
*14~*8
@7
@6
@5
@4
@3
@2
@1
@0
Jump, Call Branch
BP(1~0), #12~#8
#7
#6
#5
#4
#3
#2
#1
#0
Return (RET, RETI)
S14~S8
S7
S6
S5
S4
S3
S2
S1
S0
Program Counter
Note: *14~*0: Program counter bits
#14~#0: Instruction code bits
1 bank: 8K words
S14~S0: Stack register bits
@7~@0: PCL bits