Data Sheet
Data Sheet
Technical Document
· Tools Information
· FAQs
· Application Note
- HA0075E MCU Reset and Oscillator Circuits Application Note
Features
· Operating voltage: · Power Down and Wake-up Feature for Power Saving
fSYS=4MHz: 2.2V~5.5V Operation
fSYS=8MHz: 3.3V~5.5V · Up to 0.5ms instruction cycle with 8MHz system clock
fSYS=12MHz: 4.5V~5.5V at VDD=5V
· Multi-programmable Flash Type Program Memory · Bit Manipulation Instructions
· From 13 to 23 Bidirectional I/O with Pull-high Options · Table Read Function
· External Interrupt Input · 63 Powerful Instructions
· Full Timer Functions with Prescaler and Interrupt · All Instructions executed in 1 or 2 Machine Cycles
· Timer External Input · Low Voltage Reset Function
· Crystal and RC System Oscillator · Programming Interface
· Watchdog Timer Function · Full Suite of Supported Hardware and Software
· PFD/Buzzer Driver Outputs Tools Available
General Description
The HT48F06E, HT48F10E and HT48F30E are 8-bit tures are common to all devices, however, they differ in
high-performance, RISC architecture microcontroller areas such as I/O pin count, Program Memory and Data
devices specifically designed for multiple I/O control Memory capacity, package types, etc.
product applications. Device flexibility is enhanced with
All devices utilise a Flash type Program Memory, and
their internal special features such as power-down and
therefore have multi-programmable capabilities offering
wake-up functions, oscillator options, buzzer driver, etc.
the advantages of easy and efficient program updates.
These features combine to ensure applications require
The non-volatile internal EEPROM also offers the capa-
a minimum of external components and therefore re-
bility of storing information such as product part num-
duce overall product costs.
bers, calibration data and other specific product
Having the advantages of low-power consumption, information. etc. The devices are fully supported by the
high-performance, I/O flexibility as well as low-cost, Holtek range of fully functional development and pro-
these devices have the versatility to suit a wide range of gramming tools, providing a means for fast and efficient
application possibilities such as industrial control, con- product development cycles.
sumer products, subsystem controllers, etc. Many fea-
Selection Table
The devices include a comprehensive range of features, with most features common to all devices. The main features
distinguishing them are Program Memory and Data Memory capacity, I/O count, stack size and package types. The
functional differences between the devices are shown in the following table.
Note: For devices that exist in more than one package formats, the table reflects the situation for the larger package.
Block Diagram
W a tc h d o g T im e r
F la s h P r o g r a m R A M D a ta In - c ir c u it R e s e t O s c illa to r
E E P R O M
M e m o ry M e m o ry P r o g r a m m in g C ir c u itr y C ir c u it
D a ta M e m o ry
W a tc h d o g
T im e r
8 - b it
R IS C C o re L o w V o lta g e
R e s e t
I/O 8 - b it P r o g r a m m a b le R C /C ry s ta l In te rru p t
S ta c k
P o rts T im e r F re q u e n c y G e n e ra to r O s c illa to r C o n tr o lle r
Pin Assignment
P A 3 1 2 0 P A 4
P A 3 1 1 8 P A 4 P A 2 2 1 9 P A 5
P A 3 1 1 6 P A 4 P A 2 2 1 7 P A 5 P A 1 3 1 8 P A 6
P A 2 2 1 5 P A 5 P A 1 3 1 6 P A 6 P A 0 4 1 7 P A 7
P A 1 3 1 4 P A 6 P A 0 4 1 5 P A 7 P B 2 5 1 6 O S C 2
P A 0 4 1 3 P A 7 P B 2 5 1 4 O S C 2 P B 1 /B Z 6 1 5 O S C 1
P B 0 /B Z 5 1 2 O S C 2 P B 1 /B Z 6 1 3 O S C 1 P B 0 /B Z 7 1 4 V D D
V S S 6 1 1 O S C 1 P B 0 /B Z 7 1 2 V D D V S S 8 1 3 R E S
P C 0 /IN T 7 1 0 V D D V S S 8 1 1 R E S P C 0 /IN T 9 1 2 P C 1 /T M R
P C 1 /T M R 8 9 R E S P C 0 /IN T 9 1 0 P C 1 /T M R N C 1 0 1 1 N C
H T 4 8 F 0 6 E H T 4 8 F 0 6 E H T 4 8 F 0 6 E
1 6 N S O P -A 1 8 D IP -A /S O P -A 2 0 S S O P -A
P B 5 1 2 8 P B 6
P B 4 2 2 7 P B 7
P B 5 1 2 4 P B 6 P B 5 1 2 4 P B 6 P A 3 3 2 6 P A 4
P B 4 2 2 3 P B 7 P B 4 2 2 3 P B 7 P A 2 4 2 5 P A 5
P A 3 3 2 2 P A 4 P A 3 3 2 2 P A 4 P A 1 5 2 4 P A 6
P A 2 4 2 1 P A 5 P A 2 4 2 1 P A 5 P A 0 6 2 3 P A 7
P A 1 5 2 0 P A 6 P A 1 5 2 0 P A 6 P B 3 7 2 2 O S C 2
P A 0 6 1 9 P A 7 P A 0 6 1 9 P A 7 P B 2 8 2 1 O S C 1
P B 3 7 1 8 O S C 2 P B 3 7 1 8 O S C 2 P B 1 /B Z 9 2 0 V D D
P B 2 8 1 7 O S C 1 P B 2 8 1 7 O S C 1 P B 0 /B Z 1 0 1 9 R E S
P B 1 /B Z 9 1 6 V D D P B 1 /B Z 9 1 6 V D D V S S 1 1 1 8 P C 5
P B 0 /B Z 1 0 1 5 R E S P B 0 /B Z 1 0 1 5 R E S P G 0 /IN T 1 2 1 7 P C 4
V S S 1 1 1 4 P C 2 V S S 1 1 1 4 P C 2 P C 0 /T M R 1 3 1 6 P C 3
P C 0 /IN T 1 2 1 3 P C 1 /T M R P G 0 /IN T 1 2 1 3 P C 0 /T M R P C 1 1 4 1 5 P C 2
H T 4 8 F 1 0 E H T 4 8 F 3 0 E H T 4 8 F 3 0 E
2 4 S K D IP -A /S O P -A 2 4 S K D IP -A /S O P -A 2 8 S K D IP -A /S O P -A
Pin Description
HT48F06E
Pad Name I/O Options Description
Bidirectional 8-bit input/output port. Each pin can be configured as a wake-up
Pull-high input by configuration option. Software instructions determine if the pin is a
PA0~PA7 I/O
Wake-up CMOS output or Schmitt Trigger input. A configuration option determines if all
pins on this port have pull-high resistors.
Bidirectional 3-bit input/output port. Software instructions determine if the pin
PB0/BZ
Pull-high is a CMOS output or Schmitt Trigger input. A configuration option determines
PB1/BZ I/O
I/O or BZ/BZ if all pins on this port have pull-high resistors. Pins PB0 and PB1 are
PB2
pin-shared with BZ and BZ, respectively.
Bidirectional 2-bit input/output port. Software instructions determine if the pin
is a CMOS output or Schmitt Trigger input. A configuration option determines
PC0/INT
I/O Pull-high if all pins on this port have pull-high resistors. PC0 is pin-shared with the ex-
PC1/TMR
ternal interrupt pin INT and PC1 is pin-shared with the external timer input pin
TMR.
OSC1, OSC2 are connected to an external RC network or external crystal,
OSC1 I determined by configuration option, for the internal system clock. If the RC
Crystal or RC
OSC2 O system clock option is selected, pin OSC2 can be used to measure the sys-
tem clock at 1/4 frequency.
RES I ¾ Schmitt trigger reset input. Active low.
VDD ¾ ¾ Positive power supply
VSS ¾ ¾ Negative power supply, ground.
Note: 1. Each pin on PA can be programmed through a configuration option to have a wake-up function.
2. Individual pins cannot be selected to have pull-high resistors. If the pull-high configuration is chosen for
a particular port, then all input pins on this port will be connected to pull-high resistors.
3. Pins PB1/BZ and PB2 do not exist on the 16-pin NSOP package type.
HT48F10E
Configuration
Pin Name I/O Description
Option
Bidirectional 8-bit input/output port. Each pin can be configured as a wake-up
Pull-high input by configuration option. Software instructions determine if the pin is a
PA0~PA7 I/O Wake-up CMOS output or input. Configuration options determine if all pins on this port
Schmitt Trigger have pull-high resistors and if the inputs are Schmitt Trigger or non-Schmitt
Trigger.
Bidirectional 8-bit input/output port. Software instructions determine if the pin
PB0/BZ
Pull-high is a CMOS output or Schmitt Trigger input. A configuration option determines
PB1/BZ I/O
I/O or BZ/BZ if all pins on this port have pull-high resistors. Pins PB0 and PB1 are
PB2~PB7
pin-shared with BZ and BZ, respectively.
Bidirectional 3-bit input/output port. Software instructions determine if the pin is
PC0/INT
a CMOS output or Schmitt Trigger input. A configuration option determines if all
PC1/TMR I/O Pull-high
pins on this port have pull-high resistors. Pin PC0 is pin-shared with external in-
PC2
terrupt pin INT and PC1 shared with external timer pin TMR.
OSC1, OSC2 are connected to an external RC network or external crystal,
OSC1 I determined by configuration option, for the internal system clock. If the RC
Crystal or RC
OSC2 O system clock option is selected, pin OSC2 can be used to measure the sys-
tem clock at 1/4 frequency.
RES I ¾ Schmitt Trigger reset input. Active low.
VDD ¾ ¾ Positive power supply
VSS ¾ ¾ Negative power supply, ground
Note: 1. Each pin on PA can be programmed through a configuration option to have a wake-up function.
2. Individual pins cannot be selected to have pull-high resistors. If the pull-high configuration is chosen for
a particular port, then all input pins on this port will be connected to pull-high resistors.
HT48F30E
Configuration
Pin Name I/O Description
Option
Bidirectional 8-bit input/output port. Each pin can be configured as a wake-up
Pull-high input by configuration option. Software instructions determine if the pin is a
PA0~PA7 I/O Wake-up CMOS output or input. Configuration options determine if all pins on this port
Schmitt Trigger have pull-high resistors and if the inputs are Schmitt Trigger or non-Schmitt
Trigger.
Bidirectional 8-bit input/output port. Software instructions determine if the pin
PB0/BZ
Pull-high is a CMOS output or Schmitt Trigger input. A configuration option determines
PB1/BZ I/O
I/O or BZ/BZ if all pins on this port have pull-high resistors. Pins PB0 and PB1 are
PB2~PB7
pin-shared with BZ and BZ, respectively.
Bidirectional 6-bit input/output port. Software instructions determine if the pin
PC0/TMR is a CMOS output or Schmitt Trigger input. A configuration option determines
I/O Pull-high
PC1~PC5 if all pins on this port have pull-high resistors. PC0 is pin-shared with external
timer pin TMR.
Bidirectional 1-bit input/output port. Software instructions determine if the pin
is a CMOS output or Schmitt Trigger input. A configuration option determines
PG0/INT I/O Pull-high
if the pin has a pull-high resistor. PG0 is pin-shared with external interrupt pin
INT.
OSC1, OSC2 are connected to an external RC network or external crystal,
OSC1 I determined by configuration option, for the internal system clock. If the RC
Crystal or RC
OSC2 O system clock option is selected, pin OSC2 can be used to measure the sys-
tem clock at 1/4 frequency.
RES I ¾ Schmitt Trigger reset input. Active low.
Note: 1. Each pin on PA can be programmed through a configuration option to have a wake-up function.
2. Individual pins cannot be selected to have pull-high resistors. If the pull-high configuration is chosen for
a particular port, then all input pins on this port will be connected to pull-high resistors.
3. Pins PC1 and PC3~PC5 only exist on the 28-pin package. On the 24-pin package, these pins are not
available.
Note: These are stress ratings only. Stresses exceeding the range specified under ²Absolute Maximum Ratings² may
cause substantial damage to the device. Functional operation of this device at other conditions beyond those listed
in the specification is not implied and prolonged exposure to extreme conditions may affect device reliability.
Test Conditions
Symbol Parameter Min. Typ. Max. Unit
VDD Conditions
3V ¾ 0.6 1.5 mA
IDD1 Operating Current (Crystal OSC) No load, fSYS=4MHz
5V ¾ 2 4 mA
3V ¾ 0.8 1.5 mA
IDD2 Operating Current (RC OSC) No load, fSYS=4MHz
5V ¾ 2.5 4 mA
Operating Current
IDD3 5V No load, fSYS=8MHz ¾ 4 8 mA
(Crystal OSC, RC OSC)
3V No load, ¾ ¾ 5 mA
ISTB1 Standby Current (WDT Enabled)
5V system HALT ¾ ¾ 10 mA
3V No load, ¾ ¾ 1 mA
ISTB2 Standby Current (WDT Disabled)
5V system HALT ¾ ¾ 2 mA
VIL1 Input Low Voltage for I/O Ports ¾ ¾ 0 ¾ 0.3VDD V
VIH1 Input High Voltage for I/O Ports ¾ ¾ 0.7VDD ¾ VDD V
VIL2 Input Low Voltage (RES) ¾ ¾ 0 ¾ 0.4VDD V
VIH2 Input High Voltage (RES) ¾ ¾ 0.9VDD ¾ VDD V
VLVR Low Voltage Reset ¾ LVR enabled 2.7 3.0 3.3 V
3V 4 8 ¾ mA
IOL I/O Port Sink Current VOL=0.1VDD
5V 10 20 ¾ mA
3V -2 -4 ¾ mA
IOH I/O Port Source Current VOH=0.9VDD
5V -5 -10 ¾ mA
3V ¾ 20 60 100 kW
RPH Pull-high Resistance
5V ¾ 10 30 50 kW
Test Conditions
Symbol Parameter Min. Typ. Max. Unit
VDD Conditions
3V ¾ 45 90 180 ms
tWDTOSC Watchdog Oscillator Period
5V ¾ 32 65 130 ms
Test Conditions
Symbol Parameter Min. Typ. Max. Unit
VDD Conditions
Note: *tSYS=1/fSYS
VCC=5V±10% VCC=2.2V±10%
Symbol Parameter Unit
Min. Max. Min. Max.
fSK Clock Frequency 0 2 0 1 MHz
tSKH SK High Time 250 ¾ 500 ¾ ns
tSKL SK Low Time 250 ¾ 500 ¾ ns
tCSS CS Setup Time 50 ¾ 100 ¾ ns
tCSH CS Hold Time 0 ¾ 0 ¾ ns
tCDS CS Deselect Time 250 ¾ 250 ¾ ns
tDIS DI Setup Time 100 ¾ 200 ¾ ns
tDIH DI Hold Time 100 ¾ 200 ¾ ns
tPD1 DO Delay to ²1² ¾ 250 ¾ 500 ns
tPD0 DO Delay to ²0² ¾ 250 ¾ 500 ns
tSV Status Valid Time ¾ 250 ¾ 250 ns
tPR Write Cycle Time Per Word ¾ 2 ¾ 5 ms
System Architecture
A key factor in the high-performance features of the Program Counter is incremented at the beginning of the
Holtek range of microcontrollers is attributed to the inter- T1 clock during which time a new instruction is fetched.
nal system architecture. The range of devices take ad- The remaining T2~T4 clocks carry out the decoding and
vantage of the usual features found within RISC execution functions. In this way, one T1~T4 clock cycle
microcontrollers providing increased speed of operation forms one instruction cycle. Although the fetching and
and enhanced performance. The pipelining scheme is execution of instructions takes place in consecutive in-
implemented in such a way that instruction fetching and struction cycles, the pipelining structure of the
instruction execution are overlapped, hence instructions microcontroller ensures that instructions are effectively
are effectively executed in one cycle, with the exception executed in one instruction cycle. The exception to this
of branch or call instructions. An 8-bit wide ALU is used are instructions where the contents of the Program
in practically all operations of the instruction set. It car- Counter are changed, such as subroutine calls or
ries out arithmetic operations, logic operations, rotation, jumps, in which case the instruction will take one more
increment, decrement, branch decisions, etc. The inter- instruction cycle to execute.
nal data path is simplified by moving data through the
When the RC oscillator is used, OSC2 is freed for use as
Accumulator and the ALU. Certain internal registers are
a T1 phase clock synchronizing pin. This T1 phase clock
implemented in the Data Memory and can be directly or
has a frequency of fSYS/4 with a 1:3 high/low duty cycle.
indirectly addressed. The simple addressing methods of
these registers along with additional architectural fea- For instructions involving branches, such as jump or call
tures ensure that a minimum of external components is instructions, two machine cycles are required to com-
required to provide a functional I/O control system with plete instruction execution. An extra cycle is required as
maximum reliability and flexibility. the program takes one cycle to first obtain the actual
jump or call address and then another cycle to actually
Clocking and Pipelining execute the branch. The requirement for this extra cycle
should be taken into account by programmers in timing
The main system clock, derived from either a Crys-
sensitive applications
tal/Resonator or RC oscillator is subdivided into four in-
ternally generated non-overlapping clocks, T1~T4. The
O s c illa to r C lo c k
( S y s te m C lo c k )
P h a s e C lo c k T 1
P h a s e C lo c k T 2
P h a s e C lo c k T 3
P h a s e C lo c k T 4
P ro g ra m C o u n te r P C P C + 1 P C + 2
F e tc h In s t. (P C )
P ip e lin in g
E x e c u te In s t. (P C -1 ) F e tc h In s t. (P C + 1 )
E x e c u te In s t. (P C ) F e tc h In s t. (P C + 2 )
E x e c u te In s t. (P C + 1 )
1 M O V A ,[1 2 H ] F e tc h In s t. 1 E x e c u te In s t. 1
2 C A L L D E L A Y F e tc h In s t. 2 E x e c u te In s t. 2
3 C P L [1 2 H ] F e tc h In s t. 3 F lu s h P ip e lin e
4 : F e tc h In s t. 6 E x e c u te In s t. 6
5 : F e tc h In s t. 7
6 D E L A Y : N O P
Instruction Fetching
Program Counter The lower byte of the Program Counter is fully accessi-
During program execution, the Program Counter is used ble under program control. Manipulating the PCL might
to keep track of the address of the next instruction to be cause program branching, so an extra cycle is needed
executed. It is automatically incremented by one each to pre-fetch. Further information on the PCL register can
time an instruction is executed except for instructions, be found in the Special Function Register section.
such as ²JMP² or ²CALL², that demand a jump to a
Stack
non-consecutive Program Memory address. Note that
the Program Counter width varies with the Program This is a special part of the memory which is used to
Memory capacity depending upon which device is se- save the contents of the Program Counter only. The
lected. However, it must be noted that only the lower 8 stack can have either 2 or 4 levels depending upon
bits, known as the Program Counter Low Register, are which device is selected and is neither part of the data
directly addressable by user. nor part of the program space, and can neither be read
from nor written to. The activated level is indexed by the
When executing instructions requiring jumps to
Stack Pointer, SP, which can also neither be read from
non-consecutive addresses such as a jump instruction,
nor written to. At a subroutine call or interrupt acknowl-
a subroutine call, interrupt or reset, etc., the
edge signal, the contents of the Program Counter are
microcontroller manages program control by loading the
pushed onto the stack. At the end of a subroutine or an
required address into the Program Counter. For condi-
interrupt routine, signaled by a return instruction, RET or
tional skip instructions, once the condition has been
RETI, the Program Counter is restored to its previous
met, the next instruction, which has already been
value from the stack. After a device reset, the Stack
fetched during the present instruction execution, is dis-
Pointer will point to the top of the stack.
carded and a dummy cycle takes its place while the cor-
rect instruction is obtained. If the stack is full and an enabled interrupt takes place,
the interrupt request flag will be recorded but the ac-
The lower byte of the Program Counter, known as the
knowledge signal will be inhibited. When the Stack
Program Counter Low register or PCL, is available for
Pointer is decremented, by RET or RETI, the interrupt
program control and is a readable and writable register.
will be serviced. This feature prevents stack overflow al-
By transferring data directly into this register, a short
lowing the programmer to use the structure more easily.
program jump can be executed directly, however, as
However, when the stack is full, a CALL subroutine in-
only this low byte is available for manipulation, the
struction can still be executed which will result in a stack
jumps are limited to the present page of memory, that is
overflow. Precautions should be taken to avoid such
256 locations. When such program jumps are executed
cases which might cause unpredictable program
it should also be noted that a dummy cycle will be in-
branching.
serted.
Program Counter
H T 4 8 F 0 6 E
H T 4 8 F 1 0 E H T 4 8 F 3 0 E
0 0 0 H
In itia lis a tio n In itia lis a tio n
V e c to r V e c to r
0 0 4 H
E x te rn a l E x te rn a l
In te rru p t V e c to r In te rru p t V e c to r
0 0 8 H
T im e r /E v e n t C o u n te r T im e r /E v e n t C o u n te r
In te rru p t V e c to r In te rru p t V e c to r
0 0 C H
0 1 0 H
0 1 4 H
0 1 8 H
3 F F H
4 0 0 H
N o t Im p le m e n te d
7 F F H
1 4 b its 1 4 b its
Look-up Table
Any location within the Program Memory can be defined
as a look-up table where programmers can store fixed T B L H S p e c ifie d b y [m ]
data. To use the look-up table, the table pointer must H ig h B y te o f T a b le C o n te n ts L o w B y te o f T a b le C o n te n ts
first be setup by placing the lower order address of the
Look-up Table
look up data to be retrieved in the table pointer register,
TBLP. This register defines the lower 8-bit address of
the look-up table. Table Program Example
After setting up the table pointer, the table data can be The following example shows how the table pointer and
retrieved from the current Program Memory page or last table data is defined and retrieved from the HT48F06E
or HT48F10E devices. This example uses raw table
Program Memory page using the ²TABRDC[m]² or
data located in the last page which is stored there using
²TABRDL [m]² instructions, respectively. When these in-
the ORG statement. The value at this ORG statement is
structions are executed, the lower order table byte from
²300H² which refers to the start address of the last page
the Program Memory will be transferred to the user de-
within the 1K Program Memory of the microcontroller.
fined Data Memory register [m] as specified in the in-
The table pointer is setup here to have an initial value of
struction. The higher order table data byte from the
Program Memory will be transferred to the TBLH special ²06H². This will ensure that the first data read from the
register. Any unused bits in this transferred higher order data table will be at the Program Memory address
byte will have uncertain values. ²306H² or 6 locations after the start of the last page.
Note that the value for the table pointer is referenced to
the first address of the present page if the ²TABRDC
[m]² instruction is being used. The high byte of the table
data which in this case is equal to zero will be trans-
ferred to the TBLH register automatically when the
²TABRDL [m]² instruction is executed.
Because the TBLH register is a read-only register and in-circuit programming of the devices are beyond the
cannot be restored, care should be taken to ensure its scope of this document and will be supplied in supple-
protection if both the main routine and Interrupt Service mentary literature.
Routine use table read instructions. If using the table
C o n n e c to r
read instructions, the Interrupt Service Routines may
change the value of the TBLH and subsequently cause P o w e r V D D
Table Location
The following example shows how to clear a section of four RAM locations already defined as locations adres1 to
adres4.
data .section ¢data¢
adres1 db ?
adres2 db ?
adres3 db ?
adres4 db ?
block db ?
code .section at 0 ¢code¢
org 00h
start:
mov a,04h ; setup size of block
mov block,a
mov a,offset adres1; Accumulator loaded with first RAM address
mov mp0,a ; setup memory pointer with first RAM address
loop:
clr IAR0 ; clear the data at address defined by MP0
inc mp0 ; increment memory pointer
sdz block ; check if last memory location has been cleared
jmp loop
continue:
The important point to note here is that in the example shown above, no reference is made to specific RAM addresses.
b 7 b 0
B P 0 B a n k P o in te r
B P 0 D a ta M e m o ry
0 B a n k 0
1 B a n k 1
N o t u s e d , m u s t b e re s e t to "0 "
b 7 b 0
T O P D F O V Z A C C S T A T U S R e g is te r
S y s te m M a n a g e m e n t F la g s
P o w e r d o w n fla g
W a tc h d o g tim e - o u t fla g
N o t im p le m e n te d , re a d a s "0 "
Status Register
Input/Output Ports and Control Registers storage allows information such as product identification
Within the area of Special Function Registers, the I/O numbers, calibration values, specific user data, system
registers and their associated control registers play a setup data or other product information to be stored di-
prominent role. All I/O ports have a designated register rectly within the product microcontroller.
correspondingly labeled as PA, PB, PC, etc. These la-
EEPROM Data Memory Structure
beled I/O registers are mapped to specific addresses
within the Data Memory as shown in the Data Memory The internal EEPROM Data Memory has a capacity of
table, which are used to transfer the appropriate output 128´8 bits. Unlike the Program Memory and RAM Data
or input data on that port. with each I/O port there is an Memory, the EEPROM Data Memory is not directly
associated control register labeled PAC, PBC, PCC, mapped and is therefore not directly accessible in the
etc., also mapped to specific addresses with the Data same way as the other types of memory. Instead it has
Memory. The control register specifies which pins of that to be accessed indirectly through the EEPROM Control
port are set as inputs and which are set as outputs. To Register.
setup a pin as an input, the corresponding bit of the con-
trol register must be set high, for an output it must be set Accessing the EEPROM Data Memory
low. During program initialization, it is important to first The EEPROM Data Memory is accessed using a set of
setup the control registers to specify which pins are out- seven instructions. These instructions control all func-
puts and which are inputs before reading data from or tions of the EEPROM such as read, write, erase, enable
writing data to the I/O ports. One flexible feature of these etc. The internal EEPROM structure is similar to that of a
registers is the ability to directly program single bits us- standard 3-wire EEPROM, for which four pins are used
ing the ²SET [m].i² and ²CLR [m].i² instructions. The for transfer of instruction, address and data information.
ability to change I/O pins from output to input and vice These are the Chip Select pin, CS, Serial Clock pin, SK,
versa by manipulating specific bits of the I/O control reg- Data In pin, DI and the Data Out pin, DO. All actions re-
isters during normal program operation is a useful fea- lated to the EEPROM must be conducted through the
ture of these devices. EECR register which is located in Bank 1 of the RAM
Data Memory, in which each of these four EEPROM
EEPROM Control Register - EECR pins is represented by a bit in the EECR register. By ma-
This register is used to control all operations to and from nipulating these four bits in the EECR register, in accor-
the EEPROM Data Memory. As the EEPROM Data dance with the accompanying timing diagrams, the
Memory is not mapped like the other memory types, all microcontroller can communicate with the EEPROM
data to and from the EEPROM must be made through and carry out the required functions, such as reading
this register. The EECR register is located in Bank 1 of and writing data.
the Data Memory, so before use the Bank Pointer must Bit No. Label EEPROM Function
be setup to a value of ²1². The EECR register can only
be read and written to indirectly using the MP1 address
0~3 ¾ Not implemented bit, read as ²0²
pointer. 4 CS EEPROM Data Memory select
Serial Clock: Used to clock data
5 SK
EEPROM Data Memory into and out of the EEPROM
One of the special features within all these devices is Data Input: Instructions, address
6 DI and data information are written to
their internal EEPROM Data Memory. EEPROM, which
the EEPROM on this pin
stands for Electrically Erasable Programmable Read
Only Memory, is by its nature a non-volatile form of Data Output: Data from the
memory, with data retention even when its power supply EEPROM is readout with this bit.
7 DO
Will be in a high-impedance con-
is removed. By incorporating this kind of data memory a
dition if no data is being read.
whole new host of application possibilities are made
available to the designer. The availability of EEPROM EECR Register - Control Bit Functions
b 7 b 0
D O D I S K C S E E C R
N o t im p le m e n te d , re a d a s "0 "
E E P R O M D a ta M e m o r y S e le c t
E E P R O M S e r ia l C lo c k In p u t
E E P R O M S e r ia l D a ta In p u t
E E P R O M S e r ia l D a ta O u tp u t
EEPROM Control Register
When reading data from the EEPROM, the data will The related instruction is transmitted to the EEPROM
clocked out on the rising edge of SK and appear on DO. via the DI bit, after CS has first been set to ²1² to enable
The DO pin will normally be in a high-impedance condi- the EEPROM and a start bit ²1² has been transmitted.
tion unless a READ statement is being executed. When For the READ, WRITE and ERASE instructions, each of
writing to the EEPROM the data must be presented first the three instructions has its own two bit related instruc-
on DI and then clocked in on the rising edge of SK. After tion code. The 7-bit address should then be transmitted.
all the instruction, address and data information has The address is transmitted in MSB first format.
been transmitted, CS should be cleared to ²0² to termi-
For the other four instructions, ²EWEN², ²EWDS²,
nate the instruction transmission. Note that after power
²ERAL² and ²WRAL², after the start bit has been trans-
on the EEPROM must be initialised as described.
mitted a ²00² instruction code should then follow. The
As indirect addressing is the only way to access the 7-bit address information should then follow. The first
EECR register, all read and write operations to this reg- two bits of this address is instruction dependant as
ister must take place using the Indirect Addressing Reg-
shown in the table while the remaining bits have don¢t
ister, IAR1, and the Memory Pointer, MP1. Because the
care values and can be either high or low.
EECR control register is located in Bank 1 of the RAM
Data Memory at location 40H, the MP1 Memory Pointer After any write or erase instruction is issued, the internal
must first be set to the value 40H and the Bank Pointer write function of the EEPROM will be used to write the
set to ²1². data into the device. As this internal write operation uses
the EEPROM¢s own internal clock, no further instruc-
EEPROM Data Memory Instruction Set tions will be accepted by the EEPROM until the internal
write function has ended. After power on and before any
Control over the internal EEPROM, to execute functions
instruction is issued the EEPROM must be properly in-
such as read, write, disable, enable etc., is implemented
itialised to ensure proper operation.
through instructions of which there are a total of seven.
tC S S
C S tC D S
tS K H tS K L
tC S H
S K
tD IS
t D IH
D I V a lid D a ta V a lid D a ta
tP D 0 tP D 1
D O
1
Instruction
Instruction Function Start Bit Address Data
Code
READ Read Out Data Byte(s) 1 10 A6~A0 D7~D0
ERASE Erase Single Data Byte 1 11 A6~A0 ¾
WRITE Write Single Data Byte 1 01 A6~A0 D7~D0
EWEN Erase/Write Enable 1 00 11 XXXXX ¾
EWDS Erase/Write Disable 1 00 00 XXXXX ¾
ERAL Erase All 1 00 10 XXXXX ¾
WRAL Write All 1 00 01 XXXXX ¾
READ WRITE
The ²READ² instruction is used to read out one or more The ²WRITE² instruction is used to write a single byte of
bytes of data from the EEPROM Data Memory. To insti- data into the EEPROM. To instigate a WRITE instruc-
gate a ²READ² instruction, the CS bit should be set high, tion, the CS bit should be set high, followed by a high
followed by a high start bit and then the instruction code start bit and then the instruction code ²01², all transmit-
²10², all transmitted via the DI bit. The address informa- ted via the DI bit. The address information should then
tion should then follow with the MSB being transmitted follow with the MSB bit being transmitted first. After the
first. After the last address bit, A0, has been transmitted, last address bit, A0, has been transmitted, the data can
the data can be clocked out, bit D7 first, on the rising be immediately transmitted MSB first. After all the
edge of the SK clock signal and can be read via the DO WRITE instruction code, address and data have been
bit. However, a dummy ²0² bit will first precede the read- transmitted, the data will be written into the EEPROM
ing of the first data bit, D7. After the full byte has been when the CS bit is cleared to zero. The EEPROM does
read out, the internal address will be automatically incre- this by executing an internal write-cycle, which will first
mented allowing the next consecutive data byte to be erase and then write the previously transmitted data
read out without entering further address data. As long byte into the EEPROM. This process takes place inter-
as the CS bit remains high, data bit D7 of the next ad- nally using the EEPROM¢s own internal clock and does
dress will automatically follow data bit D0 of the previous not require any action from the SK clock. No further in-
address with no dummy ²0² being inserted between structions can be accepted by the EEPROM until this in-
them. The address will keep incrementing in this way ternal write-cycle has finished. To determine when the
until CS returns to a low value. DO will normally be in a write cycle has ended, CS should be again brought high
high impedance condition until the ²READ² instruction is and the DO bit polled. If DO is low this indicates that the
executed. Note that as the ²READ² instruction is not af- internal write-cycle is still in progress, however, the DO
bit will change to a high value when the internal
fected by the condition of the ²EWEN² or ²EWDS² in-
struction, the READ command is always valid and write-cycle has ended. Before a ²WRITE² instruction is
independent of these two instructions. transmitted an ²EWEN² instruction must have been
transmitted at some point earlier to ensure that the
erase/write function of the EEPROM is enabled.
tC D S
C S
S K
D I 1 1 0 A 6 A 0
S ta r t b it
D O 1 0 D 7 D 0 D 7 1
T h e a d d r e s s is a u to m a tic a lly in c r e m e n te d a t th is p o in t.
READ Timing
tC D S
C S V e r ify S ta n d b y
S K
D I 1 0 1 A 6 A 5 A 4 A 1 A 0 D 7 D 0
S ta r t b it tS V
1
B u s y
D O R e a d y
tP R
WRITE Timing
C S S ta n d b y
S K
D I 1 0 0
S ta r t b it E W E N = 1 1 X X X X X - - 5 - b it d o n 't c a r e
E W D S = 0 0
EWEN/EWDS Timing
tC D S
C S V e r ify S ta n d b y
S K
D I 1 0 0 1 0
S ta r t b it X X X X X - - 5 - b it d o n 't c a r e
1 tS V
D O B u s y R e a d y
tP R
ERAL Timing
tC D S
C S V e r ify S ta n d b y
S K
D I 1 0 0 0 1 D 7 D 0
S ta r t b it X X X X X - - 5 - b it d o n 't c a r e
1 tS V
D O B u s y R e a d y
tP R
WRAL Timing
tC D S
C S V e r ify S ta n d b y
S K
D I 1 1 1 A 6 A 5 A 4 A 1 A 0
S ta r t b it tS V
1
B u s y
D O R e a d y
tP R
ERASE Timing
Is s u e in s tr u c tio n
A d d re s s , D a ta
C S
In te r n a l w r ite c y c le in itia te d
tC D S d e la y
C S
tS V d e la y
D O w ill g o lo w h e r e to in d ic a te in te r n a l
w r ite c y c le s till in p r o g r e s s
D O = "1 "
N o
Y e s
In te r n a l w r ite
c y c le fin is h e d
Input/Output Ports
Holtek microcontrollers offer considerable flexibility on other low-power applications. Various methods exist to
their I/O ports. With the input or output designation of ev- wake-up the microcontroller, one of which is to change
ery pin fully under user program control, pull-high op- the logic condition on one of the Port A pins from high to
tions for all ports and wake-up options on certain pins, l o w . A f t e r a ² H A L T² i n s t r u c t i o n f o r c e s t h e
the user is provided with an I/O structure to meet the microcontroller into entering a HALT condition, the pro-
needs of a wide range of application possibilities. cessor will remain idle or in a low-power state until the
Depending upon which device or package is chosen, logic condition of the selected wake-up pin on Port A
the microcontroller range provides from 13 to 23 changes from high to low. This function is especially
bidirectional input/output lines labeled with port names suitable for applications that can be woken up via exter-
PA, PB, PC, etc. These I/O ports are mapped to the nal switches. Note that each pin on Port A can be se-
RAM Data Memory with specific addresses as shown in lected individually to have this wake-up feature.
the Special Purpose Data Memory table. All of these I/O
I/O Port Control Registers
ports can be used for input and output operations. For
input operation, these ports are non-latching, which Each I/O port has its own control register PAC, PBC,
means the inputs must be ready at the T2 rising edge of PCC, etc., to control the input/output configuration. With
instruction ²MOV A,[m]², where m denotes the port ad- this control register, each CMOS output or input with or
dress. For output operation, all the data is latched and without pull-high resistor structures can be reconfigured
remains unchanged until the output latch is rewritten. dynamically under software control. Each pin of the I/O
ports is directly mapped to a bit in its associated port
Pull-high Resistors control register. For the I/O pin to function as an input,
the corresponding bit of the control register must be writ-
Many product applications require pull-high resistors for
their switch inputs usually requiring the use of an exter- ten as a ²1². This will then allow the logic state of the in-
nal resistor. To eliminate the need for these external re- put pin to be directly read by instructions. When the
sistors, all I/O pins, when configured as an input have corresponding bit of the control register is written as a
the capability of being connected to an internal pull-high ²0², the I/O pin will be setup as a CMOS output. If the pin
resistor. These pull-high resistors are selectable via is currently setup as an output, instructions can still be
configuration options and are implemented using a used to read the output register. However, it should be
weak PMOS transistor. Note that if the pull-high option noted that the program will in fact only read the status of
is selected, then all I/O pins on that port will be con- the output data latch and not the actual logic status of
nected to pull-high resistors, individual pins cannot be the output pin. Note that with the exception of the
selected for pull-high resistor options. HT48F06E device, there is an additional configuration
option for Port A that can select whether the inputs on
Port A Wake-up this port are Schmitt Trigger types or non-Schmitt Trig-
ger types. Inputs for the other ports are all Schmitt Trig-
Each device has a HALT instruction enabling the
ger type.
microcontroller to enter a Power Down Mode and pre-
serve power, a feature that is important for battery and
V D D
P u ll- H ig h
C o n tr o l B it O p tio n W e a k
D a ta B u s D Q P u ll- u p
W r ite C o n tr o l R e g is te r C K Q
S
C h ip R e s e t
P A 0 ~ P A 7
R e a d C o n tr o l R e g is te r
D a ta B it
D Q
W r ite D a ta R e g is te r C K Q
S
M
U
R e a d D a ta R e g is te r X S c h m itt T r ig g e r In p u t O p tio n
S y s te m W a k e -u p
W a k e - u p O p tio n
PA Input/Output Port
V D D
P u ll- H ig h
C o n tr o l B it O p tio n W e a k
D a ta B u s D Q P u ll- u p
W r ite C o n tr o l R e g is te r C K Q
S
C h ip R e s e t
P B 0 /B Z
R e a d C o n tr o l R e g is te r
P B 1 /B Z
D a ta B it
D Q
W r ite D a ta R e g is te r C K Q
S
M
P B 0 D a ta B it U
B Z ( P B 1 o n ly ) X
B Z ( P B 0 o n ly )
M B Z O p tio n
U
X
R e a d D a ta R e g is te r
V D D
P u ll- H ig h
C o n tr o l B it O p tio n W e a k
D a ta B u s D Q P u ll- u p
W r ite C o n tr o l R e g is te r C K Q
S
C h ip R e s e t
R e a d C o n tr o l R e g is te r P B 2 ~ P B 7
P C 0 ~ P C 5
D a ta B it P G 0
D Q
IN T /T M R
W r ite D a ta R e g is te r C K Q S h a r e d P in s
S
M
U
X
R e a d D a ta R e g is te r
IN T ( P C 0 /P G 0 o n ly )
T M R ( P C 0 /P C 1 o n ly )
D a ta B u s
R e lo a d
P r e lo a d R e g is te r
P S C 2 ~ P S C 0 T M 1 T M 0
(1 /2 ~ 1 /2 5 6 )
fS Y S 8 - S ta g e P r e s c a le r T im e r /E v e n t C o u n te r T im e r /E v e n t C o u n te r O v e r flo w
M o d e C o n tro l to In te rru p t
T O N
T M R
8 - B it T im e r /E v e n t C o u n te r ¸ 2 B Z
B Z
T E
Timer Register - TMR different modes, the options of which are determined by
The timer register is a special function register located in the contents of their control register, which has the
the Special Purpose RAM Data Memory and is the place name TMRC. It is the Timer Control Register together
where the actual timer value is stored. This register is with its corresponding timer register that control the full
known as TMR. The value in the timer register increases operation of the Timer/Event Counter. Before the
by one each time an internal clock pulse is received or Timer/Event Counter can be used, it is essential that the
an external transition occurs on the external timer pin. Timer Control Register is fully programmed with the
The timer will count from the initial value loaded by the right data to ensure its correct operation, a process that
preload register to the full count of FFH at which point is normally carried out during program initialisation.
the timer overflows and an internal interrupt signal is To choose which of the three modes the Timer/Event
generated. The timer value will then be reset with the ini- Counter is to operate in, either in the timer mode, the
tial preload register value and continue counting. event counting mode or the pulse width measurement
To achieve a maximum full range count of FFH the mode, bits 7 and 6 of the Timer Control Register, which
preload register must first be cleared to all zeros. It are known as the bit pair TM1/TM0, must be set to the
should be noted that after power-on, the preload register required logic levels. The Timer/Event Counter on/off
will be in an unknown condition. Note that if the bit, which is bit 4 of the Timer Control Register and
Timer/Event Counter is switched off and data is written known as TON, provides the basic on/off control of the
to its preload register, this data will be immediately writ- Timer/Event Counter. Setting the bit high allows the
ten into the actual timer register. However, if the Timer/Event Counter to run, clearing the bit stops it run-
Timer/Event Counter is enabled and counting, any new ning. Bits 0~2 of the Timer Control Register determine
data written into the preload data register during this pe- the division ratio of the input clock prescaler. The
riod will remain in the preload register and will only be prescaler bit settings have no effect if an external clock
written into the timer register the next time an overflow source is used. If the Timer/Event Counter is in the
occurs. event count or pulse width measurement mode, the ac-
tive transition edge level type is selected by the logic
Timer Control Register - TMRC level of bit 3 of the Timer Control Register which is
known as TE.
The flexible features of the Holtek microcontroller
Timer/Event Counters enable them to operate in three
b 7 b 0
T M 1 T M 0 T O N T E P S C 2 P S C 1 P S C 0 T M R C R e g is te r
T im e r P r e s c a le r R a te S e le c t
P S C 2 P S C 1 P S C 0 T im e r R a te
0 0 0 1 :2
0 0 1 1 :4
0 1 0 1 :8
0 1 1 1 :1 6
1 0 0 1 :3 2
1 0 1 1 :6 4
1 1 0 1 :1 2 8
1 1 1 1 :2 5 6
E v e n t C o u n te r A c tiv e E d g e S e le c t
1 : c o u n t o n fa llin g e d g e
0 : c o u n t o n r is in g e d g e
P u ls e W id th M e a s u r e m e n t A c tiv e E d g e S e le c t
1 : s ta rt c o u n tin g o n r is in g e d g e , s to p o n fa llin g e d g e
0 : s ta rt c o u n tin g o n fa llin g e d g e , s to p o n r is in g e d g e
T im e r /E v e n t C o u n te r C o u n tin g E n a b le
1 : e n a b le
0 : d is a b le
N o t im p le m e n te d , r e a d a s " 0 "
O p e r a tin g M o d e S e le c t
T M 1 T M 0
0 0 n o m o d e a v a ila b le
0 1 e v e n t c o u n te r m o d e
1 0 tim e r m o d e
1 1 p u ls e w id th m e a s u r e m e n t m o d e
Configuring the Timer Mode vided by the internal prescaler. After the other bits in the
In this mode, the Timer/Event Counter can be utilised to Timer Control Register have been setup, the enable bit,
measure fixed time intervals, providing an internal inter- which is bit 4 of the Timer Control Register, can be set
rupt signal each time the Timer/Event Counter over- high to enable the Timer/Event Counter to run. If the Ac-
flows. To operate in this mode, the Operating Mode tive Edge Select bit, which is bit 3 of the Timer Control
Select bit pair in the Timer Control Register must be set Register, is low, the Timer/Event Counter will increment
to the correct value as shown. each time the external timer pin receives a low to high
transition. If the Active Edge Select bit is high, the coun-
Control Register Operating Mode Bit7 Bit6
ter will increment each time the external timer pin re-
Select Bits for the Timer Mode 1 0 ceives a high to low transition. When it is full and
overflows, an interrupt signal is generated and the
In this mode the internal clock, fSYS, is used as the
Timer/Event Counter will reload the value already
Timer/Event Counter clock. However, this clock source
loaded into the preload register and continue counting.
is further divided by a prescaler, the value of which is de-
The interrupt can be disabled by ensuring that the
termined by the Prescaler Rate Select bits, which are
Timer/Event Counter Interrupt Enable bit in the Interrupt
bits 0~3 in the Timer Control Register. After the other
Control Register, INTC, is reset to zero.
bits in the Timer Control Register have been setup, the
enable bit, which is bit 4 of the Timer Control Register, As the external timer pin is shared with an I/O pin, to en-
can be set high to enable the Timer/Event Counter to sure that the pin is configured to operate as an event
run. Each time an internal clock cycle occurs, the counter input pin, two things have to happen. The first is
Timer/Event Counter increments by one. When it is full to ensure that the Operating Mode Select bits in the
and overflows, an interrupt signal is generated and the Timer Control Register place the Timer/Event Counter in
Timer/Event Counter will reload the value already the Event Counting Mode, the second is to ensure that
loaded into the preload register and continue counting. the port control register configures the pin as an input. It
The interrupt can be disabled by ensuring that the should be noted that in the event counting mode, even if
Timer/Event Counter Interrupt Enable bit in the Interrupt the microcontroller is in the Power Down Mode, the
Control Register, INTC, is reset to zero. Timer/Event Counter will continue to record externally
changing logic events on the timer input pin. As a result
Configuring the Event Counter Mode when the timer overflows it will generate a timer interrupt
and corresponding wake-up source.
In this mode, a number of externally changing logic
events, occurring on the external timer pin, can be re-
Configuring the Pulse Width Measurement Mode
corded by the Timer/Event Counter. To operate in this
mode, the Operating Mode Select bit pair in the Timer In this mode, the Timer/Event Counter can be utilised to
Control Register must be set to the correct value as measure the width of external pulses applied to the ex-
shown. ternal timer pin. To operate in this mode, the Operating
Mode Select bit pair in the Timer Control Register must
Control Register Operating Mode Bit7 Bit6
be set to the correct value as shown.
Select Bits for the Event Counter Mode 0 1
Control Register Operating Mode Bit7 Bit6
In this mode the external timer pin is used as the Select Bits for the Pulse Width Measure-
Timer/Event Counter clock source, however it is not di- ment Mode 1 1
P r e s c a le r O u tp u t
In c re m e n t
T im e r C o n tr o lle r T im e r + 1 T im e r + 2 T im e r + N T im e r + N + 1
E x te r n a l T im e
P in In p u t
T E = 1
In c re m e n t
T im e r + 1 T im e r + 2 T im e r + 3
T im e r C o u n te r
In this mode the internal clock, fSYS, is used as the bit in the Interrupt Control Register, INTC, is reset to
Timer/Event Counter clock. However, this clock source zero.
is further divided by a prescaler, the value of which is de- As the external timer pin is shared with an I/O pin, to en-
termined by the Prescaler Rate Select bits, which are sure that the pin is configured to operate as a pulse
bits 0~3 in the Timer Control Register. After the other width measurement pin, two things have to happen. The
bits in the Timer Control Register have been setup, the first is to ensure that the Operating Mode Select bits in
enable bit, which is bit 4 of the Timer Control Register, the Timer Control Register place the Timer/Event Coun-
can be set high to enable the Timer/Event Counter, how- ter in the Pulse Width Measurement Mode, the second
ever it will not actually start counting until an active edge is to ensure that the port control register configures the
is received on the external timer pin. pin as an input.
If the Active Edge Select bit, which is bit 3 of the Timer
Control Register, is low, once a high to low transition has Programmable Frequency Divider (PFD) and Buzzer
been received on the external timer pin, the Timer/Event Application
Counter will start counting until the external timer pin re- Operating similar to a programmable frequency divider,
turns to its original high level. At this point the enable bit the buzzer function within the microcontroller provides a
will be automatically reset to zero and the Timer/Event means of producing a variable frequency output suitable
Counter will stop counting. If the Active Edge Select bit for applications, such as piezo-buzzer driving or other
is high, the Timer/Event Counter will begin counting interfaces requiring a precise frequency generator.
once a low to high transition has been received on the
The BZ and BZ are a complimentary pair and pin-shared
external timer pin and stop counting when the external
with I/O pins, PB0 and PB1. The function is selected via
timer pin returns to its original low level. As before, the
configuration option, however, if not selected, the pins
enable bit will be automatically reset to zero and the
can operate as normal I/O pins. Note that the BZ pin is
Timer/Event Counter will stop counting. It is important to
the inverse of the BZ pin generating a kind of differential
note that in the Pulse Width Measurement Mode, the
output and supplying more power to connected inter-
enable bit is automatically reset to zero when the exter-
faces such as buzzers. Note that the 16-pin NSOP
nal control signal on the external timer pin returns to its
package type only has a single BZ output as pin PB1/BZ
original level, whereas in the other two modes the en-
does not exist on this package.
able bit can only be reset to zero under program control.
The timer overflow signal is the clock source for the
The residual value in the Timer/Event Counter, which
buzzer circuit. The output frequency is controlled by
can now be read by the program, therefore represents
loading the required values into the timer prescaler and
the length of the pulse received on the external timer
timer registers to give the required division ratio. The
pin. As the enable bit has now been reset, any further
counter will begin to count-up from this preload register
transitions on the external timer pin will be ignored. Not
value until full, at which point an overflow signal is gen-
until the enable bit is again set high by the program can
erated, causing both the BZ and BZ outputs to change
the timer begin further pulse width measurements. In
state. The counter will then be automatically reloaded
this way, single shot pulse measurements can be easily
with the preload register value and continue count-
made.
ing-up.
It should be noted that in this mode the Timer/Event
If the configuration option has selected the buzzer func-
Counter is controlled by logical transitions on the exter-
tion, then for both buzzer outputs to operate, it is essen-
nal timer pin and not by the logic level. When the
tial that the Port B control register PBC bit 0 and PBC bit
Timer/Event Counter is full and overflows, an interrupt
1 are setup as outputs. If only one pin is setup as an out-
signal is generated and the Timer/Event Counter will re-
put, the other pin can still be used as a normal data input
load the value already loaded into the preload register
pin. However, if both pins are setup as inputs then the
and continue counting. The interrupt can be disabled by
buzzer will not function. The buzzer outputs will only be
ensuring that the Timer/Event Counter Interrupt Enable
E x te rn a l T M R
P in In p u t
T O N ( w ith T E = 0 )
P r e s c a le r O u tp u t
In c re m e n t
T im e r + 1 + 2 + 3 + 4
T im e r C o u n te r
P r e s c a le r O u tp u t is s a m p le d a t e v e r y fa llin g e d g e o f T 1 .
T im e r O v e r flo w
B u z z e r C lo c k
P B 0 D a ta
B Z O u tp u t a t P B 0
B Z O u tp u t a t P B 1
activated if bit PB0 is set to ²1². This output data bit is internal interrupt signal directing the program flow to the
used as the on/off control bit for the buzzer outputs. respective internal interrupt vector. For the pulse width
Note that the BZ and BZ outputs will both be low if the measurement mode, the internal system clock is also
PB0 output data bit is cleared to ²0². The condition of used as the timer clock source but the timer will only run
data bit PB1 has no effect on the overall control of the when the correct logic condition appears on the external
BZ and BZ pins. timer input pin. As this is an external event and not syn-
chronised with the internal timer clock, the
Using this method of frequency generation, and if a
microcontroller will only see this external event when the
crystal oscillator is used for the system clock, very pre-
next timer clock pulse arrives. As a result there may be
cise values of frequency can be generated.
small differences in measured values requiring pro-
Prescaler grammers to take this into account during programming.
The same applies if the timer is configured to be in the
The single 8-bit timer in the devices all possess a event counting mode which again is an external event
prescaler. Bits 0~2 of the Timer Control Register, define and not synchronised with the internal system or timer
the prescaling stages of the internal clock source of the clock.
Timer/Event Counter.
When the Timer/Event Counter is read or if data is writ-
I/O Interfacing ten to the preload registers, the clock is inhibited to
avoid errors, however as this may result in a counting er-
The Timer/Event Counter, when configured to run in the
ror, this should be taken into account by the program-
event counter or pulse width measurement mode, re-
mer. Care must be taken to ensure that the timers are
quires the use of an external pin for correct operation.
properly initialised before using them for the first time.
As the external timer pin is pin-shared with an I/O pin, it
The associated timer enable bits in the interrupt control
must be configured correctly to ensure it is setup for use
register must be properly set otherwise the internal in-
as a Timer/Event Counter input and not as a normal I/O
terrupt associated with the timer will remain inactive.
pin. This is implemented by ensuring that the mode se-
The edge select, timer mode and clock source control
lect bits in the Timer/Event Counter control register, se-
bits in timer control register must also be correctly set to
lect either the event counter or pulse width
ensure the timer is properly configured for the required
measurement mode. Additionally the Port Control Reg-
application. It is also important to ensure that an initial
ister bit for this pin must be set high to ensure that the
value is first loaded into the timer register before the
pin is setup as an input. Any pull high configuration for
timer is switched on; this is because after power-on the
this pins will remain valid even if the pin is used as a
initial value of the timer register is unknown. After the
Timer/Event Counter input.
timer has been initialised the timer can be turned on and
Programming Considerations off by controlling the enable bit in the timer control regis-
ter. Note that setting the timer enable bit high to turn the
When configured to run in the timer mode, the internal timer on, should only be executed after the timer mode
system clock is used as the timer clock source and is bits have been properly setup. Setting the timer enable
therefore synchronized with the overall operation of the bit high together with a mode bit modification, may lead
microcontroller. In this mode, when the appropriate to improper timer operation if executed as a single timer
timer register is full, the microcontroller will generate an control register byte write instruction.
When the Timer/Event counter overflows, its corre- quest flag should first be set high before issuing the
sponding interrupt request flag in the interrupt control HALT instruction to enter the Power Down Mode.
register will be set. If the timer interrupt is enabled this
will in turn generate an interrupt signal. However irre- Timer Program Example
spective of whether the timer interrupt is enabled or not, This program example shows how the Timer/Event
a Timer/Event counter overflow will also generate a Counter registers are setup, along with how the inter-
wake-up signal if the device is in a Power-down condi- rupts are enabled and managed. Note how the
tion. This situation may occur if the Timer/Event Counter Timer/Event Counter is turned on, by setting bit 4 of the
is in the Event Counting Mode and if the external signal Timer Control Register. The Timer/Event Counter can
continues to change state. In such a case, the be turned off in a similar way by clearing the same bit.
Timer/Event Counter will continue to count these exter- This example program sets the Timer/Event Counter
nal events and if an overflow occurs the device will be tobe in the timer mode, which uses the internal system
woken up from its Power-down condition. To prevent clock as the clock source.
such a wake-up from occurring, the timer interrupt re-
Interrupts
Interrupts are an important part of any microcontroller with a new address which will be the value of the corre-
system. When an external event or an internal function sponding interrupt vector. The microcontroller will then
such as a Timer/Event Counter requires microcontroller fetch its next instruction from this interrupt vector. The
attention, their corresponding interrupt will enforce a instruction at this vector will usually be a JMP statement
temporary suspension of the main program allowing the which will take program execution to another section of
microcontroller to direct attention to their respective program which is known as the interrupt service routine.
needs. Each device contains a single external interrupt Here is located the code to control the appropriate inter-
and single internal timer interrupt functions. The exter- rupt. The interrupt service routine must be terminated
nal interrupt is controlled by the action of the external with a RETI statement, which retrieves the original Pro-
INT pin, while the internal interrupt is controlled by the gram Counter address from the stack and allows the
Timer/Event Counter overflow. microcontroller to continue with normal execution at the
point where the interrupt occurred.
Interrupt Register
The various interrupt enable bits, together with their as-
Overall interrupt control, which means interrupt enabling sociated request flags, are shown in the following dia-
and request flag setting, is controlled by a single INTC gram with their order of priority.
register, which is located in the RAM Data Memory. By
Once an interrupt subroutine is serviced, all the other in-
controlling the appropriate enable bits in this register
terrupts will be blocked, as the EMI bit will be cleared au-
each individual interrupt can be enabled or disabled.
tomatically. This will prevent any further interrupt nesting
Also when an interrupt occurs, the corresponding re-
from occurring. However, if other interrupt requests oc-
quest flag will be set by the microcontroller. The global
cur during this interval, although the interrupt will not be
enable flag if cleared to zero will disable all interrupts.
immediately serviced, the request flag will still be re-
Interrupt Operation corded. If an interrupt requires immediate servicing
while the program is already in another interrupt service
A Timer/Event Counter overflow or the external interrupt
routine, the EMI bit should be set after entering the rou-
line being pulled low will all generate an interrupt re- tine, to allow interrupt nesting. If the stack is full, the in-
quest by setting their corresponding request flag, if their terrupt request will not be acknowledged, even if the
appropriate interrupt enable bit is set. When this hap- related interrupt is enabled, until the Stack Pointer is
pens, the Program Counter, which stores the address of decremented. If immediate service is desired, the stack
the next instruction to be executed, will be transferred must be prevented from becoming full.
onto the stack. The Program Counter will then be loaded
b 7 b 0
T F E IF E T I E E I E M I IN T C R e g is te r
M a s te r In te r r u p t G lo b a l E n a b le
1 : g lo b a l e n a b le
0 : g lo b a l d is a b le
E x te r n a l In te r r u p t E n a b le
1 : e n a b le
0 : d is a b le
T im e r /E v e n t C o u n te r In te r r u p t E n a b le
1 : e n a b le
0 : d is a b le
N o im p le m e n te d , r e a d a s " 0 "
E x te r n a l In te r r u p t R e q u e s t F la g
1 : a c tiv e
0 : in a c tiv e
T im e r /E v e n t C o u n te r In te r r u p t R e q u e s t F la g
1 : a c tiv e
0 : in a c tiv e
N o im p le m e n te d , r e a d a s " 0 "
Interrupt Structure
L V R
1 u WDT time-out reset during normal operation
tR S T D 1 1 WDT time-out reset during Power Down
S S T T im e - o u t
Note: ²u² stands for unchanged
In te rn a l R e s e t
The following table indicates the way in which the vari-
Low Voltage Reset Timing Chart ous components of the microcontroller are affected after
a power-on reset occurs.
· Watchdog Time-out Reset during Normal Operation
Item Condition After RESET
The Watchdog time-out Reset during normal opera-
tion is the same as a hardware RES pin reset except Program Counter Reset to zero
that the Watchdog time-out flag TO will be set to ²1². Interrupts All interrupts will be disabled
W D T T im e - o u t Clear after reset, WDT begins
WDT
tR S T D counting
S S T T im e - o u t
Timer/Event
Timer Counter will be turned off
In te rn a l R e s e t Counter
WDT Time-out Reset during Normal Operation The Timer Counter Prescaler will
Prescaler
be cleared
Timing Chart
Input/Output Ports I/O ports will be setup as inputs
· Watchdog Time-out Reset during Power Down Stack Pointer will point to the top
Stack Pointer
The Watchdog time-out Reset during Power Down is of the stack
a little different from other kinds of reset. Most of the
conditions remain unchanged except that the Pro- The different kinds of resets all affect the internal regis-
gram Counter and the Stack Pointer will be cleared to ters of the microcontroller in different ways. To ensure
²0² and the TO flag will be set to ²1². Refer to the A.C. reliable continuation of normal program execution after
Characteristics for tSST details. a reset occurs, it is important to know what condition the
W D T T im e - o u t microcontroller is in after a particular reset occurs. The
tS S T
following table describes how each type of reset affects
S S T T im e - o u t each of the microcontroller internal registers. Note that
where more than one package type exists the table will
WDT Time-out Reset during Power Down reflect the situation for the larger package type.
Timing Chart
HT48F30E
WDT Time-out WDT Time-out
Register Reset (Power-on) RES or LVR Reset
(Normal Operation) (HALT)
MP0 1xxx xxxx 1uuu uuuu 1uuu uuuu 1uuu uuuu
MP1 1xxx xxxx 1uuu uuuu 1uuu uuuu 1uuu uuuu
BP 0000 0000 0000 0000 0000 0000 uuuu uuuu
ACC xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu
PCL 0000 0000 0000 0000 0000 0000 0000 0000
TBLP xxxx xxxx uuuu uuuu uuuu uuuu uuuu uuuu
TBLH --xx xxxx --uu uuuu --uu uuuu --uu uuuu
WDTS 0000 0111 0000 0111 0000 0111 uuuu uuuu
STATUS --00 xxxx --uu uuuu -- 1u uuuu --11 uuuu
INTC --00 -000 --00 -000 --00 -000 --uu -uuu
TMR xxxx xxxx xxxx xxxx xxxx xxxx uuuu uuuu
TMRC 00-0 1000 00-0 1000 00-0 1000 uu-u uuuu
PA 1111 1111 1111 1111 1111 1111 uuuu uuuu
PAC 1111 1111 1111 1111 1111 1111 uuuu uuuu
PB 1111 1111 1111 1111 1111 1111 uuuu uuuu
PBC 1111 1111 1111 1111 1111 1111 uuuu uuuu
PC --11 1111 --11 1111 --11 1111 --uu uuuu
PCC --11 1111 --11 1111 --11 1111 --uu uuuu
PG ---- ---1 ---- ---1 ---- ---1 ---- ---u
PGC ---- ---1 ---- ---1 ---- ---1 ---- ---u
EECR 1000 ---- 1000 ---- 1000 ---- uuuu ----
Oscillator
Various oscillator options offer the user a wide range of System RC Oscillator
functions according to their various application require- After selecting the correct configuration option, using
ments. Two types of system clocks can be selected the external system RC oscillator requires that a resis-
while various clock source options for the Watchdog
tor, with a value between 24kW and 1MW, is connected
Timer, are provided for maximum flexibility. All oscillator
between OSC1 and VDD, and a 470pF capacitor is con-
options are selected through the configuration options.
nected to ground. Although this is a cost effective oscil-
lator configuration, the oscillation frequency can vary
System Clock Configurations
with VDD, temperature and process variations and is
There are two methods of generating the system clock, therefore not suitable for applications where timing is
using an external crystal/ceramic oscillator or an exter- critical or where accurate oscillator frequencies are re-
nal RC network. The chosen method is selected through quired. For the value of the external resistor ROSC refer
the configuration options. to the Appendix section for typical RC Oscillator vs.
Temperature and VDD characteristics graphics.
System Crystal/Ceramic Oscillator
V D D
After selecting the correct oscillator configuration op-
tion, for most crystal oscillator configurations, the simple
R O S C
connection of a crystal across OSC1 and OSC2 will cre-
ate the necessary phase shift and feedback for oscilla- O S C 1
tion, without requiring external capacitors. However, for 4 7 0 p F
some crystal types and frequencies, to ensure oscilla-
tion, it may be necessary to add two small value capaci-
fS Y S /4 N M O S O p e n D r a in O S C 2
tors, C1 and C2. Using a ceramic resonator will usually
require two small value capacitors, C1 and C2, to be RC Oscillator
connected as shown for oscillation to occur. The values
of C1 and C2 should be selected in consultation with the
Note that it is the only microcontroller internal circuitry
crystal or resonator manufacturer's specification. In
together with the external resistor, that determine the
most applications, resistor R1 is not required, however
frequency of the oscillator. The external capacitor
for those applications where the LVR function is not
shown on the diagram does not influence the frequency
used, R1 may be necessary to ensure the oscillator
of oscillation. The external capacitor is added to improve
stops running when VDD falls below its operating range.
oscillator stability, especially if the open-drain OSC2
C 1 output is utilised in the application circuit.
O S C 1
Watchdog Timer Oscillator
R 1
O S C 2 The WDT oscillator is a fully integrated free running RC
C 2 oscillator with a typical period of 65ms at 5V, requiring no
external components. It is selected via configuration op-
Crystal/Ceramic Oscillator tion. If selected, when the device enters the Power
Down Mode, the system clock will stop running, how-
More information regarding the oscillator is located in ever the WDT oscillator will continue to run and keep the
Application Note HA0075E on the Holtek website. watchdog function active. However, as the WDT will
consume a certain amount of power when in the Power
Down Mode, for low power applications, it may be desir-
able to disable the WDT oscillator by configuration op-
tion.
Watchdog Timer
The Watchdog Timer is provided to prevent program tem cannot be restarted by the WDT and can only be re-
malfunctions or sequences from jumping to unknown lo- started using external signals. For systems that operate
cations, due to certain uncontrollable external events in noisy environments, using the internal WDT oscillator
such as electrical noise. It operates by providing a de- is therefore the recommended choice.
vice reset when the WDT counter overflows. The WDT
Under normal program operation, a WDT time-out will
clock is supplied by one of two sources selected by con-
initialise a device reset and set the status bit TO. How-
figuration option: its own self-contained dedicated inter-
ever, if the system is in the Power Down Mode, when a
nal WDT oscillator, or the instruction clock which is the WDT time-out occurs, only the Program Counter and
system clock divided by 4. Note that if the WDT configu- Stack Pointer will be reset. Three methods can be
ration option has been disabled, then any instruction re- adopted to clear the contents of the WDT and the WDT
lating to its operation will result in no operation. prescaler. The first is an external hardware reset, which
The internal WDT oscillator has an approximate period means a low level on the RES pin, the second is using
of 65ms at a supply voltage of 5V. If selected, it is first di- the watchdog software instructions and the third is via a
vided by 256 via an 8-stage counter to give a nominal ²HALT² instruction.
period of 17ms. Note that this period can vary with VDD,
There are two methods of using software instructions to
temperature and process variations. For longer WDT
clear the Watchdog Timer, one of which must be chosen
time-out periods the WDT prescaler can be utilized. By
by configuration option. The first option is to use the sin-
writing the required value to bits 0, 1 and 2 of the WDTS
gle ²CLR WDT² instruction while the second is to use
register, known as WS0, WS1 and WS2, longer time-out
the two commands ²CLR WDT1² and ²CLR WDT2². For
periods can be achieved. With WS0, WS1 and WS2 all
the first option, a simple execution of ²CLR WDT² will
equal to 1, the division ratio is 1:128 which gives a maxi-
mum time-out period of about 2.1s. clear the WDT while for the second option, both ²CLR
WDT1² and ²CLR WDT2² must both be executed to
A configuration option can select the instruction clock,
successfully clear the WDT. Note that for this second
which is the system clock divided by 4, as the WDT clock
option, if ²CLR WDT1² is used to clear the WDT, succes-
source instead of the internal WDT oscillator. If the in-
sive executions of this instruction will have no effect,
struction clock is used as the clock source, it must be
only the execution of a ²CLR WDT2² instruction will
noted that when the system enters the Power Down
clear the WDT. Similarly, after the ²CLR WDT2² instruc-
Mode, as the system clock is stopped, then the WDT
clock source will also be stopped. Therefore the WDT tion has been executed, only a successive ²CLR WDT1²
will lose its protecting purposes. In such cases the sys- instruction can clear the Watchdog Timer.
b 7 b 0
W S 2 W S 1 W S 0 W D T S R e g is te r
W D T p r e s c a le r r a te s e le c t
W S 2 W S 1 W S 0 W D T R a te
0 0 0 1 :1
0 0 1 1 :2
0 1 0 1 :4
0 1 1 1 :8
1 0 0 1 :1 6
1 0 1 1 :3 2
1 1 0 1 :6 4
1 1 1 1 :1 2 8
N o t u s e d
C L R W D T 1 F la g C le a r W D T T y p e
C L R W D T 2 F la g C o n fig u r a tio n O p tio n
1 o r 2 In s tr u c tio n s
C L R
C L R
fS Y S /4 W D T C lo c k S o u r c e 8 - b it C o u n te r
7 - b it P r e s c a le r
W D T O s c illa to r C o n fig u r a tio n O p tio n (¸ 2 5 6 )
W D T C lo c k S o u r c e
8 -to -1 M U X W S 0 ~ W S 2
W D T T im e - o u t
Watchdog Timer
Configuration Options
Configuration options refer to certain options within the MCU that are programmed into the Flash Type Program Mem-
ory device during the programming process. During the development process, these options are selected using the
HT-IDE software development tools. As these options are programmed into the device using the hardware program-
ming tools, once they are selected they cannot be changed later by the application software.
All options must be defined for proper system function, the details of which are shown in the table.
No. Options
1 Watchdog Timer: enable or disable
2 Watchdog Timer clock source: WDT oscillator or fSYS/4
3 CLRWDT instructions: 1 or 2 instructions
4 PA0~PA7: wake-up enable or disable (bit option)
5 PA, PB and PC: pull-high enable or disable (port numbers are device dependent)
6 PA input type: CMOS or Schmitt Trigger (HT48F06E excepted)
7 Buzzer function: enable or normal I/O
8 System oscillator: Crystal or RC
9 LVR function: enable or disable
Application Circuits
The following application circuit although based around the HT48F30E device equally apply to the other devices.
V D D
V D D
P A 0 ~ P A 7 V D D
R e s e t P B 2 ~ P B 7
1 0 0 k W
C ir c u it R O S C
R C S y s te m O s c illa to r
P C 0 ~ P C 5
0 .1 m F O S C 1 2 4 k W < R O S C < 1 M W
R E S 4 7 0 p F
P B 0 /B Z
O S C 2
0 .1 m F P B 1 /B Z N M O S o p e n d r a in
T M R 0 C 1
O S C 1 C r y s ta l/C e ra m ic
V S S T M R 1 S y s te m O s c illa to r
R 1
P G 0 /IN T C 2 F o r d e ta ils re g a r d in g
O S C O S C 1 O S C 2 C 1 , C 2 a n d R 1 s e e
C ir c u it O s c illa to r S e c tio n
O S C 2
H T 4 8 F 3 0 E O S C C ir c u it
Instruction Set
Introduction subtract instruction mnemonics to enable the necessary
arithmetic to be carried out. Care must be taken to en-
Central to the successful operation of any
sure correct handling of carry and borrow data when re-
microcontroller is its instruction set, which is a set of pro-
sults exceed 255 for addition and less than 0 for
gram instruction codes that directs the microcontroller to
subtraction. The increment and decrement instructions
perform certain operations. In the case of Holtek
INC, INCA, DEC and DECA provide a simple means of
microcontrollers, a comprehensive and flexible set of
increasing or decreasing by a value of one of the values
over 60 instructions is provided to enable programmers
in the destination specified.
to implement their application with the minimum of pro-
gramming overheads.
Logical and Rotate Operations
For easier understanding of the various instruction
The standard logical operations such as AND, OR, XOR
codes, they have been subdivided into several func-
and CPL all have their own instruction within the Holtek
tional groupings.
microcontroller instruction set. As with the case of most
instructions involving data manipulation, data must pass
Instruction Timing
through the Accumulator which may involve additional
Most instructions are implemented within one instruc- programming steps. In all logical data operations, the
tion cycle. The exceptions to this are branch, call, or ta- zero flag may be set if the result of the operation is zero.
ble read instructions where two instruction cycles are Another form of logical data manipulation comes from
required. One instruction cycle is equal to 4 system the rotate instructions such as RR, RL, RRC and RLC
clock cycles, therefore in the case of an 8MHz system which provide a simple means of rotating one bit right or
oscillator, most instructions would be implemented left. Different rotate instructions exist depending on pro-
within 0.5ms and branch or call instructions would be im- gram requirements. Rotate instructions are useful for
plemented within 1ms. Although instructions which re- serial port programming applications where data can be
quire one more cycle to implement are generally limited rotated from an internal register into the Carry bit from
to the JMP, CALL, RET, RETI and table read instruc- where it can be examined and the necessary serial bit
tions, it is important to realize that any other instructions set high or low. Another application where rotate data
which involve manipulation of the Program Counter Low operations are used is to implement multiplication and
register or PCL will also take one more cycle to imple- division calculations.
ment. As instructions which change the contents of the
PCL will imply a direct jump to that new address, one Branches and Control Transfer
more cycle will be required. Examples of such instruc- Program branching takes the form of either jumps to
tions would be ²CLR PCL² or ²MOV PCL, A². For the specified locations using the JMP instruction or to a sub-
case of skip instructions, it must be noted that if the re- routine using the CALL instruction. They differ in the
sult of the comparison involves a skip operation then sense that in the case of a subroutine call, the program
this will also take one more cycle, if no skip is involved must return to the instruction immediately when the sub-
then only one cycle is required. routine has been carried out. This is done by placing a
return instruction RET in the subroutine which will cause
Moving and Transferring Data
the program to jump back to the address right after the
The transfer of data within the microcontroller program CALL instruction. In the case of a JMP instruction, the
is one of the most frequently used operations. Making program simply jumps to the desired location. There is
use of three kinds of MOV instructions, data can be no requirement to jump back to the original jumping off
transferred from registers to the Accumulator and point as in the case of the CALL instruction. One special
vice-versa as well as being able to move specific imme- and extremely useful set of branch instructions are the
diate data directly into the Accumulator. One of the most conditional branches. Here a decision is first made re-
important data transfer applications is to receive data garding the condition of a certain data memory or indi-
from the input ports and transfer data to the output ports. vidual bits. Depending upon the conditions, the program
will continue with the next instruction or skip over it and
Arithmetic Operations jump to the following instruction. These instructions are
The ability to perform certain arithmetic operations and the key to decision making and branching within the pro-
data manipulation is a necessary feature of most gram perhaps determined by the condition of certain in-
microcontroller applications. Within the Holtek put switches or by the condition of internal data bits.
microcontroller instruction set are a range of add and
Note: 1. For skip instructions, if the result of the comparison involves a skip then two cycles are required,
if no skip takes place only one cycle is required.
2. Any instruction which changes the contents of the PCL will also require 2 cycles for execution.
3. For the ²CLR WDT1² and ²CLR WDT2² instructions the TO and PDF flags may be affected by
the execution status. The TO and PDF flags are cleared after both ²CLR WDT1² and
²CLR WDT2² instructions are consecutively executed. Otherwise the TO and PDF flags
remain unchanged.
Instruction Definition
DAA [m] Decimal-Adjust ACC for addition with result in Data Memory
Description Convert the contents of the Accumulator value to a BCD ( Binary Coded Decimal) value re-
sulting from the previous addition of two BCD variables. If the low nibble is greater than 9 or
if AC flag is set, then a value of 6 will be added to the low nibble. Otherwise the low nibble
remains unchanged. If the high nibble is greater than 9 or if the C flag is set, then a value of
6 will be added to the high nibble. Essentially, the decimal conversion is performed by add-
ing 00H, 06H, 60H or 66H depending on the Accumulator and flag conditions. Only the C
flag may be affected by this instruction which indicates that if the original BCD sum is
greater than 100, it allows multiple precision decimal addition.
Operation [m] ¬ ACC + 00H or
[m] ¬ ACC + 06H or
[m] ¬ ACC + 60H or
[m] ¬ ACC + 66H
Affected flag(s) C
NOP No operation
Description No operation is performed. Execution continues with the next instruction.
Operation No operation
Affected flag(s) None
RET A,x Return from subroutine and load immediate data to ACC
Description The Program Counter is restored from the stack and the Accumulator loaded with the
specified immediate data. Program execution continues at the restored address.
Operation Program Counter ¬ Stack
ACC ¬ x
Affected flag(s) None
RLCA [m] Rotate Data Memory left through Carry with result in ACC
Description Data in the specified Data Memory and the carry flag are rotated left by 1 bit. Bit 7 replaces
the Carry bit and the original carry flag is rotated into the bit 0. The rotated result is stored in
the Accumulator and the contents of the Data Memory remain unchanged.
Operation ACC.(i+1) ¬ [m].i; (i = 0~6)
ACC.0 ¬ C
C ¬ [m].7
Affected flag(s) C
RRCA [m] Rotate Data Memory right through Carry with result in ACC
Description Data in the specified Data Memory and the carry flag are rotated right by 1 bit. Bit 0 re-
places the Carry bit and the original carry flag is rotated into bit 7. The rotated result is
stored in the Accumulator and the contents of the Data Memory remain unchanged.
Operation ACC.i ¬ [m].(i+1); (i = 0~6)
ACC.7 ¬ C
C ¬ [m].0
Affected flag(s) C
SBCM A,[m] Subtract Data Memory from ACC with Carry and result in Data Memory
Description The contents of the specified Data Memory and the complement of the carry flag are sub-
tracted from the Accumulator. The result is stored in the Data Memory. Note that if the re-
sult of subtraction is negative, the C flag will be cleared to 0, otherwise if the result is
positive or zero, the C flag will be set to 1.
Operation [m] ¬ ACC - [m] - C
Affected flag(s) OV, Z, AC, C
SDZA [m] Skip if decrement Data Memory is zero with result in ACC
Description The contents of the specified Data Memory are first decremented by 1. If the result is 0, the
following instruction is skipped. The result is stored in the Accumulator but the specified
Data Memory contents remain unchanged. As this requires the insertion of a dummy in-
struction while the next instruction is fetched, it is a two cycle instruction. If the result is not
0, the program proceeds with the following instruction.
Operation ACC ¬ [m] - 1
Skip if ACC = 0
Affected flag(s) None
SIZA [m] Skip if increment Data Memory is zero with result in ACC
Description The contents of the specified Data Memory are first incremented by 1. If the result is 0, the
following instruction is skipped. The result is stored in the Accumulator but the specified
Data Memory contents remain unchanged. As this requires the insertion of a dummy in-
struction while the next instruction is fetched, it is a two cycle instruction. If the result is not
0 the program proceeds with the following instruction.
Operation ACC ¬ [m] + 1
Skip if ACC = 0
Affected flag(s) None
SUBM A,[m] Subtract Data Memory from ACC with result in Data Memory
Description The specified Data Memory is subtracted from the contents of the Accumulator. The result
is stored in the Data Memory. Note that if the result of subtraction is negative, the C flag will
be cleared to 0, otherwise if the result is positive or zero, the C flag will be set to 1.
Operation [m] ¬ ACC - [m]
Affected flag(s) OV, Z, AC, C
TABRDC [m] Read table (current page) to TBLH and Data Memory
Description The low byte of the program code (current page) addressed by the table pointer (TBLP) is
moved to the specified Data Memory and the high byte moved to TBLH.
Operation [m] ¬ program code (low byte)
TBLH ¬ program code (high byte)
Affected flag(s) None
TABRDL [m] Read table (last page) to TBLH and Data Memory
Description The low byte of the program code (last page) addressed by the table pointer (TBLP) is
moved to the specified Data Memory and the high byte moved to TBLH.
Operation [m] ¬ program code (low byte)
TBLH ¬ program code (high byte)
Affected flag(s) None
Package Information
16-pin NSOP (150mil) Outline Dimensions
1 6 9
A B
1 8
C '
G
D H
E F a
Dimensions in mil
Symbol
Min. Nom. Max.
A 228 ¾ 244
B 149 ¾ 157
C 14 ¾ 20
C¢ 386 ¾ 394
D 53 ¾ 69
E ¾ 50 ¾
F 4 ¾ 10
G 22 ¾ 28
H 4 ¾ 12
a 0° ¾ 10°
1 8 1 0
B
1 9
D
a
E G I
F
Dimensions in mil
Symbol
Min. Nom. Max.
A 895 ¾ 915
B 240 ¾ 260
C 125 ¾ 135
D 125 ¾ 145
E 16 ¾ 20
F 50 ¾ 70
G ¾ 100 ¾
H 295 ¾ 315
I 335 ¾ 375
a 0° ¾ 15°
1 8 1 0
A B
1 9
C '
G
D H
E F a
Dimensions in mil
Symbol
Min. Nom. Max.
A 394 ¾ 419
B 290 ¾ 300
C 14 ¾ 20
C¢ 447 ¾ 460
D 92 ¾ 104
E ¾ 50 ¾
F 4 ¾ ¾
G 32 ¾ 38
H 4 ¾ 12
a 0° ¾ 10°
2 0 1 1
A B
1 1 0
C '
G
D H
E F a
Dimensions in mil
Symbol
Min. Nom. Max.
A 291 ¾ 323
B 196 ¾ 220
C 9 ¾ 15
C¢ 271 ¾ 295
D 65 ¾ 73
E ¾ 25.59 ¾
F 4 ¾ 10
G 26 ¾ 34
H 4 ¾ 8
a 0° ¾ 8°
2 4 1 3
B
1 1 2
D
a I
E F G
Dimensions in mil
Symbol
Min. Nom. Max.
A 1235 ¾ 1265
B 255 ¾ 265
C 125 ¾ 135
D 125 ¾ 145
E 16 ¾ 20
F 50 ¾ 70
G ¾ 100 ¾
H 295 ¾ 315
I 345 ¾ 360
a 0° ¾ 15°
2 4 1 3
A B
1 1 2
C '
G
D H
E F a
Dimensions in mil
Symbol
Min. Nom. Max.
A 394 ¾ 419
B 290 ¾ 300
C 14 ¾ 20
C¢ 590 ¾ 614
D 92 ¾ 104
E ¾ 50 ¾
F 4 ¾ ¾
G 32 ¾ 38
H 4 ¾ 12
a 0° ¾ 10°
2 8 1 5
B
1 1 4
D
a I
E F G
Dimensions in mil
Symbol
Min. Nom. Max.
A 1375 ¾ 1395
B 278 ¾ 298
C 125 ¾ 135
D 125 ¾ 145
E 16 ¾ 20
F 50 ¾ 70
G ¾ 100 ¾
H 295 ¾ 315
I 330 ¾ 375
a 0° ¾ 15°
2 8 1 5
A B
1 1 4
C '
G
D H
E F a
Dimensions in mil
Symbol
Min. Nom. Max.
A 394 ¾ 419
B 290 ¾ 300
C 14 ¾ 20
C¢ 697 ¾ 713
D 92 ¾ 104
E ¾ 50 ¾
F 4 ¾ ¾
G 32 ¾ 38
H 4 ¾ 12
a 0° ¾ 10°
D
T 2
A B C
T 1
SOP 18W
SOP 24W
F
W
B 0
C
D 1 P
K 0
A 0
SOP 18W
SOP 24W