Program Counter; Stack - Holtek BC68F2130 Manual

Sub-1ghz rf transmitter flash mcu with ocds
Table of Contents

Advertisement

1
MOV A,[12H]
2
CALL DELAY
3
CPL [12H]
4
:
5
:
6 DELAY: NOP

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. Only the lower 8 bits, known as the Program Counter Low
Byte Register, are directly addressable by the application program.
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 conditional skip instructions, once
the condition has been met, the next instruction, which has already been fetched during the present
instruction execution, is discarded and a dummy cycle takes its place while the correct instruction is
obtained.
BC68F2130
BC68F2140
BC68F2150
The lower byte of the Program Counter, known as the Program Counter Low Byte register or
PCL, is available for program control and is a readable and writeable 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 inserted. Manipulating the PCL register may cause program branching, so an extra cycle is
needed to pre-fetch.

Stack

This is a special part of the memory which is used to save the contents of the Program Counter
only. The stack has multiple levels and is neither part of the data nor part of the program space,
and is neither readable nor writeable. The activated level is indexed by the Stack Pointer, and is
neither readable nor writeable. At a subroutine call or interrupt acknowledge signal, the contents of
the Program Counter are pushed onto the stack. At the end of a subroutine or an interrupt routine,
signaled 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.
If the stack is full and an enabled interrupt takes place, the interrupt request flag will be recorded but
the acknowledge signal will be inhibited. When the Stack Pointer is decremented, by RET or RETI,
the interrupt will be serviced. This feature prevents stack overflow allowing the programmer to use
the structure more easily. However, when the stack is full, a CALL subroutine instruction 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.
Rev. 1.50
BC68F2130/BC68F2140/BC68F2150
Sub-1GHz RF Transmitter Flash MCU with OCDS
Fetch Inst. 1
Execute Inst. 1
Fetch Inst. 2
Instruction Fetching
Device
Program Counter High Byte
PC10~PC8
PC11~PC8
PC12~PC8
Program Counter
16
Execute Inst. 2
Fetch Inst. 3
Flush Pipeline
Fetch Inst. 6
Program Counter
PCL Register
PCL7~PCL0
PCL7~PCL0
PCL7~PCL0
Execute Inst. 6
Fetch Inst. 7
January, 22, 2021

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the BC68F2130 and is the answer not in the manual?

This manual is also suitable for:

Bc68f2140Bc68f2150

Table of Contents