HYNIX GMS81516BTQ

HYUNDAI MICRO ELECTRONICS
8-BIT SINGLE-CHIP MICROCONTROLLERS
GMS81508B
GMS81516B
GMS81524B
User’s Manual (Ver. 1.04)
+<81'$,
MicroElectronics
Semiconductor Group of Hyundai Electronics Industrial Co., Ltd.
Version 1.04
Published by
MCU Application Team
1999 HYUNDAI Micro Electronics All right reserved.
Additional information of this manual may be served by HYUNDAI Micro Electronics offices in Korea or Distributors and
Representatives listed at address directory.
HYUNDAI Micro Electronics reserves the right to make changes to any information here in at any time without notice.
The information, diagrams and other data in this manual are correct and reliable; however, HYUNDAI Micro Electronics is
in no way responsible for any violations of patents or other rights of the third party generated by the use of this manual.
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Table of Contents
1. OVERVIEW............................................1
Transmission/Receiving Timing ...................... 50
The Serial I/O operation by SRDY pin ............ 50
The method of Serial I/O ................................. 51
The Method to Test Correct Transmission ...... 51
Description .........................................................1
Features .............................................................1
Development Tools ............................................2
Ordering Information ..........................................2
14. PWM OUTPUT ..................................52
2. BLOCK DIAGRAM .................................3
15. BUZZER FUNCTION .........................55
3. PIN ASSIGNMENT ................................4
16. INTERRUPTS ....................................57
4. PACKAGE DIAGRAM ............................6
6. PORT STRUCTURES..........................10
Interrupt Sequence .......................................... 59
BRK Interrupt .................................................. 60
Multi Interrupt .................................................. 61
External Interrupt ............................................. 61
7. ELECTRICAL CHARACTERISTICS ....12
17. WATCHDOG TIMER .........................64
Absolute Maximum Ratings .............................12
Recommended Operating Conditions ..............12
A/D Converter Characteristics .........................12
DC Electrical Characteristics ...........................13
AC Characteristics ...........................................14
Serial Interface Timing Characteristics ............15
Typical Characteristic Curves ..........................16
18. POWER DOWN OPERATION...........66
5. PIN FUNCTION......................................8
8. MEMORY ORGANIZATION.................18
Registers ..........................................................18
Program Memory .............................................21
Data Memory ...................................................24
Addressing Mode .............................................27
STOP Mode .................................................... 66
Minimizing Current Consumption .................... 67
19. OSCILLATOR CIRCUIT.....................69
20. RESET ...............................................70
External Reset Input ........................................ 70
Watchdog Timer Reset ................................... 70
21. POWER FAIL PROCESSOR.............71
22. OTP PROGRAMMING.......................73
9. I/O PORTS ...........................................31
How to Program .............................................. 73
Pin Function .................................................... 73
Programming Specification ............................. 76
10. BASIC INTERVAL TIMER..................34
A. CONTROL REGISTER LIST .................. i
11. TIMER/EVENT COUNTER ................36
B. SOFTWARE EXAMPLE ....................... iii
8-bit Timer / Counter Mode ..............................38
16-bit Timer / Counter Mode ............................42
8-bit Capture Mode ..........................................43
16-bit Capture Mode ........................................44
7-segment LED display .................................... iii
C. INSTRUCTION....................................viii
12. ANALOG DIGITAL CONVERTER......46
Terminology List .............................................. viii
Instruction Map ..................................................ix
Instruction Set ....................................................x
13. SERIAL COMMUNICATION ..............48
D. MASK ORDER SHEET ...................... xvi
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
GMS81508B/16B/24B
CMOS SINGLE-CHIP 8-BIT MICROCONTROLLER
WITH A/D CONVERTER
1. OVERVIEW
1.1 Description
The GMS81508B/16B/24B are advanced CMOS 8-bit microcontrollers with 8K/16K/24K bytes of ROM. The device is one
of GMS800 family. This device using the GMS800 family CPU includes several peripheral functions such as Timer, A/D
converter, Programmable buzzer driver, Serial I/O communication, Pulse Width Modulation function, etc. The RAM, ROM,
and I/O are placed on the same memory map in addition to simple instruction set.
The GMS815xxB is functionally 100% compatible with earier GMS81508/16 or GMS81508A/16A, however better characteristics have such as strong EMS, wide operating voltage, temperature, frequency and fast programming time for the OTP.
Device name
ROM Size
RAM Size
OTP
GMS81508B
8K bytes
448 bytes
GMS81516BT
GMS81516B
16K bytes
448 bytes
GMS81516BT
GMS81524B
24K bytes
448 bytes
GMS81524BT
Package
64SDIP, 64MQFP,
64LQFP
1.2 Features
• 8K/16K/24K Bytes On-chip Program Memory
• 52 I/O Ports, 4 Input Ports
• 448 Bytes of On-chip Data RAM
(Included stack memory)
• Twelve Interrupt sources
- Basic Interval Timer: 1
- External input: 4
- Timer/Event counter: 4
- ADC: 1
- Serial Interface: 1
- WDT: 1
• Minimum Instruction Execution Time
0.5µ
µs at 8MHz
• One 8-bit Basic Interval Timer
• Four 8-bit Timer/Event counter
or Two 16-bit Timer/Event counter
• One 6-bit Watchdog timer
• Eight channel 8-bit A/D converter
• Two channel 8-bit PWM
• One 8-bit Serial Communication Interface
• Four External Interrupt input ports
• Buzzer Driving port
- 500Hz ~ [email protected]
• Built in Noise Immunity Circuit
- Noise filter
- Power fail processor
• Power Down Mode
- STOP mode
• 2.2V to 5.5V Wide Operating Range
• 1~10MHz Wide Operating Frequency
• 64SDIP, 64MQFP, 64LQFP package types
• Available 16K, 24K bytes OTP version
DEC. 1999 Ver 1.04
1
GMS81508B/16B/24B
HYUNDAI MicroElectronics
1.3 Development Tools
The GMS815xxB are supported by a full-featured macro
assembler, an in-circuit emulator CHOICE-Jr.TM and OTP
programmers. There are third different type programmers
such as emulator add-on board type, single type, gang
type. For mode detail, Refer to “22. OTP PROGRAMMING” on page 73. Macro assembler operates under the
MS-Windows 95/98TM.
Please contact sales part of Hyundai MicroElectronics.
1.4 Ordering Information
Device name
ROM Size
RAM size
Package
Mask version
GMS81508B K
GMS81508B Q
GMS81508B LQ
GMS81516B K
GMS81516B Q
GMS81516B LQ
GMS81524B K
GMS81524B Q
GMS81524B LQ
8K bytes
8K bytes
8K bytes
16K bytes
16K bytes
16K bytes
24K bytes
24K bytes
24K bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
64SDIP
64MQFP
64LQFP
64SDIP
64MQFP
64LQFP
64SDIP
64MQFP
64LQFP
OTP version
GMS81516BT K
GMS81516BT Q
GMS81516BT LQ
GMS81524BT K
GMS81524BT Q
GMS81524BT LQ
16K bytes OTP
16K bytes OTP
16K bytes OTP
24K bytes OTP
24K bytes OTP
24K bytes OTP
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
448 bytes
64SDIP
64MQFP
64LQFP
64SDIP
64MQFP
64LQFP
2
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
2. BLOCK DIAGRAM
AVDD
AVSS
ADC Power
Supply
PSW
R00~R07
R10~R17
R20~R27
R30~R37
R0
R1
R2
R3
A
ALU
X
Y
Stack Pointer
PC
Data Memory
(448 bytes)
Program
Memory
Interrupt Controller
Data Table
System controller
System
Clock Controller
Timing generator
8-bit Basic
Interval
Timer
Watchdog
Timer
8-bit
Timer/
Counter
8-bit serial
Interface
8-bit PWM
PC
8-bit
ADC
Clock Generator
VDD
VSS
XIN
XOUT
RESET
TEST
R4
Power
Supply
DEC. 1999 Ver 1.04
R40 / INT0
R41 / INT1
R42 / INT2
R43 / INT3
R44 / EC0
R45 / EC2
R46 / T1O
R47 / T3O
Buzzer
Driver
R5
R50 / SIN
R51 / SOUT
R52 / SCLK
R53 / SRDY
R54 / WDTO
R55 / BUZ
R56 / PWM0
R57 / PWM1
R6
R60 / AN0
R61 / AN1
R62 / AN2
R63 / AN3
R64 / AN4
R65 / AN5
R66 / AN6
R67 / AN7
3
GMS81508B/16B/24B
HYUNDAI MicroElectronics
3. PIN ASSIGNMENT
64SDIP
(Top View)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
R30
R31
R32
R33
R34
R35
R36
R37
R00
R01
R02
R03
R04
R05
R06
R07
R10
R11
R12
R13
R14
R15
R16
R17
R20
R21
R22
R23
R24
R25
R26
R27
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
52
53
54
55
56
57
58
59
60
61
62
63
64
GMS81508B/16B/24B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
R36
R35
R34
R33
R32
R31
R30
VDD
TEST
AVSS
AVDD
R67
R66
32
31
30
29
28
27
26
25
24
23
22
21
20
R22
R23
R24
R25
R26
R27
VSS
XOUT
XIN
RESET
R40
INT0
R41
INT1
R42
INT2
AN5
AN4
AN3
AN2
AN1
AN0
PWM1
PWM0
BUZ
WDTO
SRDY
SCLK
SOUT
SIN
T3O
T1O
EC2
EC0
INT3
R65
R64
R63
R62
R61
R60
R57
R56
R55
R54
R53
R52
R51
R50
R47
R46
R45
R44
R43
AN7
AN6
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
R37
R00
R01
R02
R03
R04
R05
R06
R07
R10
R11
R12
R13
R14
R15
R16
R17
R20
R21
64MQFP
(Top View)
GMS81508B/16B/24B
AN7
AN6
AN5
AN4
AN3
AN2
AN1
AN0
PWM1
PWM0
BUZ
WDTO
SRDY
SCLK
SOUT
SIN
T3O
T1O
EC2
EC0
INT3
INT2
INT1
INT0
VDD
TEST
AVSS
AVDD
R67
R66
R65
R64
R63
R62
R61
R60
R57
R56
R55
R54
R53
R52
R51
R50
R47
R46
R45
R44
R43
R42
R41
R40
RESET
XIN
XOUT
VSS
4
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
R00
R01
R02
R03
R04
R05
R06
R07
R10
R11
R12
R13
R14
R15
R16
R17
64LQFP
(Top View)
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
GMS81508B/16B/24B
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
R20
R21
R22
R23
R24
R25
R26
R27
VSS
XOUT
XIN
RESET
R40
R41
R42
R43
INT0
INT1
INT2
INT3
AN3
AN2
AN1
AN0
PWM1
PWM0
BUZ
WDTO
SRDY
SCLK
SOUT
SIN
T3O
T1O
EC2
EC0
R63
R62
R61
R60
R57
R56
R55
R54
R53
R52
R51
R50
R47
R46
R45
R44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
AN7
AN6
AN5
AN4
R37
R36
R35
R34
R33
R32
R31
R30
VDD
TEST
AVSS
AVDD
R67
R66
R65
R64
DEC. 1999 Ver 1.04
5
GMS81508B/16B/24B
HYUNDAI MicroElectronics
4. PACKAGE DIAGRAM
64SDIP
UNIT: INCH
0.750 Typ.
min. 0.015
0.205 max.
2.280
2.260
0.070 Typ.
0.140
0.120
0.050
0.030
0.022
0.016
0.680
0.660
0.012
0.008
0-15°
64MQFP
24.15
23.65
20.10
19.90
18.15
17.65
14.10
13.90
UNIT: MM
0.36
0.10
SEE DETAIL “A”
3.18 max.
1.95
REF
0.50
0.35
6
1.03
0.73
0.23
0.13
0-7°
1.00 Typ.
DETAIL “A”
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
64LQFP
GMS81508B/16B/24B
12.00 Typ.
10.00 Typ.
1.45
1.35
10.00 Typ.
12.00 Typ.
UNIT: MM
0-7°
0.15
0.05
SEE DETAIL “A”
1.60 max.
0.38
0.22
DEC. 1999 Ver 1.04
0.50 Typ.
0.75
0.45
1.00
REF
DETAIL “A”
7
GMS81508B/16B/24B
HYUNDAI MicroElectronics
5. PIN FUNCTION
VDD: Supply voltage.
used as outputs or inputs.
VSS: Circuit ground.
In addition, R5 serves the functions of the various following special features.
TEST: Used for Test Mode. For normal operation, it
should be connected to VDD.
RESET: Reset the MCU.
XIN: Input to the inverting oscillator amplifier and input to
the internal main clock operating circuit.
XOUT: Output from the inverting oscillator amplifier.
R00~R07: R0 is an 8-bit CMOS bidirectional I/O port. R0
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
Port pin
R50
R51
R52
R53
R54
R55
R56
R57
Alternate function
SIN (Serial data input)
SOUT (Serial data output)
SCLK (Serial clock)
SRDY (Serial ready)
WDTO (Watchdog Timer output)
BUZ (Buzzer driver output)
PWM0 (PWM output 0)
PWM1 (PWM output 1)
R10~R17: R1 is an 8-bit CMOS bidirectional I/O port. R1
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
R60~R67: R6 is an 8-bit CMOS bidirectional I/O port. R6
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
R20~R27: R2 is an 8-bit CMOS bidirectional I/O port. R2
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
In addition, R6 is shared with the ADC input.
R30~R37: R3 is an 8-bit CMOS bidirectional I/O port. R3
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
R40~R47: R4 is an 8-bit CMOS bidirectional I/O port. R4
pins 1 or 0 written to the Port Direction Register can be
used as outputs or inputs.
In addition, R4 serves the functions of the various following special features.
Port pin
R40
R41
R42
R43
R44
R45
R46
R47
Alternate function
INT0 (External interrupt 0)
INT1 (External interrupt 1)
INT2 (External interrupt 2)
INT3 (External interrupt 3)
EC0 (Event counter input 0)
EC2 (Event counter input 2)
T1O (Timer/Counter 1 output)
T3O (Timer/Counter 3 output)
Port pin
R60
R61
R62
R63
R64
R66
R66
R67
Alternate function
AN0 (Analog Input 0)
AN1 (Analog Input 1)
AN2 (Analog Input 2)
AN3 (Analog Input 3)
AN4 (Analog Input 4)
AN5 (Analog Input 5)
AN6 (Analog Input 6)
AN7 (Analog Input 7)
Note: On the MDS Choice, when the MCU is RESET, R60
can not be used digital input port. For more detail, refer to
"9. I/O PORTS" on page 31.
AVDD: Supply voltage to the ladder resistor of ADC circuit. To enhance the resolution of analog to digital converter, use independent power source as well as possible, other
than digital power source.
AVSS: ADC circuit ground.
R50~R57: R5 is an 8-bit CMOS bidirectional I/O port. R5
pins 1 or 0 written to the Port Direction Register can be
8
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Function
PIN NAME
In/Out
Basic
Alternate
VDD
-
Supply voltage
VSS
-
Circuit ground
TEST
I
Controls test mode of the chip,
For normal operation, it should be connected at VDD.
RESET
I
Reset signal input
XIN
I
Oscillation input
XOUT
O
Oscillation output
R00~R07
I/O
8-bit general I/O ports
R10~R17
I/O
8-bit general I/O ports
R20~R27
I/O
8-bit general I/O ports
R30~R37
I/O
8-bit general I/O ports
R40 (INT0)
I/O (I)
External interrupt 0 input
R41 (INT1)
I/O (I)
External interrupt 1 input
R42 (INT2)
I/O (I)
External interrupt 2 input
R43 (INT3)
I/O (I)
R44 (EC0)
I/O (I)
R45 (EC2)
I/O (I)
Timer/Counter 2 external input
R46 (T1O)
I/O (O)
Timer/Counter 1 output
R47 (T3O)
I/O (O)
Timer/Counter 3 output
R50 (SIN)
I/O (I)
Serial data input
R51 (SOUT)
I/O (O)
Serial data output
R52 (SCLK)
I/O (I/O)
Serial clock I/O
R53 (SRDY)
I/O (I/O)
R54 (WDTO)
I/O (O)
R55 (BUZ)
I/O (O)
R56 (PWM0)
I/O (O)
R57 (PWM1)
I/O (O)
R60~R63 (AN0~AN3)
I (I)
R64~R67 (AN4~AN7)
I/O (I)
8-bit general I/O ports
8-bit general I/O ports
External interrupt 3 input
Timer/Counter 0 external input
Receive enable I/O
Watchdog timer overflow output
Buzzer driving output
PWM pulse output
General input ports
General I/O ports
AVSS
-
Ground level input pin for ADC
AVDD
-
Supply voltage input pin for ADC
Analog voltage input
Table 5-1 Port Function Description
DEC. 1999 Ver 1.04
9
GMS81508B/16B/24B
HYUNDAI MicroElectronics
6. PORT STRUCTURES
R52/SCLK
R00~R07, R10~R17, R20~R27, R30~37
VDD
Selection
VDD
Data Reg.
SCK Output
Data Bus
M UX
Pin
Dir.
Reg.
Pin
Data Reg.
VSS
Data Bus
MUX
Rd
Direction
Reg.
VSS
M UX
exck
MUX
R40/INT0, R41/INT1, R42/INT2, R43/INT3, R44/
EC0, R45/EC2, R50/SIN
Rd
SCK Input
PMR Selection
VDD
Data Bus
Data Reg.
S53/SRDY
Direction
Reg.
Pin
Selection
SRDY
VSS
M UX
VDD
SRDY Output
MUX
Rd
EX) INT0
Alternate Function
Pin
Data Bus
Data Reg.
R46/T1O, R47/T3O, R51/SOUT, R54/WDTO
R55BUZ, R56/PWM0, R57/PWM1
Direction
Reg.
VSS
MUX
Selection
VDD
Rd
Secondary function
M UX
SRDY Input
Pin
Data Bus
Data Reg.
VSS
Direction
Reg.
M UX
Rd
10
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
R60/AN0 ~ R63/AN3
RESET
VDD
VDD
RESET
Data bus
Rd
VSS
To A/D converter
VSS
R64/AN7 ~ R67/AN7
TEST
VDD
VDD
Data Bus
OTP version: disconnected
Mask version: connected
TEST
Data Reg.
Pin
Dir.
Reg.
VSS
VSS
MUX
Rd
To A/D converter
XIN, XOUT
VDD
XIN
VSS
XOUT
VSS
Stop
DEC. 1999 Ver 1.04
11
GMS81508B/16B/24B
HYUNDAI MicroElectronics
7. ELECTRICAL CHARACTERISTICS
7.1 Absolute Maximum Ratings
Supply voltage ............................................. -0.3 to +7.0 V
Maximum current (ΣIOL) ...................................... 100 mA
Storage Temperature .................................. -40 to +125 °C
Maximum current (ΣIOH)........................................ 50 mA
Voltage on any pin with respect to Ground (VSS)
..................................................................-0.3 to VDD+0.3
Note: Stresses above those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of
the device at any other conditions above those indicated in
the operational sections of this specification is not implied.
Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
Maximum current out of VSS pin .......................... 150 mA
Maximum current into VDD pin .............................. 80 mA
Maximum current sunk by (IOL per I/O Pin) .......... 20 mA
Maximum output current sourced by (IOH per I/O Pin)
................................................................................... 8 mA
7.2 Recommended Operating Conditions
Specifications
Parameter
Supply Voltage
Operating Frequency
Operating Temperature
Symbol
Condition
VDD
fXIN=1 ~ 10 MHz
fXIN=1 ~ 8 MHz
fXIN=1 ~ 4 MHz
fXIN
VDD=4.5~5.5V
VDD=2.7~5.5V
VDD=2.2~5.5V
TOPR
Unit
Normal Version
Temperature Extention Version
Min.
Max.
4.5
2.7
2.2
5.5
5.5
5.5
V
1
1
1
10
8
4
MHz
-20
-40
85
85
°C
7.3 A/D Converter Characteristics
(TA=25°C, VSS=0V, [email protected]=8MHz, [email protected]=4MHz)
Specifications
Parameter
Max.
Symbol
Min.
Typ.1
Unit
fXIN=4MHz
fXIN=8MHz
Analog Input Voltage Range
VAIN
VSS
-
AVDD
AVDD
V
Non-linearity Error
NNLE
-
±1.0
±1.5
±1.5
LSB
Differential Non-linearity Error
NDNLE
-
±1.0
±1.5
±1.5
LSB
Zero Offset Error
NZOE
-
±0.5
±1.5
±1.5
LSB
Full Scale Error
NFSE
-
±0.35
±0.5
±0.5
LSB
Gain Error
NGE
-
±1.0
±1.5
±1.5
LSB
Overall Accuracy
NACC
-
±1.0
±1.5
±1.5
LSB
AVDD Input Current
IREF
-
0.5
1.0
1.0
mA
TCONV
-
-
40
20
µs
Conversion Time
12
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Specifications
Parameter
Max.
Symbol
AVDD
Analog Power Supply Input Range
Min.
Typ.1
0.9VDD
VDD
fXIN=4MHz
Unit
fXIN=8MHz
1.1VDD
V
1. Data in “Typ” column is at 25°C unless otherwise stated. These parameters are for design guidance only and are not tested.
7.4 DC Electrical Characteristics
(TA=-20~85°C, VDD=2.7~5.5V, Ta= -20~85°C, fXIN=8MHz, VSS=0V),
Specifications
Parameter
Input High Voltage
Symbol
VIH1
VIH2
Input Low Voltage
VIL1
VIL2
Condition
VDD=4.5
VDD=2.7
VDD=4.5
VDD=2.7
Unit
Min.
Typ.1
Max.
XIN, RESET,
R4, R5, R6
0.8VDD
-
VDD+0.3
R0, R1, R2, R3
0.7VDD
-
VDD+0.3
XIN, RESET,
R4, R5, R6
-
0.2VDD
R0, R1, R2, R3
-
0.3VDD
VDD-1.0
-
-
V
-
-
1.0
V
1.1VPFD
V
V
V
Output High Voltage
VOH
VDD=4.5
R0,R1,R2,R3,R4,R5
VDD=2.7
R6
IOH1=-2mA
Output Low Voltage
VOL
VDD=4.5
VDD=2.7
IOL1=5mA
Power Fail Detect
Voltage
VPFD
VPFD=3.0V
@ TA=25°C
VPFD=2.4V
Input High
Leakage Current
IIH1
VIN=VDD
All input pins
-5.0
-
5.0
µA
Input Low
Leakage Current
IIL
VIN=VSS
All input pins
-5.0
-
5.0
µA
RESET, EC0, EC2,
SIN, SCLK, INT0~INT3
0.3
0.8
V
8
20
mA
4
10
mA
1
10
µA
Hysteresis
Power Current
VT+, VTIDD1
f XIN=8M H z
IDD2
f XIN=4M H z
ISTOP
R0,R1,R2,R3,R4,R5
R6
0.9VPFD
A ll input = V SS
C rystal O scillator,
C L1 =C L2 =30pF
-
A ll input = V SS
-
1. Data in “Typ.” column is at 4.5V, 25°C unless otherwise stated. These parameters are for design guidance only and are not tested.
DEC. 1999 Ver 1.04
13
GMS81508B/16B/24B
HYUNDAI MicroElectronics
7.5 AC Characteristics
(TA=-20~+85°C, VDD=5V±10%, VSS=0V)
Specifications
Parameter
Symbol
Pins
Unit
Min.
Typ.
Max.
Operating Frequency
fXIN
XIN
1.0
-
10.0
MHz
Oscillation Stabilizing
Time
tST
XIN, XOUT
-
-
20
ms
External Clock Pulse
Width
tCPW
XIN
40
-
-
ns
External Clock Transition Time
tRCP,tFCP
XIN
-
-
20
ns
Interrupt Pulse Width
tIW
INT0, INT1, INT2, INT3
2
-
-
tSYS
RESET Input Width
tRST
RESET
8
-
-
tSYS
Event Counter Input
Pulse Width
tECW
EC0, EC2
2
-
-
tSYS
tREC,tFEC
EC0, EC2
-
-
20
ns
Event Counter Transition Time
tSYS = 1/fXIN
tCPW
tCPW
VDD-0.5V
XIN
0.5V
tRCP
tIW
INT0~INT3
tFCP
tIW
0.8VDD
0.2VDD
tRST
RESET
0.2VDD
tECW
tECW
0.8VDD
EC1, EC2
0.2VDD
tREC
tFEC
Figure 7-1 Timing Chart
14
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
7.6 Serial Interface Timing Characteristics
(TA=-20~+85°C, VDD=5V±10%, VSS=0V, fXIN=8MHz)
Specifications
Parameter
Symbol
Pins
Unit
Min.
Typ.
Max.
Serial Input Clock Pulse
tSCYC
SCLK
2tSYS+200
-
8
ns
Serial Input Clock Pulse Width
tSCKW
SCLK
tSYS+70
-
8
ns
Serial Input Clock Pulse Transition
Time
tFSCK
tRSCK
SCLK
-
-
30
ns
SIN Input Pulse Transition Time
tFSIN
tRSIN
SIN
-
-
30
ns
SIN Input Setup Time (External SCLK)
tSUS
SIN
100
-
-
ns
SIN Input Setup Time (Internal SCLK)
tSUS
SIN
200
-
ns
SIN Input Hold Time
tHS
SIN
tSYS+70
-
ns
Serial Output Clock Cycle Time
tSCYC
SCLK
4tSYS
-
Serial Output Clock Pulse Width
tSCKW
SCLK
tSYS-30
Serial Output Clock Pulse Transition
Time
tFSCK
tRSCK
SCLK
30
ns
Serial Output Delay Time
sOUT
SOUT
100
ns
tSCKW
ns
tSCKW
0.8VDD
0.2VDD
tSUS
tHS
0.8VDD
0.2VDD
SIN
tDS
SOUT
ns
tSCYC
tRSCK
tFSCK
SCLK
16tSYS
tFSIN
tRSIN
0.8VDD
0.2VDD
Figure 7-2 Serial I/O Timing Chart
DEC. 1999 Ver 1.04
15
GMS81508B/16B/24B
HYUNDAI MicroElectronics
7.7 Typical Characteristic Curves
This graphs and tables provided in this section are for design guidance only and are not tested or guaranteed.
The data presented in this section is a statistical summary
of data collected on units from different lots over a period
of time. “Typical” represents the mean of the distribution
while “max” or “min” represents (mean + 3σ) and (mean −
3σ) respectively where σ is standard deviation
In some graphs or tables the data presented are outside specified operating range (e.g. outside specified
VDD range). This is for information only and devices
are guaranteed to operate properly only within the
specified range.
IOH−VOH
IOH
(mA) VDD=4.5V
Ta=25°C
-12
R0~R6 pins
-9
-9
-6
-6
-3
-3
0
0.6
0.9
IOL−VOL1
1.2 1.5 (V)
VDD-VOH
R0~R6 pins
IOL
(mA) VDD=4.5V
Ta=25°C
20
0.3
10
10
5
5
0.2
4
0.4
VDD−VIH1
0.6
0.8
VOL
1.0 (V)
0.2
VIH2
(V)
R0~R6 pins
0.4
VDD−VIH2
0.6
0.8
VOL
1.0 (V)
R0, R1, R2, R3 pins
fXIN=8MHz
Ta=25°C
4
3
3
2
2
1
1
0
2
1.2 1.5 (V)
VDD-VOH
0
XIN, RESET,
R4, R5, R6 pins
fXIN=8MHz
Ta=25°C
0.9
IOL−VOL2
15
0
0.6
IOL
(mA) VDD=3.0V
Ta=25°C
20
15
VIH1
(V)
R0~R6 pins
0
0.3
16
IOH−VOH
IOH
(mA) VDD=3.0V
Ta=25°C
-12
3
4
5
VDD
6 (V)
0
1
2
3
4
5
VDD
6 (V)
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
VIL2
(V)
4
XIN, RESET,
R4, R5, R6 pins
VDD−VIL1
fXIN=8MHz
Ta=25°C
GMS81508B/16B/24B
VIL2
(V)
3
2
2
1
1
0
3
IDD−VDD
IDD
(mA)
4
5
VDD
6 (V)
0
1
2
3
4
ISTOP−VDD
Normal Operation
5
VDD
6 (V)
Operating Area
Stop Mode
fXIN
(MHz) Ta= -20~85°C
IDD
(µA)
Ta=25°C
20
0.4
15
0.3
10
0.2
5
R0, R1, R2, R3 pins
fXIN=8MHz
Ta=25°C
4
3
2
VDD−VIL2
fXIN = 8MHz
10
8
0.1
85°C
6
25°C
-20°C
4
2
4MHz
0
2
3
4
DEC. 1999 Ver 1.04
5
VDD
6 (V)
0
2
3
4
5
VDD
6 (V)
0
2
3
4
5
VDD
6 (V)
17
GMS81508B/16B/24B
HYUNDAI MicroElectronics
8. MEMORY ORGANIZATION
The GMS81508B/16B/24B has separate address spaces
for Program memory and Data Memory. Program memory
can only be read, not written to. It can be up to 24K bytes
of Program memory. Data memory can be read and written
to up to 448 bytes including the stack area.
8.1 Registers
This device has six registers that are the Program Counter
(PC), a Accumulator (A), two index registers (X, Y), the
Stack Pointer (SP), and the Program Status Word (PSW).
The Program Counter consists of 16-bit register.
PCH
A
ACCUMULATOR
X
X REGISTER
Y
Y REGISTER
SP
STACK POINTER
PCL
PROGRAM COUNTER
PSW
PROGRAM STATUS
WORD
call is executed or an interrupt is accepted. However, if it
is used in excess of the stack area permitted by the data
memory allocating configuration, the user-processed data
may be lost.
The stack can be located at any position within 100H to
1FFH of the internal data memory. The SP is not initialized
by hardware, requiring to write the initial value (the location with which the use of the stack starts) by using the initialization routine. Normally, the initial value of “FEH” is
used.
Bit 15
Stack Address (100H ~ 1FEH)
8 7
Bit 0
01H
SP
00H~FEH
Hardware fixed
Figure 8-1 Configuration of Registers
Accumulator: The Accumulator is the 8-bit general purpose register, used for data operation such as transfer, temporary saving, and conditional judgement, etc.
The Accumulator can be used as a 16-bit register with Y
Register as shown below.
Y
Y
A
A
Note: The Stack Pointer must be initialized by software because its value is undefined after RESET.
Example: To initialize the SP
LDX
#0FEH
TXSP
; SP ← FEH
Address 01FFH can not be used as stack. Don not use
1FFH, or malfunction would be occurred.
Two 8-bit Registers can be used as a “YA” 16-bit Register
Figure 8-2 Configuration of YA 16-bit Register
X, Y Registers: In the addressing mode which uses these
index registers, the register contents are added to the specified address, which becomes the actual address. These
modes are extremely effective for referencing subroutine
tables and memory tables. The index registers also have increment, decrement, comparison and data transfer functions, and they can be used as simple accumulators.
Stack Pointer: The Stack Pointer is an 8-bit register used
for occurrence interrupts and calling out subroutines. Stack
Pointer identifies the location in the stack to be accessed
(save or restore).
Generally, SP is automatically updated when a subroutine
18
Program Counter: The Program Counter is a 16-bit wide
which consists of two 8-bit registers, PCH and PCL. This
counter indicates the address of the next instruction to be
executed. In reset state, the program counter has reset routine address (PCH:0FFH, PCL:0FEH).
Program Status Word: The Program Status Word (PSW)
contains several bits that reflect the current state of the
CPU. The PSW is described in Figure 8-3. It contains the
Negative flag, the Overflow flag, the Break flag the Half
Carry (for BCD operation), the Interrupt enable flag, the
Zero flag, and the Carry flag.
[Carry flag C]
This flag stores any carry or borrow from the ALU of CPU
after an arithmetic operation and is also changed by the
Shift Instruction or Rotate Instruction.
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
[Zero flag Z]
or data transfer is “0” and is cleared by any other result.
This flag is set when the result of an arithmetic operation
PSW
MSB
N V G B H
NEGATIVE FLAG
OVERFLOW FLAG
SELECT DIRECT PAGE
when G=1, page is selected to “page 1”
BRK FLAG
I
Z
LSB
C RESET VALUE: 00H
CARRY FLAG RECEIVES
CARRY OUT
ZERO FLAG
INTERRUPT ENABLE FLAG
HALF CARRY FLAG RECEIVES
CARRY OUT FROM BIT 1 OF
ADDITION OPERLANDS
Figure 8-3 PSW (Program Status Word) Register
[Interrupt disable flag I]
This flag enables/disables all interrupts except interrupt
caused by Reset or software BRK instruction. All interrupts are disabled when cleared to “0”. This flag immediately becomes “0” when an interrupt is served. It is set by
the EI instruction and cleared by the DI instruction.
[Half carry flag H]
After operation, this is set when there is a carry from bit 3
of ALU or there is no borrow from bit 4 of ALU. This bit
can not be set or cleared except CLRV instruction with
Overflow flag (V).
[Break flag B]
This flag is set by software BRK instruction to distinguish
BRK from TCALL instruction with the same vector address.
[Direct page flag G]
DEC. 1999 Ver 1.04
This flag assigns RAM page for direct addressing mode. In
the direct addressing mode, addressing area is from zero
page 00H to 0FFH when this flag is "0". If it is set to "1",
addressing area is assigned 100H to 1FFH. It is set by
SETG instruction and cleared by CLRG.
[Overflow flag V]
This flag is set to “1” when an overflow occurs as the result
of an arithmetic operation involving signs. An overflow
occurs when the result of an addition or subtraction exceeds +127(7FH) or -128(80H). The CLRV instruction
clears the overflow flag. There is no set instruction. When
the BIT instruction is executed, bit 6 of memory is copied
to this flag.
[Negative flag N]
This flag is set to match the sign bit (bit 7) status of the result of a data or arithmetic operation. When the BIT instruction is executed, bit 7 of memory is copied to this flag.
19
GMS81508B/16B/24B
HYUNDAI MicroElectronics
At execution of
a CALL/TCALL/PCALL
01FE
At acceptance
of interrupt
Push
down
01FE
PCH
01FD
PCL
01FC
01FC
PSW
01FB
01FB
01FD
PCH
PCL
At execution
of RET instruction
Push
down
01FE
PCH
01FD
PCL
At execution
of RET instruction
01FE
PCH
01FD
PCL
01FC
01FC
PSW
01FB
01FB
Pop
up
SP before
execution
01FE
01FE
01FC
01FB
SP after
execution
01FC
01FB
01FE
01FE
At execution
of PUSH instruction
PUSH A (X,Y,PSW)
01FE
A
01FD
Push
down
Pop
up
At execution
of POP instruction
POP A (X,Y,PSW)
01FE
A
01FD
01FC
01FC
01FB
01FB
Pop
up
0100H
Stack
depth
01FEH
SP before
execution
01FE
01FD
SP after
execution
01FD
01FE
Figure 8-4 Stack Operation
20
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
8.2 Program Memory
A 16-bit program counter is capable of addressing up to
64K bytes, but this device has 24K bytes program memory
space only physically implemented. Accessing a location
above FFFFH will cause a wrap-around to 0000H.
Figure 8-5, shows a map of Program Memory. After reset,
the CPU begins execution from reset vector which is stored
in address FFFEH and FFFFH as shown in Figure 8-6.
As shown in Figure 8-5, each area is assigned a fixed location in Program Memory. Program Memory area contains
the user program.
A000H
Interrupt
Vector Area
GMS815024B, 24K ROM
GMS815016B, 16K ROM
TCALL area
GMS81508B, 8K ROM
FEFFH
FF00H
PCALL area
E000H
FFFFH
Table Call (TCALL) causes the CPU to jump to each
TCALL address, where it commences the execution of the
service routine. The Table Call service area spaces 2-byte
for every TCALL: 0FFC0H for TCALL15, 0FFC2H for
TCALL14, etc., as shown in Figure 8-7.
Example: Usage of TCALL
The interrupt causes the CPU to jump to specific location,
where it commences the execution of the service routine.
The External interrupt 0, for example, is assigned to location 0FFFAH. The interrupt service locations spaces 2-byte
interval: 0FFF8H and 0FFF9H for External Interrupt 1,
0FFFAH and 0FFFBH for External Interrupt 0, etc.
Any area from 0FF00H to 0FFFFH, if it is not going to be
used, its service location is available as general purpose
Program Memory.
C000H
FFC0H
FFDFH
FFE0H
it is more useful to save program byte length.
Figure 8-5 Program Memory Map
Page Call (PCALL) area contains subroutine program to
reduce program byte length by using 2 bytes PCALL instead of 3 bytes CALL instruction. If it is frequently called,
DEC. 1999 Ver 1.04
Address
Vector Area Memory
0FFE0H
-
E2
-
E4
Serial Communication Interface
E6
Basic Interval Timer
E8
Watchdog Timer Interrupt
EA
A/D Converter
EC
Timer/Counter
- 3 Interrupt
EE
Timer/Counter
- 2 Interrupt
F0
Timer/Counter 1 Interrupt
F2
Timer/Counter 0 Interrupt
F4
External Interrupt 3
F6
External Interrupt 2
F8
External Interrupt 1
FA
External Interrupt 0
FC
-
FE
RESET Vector Area
NOTE:
“-” means reserved area.
Figure 8-6 Interrupt Vector Area
21
GMS81508B/16B/24B
Address
0FF00H
HYUNDAI MicroElectronics
PCALL Area Memory
Address
PCALL Area
(256 Bytes)
0FFC0H
C1
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
CD
CE
CF
D0
D1
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
0FFFFH
Program Memory
TCALL 15
TCALL 14
TCALL 13
TCALL 12
TCALL 11
TCALL 10
TCALL 9
TCALL 8
TCALL 7
TCALL 6
TCALL 5
TCALL 4
TCALL 3
TCALL 2
TCALL 1
TCALL 0 / BRK *
NOTE:
* means that the BRK software interrupt is using
same address with TCALL0.
Figure 8-7 PCALL and TCALL Memory Area
PCALL→
→ rel
TCALL→
→n
4F35
4A
PCALL 35H
TCALL 4
4A
4F
01001010
35
~
~
~
~
~
~
0D125H
➊
~
~
NEXT
Reverse
PC: 11111111 11010110
FH FH
DH 6H
0FF00H
0FF35H
0FFFFH
22
NEXT
➌
0FF00H
0FFD6H
25
0FFD7H
D1
➋
0FFFFH
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Example: The usage software example of Vector address for GMS81524B.
;
;
ORG
0FFE0H
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
DW
NOT_USED
NOT_USED
SIO
BIT_TIMER
WD_TIMER
ADC
TIMER3
TIMER2
TIMER1
TIMER0
INT3
INT2
INT1
INT0
NOT_USED
RESET
;
;
;
;
;
;
;
;
;
;
;
;
;
;
ORG
ORG
ORG
0A000H
0C000H
0E000H
; 24K ROM Start address
; 16K ROM Start address
; 8K ROM Start address
Serial Interface
Basic Interval Timer
Watchdog Timer
ADC
Timer-3
Timer-2
Timer-1
Timer-0
Int.3
Int.2
Int.1
Int.0
Reset
;*******************************************
;
MAIN
PROGRAM
*
;*******************************************
;
RESET: DI
;Disable All Interrupts
CLRG
LDX
#0
RAM_CLR: LDA
#0
;RAM Clear(!0000H->!00BFH)
STA
{X}+
CMPX #0C0H
BNE
RAM_CLR
;
LDX
#0FEH
;Stack Pointer Initialize
TXSP
;
LDM
R0, #0
;Normal Port 0
LDM
R0DD,#82H
;Normal Port Direction
:
:
:
LDM
TDR0,#250
;8us x 250 = 2000us
LDM
TM0,#1FH
;Start Timer0, 8us at 8MHz
LDM
IRQH,#0
LDM
IRQL,#0
LDM
IENH,#0C8H ;Enable Timer0, INT0, INT1
LDM
IENL,#0
LDM
IEDS,#55H
;Select falling edge detect on INT pin
LDM
PMR4,#3H
;Set external interrupt pin(INT0, INT1)
EI
;Enable master interrupt
:
:
:
:
:
NOT_USED:NOP
RETI
DEC. 1999 Ver 1.04
23
GMS81508B/16B/24B
HYUNDAI MicroElectronics
8.3 Data Memory
Figure 8-8 shows the internal Data Memory space available. Data Memory is divided into four groups, a user RAM,
control registers, Stack, and LCD memory.
0000H
More detailed informations of each register are explained
in each peripheral section.
User Memory
PAGE0
00BFH
00C0H
00FFH
0100H
Note that unoccupied addresses may not be implemented
on the chip. Read accesses to these addresses will in general return random data, and write accesses will have an indeterminate effect.
When “G-flag=0”,
this page is selected
Control
Registers
Note: Write only registers can not be accessed by bit manipulation instruction. Do not use read-modify-write instruction. Use byte manipulation instruction, for example “LDM”.
Example; To write at CKCTLR
LDM
User Memory
or Stack Area
PAGE1
When “G-flag=1”
01FFH
Figure 8-8 Data Memory Map
User Memory
The GMS815xxB has 448 × 8 bits for the user memory
(RAM).
Control Registers
The control registers are used by the CPU and Peripheral
function blocks for controlling the desired operation of the
device. Therefore these registers contain control and status
bits for the interrupt system, the timer/ counters, analog to
digital converters and I/O ports. The control registers are in
address range of 0C0H to 0FFH.
24
CLCTLR,#09H ;Divide ratio(÷32)
Stack Area
The stack provides the area where the return address is
saved before a jump is performed during the processing
routine at the execution of a subroutine call instruction or
the acceptance of an interrupt.
When returning from the processing routine, executing the
subroutine return instruction [RET] restores the contents of
the program counter from the stack; executing the interrupt
return instruction [RETI] restores the contents of the program counter and flags.
The save/restore locations in the stack are determined by
the stack pointed (SP). The SP is automatically decreased
after the saving, and increased before the restoring. This
means the value of the SP indicates the stack location
number for the next save. Refer to Figure 8-4 on page 20.
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
Address
GMS81508B/16B/24B
Register Name
Symbol
R/W
Initial Value
Page
7 6 5 4 3 2 1 0
00C0
R0 port data register
R0
R/W
Undefined
page 31
00C1
R0 port I/O direction register
R0DD
W
00000000
page 31
00C2
R1 port data register
R1
R/W
Undefined
page 31
00C3
R1 port I/O direction register
R1DD
W
00000000
page 31
00C4
R2 port data register
R2
R/W
Undefined
page 31
00C5
R2 port I/O direction register
R2DD
W
00000000
page 31
00C6
R3 port data register
R3
R/W
Undefined
page 32
00C7
R3 port I/O direction register
R3DD
W
00000000
page 32
00C8
R4 port data register
R4
R/W
Undefined
page 32
00C9
R4 port I/O direction register
R4DD
W
00000000
page 32
00CA
R5 port data register
R5
R/W
Undefined
page 33
00CB
R5 port I/O direction register
R5DD
W
00000000
page 33
00CC
R6 port data register
R6
R/W
Undefined
page 33
00CD
R6 port I/O direction register
R6DD
W
0000 - - - -
page 33
00D0
R4 port mode register
PMR4
W
00000000
page 32, page 63
00D1
R5 port mode register
PMR5
W
- - 00 - - - -
page 33, page 55
Basic interval timer mode register
BITR
R
Undefined
page 35
CKCTLR
W
- - 010111
page 35
WDTR
W
- 0111111
page 64
00D3
Clock control register
00E0
Watchdog Timer Register
00E2
Timer mode register 0
TM0
R/W
00000000
page 37
00E3
Timer mode register 2
TM2
R/W
00000000
page 37
Timer 0 data register
TDR0
W
Undefined
page 37
T0
R
Undefined
page 37
TDR1
W
Undefined
page 37
T1
R
Undefined
page 37
TDR2
W
Undefined
page 37
T2
R
Undefined
page 37
TDR3
W
Undefined
page 37
T3
R
Undefined
page 37
00E4
00E5
00E6
00E7
Timer 0 counter register
Timer 1 data register
Timer 1 counter register
Timer 2 data register
Timer 2 counter register
Timer 3 data register
Timer 3 counter register
00E8
A/D converter mode register
ADCM
R/W
- - 000001
page 47
00E9
A/D converter data register
ADR
R
Undefined
page 47
00EA
Serial I/O mode register
SIOM
R/W
- 0000001
page 49
00EB
Serial I/O register
SIOR
R/W
Undefined
page 49
00EC
Buzzer driver register
BUR
W
Undefined
page 55
00F0
PWM0 duty register
PWMR0
W
Undefined
page 53
Table 8-1 Control Registers
DEC. 1999 Ver 1.04
25
GMS81508B/16B/24B
Address
HYUNDAI MicroElectronics
Register Name
Symbol
R/W
Initial Value
Page
7 6 5 4 3 2 1 0
00F1
PWM1 duty register
PWMR1
W
Undefined
page 53
00F2
PWM control register
PWMCR
W
00000000
page 53
00F4
Interrupt enable register low
IENL
R/W
0000 - - - -
page 58
00F5
Interrupt request flag register low
IRQL
R/W
0000 - - - -
page 57
00F6
Interrupt enable register high
IENH
R/W
00000000
page 58
00F7
Interrupt request flag register high
IRQH
R/W
00000000
page 57
00F8
External interrupt edge selection register
IEDS
W
00000000
page 63
00F9
Power fail detection register
PFDR
R/W
- - - - 1100
page 71
Table 8-1 Control Registers
W
R/W
Registers are controlled by byte manipulation instruction such as LDM etc., do not use bit manipulation
instruction such as SET1, CLR1 etc. If bit manipulation instruction is used on these registers,
content of other seven bits are may varied to unwanted value.
Registers are controlled by both bit and byte manipulation instruction.
- : this bit location is reserved.
26
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
8.4 Addressing Mode
The GMS800 series MCU uses six addressing modes;
Example: G=1
• Register addressing
E45535
LDM
35H,#55H
• Immediate addressing
• Direct page addressing
• Absolute addressing
data
0135H
• Indexed addressing
➊
• Register-indirect addressing
~
~
0F100H
(1) Register Addressing
data ¨ 55H
~
~
➋
E4
0F101H
55
0F102H
35
Register addressing accesses the A, X, Y, C and PSW.
(2) Immediate Addressing → #imm
In this mode, second byte (operand) is accessed as a data
immediately.
In this mode, a address is specified within direct page.
Example; G=0
Example:
0435
(3) Direct Page Addressing → dp
ADC
C535
#35H
LDA
;A ←RAM[35H]
35H
MEMORY
35H
04
35
data
➋
A+35H+C → A
~
~
~
~
0E550H
C5
0E551H
35
➊
data → A
When G-flag is 1, then RAM address is defined by 16-bit
address which is composed of 8-bit RAM paging register
(RPR) and 8-bit immediate data.
DEC. 1999 Ver 1.04
27
GMS81508B/16B/24B
HYUNDAI MicroElectronics
(4) Absolute Addressing → !abs
ADC, AND, CMP, EOR, LDA, OR, SBC, STA, XMA
Absolute addressing sets corresponding memory data to
Data, i.e. second byte (Operand I) of command becomes
lower level address and third byte (Operand II) becomes
upper level address.
With 3 bytes command, it is possible to access to whole
memory area.
Example; X=15H, G=1
D4
LDA
115H
ADC, AND, CMP, CMPX, CMPY, EOR, LDA, LDX,
LDY, OR, SBC, STA, STX, STY
{X}
;ACC←RAM[X].
data
➋
~
~
~
~
Example;
0735F0
ADC
;A ←ROM[0F035H]
!0F035H
data
0F035H
~
~
➋
~
~
0F100H
A+data+C → A
➊
07
0F101H
35
0F102H
F0
address: 0F035
data → A
➊
D4
0E550H
X indexed direct page, auto increment→
→ {X}+
In this mode, a address is specified within direct page by
the X register and the content of X is increased by 1.
LDA, STA
Example; G=0, X=35H
DB
LDA
{X}+
The operation within data memory (RAM)
ASL, BIT, DEC, INC, LSR, ROL, ROR
Example; Addressing accesses the address 0135H regardless of G-flag.
983501
INC
;A ←ROM[135H]
!0135H
35H
➋
data
~
~
~
~
data Æ A
➊
36H Æ X
DB
data
135H
~
~
➌
~
~
➋
data+1 → data
0F100H
98
➊
0F101H
35
address: 0135
0F102H
01
(5) Indexed Addressing
X indexed direct page (no offset) → {X}
X indexed direct page (8 bit offset) → dp+X
This address value is the second byte (Operand) of command plus the data of -register. And it assigns the memory in Direct page.
ADC, AND, CMP, EOR, LDA, LDY, OR, SBC, STA
STY, XMA, ASL, DEC, INC, LSR, ROL, ROR
Example; G=0, X=0F5H
In this mode, a address is specified by the X register.
28
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
C645
LDA
GMS81508B/16B/24B
Example; G=0
45H+X
3F35
3AH
data
➌
~
~
➋
~
~
0E550H
C6
0E551H
45
JMP
35H
0A
36H
E3
data → A
➊
[35H]
~
~
~
~
0E30AH
➋
➊
NEXT
jump to
address 0E30AH
45H+0F5H=13AH
~
~
~
~
0FA00H
3F
35
Y indexed direct page (8 bit offset) → dp+Y
This address value is the second byte (Operand) of command plus the data of Y-register, which assigns Memory in
Direct page.
This is same with above (2). Use Y register instead of X.
Y indexed absolute → !abs+Y
Sets the value of 16-bit absolute address plus Y-register
data as Memory.This addressing mode can specify memory in whole area.
X indexed indirect → [dp+X]
Processes memory data as Data, assigned by 16-bit pair
memory which is determined by pair data
[dp+X+1][dp+X] Operand plusX-register data in Direct
page.
ADC, AND, CMP, EOR, LDA, OR, SBC, STA
Example; G=0, X=10H
1625
ADC
[25H+X]
Example; Y=55H
D500FA
LDA
!0FA00H+Y
35H
05
36H
E0
0E005H
~
~ ➋
~
~
0F100H
D5
0F101H
00
0F102H
FA
~
~
➊
0E005H
0FA00H+55H=0FA55H
~
~
➋
~
~
0FA00H
➊ 25 + X(10) = 35H
data
~
~
16
25
0FA55H
data
➌
data → A
➌ A + data + C → A
Y indexed indirect → [dp]+Y
(6) Indirect Addressing
Direct page indirect → [dp]
Assigns data address to use for accomplishing command
which sets memory data (or pair memory) by Operand.
Also index can be used with Index register X,Y.
Processes memory data as Data, assigned by the data
[dp+1][dp] of 16-bit pair memory paired by Operand in Direct pageplus Y-register data.
ADC, AND, CMP, EOR, LDA, OR, SBC, STA
Example; G=0, Y=10H
JMP, CALL
DEC. 1999 Ver 1.04
29
GMS81508B/16B/24B
1725
ADC
HYUNDAI MicroElectronics
Example; G=0
[25H]+Y
1F25E0
25H
05
26H
E0
~
~
0E015H
0FA00H
[!0C025H]
PROGRAM MEMORY
~
~
➋
➊
0E005H + Y(10)
= 0E015H
data
~
~
JMP
0E025H
25
0E026H
E7
~
~
~
~
17
25
➊
0E725H
➌
NEXT
~
~
A + data + C → A
0FA00H
Absolute indirect → [!abs]
~
~
➋
jump to
address 0E30AH
~
~
1F
25
E0
The program jumps to address specified by 16-bit absolute
address.
JMP
30
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
9. I/O PORTS
The GMS815xxB has seven ports (R0, R1, R2, R4, R5, and
R6).These ports pins may be multiplexed with an alternate
function for the peripheral features on the device.
All pins have data direction registers which can define
these ports as output or input. A “1” in the port direction
register configure the corresponding port pin as output.
Conversely, write “0” to the corresponding bit to specify it
as input pin. For example, to use the even numbered bit of
R0 as output ports and the odd numbered bits as input
ports, write “55H” to address 0C1H (R0 port direction register) during initial setting as shown in Figure 9-1.
All the port direction registers in the GMS815xxB have 0
written to them by reset function. On the other hand, its initial status is input.
R1 and R1DD register: R1 is an 8-bit CMOS bidirectional I/O port (address 0C2H). Each I/O pin can independently
used as an input or an output through the R1DD register
(address 0C3H).
R1 Data Register
R1
R17 R16 R15 R14 R13 R12 R11 R10
Input / Output data
R1 Direction Register
0C0H
R0 data
R0 direction
0C2H
R1 data
0C3H
R1 direction
0 1 0 1 0 1 0 1
7 6 5 4 3 2 1 0
BIT
I O I O I O I O PORT
7 6 5 4 3 2 1 0
I: INPUT PORT
O: OUTPUT PORT
Port Direction
0: Input
1: Output
R2 and R2DD register: R2 is an 8-bit CMOS bidirectional I/O port (address 0C4H). Each I/O pin can independently
used as an input or an output through the R2DD register
(address 0C5H).
R2 Data Register
R2
R0 Data Register
R0
ADDRESS: 0C0H
RESET VALUE: Undefined
ADDRESS: 0C4H
RESET VALUE: Undefined
R27 R26 R25 R24 R23 R22 R21 R20
Figure 9-1 Example of port I/O assignment
R0 and R0DD register: R0 is an 8-bit CMOS bidirectional I/O port (address 0C0H). Each I/O pin can independently
used as an input or an output through the R0DD register
(address 0C1H).
ADDRESS: 0C3H
RESET VALUE: 00H
R1DD
WRITE “55H” TO PORT R0 DIRECTION REGISTER
0C1H
ADDRESS: 0C2H
RESET VALUE: Undefined
Input / Output data
R2 Direction Register
ADDRESS: 0C5H
RESET VALUE: 00H
R2DD
Port Direction
0: Input
1: Output
R07 R06 R05 R04 R03 R02 R01 R00
Input / Output data
R0 Direction Register
ADDRESS: 0C1H
RESET VALUE: 00H
R0DD
Port Direction
0: Input
1: Output
DEC. 1999 Ver 1.04
31
GMS81508B/16B/24B
HYUNDAI MicroElectronics
R3 and R3DD register: R3 is an 8-bit CMOS bidirectional I/O port (address 0C6H). Each I/O pin can independently
used as an input or an output through the R0DD register
(address 0C7H).
ADDRESS: 0C6H
RESET VALUE: Undefined
R3 Data Register
R3
R37 R36 R35 R34 R33 R32 R31 R30
Regardless of the direction register R4DD, PMR4 is selected to use as alternate functions, port pin can be used as a
corresponding alternate features.
ADDRESS: 0C8H
RESET VALUE: Undefined
R4 Data Register
R4
R47 R46 R45 R44 R43 R42 R41 R40
Input / Output data
R3 Direction Register
ADDRESS: 0C7H
RESET VALUE: 00H
R3DD
Input / Output data
ADDRESS: 0C9H
RESET VALUE: 00H
R4 Direction Register
R4DD
Port Direction
0: Input
1: Output
R4 and R4DD register: R4 is an 8-bit CMOS bidirectional I/O port (address 0C8H). Each I/O pin can independently
used as an input or an output through the R4DD register
(address 0C9H).
Port Direction
0: Input
1: Output
PMR4
7
R40
R41
R42
R43
R44
R45
R46
R47
32
6
5
4
3
2
1
0
0: R40
1: INT0
0: R44
1: EC0
In addition, Port R4 is multiplexed with various special
features. The control register PMR4 (address 0D0H) controls the selection of alternate function. After reset, this
value is “0”, port may be used as normal I/O port.
To use alternate function such as external interrupt, external counter input or timer clock out, write “1” in the corresponding bit of PMR4.
Port Pin
ADDRESS: 0D0H
RESET VALUE: 00H
R4 Port Mode Register
0: R41
1: INT1
0: R45
1: EC2
0: R46
1: T1O
0: R42
1: INT2
0: R43
1: INT3
0: R47
1: T3O
Alternate Function
INT0 (External Interrupt 0)
INT1 (External Interrupt 1)
INT2 (External Interrupt 2)
INT3 (External Interrupt 3)
EC0 (External count input to Timer/
Counter 0)
EC2 (External count input to Timer/
Counter 2)
T1O (Timer 1 Clock-out)
T3O (Timer 3 Clock-out)
ADDRESS: 0F8H
RESET VALUE: 00H
Edge Selection Register
IEDS
7
6
INT3
5
4
INT2
3
2
1
INT1
0
INT0
External Interrupt Edge Select
00: Reserved
01: Falling (1-to-0 transition)
10: Rising (0-to-1 transition)
11: Both (Rising & Falling)
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
R5 and R5DD register: R5 is an 8-bit CMOS bidirectional I/O port (address 0CAH). Each I/O pin can independently used as an input or an output through the R5DD register
(address 0CBH).
Alternate Function
Port Pin
R54
R55
WDTO (Watchdog timer output)
BUZ (Square-wave output for buzzer)
R6 and R6DD register: R6 is an 8-bit CMOS bidirectional I/O port (address 0CCH). Each I/O pin can independently used as an input or an output through the R6DD register
(address 0CDH).
R60
R61
R62
R63
R64
R65
R66
R67
The control register PMR5 (address D1H) controls the selection alternate function. After reset, this value is “0”, port
may be used as general I/O ports. To use buzzer function,
write “1” to the PMR5 and the pin R55 must be defined as
output mode (the bit 5 of R5DD=1)
ADDRESS: 0CAH
RESET VALUE: Undefined
R5 Data Register
R5
R57 R56 R55 R54 R53 R52 R51 R50
Input / Output data
ADDRESS: 0CBH
RESET VALUE: 00H
R5 Direction Register
R5DD
Alternate Function
Port Pin
AN0 (ADC input 0)
AN1 (ADC input 1)
AN2 (ADC input 2)
AN3 (ADC input 3)
AN4 (ADC input 4)
AN5 (ADC input 5)
AN6 (ADC input 6)
AN7 (ADC input 7)
R6DD (address CDH) controls the direction of the R6 pins,
even when they are being used as analog inputs. The user
must make sure to keep the pins configured as inputs when
using them as analog inputs.
Note: On the initial RESET, R60 can not be used digital input port, because this port is selected as an analog input
port by ADCM register. To use this port as a digital I/O port,
change the value of lower 4 bits of ADCM (address 0E8H).
On the other hand, R6 port, all eight pins can not be used
as digital I/O port simultaneously. At least one pin is used
as an analog input.
Port Direction
0: Input
1: Output
ADDRESS: 0D1H
RESET VALUE: --00----B
R5 Port Mode Register
PMR5
-
-
BUZ W DTO
-
-
-
-
R6
R54/WDTO Selection
0: R54
1: WDTO (Output)
R55/BUZ Selection
0: R55
1: BUZ (Output)
ADDRESS: 0CCH
RESET VALUE: Undefined
R6 Data Register
R67 R66 R65 R64 R63 R62 R61 R60
Input / Output data
Input data
ADDRESS: 0CDH
RESET VALUE: 0000----B
R6 Direction Register
R6DD
-
Port Direction
0: Input
1: Output
DEC. 1999 Ver 1.04
-
-
-
R60~R63 are input
only
33
GMS81508B/16B/24B
HYUNDAI MicroElectronics
10. BASIC INTERVAL TIMER
The GMS815xxB has one 8-bit Basic Interval Timer that
is free-run and can not stop. Block diagram is shown in
Figure 10-1.
In addition, the Basic Interval Timer generates the time
base for watchdog timer counting. It also provides a Basic
interval timer interrupt (BITIF). As the count overflow
from FFH to 00H, this overflow causes the interrupt to be
generated. The Basic Interval Timer is controlled by the
clock control register (CKCTLR) shown in Figure 10-2.
Source clock can be selected by lower 3 bits of CKCTLR.
BITR and CKCTLR are located at same address, and address 0F9H is read as a BITR, and written to CKCTLR.
÷16
÷32
XIN PIN
Prescaler
÷64
÷128
÷256
MUX
8-bit up-counter
source
clock
overflow
BITR
BITIF
Basic Interval Timer Interrupt
÷512
[0F9H]
÷1024
÷2048
To Watchdog timer (WDTCK)
clear
Select Input clock 3
BTS[2:0]
BTCL
CKCTLR
[0D3H]
Read
Basic Interval Timer
clock control register
Internal bus line
Figure 10-1 Block Diagram of Basic Interval Timer
CKCTLR
[2:0]
000
001
010
011
100
101
110
111
Source clock
fXIN÷16
fXIN÷32
fXIN÷64
fXIN÷128
fXIN÷256
fXIN÷512
fXIN÷1024
fXIN÷ 2048
Interrupt (overflow) Period (ms)
@ fXIN = 8MHz
0.512
1.024
2.048
4.096
8.192
16.384
32.768
65.536
Table 10-1 Basic Interval Timer Interrupt Time
34
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
CKCTLR
7
-
6
-
GMS81508B/16B/24B
5
4
WDTON
ENPCK
3
2
1
0
BTCL
BTCL BTS2 BTS1 BTS0
ADDRESS: 0D3H
INITIAL VALUE: --01 0111B
Basic Interval Timer source clock select
000: fXIN ÷ 16
001: fXIN ÷ 32
010: fXIN ÷ 64
011: fXIN ÷ 128
100: fXIN ÷ 256
101: fXIN ÷ 512
110: fXIN ÷ 1024
111: fXIN ÷ 2048
Caution:
Both register are in same address,
when write, to be a CKCTLR,
when read, to be a BITR.
Clear bit
0: Normal operation (free-run)
1: Clear 8-bit counter (BITR) to “0”. This bit becomes 0 automatically
after one machine cycle, and starts counting.
Enable Peripheral clock
If this bit is 0, all peripherals are disabled such as Timer, ADC, PWM, etc.
0: Operate as a 6-bit general timer
1: Enable Watchdog Timer operation
See the section “Watchdog Timer”.
7
6
5
BITR
4
3
BTCL
2
1
0
ADDRESS: 0D3H
INITIAL VALUE: Undefined
8-BIT FREE-RUN BINARY COUNTER
Figure 10-2 BITR: Basic Interval Timer Mode Register
Example 1:
Interrupt request flag is generated every 8.192ms at 4MHz.
:
LDM
SET1
EI
:
CKCTLR,#1BH
BITE
Example 2:
Interrupt request flag is generated every 8.192ms at 8MHz.
:
LDM
SET1
EI
:
CKCTLR,#1CH
BITE
DEC. 1999 Ver 1.04
35
GMS81508B/16B/24B
HYUNDAI MicroElectronics
11. TIMER/EVENT COUNTER
The GMS815xxB has four Timer/Counter registers. Each
module can generate an interrupt to indicate that an event
has occurred (i.e. timer match).
Timer 0 and Timer 1 are can be used either two 8-bit Timer/Counter or one 16-bit Timer/Counter with combine
them. Also Timer 2 and Timer 3 are same.
In the “timer” function, the register is increased every internal clock input. Thus, one can think of it as counting internal clock input. Since a least clock consists of 4 and
most clock consists of 64 oscillator periods, the count rate
is 1/4 to 1/64 of the oscillator frequency.
In the “counter” function, the register is incremented in response to a 1-to-0 (falling edge) transition at its corre-
sponding external input pin, EC0 or EC2.
In addition the “capture” function, the register is incremented in response external or internal clock sources same
with timer or counter function. When external clock edge
input, the count register is captured into Timer data register
correspondingly.
It has four operating modes: “8-bit timer/counter”, “16-bit
timer/counter”, “8-bit capture”, “16-bit capture” which are
selected by bit in Timer mode register TM0 and TM2 as
shown in Table 11-1.
In operation of Timer 2, Timer 3, their operations are same
with Timer 0, Timer 1, respectively as shown in Table 112.
TM0
CAP
0
T1ST
0
X
T1SL
[1:0]
01 or
10 or
11
TIMER 0
T0ST T0CN
X
X
01 or 10 or 11
8-bit Timer
8-bit Timer
X
X
00
8-bit Event counter
8-bit Timer
X
X
01 or 10 or 11
8-bit Capture (internal clock)
8-bit Timer
8-bit Capture (external clock)
8-bit Timer
0
X
1
X
1
X
X
X
00
0
X
X
X
01 or 10 or 11
0
X
X
X
00
1
X
X
X
01 or 10 or 11
16-bit Capture (internal clock)
1
X
X
X
00
16-bit Capture (external clock)
00
TIMER 1
T0SL[1:0]
16-bit Timer
16-bit Event counter
Table 11-1 TM0 Timer Mode Register
TM2
CAP
2
T3ST
0
X
T3SL
[1:0]
01 or
10 or
11
TIMER 2
T2ST
T2CN
T2SL[1:0]
X
X
01 or 10 or 11
X
X
00
X
X
8-bit Timer
8-bit Timer
8-bit Event counter
8-bit Timer
01 or 10 or 11
8-bit Capture (internal clock)
8-bit Timer
8-bit Capture (external clock)
8-bit Timer
0
X
1
X
1
X
X
X
00
0
X
X
X
01 or 10 or 11
0
X
X
X
00
1
X
X
X
01 or 10 or 11
16-bit Capture (internal clock)
1
X
X
X
00
16-bit Capture (external clock)
00
TIMER 3
16-bit Timer
16-bit Event counter
Table 11-2 TM2 Timer Mode Register
36
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
TM0
TIMER 1
TIMER 0
R/W
7
R/W
6
CAP 0
T1ST
R/W
4
R/W
3
T1S L1 T1SL0 BTCL
T0ST
R/W
2
R/W
1
R/W
0
T0C N T0SL1 T0SL0
Bit Position
Description
CAP0
TM0.7
0: Timer/Counter mode
1: Capture mode selection flag
T1ST
TM0.6
0: When cleared, stop the counting.
1: When set, Timer 1 count register is cleared and start again.
T1SL1
T1SL0
TM0.5
TM0.4
00: 16-bit mode (Clock source is selected by T0SL1, T0SL0)
01: 8-bit mode, Clock source is fXIN ÷ 4
10: 8-bit mode, Clock source is fXIN ÷ 16
11: 8-bit mode, Clock source is fXIN ÷ 64
T0ST
TM0.3
0: When cleared, stop the counting.
1: When set, Timer 0 Count Register is cleared and start again.
T0CN
TM0.2
0: Stop the timer
1: A logic 1 starts the timer.
T0SL1
T0SL0
TM0.1
TM0.0
00: EC0 (External clock)
01: 8-bit Timer, Clock source is fXIN ÷ 4
10: 8-bit Timer, Clock source is fXIN ÷ 16
11: 8-bit Timer, Clock source is fXIN ÷ 64
R/W
6
R/W
5
R/W
4
R/W
3
R/W
2
R/W
1
R/W
0
CAP2 T3ST T3SL1 T3SL0 BTCL
T2ST T2CN T2SL1 T2SL0
TIMER 3
ADD RES S: 0E2 H
INITIAL V ALUE: 00 H
Bit Name
R/W
7
TM2
R/W
5
GMS81508B/16B/24B
ADDRESS: 0E3H
INITIAL VALUE: 00H
Bit Name
Bit Position
CAP2
TM2.7
0: Timer/Counter mode
1: Capture mode selection flag
T3ST
TM2.6
0: When cleared, stop the counting.
1: When set, Timer 3 count register is cleared and start again.
T3SL1
T3SL0
TM2.5
TM2.4
00: 16-bit mode (Clock source is selected by T2SL1, T2SL0)
01: 8-bit mode, Clock source is fXIN ÷ 4
10: 8-bit mode, Clock source is fXIN ÷ 16
11: 8-bit mode, Clock source is fXIN ÷ 64
T2ST
TM2.3
0: When cleared, stop the counting.
1: When set, Timer 2 Count Register is cleared and start again.
T2CN
TM2.2
0: Stop the timer
1: A logic 1 starts the timer.
T2SL1
T2SL0
TM2.1
TM2.0
00: EC0 (External clock)
01: 8-bit Timer, Clock source is fXIN ÷ 4
10: 8-bit Timer, Clock source is fXIN ÷ 16
11: 8-bit Timer, Clock source is fXIN ÷ 64
TIMER 2
Description
R/W R/W R/W R/W R/W R/W R/W R/W
7
6
5
4
3
2
1
0
TDR0~TDR3
ADDRESS: 0E4H ~ 0E7H
INITIAL VALUE: Undefined
Read: Count value read
Write: Compare data write
Figure 11-1 TM0, TM2 Registers
DEC. 1999 Ver 1.04
37
GMS81508B/16B/24B
HYUNDAI MicroElectronics
11.1 8-bit Timer / Counter Mode
T3SL1, T3SL0 of TM2 should not set to zero. These timers
have each 8-bit count register and data register. The count
register is increased by every internal or external clock input. The internal clock has a prescaler divide ratio option
of 4, 16, 64 (selected by control bits TxSL1, TxSL0 of register TMx).
The GMS815xxB has four 8-bit Timer/Counters, Timer 0,
Timer 1, Timer 2, Timer 3. The Timer 0, Timer 1 are
shown in Figure .
The “timer” or “counter” function is selected by control
registers TM0, TM2 as shown in Table 11-1 and Table 112. To use as an 8-bit timer/counter mode, bit CAP0 of TM0
is cleared to “0” and bits T1SL1, T1SL0 of TM0 or bits
7
TM0
6
5
4
3
2
1
0
CAP0 T1ST T1SL1 T1SL0 BTCL
T0ST T0CN T0SL1 T0SL0
0
X
X
X
X
ADDRESS: 0E2H
INITIAL VALUE: 00H
X
01 or 10 or 11
X means don’t care
T0SL[1:0]
T0ST
EC0 PIN
Prescaler
XIN PIN
00
÷#4
÷#16
÷#64
0: Stop
1: Clear and start
01
T0 (8-bit)
clear
10
11
MUX
T0CN
TIMER 0
INTERRUPT
T0IF
Comparator
TIMER 0
TDR0 (8-bit)
T1SL[1:0]
T1ST
÷#4
÷#16
÷#64
0: Stop
1: Clear and start
01
T1 (8-bit)
10
clear
11
MUX
T1IF
Comparator
TIMER 1
INTERRUPT
TIMER 1
TDR1 (8-bit)
F/F
T1O PIN
Figure 11-2 8-bit Timer/Counter 0, 1
Example 1:
Example 2:
Timer0 = 4ms 8-bit timer mode at 4MHz
Timer1 = 1ms 8-bit timer mode at 4MHz
Timer0 = 8-bit event counter mode
Timer1 = 1ms 8-bit timer mode at 4MHz
LDM
LDM
LDM
SET1
SET1
EI
38
TDR0,#250
TDR1,#250
TM0,#0110_1111B
T0E
T1E
LDM
LDM
LDM
SET1
SET1
EI
TDR0,#250
TDR1,#250
TM0,#0110_1100B
T0E
T1E
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
ing it as a Tx, written to TDRx.
Note: The contents of Timer data register TDRx should be
initialized 1H~FFH, not 0H, because it is undefined after reset.
In counter function, the counter is increased every 1-to-0
(falling edge) transition of EC0 or EC2 pin. In order to use
counter function, the bit 4, bit 5 of the Port mode register
PMR4 are set to “1”. The Timer 0 can be used as a counter
by pin EC0 input, but Timer 1 can input by internal clock.
Similarly, Timer 2 can be used by pin EC2 input but Timer
3 can not.
In the Timer 0, timer register T0 increments from 00H until
it matches TDR0 and then reset to 00H. The match output
of Timer 0 generates Timer 0 interrupt (latched in T0IF bit)
As TDRx and Tx register are in same address, when read-
7
TM2
6
5
4
3
2
1
0
ADDRESS: 0E3H
INITIAL VALUE: 00H
CAP2 T3ST T3SL1 T3SL0 BTCL
T2ST T2CN T2SL1 T2SL0
0
X
X
X
X
X
01 or 10 or 11
X means don’t care
T2SL[1:0]
Edge Detector
T2ST
EC2 PIN
Prescaler
XIN PIN
00
÷#4
÷#16
÷#64
0: Stop
1: Clear and start
01
T2 (8-bit)
clear
10
11
MUX
T2CN
TIMER 2
INTERRUPT
T2IF
Comparator
TIMER 2
TDR2 (8-bit)
T3SL[1:0]
T3ST
÷#4
÷#16
÷#64
0: Stop
1: Clear and start
01
T3 (8-bit)
10
clear
11
MUX
T3IF
Comparator
TIMER 3
INTERRUPT
TIMER 3
TDR3 (8-bit)
F/F
T3O PIN
Figure 11-3 8-bit Timer/Counter 2, 3
Example 3:
Example 4:
Timer2 = 8-bit timer mode, 2ms interval at 8MHz
Timer3 = 8-bit timer mode, 500us interval at 8MHz
Timer2 = 8-bit event counter mode
Timer3 = 500us 8-bit timer mode at 8MHz
LDM
LDM
LDM
SET1
SET1
EI
TDR2,#250
TDR3,#250
TM2,#0110_1111B
T2E
T3E
DEC. 1999 Ver 1.04
LDM
LDM
LDM
SET1
SET1
EI
TDR2,#250
TDR3,#250
TM2,#0110_1100B
T2E
T3E
39
GMS81508B/16B/24B
HYUNDAI MicroElectronics
8-bit Timer Mode
In the timer mode, the internal clock is used for counting
up. Thus, you can think of it as counting internal clock input. The contents of TDRn are compared with the contents
of up-counter, Tn. If match is found, a timer 1 interrupt
(T1IF) is generated and the up-counter is cleared to 0.
Counting up is resumed after the up-counter is cleared.
Value of
TM[1:0]
Clock
Source
00
01
10
11
fEC1
fXIN ÷ 4
fXIN ÷ 16
fXIN ÷ 64
As the value of TDRn is changeable by software, time interval is set as you want
Resolution
(At fXIN=8 M Hz)
Maximum Time
Setting
(At fXIN=8 M Hz)
1/fEC1 sec
0.5 us
2 us
8 us
1/fEC1 × 256 sec
128 us
512 us
2048 us
Table 11-1 Timer Source clock Interrupt Time
Start count
~
~
Source clock
~
~
Up-counter
0
2
1
n-2
3
n-1
n
0
2
1
3
4
~
~
TDR1
n
~
~
Match
Detect
Counter
Clear
~
~
T1IF interrupt
Figure 11-4 Timer Mode Timing Chart
Example: Make 1msinterrupt using by Timer0 at 8MHz
LDM
LDM
SET1
EI
TM0,#1FH
TDR0,#125
T0E
;
;
;
;
divide by 64
8us x 125= 1ms
Enable Timer 0 Interrupt
Enable Master Interrupt
When
TM0 = 0001 1111B (8-bit Timer mode, Prescaler divide ratio = 64)
TDR0 = 125D = 7DH
fXIN = 8 MHz
1
INTERRUPT PERIOD =
× 64 × 125 = 1 ms
8 × 106 Hz
TDR1
MATCH
(TDR0 = T0)
un
t
co
8 µs
~~
~~
up
-
~~
7B
7A
6
Count Pulse
Period
7D
7C
7D
5
4
3
2
1
0
0
TIME
Interrupt period
= 8 µs x 125
Timer 1 (T1IF)
Interrupt
Occur interrupt
Occur interrupt
Occur interrupt
Figure 11-5 Timer Count Example
40
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
8-bit Event Counter Mode
In order to use event counter function, the bit 4, 5 of the
Port Mode Register PMR4(address 0D0H) is required to be
set to “1”.
In this mode, counting up is started by an external trigger.
This trigger means falling edge of the EC0 or EC1 pin input. Source clock is used as an internal clock selected with
timer mode register TM0 or TM2. The contents of timer
data register TDRn (n = 0,1,2,3) are compared with the
contents of the up-counter Tn. If a match is found, an timer
interrupt request flag TnIF is generated, and the counter is
cleared to “0”. The counter is restart and count up continuously by every falling edge of the ECn pin input.
After reset, the value of timer data register TDRn is undefined, it should be initialized to between 1H~FFHnot to
"0"The interval period of Timer is calculated as below
equation.
1
Period (sec) = ----------- × 2 × Divide Ratio × TDRn
f XIN
The maximum frequency applied to the ECn pin is fXIN/2
[Hz].
Start count
~
~
ECn pin input
~
~
1
0
2
~
~
Up-counter
n-1
n
1
0
2
~
~
n
~
~
TDR1
~
~
T1IF interrupt
Figure 11-6 Event Counter Mode Timing Chart
TDR1
disable
~~
clear & start
enable
up
-
co
u
nt
stop
~~
TIME
Timer 1 (T1IF)
Interrupt
Occur interrupt
Occur interrupt
T1ST
Start & Stop
T1ST = 1
T1ST = 0
T1CN
Control count
T1CN = 1
T1CN = 0
Figure 11-7 Count Operation of Timer / Event counter
DEC. 1999 Ver 1.04
41
GMS81508B/16B/24B
HYUNDAI MicroElectronics
11.2 16-bit Timer / Counter Mode
Even if the Timer 0 (including the Timer 1) is used as a 16bit timer, the Timer 2 and Timer 3 can still be used as either
two 8-bit timer or one 16-bit timer by setting the TM2. Reversely, even if the Timer 2 (including the Timer 3) is used
as a 16-bit timer, the Timer 0 and Timer 1 can still be used
as 8-bit timer independently.
The Timer register is being run with all 16 bits. A 16-bit
timer/counter register T0, T1 are incremented from 0000H
until it matches TDR0, TDR1 and then resets to 0000H.
The match output generates Timer 0 interrupt.
The clock source of the Timer 0 is selected either internal
or external clock by bit T0SL1, T0SL0.
7
TM0
6
5
4
3
2
1
0
CAP0 T1ST T1SL1 T1SL0 BTCL
T0ST T0CN T0SL1 T0SL0
0
X
0
0
X
X
X
ADDRESS: 0E2H
INITIAL VALUE: 00H
X
X means don’t care
T0SL[1:0]
EDGE DETECTOR
EC0 PIN
T0ST
0: Stop
1: Clear and start
Prescaler
“00”
XIN PIN
0
÷4
TDR1 + TDR0
(16-bit)
“01”
÷ 16
1
clear
“10”
÷ 64
“11”
MUX
T0CN
TIMER 0
INTERRUPT
T0IF
Comparator
(Not Timer 1 interrupt)
TDR1 + TDR0
(16-bit)
TIMER 0 + TIMER 1 → TIMER 0 (16-bit)
Higher byte Lower byte
COMPARE DATA
7
TM2
6
5
4
3
2
1
0
CAP2 T3ST T3SL1 T3SL0 BTCL
T2ST T2CN T2SL1 T2SL0
0
X
0
0
X
X
X
ADDRESS: 0E3H
INITIAL VALUE: 00H
X
X means don’t care
T2SL[1:0]
EDGE DETECTOR
EC2 PIN
Prescaler
XIN PIN
T2ST
0: Stop
1: Clear and start
“00”
÷4
÷ 16
÷ 64
0
“01”
1
TDR3 + TDR2
(16-bit)
clear
“10”
“11”
MUX
T2CN
T2IF
Comparator
TIMER 2
INTERRUPT
(Not Timer 3 interrupt)
TIMER 2 + TIMER 3 → TIMER 2 (16-bit)
TDR3 + TDR2
(16-bit)
Higher byte Lower byte
COMPARE DATA
Figure 11-8 16-bit Timer/Counter
42
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
11.3 8-bit Capture Mode
causes the current value in the Timer counter register
(T0,T2), to be captured into registers CDRn (CDR0,
CDR2), respectively. After captured, Timer counter register is cleared and restarts by hardware.
The Timer 0 capture mode is set by bit CAP0 of timer
mode register TM0 (bit CAP2 of timer mode register TM2
for Timer 2) as shown in Figure 21. In this mode, Timer 1
still operates as an 8-bit timer/counter.
As mentioned above, not only Timer 0 but Timer 2 can also
be used as a capture mode.
Note: The CDRn and TDRn are in same address.In the
capture mode, reading operation is read the CDRn, not
TDRn because path is opened to the CDRn.
In 8-bit capture mode, Timer 1 and Timer 3 are can not be
used as a capture mode.
It has three transition modes: "falling edge", "rising edge",
"both edge" which are selected by interrupt edge selection
register IEDS. Refer to “16.4 External Interrupt” on page
61. In addition, the transition at INTn pin generate an interrupt.
The Timer/Counter register is incremented in response internal or external input. This counting function is same
with normal timer mode, but Timer interrupt is not generated. Timer/Counter still does the above, but with the added feature that a edge transition at external input INTn pin
7
TM0
6
5
4
3
2
1
0
CAP0 T1ST T1SL1 T1SL0 BTCL
T0ST T0CN T0SL1 T0SL0
1
X
X
X
X
ADDRESS: 0E2H
INITIAL VALUE: 00H
X
01 or 10 or 11
X means don’t care
T0SL[1:0]
Edge Detector
T0ST
EC0 PIN
Prescaler
XIN PIN
“00”
÷4
÷ 16
÷ 64
0: Stop
1: Clear and start
“01”
T0 (8-bit)
“10”
“11”
T0CN
MUX
Capture
To TIMER1
IEDS[1:0]
CDR0 (8-bit)
TIMER 0
“01”
INT0 PIN
“10”
INT0IF
INT0
INTERRUPT
“11”
This figure is a example of using the Timer0.
In the Timer2, operation is same like Timer0, each registers and
flags may be changed with for Timer2.
Figure 11-9 8-bit Capture Mode
DEC. 1999 Ver 1.04
43
GMS81508B/16B/24B
HYUNDAI MicroElectronics
11.4 16-bit Capture Mode
16-bit capture mode is the same as 8-bit capture, except
that the Timer register is being run will 16 bits.
7
TM0
6
5
4
3
2
1
0
CAP0 T1ST T1SL1 T1SL0 BTCL
T0ST T0CN T0SL1 T0SL0
1
0
X
0
X
X
X
ADDRESS: 0E2H
INITIAL VALUE: 00H
X
X means don’t care
T0SL[1:0]
Edge Detector
T0ST
EC0 PIN
Prescaler
XIN PIN
“00”
÷4
÷ 16
÷ 64
TDR1 + TDR0
(16-bit)
“01”
“10”
“11”
MUX
IEDS[1:0]
T0CN
Capture
TDR1 + TDR0
(16-bit)
“01”
INT0 PIN
0: Stop
1: Clear and start
“10”
Higher byte Lower byte
CAPTURE DATA
INT0IF
INT0
INTERRUPT
“11”
TIMER 0 + TIMER 1 → TIMER 0 (16-bit)
This figure is a example of using the Timer0, 1.
In the Timer2, 3, operation is same like Timer0,1, each registers and
flags may be changed with for Timer2,3.
Figure 11-10 16-bit Capture Mode
44
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
Example 1:
Timer0 = 16-bit timer mode, 0.5s at 8MHz
Timer2 = 2ms 8-bit timer mode at 8MHz
Timer3 = 250us 8-bit timer mode at 8MHz
LDM
LDM
LDM
LDM
LDM
LDM
SET1
SET1
SET1
EI
:
:
TDR0,#23H
TDR1,#0F4H
TM0,#0FH
TDR2,#249
TDR3,#124
TM2,#0110_1111B
T0E
T2E
T3E
LDM
LDM
SET1
LDM
LDM
LDM
SET1
LDM
LDM
SET1
EI
:
:
TDR0,#250
TM0,#0111_1111B
T0E
TDR2,#40H
TDR3,#2AH
TM2,#1111_1111B
T2E
IEDS,#XX11_XXXXB
PMR4,#XXXX_X1XXB
INT2E
X: don’t care.
Example 4:
Timer0 = 8-bit timer mode, 2ms interval at 8MHz
Timer2 = 16-bit capture mode
Example 2:
Timer0 = 8-bit timer mode, 2ms interval at 8MHz
Timer2 = 16-bit event counter mode
LDM
LDM
LDM
LDM
LDM
SET1
SET1
EI
:
:
GMS81508B/16B/24B
TDR0,#249
TM0,#0111_1111B
TDR2,#3FH
TDR3,#2AH
TM2,#0100_1100B
T0E
T2E
Example 3:
LDM
LDM
SET1
LDM
LDM
LDM
SET1
LDM
LDM
SET1
EI
:
:
TDR0,#249
TM0,#0111_1111B
T0E
TDR2,#40H
TDR3,#2AH
TM2,#1100_1111B
T2E
IEDS,#XX11_XXXXB
PMR4,#XXXX_X1XXB
INT2E
X: don’t care.
Timer0 = 8-bit timer mode, 2ms interval at 8MHz
Timer2 = 8-bit capture mode
DEC. 1999 Ver 1.04
45
GMS81508B/16B/24B
HYUNDAI MicroElectronics
12. ANALOG DIGITAL CONVERTER
The analog-to-digital converter (A/D) allows conversion
of an analog input signal to a corresponding 8-bit digital
value. The A/D module has eight analog inputs, which are
multiplexed into one sample and hold. The output of the
sample and hold is the input into the converter, which generates the result via successive approximation. The analog
supply voltage is connected to AVDD of ladder resistance
of A/D module.
The A/D module has two registers which are the control
register ADCM and A/D result register ADR. The register
ADCM, shown in Figure 12-2, controls the operation of
the A/D converter module. The port pins can be configured
as analog inputs or digital I/O. To use analog inputs, I/O is
selected input mode by R6DD direction register.
How to Use A/D Converter
The processing of conversion is start when the start bit
ADST is set to “1”. After one cycle, it is cleared by hardware. The register ADR contains the results of the A/D
conversion. When the conversion is completed, the result
is loaded into the ADR, the A/D conversion status bit
ADSF is set to “1”, and the A/D interrupt flag AIF is set.
The block diagram of the A/D module is shown in Figure
12-1. The A/D status bit ADSF is set automatically when
A/D conversion is completed, cleared when A/D conversion is in process. The conversion time takes maximum 20
uS (at fXIN=8 MHz).
“0”
AVDD
ADS[2:0]
000
R60/AN0
8-bit DAC
ADEN
LADDER RESISTOR
“1”
001
R61/AN1
R62/AN2
R63/AN3
010
011
100
R64/AN4
S/H
SUCCESSIVE
APPROXIMATION
CIRCUIT
ADIF
A/D
INTERRUPT
101
R65/AN5
R66/AN6
R67/AN7
Sample & Hold
110
111
ADR
ADDRESS: E9H
RESET VALUE: Undefined
A/D result register
Figure 12-1 A/D Block Diagram
Note: On the initial RESET, R60 port is selected as an analog input by ADCM register. So it can not be used digital
input port. To use this port as a digital I/O port, change to
except “0” the value of ADCM. Finally all eight ports can not
be used as digital I/O port simultaneously. At least one port
must be in analog port.
46
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
ADCM
7
-
6
-
GMS81508B/16B/24B
R/W
5
R/W
4
R/W R/W R/W R
3
2
1
0
ADEN ADS2 BTCL
ADS1 ADS0 ADST ADSF
ADDRESS: 0E8H
INITIAL VALUE: --00 0001B
A/D status bit
0: A/D conversion is in progress
1: A/D conversion is completed
A/D start bit
Setting this bit starts an A/D conversion.
After one cycle, bit is cleared to “0” by hardware.
Analog input channel select
000: Channel 0 (AN0)
001: Channel 1 (AN1)
010: Channel 2 (AN2)
011: Channel 3 (AN3)
100: Channel 4 (AN4)
101: Channel 5 (AN5)
110: Channel 6 (AN6)
111: Channel 7 (AN7)
A/D converter Enable bit
0: A/D converter module turn off and
current is not flow.
1: Enable A/D converter
R
7
ADR
R
6
R
5
R
4
R
3
BTCL
R
2
R
1
R
0
ADDRESS: 0E9H
INITIAL VALUE: Undefined
A/D Conversion Data
Figure 12-2 A/D Converter Control Register
DEC. 1999 Ver 1.04
47
GMS81508B/16B/24B
HYUNDAI MicroElectronics
13. SERIAL COMMUNICATION
The serial iterface is used to transmit/receive 8-bit data serially. This consists of serial I/O data register, serial I/O
mode register, clock selection circuit octal counter and
control circuit as illustrated in Figure 13-1.Pin R50/SIN,
R51/SOUT, R52/SCLK and R53/SRDY pins are con-
SIOST
trolled by the Serial Mode Register. The contents of the Serial I/O data register can be written into or read out by
software. The data in the Serial Data Register can be shifted synchronously with the transfer clock signal.
SIOSF
SCK[1:0]
XIN PIN
Prescaler
Start
overflow
÷8
÷ 16
÷ 32
00
“11”
CONTROL CIRCUIT
01
10
11
SCLK PIN
Complete
Clock
SRDY In
Clock
Complete
Octal
Counter
SIOIF
Serial communication
Interrupt
MUX
not “11”
SCK[1:0]
SRDY PIN
SRDY Out
Q
R
S
SOUT PIN
Input shift register
SIN PIN
Shift
SIOR
[0EBH]
Internal bus line
Figure 13-1 SCI Block Diagram
48
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Serial I/O Mode Register(SIOM) controls serial I/O function. According to SCK1 and SCK0, the internal clock or
external clock can be selected.
SIOM
7
-
R/W
6
R/W
5
SRDY SM1
R/W
4
Serial I/O Data Register(SIOR) is an 8-bit shift register.
First LSB is send or is received.
R/W R/W R/W R
3
2
1
0
SM0 BTCL
SCK1 SCK0 SIOST SIOSF
ADDRESS: 0EAH
INITIAL VALUE: -000 0001B
Serial transmission status bit
0: Serial transmission is in progress
1: Serial transmission is completed
Serial transmission start bit
Setting this bit starts an Serial transmission.
After one cycle, bit is cleared to “0” by hardware.
Serial transmission Clock selection
00: fXIN ÷ 4
01: fXIN ÷ 16
10: fXIN ÷ 32
11: External Clock
Serial transmission Operation Mode
00: Normal Port(R52,R51,R50)
01: Sending Mode(SCLK,SOUT,R50)
10: Receiving Mode(SCLK,R51,SIN)
11: Sending & Receiving Mode(SCLK,SOUT,SIN)
R53/SRDY Selection
0: R53
1: SRDY
SIOR
R/W R/W R/W R/W R/W R/W R/W R/W
7
6
5
4
3
2
1
0
BTCL
ADDRESS: 0EBH
INITIAL VALUE: Undefined
Sending Data at Sending Mode
Receiving Data at Receiving Mode
Figure 13-2 SCI Control Register
DEC. 1999 Ver 1.04
49
GMS81508B/16B/24B
HYUNDAI MicroElectronics
13.1 Transmission/Receiving Timing
is latched at rising edge of SCLK pin. When transmission
clock is counted 8 times, serial I/O counter is cleared as
‘0”. Transmission clock is halted in “H” state and serial I/
O interrupt(IFSIO) occurred.
The serial transmission is started by setting SIOST(bit1 of
SIOM) to “1”. After one cycle of SCK, SIOST is cleared
automatically to “0”. The serial output data from 8-bit shift
register is output at falling edge of SCLK. And input data
Input Clock
SCLK PIN
SIOST FLAG
Output
SOUT PIN
D0
SIN PIN
D0
D1
D2
D3
D4
D5
D6
D7
D1
D2
D3
D4
D5
D6
D7
Latch
SIOIF
INTERRUPT SIGNAL
Figure 13-3 Timing Diagram of Serial I/O
13.2 The Serial I/O operation by SRDY pin
Transmission clock = external clock
The SRDY pin becomes “L” by SIOST = “1”. This signal
tells to the external system that this device is ready for se-
rial transmission. The external system detects the “L” signal and starts transmission. The SRDY pin becomes “H” at
the first rising edge of transmission clock.
SIOST
SRDY(Output)
Transmission clock = internal clock
The I/O of SRDY pin is input mode. When the external
system is ready for serial transmission, The “L” level is in-
putted at this pin. At this time this device starts serial transmission.
SIOST
SRDY(Input)
50
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
13.3 The method of Serial I/O
1. Select transmission/receiving mode.
Note: When external clock is used, the frequency should
be less than 1MHz and recommended duty is 50%. If both
transmission mode is selected and transmission is performed simultaneously it would be made error.
2. In case of sending mode, write data to be send to SIOR.
3. Set SIOST to “1” to start serial transmission.
4. The SIO interrupt is generated at the completion of SIO
and SIOSF is set to “1”. In SIO interrupt service routine,
correct transmission should be tested.
5. In case of receiving mode, the received data is acquired
by reading the SIOR.
13.4 The Method to Test Correct Transmission
Serial I/O Interrupt
Service Routine
SIOSF
0
1
Abnormal
SE = 0
Write SIOM
SR
0
1
Normal Operation
Overrun Error
- SE: Interrupt Enable Register Low IENL(Bit3)
- SR: Interrupt Request Flag Register Low IRQL(Bit3)
Figure 13-4 Serial Method to Test Transmission
DEC. 1999 Ver 1.04
51
GMS81508B/16B/24B
HYUNDAI MicroElectronics
14. PWM OUTPUT
The GMS815xxB have two channels of built-in pulse
width modulation outputs. PWM outputs data are multiplex to the R56 and R57 port. Bit 6 and bit 7 of R5DD
should be set to “1” when PWM is used as an output port.
The input clock is selected by PWM Control Register
(PWMCR, address F2H) and the width of pulse is determined by the PWM Register (PWMR, address F0H and
F1H).
P0CK[1:0]
fXIN ÷ 256
00
fXIN ÷ 512
01
fXIN ÷ 1024
10
fXIN ÷ 2048
11
F/F
1
0
8-bit Counter
Overflow
EN0
S
R
Q
PWM0
Comparator
MUX
PWMR0
POL0
[0F0H]
P1CK[1:0]
fXIN ÷ 256
00
fXIN ÷ 512
01
fXIN ÷ 1024
10
fXIN ÷ 2048
11
F/F
1
0
8-bit Counter
Overflow
EN1
S
R
Q
PWM1
Comparator
MUX
PWMR1
POL1
[0F1H]
Figure 14-1 PWM block diagram
The pulse period according to input clock are shown as below.
Input clock
fXIN ÷ 256
fXIN ÷ 512
fXIN ÷ 1024
fXIN ÷ 2048
Period of PWM
8.19 ms
16.38 ms
32.77 ms
65.54 ms
Bit 2 (EN0) and bit 3 (EN1) of PWMCR determine the operation channel of PWM. When EN0=0 and EN1=0, PWM
does not execute
52
It is a PWM output controlled by PWMCR, PWMR0 and
PWMR1.
PWMR + 1
Duty ratio = ---------------------------- × 100%
256
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
W
W
W
W
GMS81508B/16B/24B
ADDRESS: 0F0H
RESET VALUE: Undefined
W W
W
W
PWMR0
Duty data
W
W
W
W
ADDRESS: 0F1H
RESET VALUE: Undefined
W
W
W
W
PWMR1
Duty data
Figure 14-2 PWM Duty Register
W
7
PWMCR
W
6
W
5
W
4
W
3
P1CK1 P1CK0 P0CK1 P0CK0 BTCL
EN1
W
2
EN0
W
1
POL1
W
0
ADDRESS: 0F2H
INITIAL VALUE: 0000 0000B
POL0
PWM0 output polarity
0: Active low
1: Active high
PWM1 output polarity
0: Active low
1: Active high
PWM1 clock selection
PWM0 clock selection
00: fXIN ÷ 256
01: fXIN ÷ 512
10: fXIN ÷ 1024
11: fXIN ÷ 2048
00: fXIN ÷ 256
01: fXIN ÷ 512
10: fXIN ÷ 1024
11: fXIN ÷ 2048
PWM enable flag
00: Disable
01: PWM0
10: PWM1
11: Both (PWM0 and PWM1)
Figure 14-3 PWM Control Register
Example:
PWM0: Period = 16.384ms, Duty = 20%
PWM1: Period = 8.192ms, Duty = 70%
DEC. 1999 Ver 1.04
LDM
LDM
LDM
PWMCR,#0100_1111B
PWMR0,#0B3H
PWMR1,#33H
53
GMS81508B/16B/24B
HYUNDAI MicroElectronics
active high
enable
PWMCR
0
1
0
fXIN
fixed
8MHz ÷ 512 ÷ 256 = 61.035Hz
0
1
1
1
1
fXIN
fixed
8MHz ÷ 256 ÷ 256 = 122.07Hz
16.384ms
8.192ms
5.728ms
3.264ms
PWM1
PWM0
PWMR0
PWMR1
33 H
16.384 × ------------- = 3.264ms
100 H
B3 H
8.192 × ------------- = 5.728ms
100 H
Figure 14-4 Example of Register Setting
54
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
15. BUZZER FUNCTION
The buzzer driver block consists of 6-bit binary counter,
buzzer register, and clock source selector. It generates
square-wave which has very wide range frequency (500Hz
~ 250kHz at fXIN= 8MHz) by user software.
The bit 0 to 5 of BUR determines output frequency for
buzzer driving.
A 50% duty pulse can be output to R55/BUZ pin to use for
piezo-electric buzzer drive. Pin R55 is assigned for output port
f XIN
f BUZ = ------------------------------------------------------------2 × DivideRatio × BUR
Equation of frequency calculation is shown below.
of Buzzer driver by setting the bit 5 of PMR5 (address D1H) to
“1”. At this time, the pin R55 must be defined as output
fBUZ: Buzzer frequency
mode (the bit 5 of R5DD=1).
fXIN: Oscillator frequency
Example: 2.4kHz output at 8MHz.
Divide Ratio: Prescaler divide ratio by BUCK[1:0]
BUR: Lower 6-bit value of BUR. Buzzer period value.
LDM
LDM
R5DD,#XX1X_XXXXB
BUR,#9AH
LDM
PMR5,#XX1X_XXXXB
The frequency of output signal is controlled by the buzzer
control register BUR.The bit 0 to bit 5 of BUR determine
output frequency for buzzer driving.
X means don’t care
R55 port data
6-bit binary
Prescaler
÷16
XIN PIN
00
÷32
6-BIT COUNTER
01
÷64
÷128
0
÷2
10
R55/BUZ PIN
1
F/F
11
Comparator
MUX
2
Compare data
6
PMR5
BUR
Port selection
[0D1H]
[0ECH]
Internal bus line
Figure 15-1 Block Diagram of Buzzer Driver
ADDRESS: 0D1H
RESET VALUE: --00 ----B
W
PMR5
-
-
ADDRESS: 0ECH
RESET VALUE: Undefined
W
W
-
-
-
-
BUR
W
W
W
W
W
W
W
BUCK1 BUCK0
R54/WDTO Selection
0: R54
1: WDTO (Output)
R55/BUZ Selection
0: R55 port (Turn off buzzer)
1: BUZ port (Turn on buzzer)
BUR[5:0]
Buzzer Period Data
Source clock select
00: ÷16
01: ÷ 32
10: ÷ 64
11: ÷128
Figure 15-2 PMR5 and Buzzer Register
DEC. 1999 Ver 1.04
55
GMS81508B/16B/24B
HYUNDAI MicroElectronics
Note: BUR is undefined after reset, so it must be initialized
to between 1H and 3FH by software.
Note that BUR is a write-only register.
The 6-bit counter is cleared and starts the counting by writing signal at BUR register. It is incremental from 00H until
it matches 6-bit BUR value.
When main-frequency is 8MHz, buzzer frequency is
shown as below table.
BUR
[5:0]
BUR[7:6]
00
01
10
11
BUR
[5:0]
BUR[7:6]
00
01
10
11
00
01
02
03
04
05
06
07
250.000
125.000
83.333
62.500
50.000
41.667
35.714
125.000
62.500
41.667
31.250
25.000
20.833
17.857
62.500
31.250
20.833
15.625
12.500
10.417
8.929
31.250
15.625
10.417
7.813
6.250
5.208
4.464
20
21
22
23
24
25
26
27
7.813
7.576
7.353
7.143
6.944
6.757
6.579
6.410
3.906
3.788
3.676
3.571
3.472
3.378
3.289
3.205
1.953
1.894
1.838
1.786
1.736
1.689
1.645
1.603
0.977
0.947
0.919
0.893
0.868
0.845
0.822
0.801
08
09
0A
0B
0C
0D
0E
0F
31.250
27.778
25.000
22.727
20.833
19.231
17.857
16.667
15.625
13.889
12.500
11.364
10.417
9.615
8.929
8.333
7.813
6.944
6.250
5.682
5.208
4.808
4.464
4.167
3.906
3.472
3.125
2.841
2.604
2.404
2.232
2.083
28
29
2A
2B
2C
2D
2E
2F
6.250
6.098
5.952
5.814
5.682
5.556
5.435
5.319
3.125
3.049
2.976
2.907
2.841
2.778
2.717
2.660
1.563
1.524
1.488
1.453
1.420
1.389
1.359
1.330
0.781
0.762
0.744
0.727
0.710
0.694
0.679
0.665
10
11
12
13
14
15
16
17
15.625
14.706
13.889
13.158
12.500
11.905
11.364
10.870
7.813
7.353
6.944
6.579
6.250
5.952
5.682
5.435
3.906
3.676
3.472
3.289
3.125
2.976
2.841
2.717
1.953
1.838
1.736
1.645
1.563
1.488
1.420
1.359
30
31
32
33
34
35
36
37
5.208
5.102
5.000
4.902
4.808
4.717
4.630
4.545
2.604
2.551
2.500
2.451
2.404
2.358
2.315
2.273
1.302
1.276
1.250
1.225
1.202
1.179
1.157
1.136
0.651
0.638
0.625
0.613
0.601
0.590
0.579
0.568
18
19
1A
1B
1C
1D
1E
1F
10.417
10.000
9.615
9.259
8.929
8.621
8.333
8.065
5.208
5.000
4.808
4.630
4.464
4.310
4.167
4.032
2.604
2.500
2.404
2.315
2.232
2.155
2.083
2.016
1.302
1.250
1.202
1.157
1.116
1.078
1.042
1.008
38
39
3A
3B
3C
3D
3E
3F
4.464
4.386
4.310
4.237
4.167
4.098
4.032
3.968
2.232
2.193
2.155
2.119
2.083
2.049
2.016
1.984
1.116
1.096
1.078
1.059
1.042
1.025
1.008
0.992
0.558
0.548
0.539
0.530
0.521
0.512
0.504
0.496
Table 15-1 Buzzer Frequency
56
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
16. INTERRUPTS
register (IENH, IENL), and the interrupt request flags (in
IRQH and IRQL) except Power-on reset and software
BRK interrupt. Below table shows the Interrupt priority.
The GMS815xxB interrupt circuits consist of Interrupt enable register (IENH, IENL), Interrupt request flags of
IRQH, IRQL, Priority circuit, and Master enable flag (“I”
flag of PSW). Thirteen interrupt sources are provided. The
configuration of interrupt circuit is shown in Figure 16-2.
Reset/Interrupt
The External Interrupts INT0 ~ INT3 each can be transition-activated (1-to-0 or 0-to-1 transition) by selection
IEDS.
The flags that actually generate these interrupts are bit
INT0F, INT1F, INT2F and INT3F in register IRQH. When
an external interrupt is generated, the flag that generated it
is cleared by the hardware when the service routine is vectored to only if the interrupt was transition-activated.
Hardware Reset
External Interrupt 0
External Interrupt 1
External Interrupt 2
External Interrupt 3
Timer/Counter 0
Timer/Counter 1
Timer/Counter 2
Timer/Counter 3
ADC Interrupt
Basic Interval Timer
Watchdog Timer
Serial Communication
The Timer 0 ~ Timer 3 Interrupts are generated by TxIF
which is set by a match in their respective timer/counter
register. The Basic Interval Timer Interrupt is generated by
BITIF which is set by an overflow in the timer register.
The AD converter Interrupt is generated by ADIF which is
set by finishing the analog to digital conversion.
The Watchdog timer Interrupt is generated by WDTIF
which set by a match in Watchdog timer register.
The Basic Interval Timer INterrupt is generated by BITIF
which are set by a overflow in the timer counter register.
R/W
R/W
R/W
R/W
INT0IF INT1IF INT2IF INT3IF
Priority
RESET
INT0
INT1
INT2
INT3
Timer 0
Timer 1
Timer 2
Timer 3
ADC
BIT
WDT
SCI
1
2
3
4
5
6
7
8
9
10
11
12
13
Vector addresses are shown in Figure 8-6 on page 21. Interrupt enable registers are shown in Figure 16-3. These
registers are composed of interrupt enable flags of each interrupt source and these flags determines whether an interrupt will be accepted or not. When enable flag is “0”, a
corresponding interrupt source is prohibited. Note that
PSW contains also a master enable bit, I-flag, which disables all interrupts at once.
The interrupts are controlled by the interrupt master enable
flag I-flag (bit 2 of PSW on page 19), the interrupt enable
IRQH
Symbol
R/W
R/W
R/W
R/W
T0IF
T1IF
T2IF
T3IF
MSB
ADDRESS: 0F7H
INITIAL VALUE: 0000 0000B
LSB
Timer/Counter 3 interrupt request flag
Timer/Counter 2 interrupt request flag
Timer/Counter 1 interrupt request flag
Timer/Counter 0 interrupt request flag
External interrupt 3 request flag
External interrupt 3 request flag
External interrupt 3 request flag
External interrupt 3 request flag
R/W
IRQL
ADIF
MSB
R/W
R/W
-
-
-
-
WDTIF BITIF
SIOIF
-
-
-
-
R/W
ADDRESS: 0F5H
INITIAL VALUE: 0000 ----B
LSB
Serial Communication interrupt request flag
Basic Interval Timer interrupt request flag
Watchdog timer interrupt request flag
A/D Converter interrupt request flag
Figure 16-1 Interrupt Request Flag
DEC. 1999 Ver 1.04
57
GMS81508B/16B/24B
HYUNDAI MicroElectronics
.
Internal bus line
[0F6H]
Interrupt Enable
Register (Higher byte)
IENH
IRQH
[0F7H]
INT0IF
INT1
INT1IF
INT2
INT2IF
INT3
INT3IF
Timer 0
T0IF
Timer 1
T1IF
Timer 2
T2IF
Timer 3
T3IF
Release STOP
Priority Control
INT0
To CPU
I-flag
Interrupt Master
Enable Flag
IRQL
[0F5H]
A/D Converter
I-flag is in PSW, it is cleared by “DI”, set by
“EI” instruction. When it goes interrupt service,
I-flag is cleared by hardware, thus any other
interrupt are inhibited. When interrupt service is
completed by “RETI” instruction, I-flag is set to
“1” by hardware.
ADIF
Watchdog Timer
Interrupt
Vector
Address
Generator
WDTIF
BIT
BITIF
Serial
Communication
SIOIF
[0F4H]
IENL
Interrupt Enable
Register (Lower byte)
Internal bus line
Figure 16-2 Block Diagram of Interrupt
R/W
IENH
INT0E
R/W
R/W
R/W
INT1E INT2E INT3E
R/W
R/W
R/W
R/W
T0E
T1E
T2E
T3E
MSB
ADDRESS: 0F6H
INITIAL VALUE: 0000 0000B
LSB
Timer/Counter 3 interrupt enable flag
Timer/Counter 2 interrupt enable flag
Timer/Counter 1 interrupt enable flag
Timer/Counter 0 interrupt enable flag
External interrupt 3 enable flag
External interrupt 2 enable flag
External interrupt 1 enable flag
External interrupt 0 enable flag
IENL
R/W
R/W
R/W
R/W
-
-
-
-
ADE
WDTE
BITE
SIOE
-
-
-
-
MSB
VALUE
0: Disable
1: Enable
ADDRESS: 0F4H
INITIAL VALUE: 0000 ----B
LSB
Serial Communication interrupt enable flag
Basic Interval Timer interrupt enable flag
Watchdog timer interrupt enable flag
A/D Converter interrupt enable flag
Figure 16-3 Interrupt Enable Flag
58
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
16.1 Interrupt Sequence
An interrupt request is held until the interrupt is accepted
or the interrupt latch is cleared to “0” by a reset or an instruction. Interrupt acceptance sequence requires 8 fXIN (2
µs at fMAIN=4.19MHz) after the completion of the current
instruction execution. The interrupt service task is terminated upon execution of an interrupt return instruction
[RETI].
Interrupt acceptance
1. The interrupt master enable flag (I-flag) is cleared to
“0” to temporarily disable the acceptance of any following maskable interrupts. When a non-maskable interrupt is accepted, the acceptance of any following
interrupts is temporarily disabled.
2. Interrupt request flag for the interrupt source accepted is
cleared to “0”.
3. The contents of the program counter (return address)
and the program status word are saved (pushed) onto the
stack area. The stack pointer decreases 3 times.
4. The entry address of the interrupt service program is
read from the vector table address and the entry address
is loaded to the program counter.
5. The instruction stored at the entry address of the interrupt service program is executed.
System clock
Instruction Fetch
SP
Address Bus
PC
Data Bus
Not used
SP-1
PCH
PCL
SP-2
PSW
V.L.
V.L.
ADL
V.H.
ADH
New PC
OP code
Internal Read
Internal Write
Interrupt Processing Step
Interrupt Service Task
V.L. and V.H. are vector addresses.
ADL and ADH are start addresses of interrupt service routine as vector contents.
Figure 16-4 Timing chart of Interrupt Acceptance and Interrupt Return Instruction
Basic Interval Timer
Vector Table Address
0FFE6H
0FFE7H
012H
0E3H
Entry Address
0E312H
0E313H
When nested interrupt service is required, the I-flag should
be set to “1” by “EI” instruction in the interrupt service
program. In this case, acceptable interrupt sources are selectively enabled by the individual interrupt enable flags.
0EH
2EH
Saving/Restoring General-purpose Register
Correspondence between vector table address for BIT interrupt
and the entry address of the interrupt service program.
A interrupt request is not accepted until the I-flag is set to
“1” even if a requested interrupt has higher priority than
that of the current interrupt being serviced.
DEC. 1999 Ver 1.04
During interrupt acceptance processing, the program
counter and the program status word are automatically
saved on the stack, but accumulator and other registers are
not saved itself. These registers are saved by the software
if necessary. Also, when multiple interrupt services are
nested, it is necessary to avoid using the same data memory
59
GMS81508B/16B/24B
HYUNDAI MicroElectronics
area for saving registers.
16.2 BRK Interrupt
The following method is used to save/restore the generalpurpose registers.
Software interrupt can be invoked by BRK instruction,
which has the lowest priority order.
Example: Register save using push and pop instructions
Interrupt vector address of BRK is shared with the vector
of TCALL 0 (Refer to Program Memory Section). When
BRK interrupt is generated, B-flag of PSW is set to distinguish BRK from TCALL 0.
INTxx:
PUSH
PUSH
PUSH
A
X
Y
;SAVE ACC.
;SAVE X REG.
;SAVE Y REG.
interrupt processing
POP
POP
POP
RETI
Y
X
A
Each processing step is determined by B-flag as shown in
Figure 16-5.
;RESTORE Y REG.
;RESTORE X REG.
;RESTORE ACC.
;RETURN
B-FLAG
General-purpose register save/restore using push and pop
instructions;
main task
acceptance of
interrupt
BRK or
TCALL0
=0
=1
BRK
INTERRUPT
ROUTINE
TCALL0
ROUTINE
RETI
RET
interrupt
service task
saving
registers
restoring
registers
Figure 16-5 Execution of BRK/TCALL0
interrupt return
60
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
16.3 Multi Interrupt
If two requests of different priority levels are received simultaneously, the request of higher priority level is serviced. If requests of the interrupt are received at the same
time simultaneously, an internal polling sequence determines by hardware which request is serviced.
Example: During Timer1 interrupt is in progress, INT0 interrupt serviced without any suspend.
Main Program
service
TIMER 1
service
enable INT0
disable other
INT0
service
EI
Occur
TIMER1 interrupt
However, multiple processing through software for special
features is possible. Generally when an interrupt is accepted, the I-flag is cleared to disable any further interrupt. But
as user sets I-flag in interrupt routine, some further interrupt can be serviced even if certain interrupt is in progress.
Occur
INT0
enable INT0
enable other
TIMER1: PUSH
PUSH
PUSH
LDM
LDM
EI
:
:
:
:
:
:
LDM
LDM
POP
POP
POP
RETI
A
X
Y
IENH,#80H
IENL,#0
;Enable INT0 only
;Disable other
;Enable Interrupt
IENH,#0FFH ;Enable all interrupts
IENL,#0F0H
Y
X
A
In this example, the INT0 interrupt can be serviced without any
pending, even TIMER1 is in progress.
Because of re-setting the interrupt enable registers IENH,IENL
and master enable “EI” in the TIMER1 routine.
Figure 16-6 Execution of Multi Interrupt
16.4 External Interrupt
The external interrupt on INT0, INT1, INT2 and INT3 pins
are edge triggered depending on the edge selection register
IEDS (address 0F8H) as shown in Figure 16-7.
DEC. 1999 Ver 1.04
The edge detection of external interrupt has three transition
61
GMS81508B/16B/24B
HYUNDAI MicroElectronics
activated mode: rising edge, falling edge, and both edge.
spondingly.
Example: To use as an INT0 and INT2
INT0 pin
INT0IF
INT0 INTERRUPT
INT1 pin
INT1IF
INT1 INTERRUPT
INT2 pin
INT2IF
:
:
;**** Set port as an input port R40,R42
LDM
R4DD,#1111_1010B
;
;**** Set port as an external interrupt port
LDM
PMR4,#05H
;
;**** Set Falling-edge Detection
LDM
IEDS,#0001_0001B
:
:
:
INT2 INTERRUPT
INT3 pin
Response Time
INT3IF
INT3 INTERRUPT
2
2
IEDS
2
2
Edge selection
Register
[0F8H]
Figure 16-7 External Interrupt Block Diagram
INT0 ~ INT3 are multiplexed with general I/O ports
(R40~R43). To use as an external interrupt pin, the bit of
R4 port mode register PMR4 should be set to “1” corre-
max. 12 fXIN
Interrupt Interrupt
goes
latched
active
The INT0 ~ INT3 edge are latched into INT1IF ~ INT3IF
at every machine cycle. The values are not actually polled
by the circuitry until the next machine cycle. If a request is
active and conditions are right for it to be acknowledged, a
hardware subroutine call to the requested service routine
will be the next instruction to be executed. The DIV itself
takes twelve cycles. Thus, a minimum of twelve complete
machine cycles elapse between activation of an external
interrupt request and the beginning of execution of the first
instruction of the service routine.
Figure 16-8shows interrupt response timings.
8 fXIN
Interrupt
processing
Interrupt
routine
Figure 16-8 Interrupt Response Timing Diagram
62
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
PMR4
GMS81508B/16B/24B
W
W
W
W
T3S
T1S
EC2S
W
W
W
W
ADDRESS: 0D0H
INITIAL VALUE: 00H
EC0S INT3S
BTCL INT2S INT1S INT0S
0: R47
1: T3O
MSB
LSB
0: R40
1: INT0
0: R46
1: T1O
0: R41
1: INT1
0: R45
1: EC2
0: R42
1: INT2
0: R44
0: R43
1: INT3
1: EC0
MSB
W
IEDS
W
W
W
W
W
W
LSB
W
BTCL IED1L IED0H IED0L
IED3H IED3L IED2H IED2L IED1H
INT3
INT2
INT1
ADDRESS: 0F8H
INITIAL VALUE: 00H
INT0
Edge selection register
00: Reserved
01: Falling (1-to-0 transition)
10: Rising (0-to-1 transition)
11: Both (Rising & Falling)
Figure 16-9 PMR4 and IEDS Registers
DEC. 1999 Ver 1.04
63
GMS81508B/16B/24B
HYUNDAI MicroElectronics
17. WATCHDOG TIMER
When the watchdog timer is not being used for malfunction detection, it can be used as a timer to generate an interrupt at fixed intervals.
The watchdog timer rapidly detects the CPU malfunction
such as endless looping caused by noise or the like, and resumes the CPU to the normal state.
The watchdog timer signal for detecting malfunction can
be selected either a reset CPU or a interrupt request.
clear
BASIC INTERVAL TIMER
OVERFLOW
Watchdog
Counter (8-bit)
Count source
clear
“0”
to reset CPU
“1”
enable
comparator
WDTON in CKCTLR [0D3H]
6-bit compare data
WDTCL
WDTIF
6
Watchdog Timer interrupt
Watchdog Timer
Register
WDTR
[0E0H]
Internal bus line
Figure 17-1 Block Diagram of Watchdog Timer
Watchdog Timer Control
er output will become active at the rising overflow from
the binary counters unless the binary counter is cleared. At
this time, when WDTON=1, a reset is generated, which
drives the RESET pin to low to reset the internal hardware.
When WDTON=0, a watchdog timer interrupt (WDTIF) is
generated.
Figure 17-2 shows the watchdog timer control register.
The watchdog timer is automatically disabled after reset.
The CPU malfunction is detected during setting of the detection time, selecting of output, and clearing of the binary
counter. Clearing the binary counter is repeated within the
detection time.
The watchdog timer temporarily stops counting in the
STOP mode, and when the STOP mode is released, it automatically restarts (continues counting).
If the malfunction occurs for any cause, the watchdog timW
7
WDTR
-
W
6
W
5
W
4
W
3
W
2
W
1
W
0
W DTCL
ADDRESS: 0E0H
INITIAL VALUE: -011_1111B
6-bit compare data
Clear count flag
0: Free-run count
1: When the WDTCL is set to “1”, binary counter
is cleared to “0”. And the WDTCL becomes “0” automatically
after one machine cycle. Counter count up again.
NOTE:
The WDTON bit is in register CKCTLR.
Figure 17-2 WDTR: Watchdog Timer Data Register
64
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Example: Sets the watchdog timer detection time to 0.5 sec at 4.19MHz
Within WDT
detection time
Within WDT
detection time
LDM
LDM
CKCTLR,#3FH
WDTR,#04FH
;Select 1/2048 clock source, WDTON ← 1, Clear Counter
LDM
:
:
:
:
LDM
:
:
:
:
LDM
WDTR,#04FH
;Clear counter
WDTR,#04FH
;Clear counter
WDTR,#04FH
;Clear counter
Enable and Disable Watchdog
Watchdog Timer Interrupt
Watchdog timer is enabled by setting WDTON (bit 5 in
CKCTLR) to “1”. WDTON is initialized to “0” during reset and it should be set to “1” to operate after reset is released.
The watchdog timer can be also used as a simple 6-bit timer by clearing bit5 of CKCTLR to “0”. The interval of
watchdog timer interrupt is decided by Basic Interval Timer. Interval equation is shown as below.
Example: Enables watchdog timer for Reset
:
LDM
:
:
T = WDTR × Interval of BIT
CKCTLR,#xx1x_xxxxB;WDTON ← 1
The stack pointer (SP) should be initialized before using
the watchdog timer output as an interrupt source.
Example: 6-bit timer interrupt set up.
The watchdog timer is disabled by clearing bit 5 (WDTON) of CKCTLR. The watchdog timer is halted in STOP
mode and restarts automatically after STOP mode is released.
LDM
LDM
CKCTLR,#xx0xxxxxB;WDTON ←0
WDTR,#7FH
;WDTCL ←1
:
Source clock
BIT overflow
Binary-counter
2
1
3
0
1
2
3
0
Counter
Clear
WDTR
3
n
Match
Detect
WDTIF interrupt
WDTR ← “0100_0011B”
WDT reset
reset
Figure 17-3 Watchdog timer Timing
If the watchdog timer output becomes active, a reset is generated, which drives the RESET pin low to reset the internal hardware.
DEC. 1999 Ver 1.04
The main clock oscillator also turns on when a watchdog
timer reset is generated in sub clock mode.
65
GMS81508B/16B/24B
HYUNDAI MicroElectronics
18. POWER DOWN OPERATION
GMS815xxB has a power-down mode. In power-down
mode, power consumption is reduced considerably that in
battery operation. Battery life can be extended a lot.
STOP Mode is entered by STOP instruction.
18.1 STOP Mode
For applications where power consumption is a critical
factor, device provides reduced power of STOP.
Note: Since the XIN pin is connected internally to GND to
avoid current leakage due to the crystal oscillator in STOP
mode, do not use STOP instruction when an external clock
is used as the main system clock.
Start The Stop Operation
An instruction that STOP causes to be the last instruction
is executed before going into the STOP mode. In the Stop
mode, the on-chip main-frequency oscillator is stopped.
With the clock frozen, all functions are stopped, but the onchip RAM and Control registers are held. The port pins
output the values held by their respective port data register,
the port direction registers. The status of peripherals during
Stop mode is shown below.
In the Stop mode of operation, VDD can be reduced to minimize power consumption. Be careful, however, that VDD
is not reduced before the Stop mode is invoked, and that
VDD is restored to its normal operating level before the
Stop mode is terminated.
CPU
All CPU operations are disabled
The reset should not be activated before VDD is restored to
its normal operating level, and must be held active long
enough to allow the oscillator to restart and stabilize.
And after STOP instruction, at least two or more NOP instruction should be written as shown in example below.
RAM
Retain
Example:
XIN PIN
Low
XOUT PIN
High
Oscillation
Stop
I/O ports
Retain
Control Registers
Retain
Release method
by RESET, by External interrupt
Peripheral
STOP Mode
LDM
STOP
NOP
NOP
:
The Interval Timer Register CKCTLR should be initialized (0FH or 0EH) by software in order that oscillation stabilization time should be longer than 20ms before STOP
mode.
~
~ ~
~
~
~
Oscillator
(XIN pin)
CKCTLR,#0000_1110B
~
~
~
~
Internal Clock
~
~
STOP Instruction
Executed
n+1 n+2
n+3
0
1
~
~ ~
~
n
~ ~
~
~
BIT Counter
~
~
External Interrupt
FE
FF
0
1
2
Clear
Normal Operation
Stop Operation
tST > 20ms
by software
Normal Operation
Before executing Stop instruction, Basic Interval Timer must be set
properly by software to get stabilization time which is longer than 20ms.
Figure 18-1 STOP Mode Release Timing by External Interrupt
66
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
Release the STOP mode
The exit from STOP mode is using hardware reset or external interrupt.
To release STOP mode, corresponding interrupt should be
enabled before STOP mode.
Reset redefines all the control registers but does not change
the on-chip RAM. External interrupts allow both on-chip
RAM and Control registers to retain their values.
Start-up is performed to acquire the time for stabilizing oscillation. During the start-up, the internal operations are all
stopped.
Chip function after event
Event
MCU Status before event
PC
Oscillator Circuit
Don’t care
Vector
on
STOP instruction
Normal operation
N +1
off
External Interrupt
Normal operation
Vector
on
External Interrupt Wake up
STOP, I flag = 1
STOP, I flag = 0
Vector
N+1
on
on
RESET
Table 18-1 Wake-up and Reset Function Table
18.2 Minimizing Current Consumption
The Stop mode is designed to reduce power consumption.
To minimize current drawn during Stop mode, the user
should turn-off output drivers that are sourcing or sinking
current, if it is practical.
Note: In the STOP operation, the power dissipation associated with the oscillator and the internal hardware is lowered; however, the power dissipation associated with the
pin interface (depending on the external circuitry and program) is not directly determined by the hardware operation
of the STOP feature. This point should be little current flows
when the input level is stable at the power voltage level
(VDD/VSS); however, when the input level becomes higher
than the power voltage level (by approximately 0.3V), a current begins to flow. Therefore, if cutting off the output transistor at an I/O port puts the pin signal into the highimpedance state, a current flow across the ports input transistor, requiring it to fix the level by pull-up or other means.
DEC. 1999 Ver 1.04
It should be set properly in order that current flow through
port doesn't exist.
First conseider the setting to input mode. Be sure that there
is no current flow after considering its relationship with
external circuit. In input mode, the pin impedance viewing
from external MCU is very high that the current doesn’t
flow.
But input voltage level should be VSS or VDD. Be careful
that if unspecified voltage, i.e. if unfirmed voltage level
(not VSSor VDD) is applied to input pin, there can be little
current (max. 1mA at around 2V) flow.
If it is not appropriate to set as an input mode, then set to
output mode considering there is no current flow. Setting
to High or Low is decided considering its relationship with
external circuit. For example, if there is external pull-up resistor then it is set to output mode, i.e. to High, and if there
67
GMS81508B/16B/24B
HYUNDAI MicroElectronics
is external pull-down register, it is set to low.
VDD
INPUT PIN
INPUT PIN
VDD
VDD
internal
pull-up
VDD
i=0
O
OPEN
O
i
i
GND
Very weak current flows
VDD
X
X
i=0
O
OPEN
Weak pull-up current flows
GND
O
When port is configure as an input, input level should
be closed to 0V or 5V to avoid power consumption.
Figure 18-2 Application Example of Unused Input Port
OUTPUT PIN
OUTPUT PIN
VDD
ON
OPEN
OFF
ON
OFF
O
OFF
VDD
GND
X
ON
i
ON
OFF
L
OFF
ON
i
GND
X
O
VDD
L
i=0
GND
O
In the left case, Tr. base current flows from port to GND.
To avoid power consumption, there should be low output
to the port.
In the left case, much current flows from port to GND.
Figure 18-3 Application Example of Unused Output Port
68
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
19. OSCILLATOR CIRCUIT
The GMS815xxB has two oscillation circuits internally.
XIN and XOUT are input and output for frequency, respec-
tively, inverting amplifier which can be configured for being used as an on-chip oscillator, as shown in Figure 19-1.
C1
XOUT
Open
C2
8MHz
XOUT
XIN
External Clock
VSS
XIN
Recommend
Crystal Oscillator
External Oscillator
C1,C2 = 30pF±10pF
Crystal or Ceramic Oscillator
Figure 19-1 Oscillation Circuit
Oscillation circuit is designed to be used either with a ceramic resonator or crystal oscillator. Since each crystal and
ceramic resonator have their own characteristics, the user
should consult the crystal manufacturer for appropriate
values of external components.
Oscillation circuit is designed to be used either with a ceramic resonator or crystal oscillator. Since each crystal and
ceramic resonator have their own characteristics, the user
should consult the crystal manufacturer for appropriate
values of external components.
XOUT
XIN
In addition, see Figure 19-2 for the layout of the crystal.
Note: Minimize the wiring length. Do not allow the wiring to
intersect with other signal conductors. Do not allow the wiring to come near changing high current. Set the potential of
the grounding position of the oscillator capacitor to that of
VSS. Do not ground it to any ground pattern where high current is present. Do not fetch signals from the oscillator.
DEC. 1999 Ver 1.04
Figure 19-2 Layout of Oscillator PCB circuit
69
GMS81508B/16B/24B
HYUNDAI MicroElectronics
20. RESET
The GMS815xxB have two types of reset generation procedures; one is an external reset input, the other is a watchOn-chip Hardware
Program counter
G-flag
Initial Value
(PC)
dog timer reset. Table 20-1 shows on-chip hardware initialization by reset action.
On-chip Hardware
Initial Value
(FFFFH) - (FFFEH)
Watchdog timer
Disable
0
Control registers
Refer to Table 8-1 on page 25
(G)
Peripheral clock
Off
Power fail detector
Disable
Table 20-1 Initializing Internal Status by Reset Action
20.1 External Reset Input
The reset input is the RESET pin, which is the input to a
Schmitt Trigger. A reset in accomplished by holding the
RESET pin low for at least 8 oscillator periods, within the
operating voltage range and oscillation stable, it is applied,
and the internal state is initialized. After reset, 64ms (at 4
MHz) add with 7 oscillator periods are required to start execution as shown in Figure 20-2.
A connection for simple power-on-reset is shown in Figure
20-1.
VCC
10kΩ
Internal RAM is not affected by reset. When VDD is turned
on, the RAM content is indeterminate. Therefore, this
RAM should be initialized before read or tested it.
+
10uF
When the RESET pin input goes to high, the reset operation is released and the program execution starts at the vector address stored at addresses FFFEH - FFFFH.
Figure 20-1 Simple Power-on-Reset Circuit
1
3
?
?
4
5
6
7
~
~
RESET
~
~
?
?
FFFE FFFF Start
~
~ ~
~
?
?
?
?
FE
ADL
ADH
OP
~
~
DATA
BUS
2
~
~
Oscillator
(XIN pin)
ADDRESS
BUS
to the RESET pin
7036P
Stabilization Time
tST = 62.5mS at 4.19MHz
RESET Process Step
tST =
1
fMAIN ÷1024
MAIN PROGRAM
x 256
Figure 20-2 Timing Diagram after RESET
20.2 Watchdog Timer Reset
Refer to “17. WATCHDOG TIMER” on page 64.
70
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
21. POWER FAIL PROCESSOR
The GMS815xxB has an on-chip power fail detection circuitry to immunize against power noise. A configuration
register, PFDR, can enable or disable the power fail detect
circuitry. Whenever VDD falls close to or below power fail
voltage for 100ns, the power fail situation may reset or
freeze MCU according to PFR bit of PFDR. Refer to “7.4
DC Electrical Characteristics” on page 13.
Note: If power fail voltage is selected to 3.0V on 3V operation, MCU is freezed at all the times.
Power FailFunction
OTP
MASK
Enable/Disable
by PFD flag
by PFD flag
Level Selection
by PFV flag
by mask option
In the in-circuit emulator, power fail function is not implemented and user can not experiment with it. Therefore, after final development of user program, this function may
be experimented or evaluated.
Table 21-1 Power fail processor
Note: User can select power fail voltage level according to
PFV bit of PFDR at the OTP(GMS815xxBT) but must select
the power fail voltage level to define PFD option of “Mask
Order & Verification Sheet” at the mask chip(GMS815xxB).
Because the power fail voltage level of mask chip
(GMS815xxB) is determined according to mask option regardless of PFV bit of PFDR
7
PFDR
6
5
4
R/W
3
PFV
R/W
2
R/W
1
R/W
0
PFD
PFR
PFS
ADDRESS: 0F9H
INITIAL VALUE: ---- 1100B
Power Fail Status
0: Normal operate
1: Set to “1” if power fail is detected
Operation Mode
0: Normal operation regardless of power fail
1: MCU will be reset by power fail detection
Disable Flag
0: Power fail detection enable
1: Power fail detection disable
Power Fail Voltage Selection Flag
0: 2.4V
1: 3.0V
Figure 21-1 Power Fail Voltage Detector Register
DEC. 1999 Ver 1.04
71
GMS81508B/16B/24B
HYUNDAI MicroElectronics
RESET VECTOR
YES
PFS =1
NO
RAM CLEAR
INITIALIZE RAM DATA
PFS = 0
Skip the
initial routine
INITIALIZE ALL PORTS
INITIALIZE REGISTERS
FUNTION
EXECUTION
Figure 21-2 Example S/W of RESET flow by Power fail
VDD
VPFDMAX
VPFDMIN
64mS
Internal
RESET
VDD
When PFR = 1
Internal
RESET
64mS
t <64mS
VDD
Internal
RESET
VPFDMAX
VPFDMIN
64mS
VPFDMAX
VPFDMIN
Figure 21-3 Power Fail Processor Situations
72
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
22. OTP PROGRAMMING
The GMS81516BT/24BT are OTP (One Time Programmable) microcontrollers. Its internal user memory is constructed with EPROM (Electrically Programmable Read
Only Memory).
The OTP micorcontroller is generally used for chip evaluation, first production, small amount production, fast mass
production, etc.
Blank OTP’s internal EPROM is filled by 00H, not FFH.
Note: In any case, you have to use *.OTP file, not *.HEX
file. After assemble, both OTP and HEX file are generated
by automatically. The HEX file is used during porgram emulation on emulator.
22.1 How to Program
To program the OTP devices, user can use HME own programmer or third party universal programmer shown as
listed below.
HME own programmer list
Manufacturer: Hyundai MicroElectronics
Programmer: Choice-Dr Writer
Choice-Sigma, Choice-Gang4
The Choice-Dr Writer is single writer and physically addon adapter board type, it should be used with Choice-Dr
emulator. However, the Choice-Sigma is stand alone HME
universal single programmer for any HME OTP devices,
also the Choice-Gang4 can program four OTPs at once.
Ask to HME sales part which is listed on appendix of this
manual.
Third party programmer list
Manufacturer: Hi-Lo Systems
Programmer: ALL-11, ALL-07
Website : http: //www.hilosystems.com.tw
posed of Motorola-S1 format.
3. Set the programming address range as below table.
GMS81516BT
Address
Set Value
Bufferstart address
4000H
Buffer end address
7FFFH
Device start address
C000H
GMS81524BT
Address
Set Value
Bufferstart address
2000H
Buffer end address
7FFFH
Device start address
A000H
4. Mount the socket adapter on the programmer.
5. Start program/verify.
22.2 Pin Function
VPP (Program Voltage)
VPP is the input for the program voltage for programming
the EPROM.
CE (Chip Enable)
CE is the input for programming and verifying internal
EPROM.
OE (Output Enable)
OE is the input of data output control signal for verify.
A0~A15 (Address Bus)
A0~A15 are address input pins for internal EPROM.
O0~O7 (EPROM Data Bus)
These are data bus for internal EPROM.
Socket adapters are supported by third party programmer’s
manufacturer. The other third party will be registered and
being under development.
Programming Procedure
1. Select device GMS81516BT or GMS81524BT.
2. Load the *.OTP file to the programmer. The file is com-
DEC. 1999 Ver 1.04
73
GMS81508B/16B/24B
HYUNDAI MicroElectronics
VDD
VPP
64SDIP
VDD
CE
OE
OPEN
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
GMS81516BT/24BT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
GND
O0
O1
O2
O3
O4
O5
O6
O7
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
O0
O1
O2
O3
O4
O5
O6
O7
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
GND
51
50
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
64MQFP
52
53
54
55
56
57
58
59
60
61
62
63
64
GMS815016BT/24BT
A10
A11
A12
A13
A14
A15
OPEN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
VDD
VPP
32
31
30
29
28
27
26
25
24
23
22
21
20
VDD
CE
OE
GND
Table 22-1 Socket Adapter Pin Assignment
74
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
O0
O1
O2
O3
O4
O5
O6
O7
A0
A1
A2
A3
A4
A5
A6
A7
64LQFP
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
GMS81516BT/24BT
A8
A9
A10
A11
A12
A13
A14
A15
OPEN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VDD
VPP
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
VDD
CE
OE
GND
Table 22-2 Socket Adapter Pin Assignment
DEC. 1999 Ver 1.04
75
GMS81508B/16B/24B
HYUNDAI MicroElectronics
22.3 Programming Specification
DEVICE OPERATION MODE
(TA = 25°C ± 5°C)
Mode
CE
OE
A0~A15
VPP
VDD
O0~O7
X1
VDD2
5.0V
DOUT
Read Mode
X1
Output Disable Mode
VIH
VIH
X1
VDD2
5.0V
Hi-Z
Programming Mode
VIL
VIH
X1
VPP2
VDD2
DIN
Program Verify
X1
X1
VPP2
VDD2
DOUT
1. X = Either VIL or VIH.
2. See DC Characteristics Table for VDD and VPP voltage during programming.
DEVICE CHARACTERISTICS
(VSS=0V, TA = 25°C ± 5°C)
Symbol
Item
Min
Typ
Max
Unit
VPP
Quick Pulse Programming
11.50
11.75
12.0
V
VDD1
Quick Pulse Programming
5.75
6.0
6.25
V
IPP2
VPP supply current
50
mA
IDD2
VDD supply current
30
mA
VIH
Input high voltage
VIL
Input low voltage
VOH
Output high voltage
VOL
Output low voltage
IIL
Input leakage current
0.8VDD
Test condition
CE=VIL
V
0.2VDD
VDD-0.1
V
V
IOH= -2.5mA
0.4
V
IOL= 2.1mA
5
µA
1. VDD must be applied simultaneously or before VPP and removed simultaneously or after VPP.
2. The maximum current value is with outputs O0 to O7 unloaded.
76
DEC. 1999 Ver 1.04
HYUNDAI MicroElectronics
GMS81508B/16B/24B
SWITCHING WAVEFORMS
WAVEFORM
INPUTS
OUTPUTS
Must be steady
Will be steady
May change
from H to L
Will be changing
from H to L
May change
from L to H
Will be changing
from L to H
Do not care any
change permitted
Changing state
unknown
Does not apply
Center line is
high impedance “Off” state
READING WAVEFORMS
VIH
Addresses
Addresses Valid
VIL
See note (2)
VIH
OE
VIL
tAS
tOE
tDH
VIH
High-Z
Output
Valid Output
VIL
1. The input timing reference level is 1.0V for a VIL and 4.0V for a VIH at VDD=5.0V.
2. To read the output data, transition requires on the OE form the high to the low after address setup time tAS.
DEC. 1999 Ver 1.04
77
GMS81508B/16B/24B
HYUNDAI MicroElectronics
PROGRAMMING ALGORITHM WAVEFORMS
Program
Verify
Program
VIH
Addresses
Addresses Valid
VIL
tAS
tAH
VIH
Data In/Out
High-Z
Data in Stable
Data out valid
VIL
tDH
tDS
tDFP
12.75V
VPP
VDD
tVPS
6.25V
VDD
5.0V
tVDS
VIH
CE
VIL
tPW
tOES
tOE
VIH
OE
VIL
1. The input timing reference level is 1.0V for a VIL and 4.0V for a VIH at VDD=5.0V.
78
DEC. 1999 Ver 1.04
AC READING CHARACTERISTICS
(VSS=0V, TA = 25°C ± 5°C)
Symbol
Item
tAS
Address setup time
tOE
Quick Pulse Programming
tDH
VPP supply current
Min
Typ
Max
Unit
Test condition
µs
2
0
200
ns
50
ns
Note: VDD must be applied simultaneously or before VPP and removed simultaneously or after VPP.
AC PROGRAMMING CHARACTERISTICS
(VSS=0V, TA = 25°C ± 5°C)
Symbol
Item
Min
Typ
Max
Unit
Address setup time
2
µs
tOES
OE setup time
2
µs
tDS
Data setup time
2
µs
tAH
Address hold time
0
µs
tDH
Data hold time
2
µs
tDFP
Output delay disable time
0
tVPS
VPP setup time
2
µs
tVDS
VDD setup time
2
µs
tPW
Program pulse width
95
tOE
Data output delay time
tAS
130
100
* AC CONDITION OF TEST
Input Rise and Fall Times (10% to 90%) ........................... 20ns
Input Pulse Levels ............................................................. 0.45V to 4.55V
Input Timing Reference Level............................................ 1.0V to 4.0V
Output Timing Reference Level ......................................... 1.0V to 4.0V
VDD must be applied simultaneously or before VPP and removed simultaneously or after VPP.
ns
105
µs
150
ns
Test condition*
GMS81508B/16B/24B
HYUNDAI MicroElectronics
START
ADDRESS=FIRST LOCATION
VCC =6.0V
VPP=11.75
X=0
PROGRAM ONE 100µs PULSE
INCREMENT X
X=25?
YES
NO
FAIL
VERIFY
BYTE
VERIFY
ONE BYTE
FAIL
PASS
PASS
INCREMENT
ADDRESS
NO
LAST
ADDRESS?
YES
VCC=VPP=5.0V
COMPARE
ALL BYTES TO
ORIGINAL
DATA
FAIL
PASS
DEVICE
PASSED
DEVICE
FAILED
Table 22-1 Programming Algorithm
80
DEC. 1999 Ver 1.04
APPENDIX
HYUNDAI Micro Electronics
GMS800 Series
A. CONTROL REGISTER LIST
Address
Register Name
Symbol
R/W
Initial Value
Page
7 6 5 4 3 2 1 0
00C0
R0 port data register
R0
R/W
Undefined
31
00C1
R0 port I/O direction register
R0DD
W
00000000
31
00C2
R1 port data register
R1
R/W
Undefined
31
00C3
R1 port I/O direction register
R1DD
W
00000000
31
00C4
R2 port data register
R2
R/W
Undefined
31
00C5
R2 port I/O direction register
R2DD
W
00000000
31
00C6
R3 port data register
R3
R/W
Undefined
32
00C7
R3 port I/O direction register
R3DD
W
00000000
32
00C8
R4 port data register
R4
R/W
Undefined
32
00C9
R4 port I/O direction register
R4DD
W
00000000
32
00CA
R5 port data register
R5
R/W
Undefined
33
00CB
R5 port I/O direction register
R5DD
W
00000000
33
00CC
R6 port data register
R6
R/W
Undefined
33
00CD
R6 port I/O direction register
R6DD
W
0000 - - - -
33
00D0
R4 port mode register
PMR4
W
00000000
32, 63
00D1
R5 port mode register
PMR5
W
- - 00 - - - -
33, 55
Basic interval timer mode register
BITR
R
Undefined
35
CKCTLR
W
- - 010111
35
WDTR
W
- 0111111
64
00D3
Clock control register
00E0
Watchdog Timer Register
00E2
Timer mode register 0
TM0
R/W
00000000
37
00E3
Timer mode register 2
TM2
R/W
00000000
37
Timer 0 data register
TDR0
W
Undefined
37
T0
R
Undefined
37
TDR1
W
Undefined
37
T1
R
Undefined
37
TDR2
W
Undefined
37
T2
R
Undefined
37
TDR3
W
Undefined
37
T3
R
Undefined
37
00E4
00E5
00E6
00E7
Timer 0 counter register
Timer 1 data register
Timer 1 counter register
Timer 2 data register
Timer 2 counter register
Timer 3 data register
Timer 3 counter register
00E8
A/D converter mode register
ADCM
R/W
- - 000001
47
00E9
A/D converter data register
ADR
R
Undefined
47
00EA
Serial I/O mode register
SIOM
R/W
- 0000001
49
00EB
Serial I/O register
SIOR
R/W
Undefined
49
00EC
Buzzer driver register
BUR
W
Undefined
55
00F0
PWM0 duty register
PWMR0
W
Undefined
53
00F1
PWM1 duty register
PWMR1
W
Undefined
53
DEC. 1999
i
GMS800 Series
Address
HYUNDAI Micro Electronics
Register Name
Symbol
R/W
Initial Value
Page
7 6 5 4 3 2 1 0
ii
00F2
PWM control register
PWMCR
W
00000000
53
00F4
Interrupt enable register low
IENL
R/W
0000 - - - -
58
00F5
Interrupt request flag register low
IRQL
R/W
0000 - - - -
57
00F6
Interrupt enable register high
IENH
R/W
00000000
58
00F7
Interrupt request flag register high
IRQH
R/W
00000000
57
00F8
External interrupt edge selection register
IEDS
W
00000000
63
00F9
Power fail detection register
PFDR
R/W
- - - - 1100
71
DEC. 1999
HYUNDAI Micro Electronics
GMS800 Series
B. SOFTWARE EXAMPLE
B.1 7-segment LED display
VDD
330Ω × 7
10kΩ × 7
UP/DOWN S/W
R20/INT0
CLEAR S/W
R21/INT1
R00
R01
R02
R03
R04
R05
R06
a
b
c
d
e
f
g
LED Display
4.7kΩ
R23
2N2222
GND
4.7kΩ
R22
2N2222
GMS81516
;*****************************************************************************
; Title:
GMS81516 (GMS800 Series) Demonstration Program
*
; Company:
HYUNDAI Micro Electronics
*
; Contents:
Decimal Up/Down Counter
*
; Programmer:
HME MCU application team
*
;*****************************************************************************
;
;******** DEFINE
I/O PORT & FUNCTION REGISTER ADDRESS *********
;
R0
EQU
0C0H
;port R0 register
R0DD
EQU
0C1H
;port R0 data I/O direction register
;
R1
EQU
0C2H
;port R1 register
R1DD
EQU
0C3H
;port R1 data I/O direction register
;
R2
EQU
0C4H
;port R2 register
R2DD
EQU
0C5H
;port R2 data I/O direction register
;
R3
EQU
0C6H
;port R3 register
R3DD
EQU
0C7H
;port R3 data I/O direction register
;
R4
EQU
0C8H
;port R4 register
R4DD
EQU
0C9H
;port R4 data I/O direction register
;
R5
EQU
0CAH
;port R5 register
R5DD
EQU
0CBH
;port R5 data I/O direction register
;
R6
EQU
0CCH
;port R6 register
R6DD
EQU
0CDH
;port R6 data I/O direction register
;
PMR4
EQU
0D0H
;port R4 mode register
T3S
EQU
7,0D0H
;timer3 selection
DEC. 1999
iii
GMS800 Series
T1S
EQU
EC2S
EQU
EC0S
EQU
INT3S
EQU
INT2S
EQU
INT1S
EQU
INT0S
EQU
;
PMR5
EQU
BUZS
EQU
WDTS
EQU
;
TMR
EQU
;
CKCTLR
EQU
BITR
EQU
;
;WDTR
EQU
;
TM0
EQU
TM2
EQU
;
TDR0
EQU
TDR1
EQU
TDR2
EQU
TDR3
EQU
;
ADCM
EQU
ADR
EQU
;
SIOM
EQU
;SIOR
EQU
;
BUR
EQU
;
PWMR0
EQU
PWMR1
EQU
;
PWMCR
EQU
;
IMOD
EQU
IENL
EQU
AE
EQU
WDTE
EQU
BITE
EQU
SE
EQU
;
IRQL
EQU
AR
EQU
WDTRF
EQU
BITRF
EQU
SR
EQU
;
IENH
EQU
INT0E
EQU
INT1E
EQU
INT2E
EQU
INT3E
EQU
T0E
EQU
T1E
EQU
T2E
EQU
T3E
EQU
;
IRQH
EQU
INT0R
EQU
INT1R
EQU
INT2R
EQU
INT3R
EQU
T0R
EQU
T1R
EQU
T2R
EQU
T3R
EQU
;
IEDS
EQU
;
;*********** MACRO
;
REG_SAVE
MACRO
PUSH
PUSH
iv
HYUNDAI Micro Electronics
6,0D0H
5,0D0H
4,0D0H
3,0D0H
2,0D0H
1,0D0H
0,0D0H
;timer1 selection
;event counter 2 selection
;event counter 0 selection
;external int.3 selection
;external int.2 selection
;external int.1 selection
;external int.0 selection
0D1H
5,0D1H
4,0D1H
;port R5 mode register
;buzzer selection
;watch dog timer selection
0D2H
;test mode register
0D3H
0D3H
;clock control register
;basic interval timer register
0E0H
;watch dog timer register
0E2H
0E3H
;timer0 mode register
;timer2 mode register
0E4H
0E5H
0E6H
0E7H
;tomer0
;tomer1
;tomer2
;tomer3
0E8H
0E9H
;A/D Converter mode register
;A/D con. register
0EAH
0EBH
;serial I/O mode register
;serial I/O register
0ECH
;buzzer data register
0F0H
0F1H
;PWM0 data register
;PWM1 data register
0F2H
;PWM control register
0F3H
0F4H
7,0F4H
6,0F4H
5,0F4H
4,0F4H
;interrupt mode register
;int. enable register low
;A/D con. int. enable
;W.D.T. int. enable
;B.I.T. int. enable
;serial I/O int. enable
0F5H
7,0F5H
6,0F5H
5,0F5H
4,0F5H
;int. request flag register low
;A/D con. int. request flag
;W.D.T. int. request flag
;B.I.T. int. request flag
;serial I/O int. request flag
0F6H
7,0F6H
6,0F6H
5,0F6H
4,0F6H
3,0F6H
2,0F6H
1,0F6H
0,0F6H
;int. enable register high
;external int.0 enable
;external int.1 enable
;external int.2 enable
;external int.3 enable
;timer0 int. enable
;timer1 int. enable
;timer2 int. enable
;timer3 int. enable
0F7H
7,0F7H
6,0F7H
5,0F7H
4,0F7H
3,0F7H
2,0F7H
1,0F7H
0,0F7H
;int. request flag register high
;external int.0 request flag
;external int.1 request flag
;external int.2 request flag
;external int.3 request flag
;timer0 int. request flag
;timer1 int. request flag
;timer2 int. request flag
;timer3 int. request flag
0F8H
;external int. edge selection
data
data
data
data
register
register
register
register
DEFINITION ************
;Save Registers to Stacks
A
X
DEC. 1999
HYUNDAI Micro Electronics
;
REG_RESTORE
PUSH
ENDM
Y
MACRO
POP
POP
POP
ENDM
Y
X
A
GMS800 Series
;Restore Register from Stacks
;
;*********** CONSTANT DEFINITION ***********
;
SEG_PORT
EQU
R0
;7-Segment Output Port
STROBE_PORT
EQU
R2
;Strobe Signal Port
;
;**************************************************************************
;
RAM
ALLOCATION
*
;**************************************************************************
DIGIT10
DS
1
;DIG10 Display Data
DIGIT1
DS
1
;Seg1 Display Data
STROBE
DS
1
;Strobe Signal Data
TMR_500mS
DS
1
;500ms Time Counter
FLAGS
DS
1
;Function Flags
UP_F
EQU
0,FLAGS
;1=Down,0=Up
F_500ms
EQU
1,FLAGS
;
;
;**************************************************************************
;
INTERRUPT
VECTOR
TABLE *
;**************************************************************************
;
ORG0FFE4H
DW
NOT_USED
; Serial I/O
DW
NOT_USED
; Basic Interval Timer
DW
NOT_USED
; Watch Dog Timer
DW
NOT_USED
; A/D CON.
DW
NOT_USED
; Timer-3
DW
NOT_USED
; Timer-2
DW
NOT_USED
; Timer-1
DW
TMR0_INT
; Timer-0
DW
NOT_USED
; Int.3
DW
NOT_USED
; Int.2
DW
INT_1
; Int.1
DW
INT_0
; Int.0
DW
NOT_USED
;
DW
RESET
; Reset
;
;**************************************************************************
;
MAIN
PROGRAM
*
;**************************************************************************
;
ORG
0C000H
;Program Start Address
;
RESET:
DI
;Disable All Interrupts
LDX
#0
RAM_CLR:
LDA
#0
;RAM Clear(!0000H->!00BFH)
STA
{X}+
;M(X) <- A, then X <- X+1
CMPX
#0C0H
;X = #0C0H ?
BNE
RAM_CLR
;
LDX
#0FEH
;Stack Pointer Initial
TXSP
;SP. <- #0FEH
DEC. 1999
LDM
LDM
R0,#0
R2,#0
;I/O Port Data Clear
LDM
LDM
R0DD,#0FFH
R2DD,#00FH
;7-Seg. Data Output Mode
;7-Seg. Strobe Output Mode
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
SET1
EI
STROBE,#0000_1011B
TDR0,#250
TM0,#0001_1111B
IRQH,#0
IRQL,#0
IENH,#1100_1000B
IENL,#00H
IEDS,#0101_0101B
PMR4,#03H
UP_F
;8us x 250 = 2000us
;Timer0(8bit),8us,Start Count-up
;Clear All Interrupts Requeat Flags
;EnableT0,Int0,Int1,Interrupt
;External Int. Falling edge select
;General port OR Int?
;Enable Interrupts
v
GMS800 Series
Loop:
HYUNDAI Micro Electronics
;
nop
IF
F_500ms == 1
clr1
F_500ms
call
INC_DEC
ENDIF
jmp
Loop
;
;***********************************************
; Subject:
Inc. or Dec. two digits
*
;***********************************************
; Entry:
UP_F
*
; Return:
UP_F=1, Increment two digits
*
;
UP_F=0, Decrement two digits
*
;***********************************************
;
INC_DEC:
BBC
UP_F,DOWN
;Check Down mode or Up mode
;
;**************************
;*
Up Count
*
;**************************
;
SETC
LDA
#0
; DIGIT1 <- DIGIT1 + 1
ADC
DIGIT1
IF
A == #0AH
setc
lda
#0
ENDIF
STA
DIGIT1
; Store result into DIGIT1
;
LDA
#0
; When Overflow is set,
ADC
DIGIT10
; DIGIT10 <- DIGIT10 + 1
IF
A == #10
lda
#0
ENDIF
STA
DIGIT10
RET
;
;**************************
;*
Down Count
*
;**************************
;
DOWN:
clrc
lda
DIGIT1
; DIGIT1 <- DIGIT1 - 1
sbc
#0
IF
A == #0FFH
lda
#9
clrc
ELSE
setc
ENDIF
sta
DIGIT1
; Store result into DIGIT1
;
lda
DIGIT10
; When Overflow is set,
sbc
#0
; DIGIT10 <- DIGIT10 - 1
IF
A == #0FFH
lda
#9
ENDIF
STA
DIGIT10
RET
;
;**************************************************************************
;
TIMER0,INTERRUPT ROUTINE(2ms)& INT0,INT1
*
;**************************************************************************
;
TMR0_INT:
REG_SAVE
;Save Registers to Stacks
CALL
DSPLY
;Segments Data Port Output
CALL
Make_500msFalg
;250ms mesurement
REG_RESTORE
;Restore Registers from Stacks
RETI
;
;**************************************************************************
;
EXTERNAL INTERRUPT 0 (UP/DOWN KEY)
*
;**************************************************************************
;
INT_0:
NOT1
UP_F
;INT0 Service routine
RETI
;Toggle the Up/Down mode
;
vi
DEC. 1999
HYUNDAI Micro Electronics
GMS800 Series
;**************************************************************************
;
EXTERNAL INTERRUPT 1 (CLEAR KEY)
*
;**************************************************************************
;
INT_1:
LDM
DIGIT1,#0
;INT1 Service routine
LDM
DIGIT10,#0
LDM
TMR_500MS,#0
;0.5Sec Restart
RETI
;
;***********************************************************************
; Subject:
Seven Segment Display (DSPLY)
*
;***********************************************************************
; Entry:
DIGIT10 or DIGIT1
*
; Return:
Output SEG_PORT (R00~R07),
*
;
Strobe_port (R22,R23)
*
; Scratch:
STROBE
*
;***********************************************************************
; Description: After read internal RAM data, output data to the port *
;***********************************************************************
;
DSPLY:
LDM
STROBE_PORT,#03H
;Segment All Turn Off
NOT1
STROBE.2
;Toggle strobe0
NOT1
STROBE.3
;Toggle strobe1
IF
ldy
ELSE
ldy
ENDIF
LDA
STA
LDA
STA
RET
STROBE.3 = 1
DIGIT1
;Test if R23 is high.
DIGIT10
!FONT+Y
SEG_PORT
STROBE
STROBE_PORT
;Segment Data output
;Current Digit Turn On
;Quit
;
;***********************************************
; Subject:
Set falg at every 500ms
*
;***********************************************
; Entry:
None
*
; Return:
500ms flag (F_500ms)
*
;***********************************************
;
Make_500msFalg:
INC
TMR_500MS
;count up every 2ms
LDA
TMR_500MS
IF
A == #250
;Compare 0.5S
ldm
TMR_500MS,#0
;clear 0.5sec. counter
set1
F_500ms
;set 0.5sec. flag
ENDIF
RET
;
;**************************************************************************
;
7-SEGMENT PATTERN DATA
*
;
_a_
*
;
f | g |b
*
;
|---|
*
;
e |___|c
*
;
d
.h
*
;**************************************************************************
;
Segment:
FONT
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
hgfe dcba
0011_1111B
0000_0110B
0101_1011B
0100_1111B
0110_0110B
0110_1101B
0111_1100B
0000_0111B
0111_1111B
0110_0111B
To be displayed Digit Number
;
;
;
;
;
;
;
;
;
;
0
1
2
3
4
5
6
7
8
9
;
;**************************************************************************
;
NOT_USED:
nop
;Discard Unexpected Interrupts
reti
;
END
;Notice Program End
DEC. 1999
vii
GMS800 Series
HYUNDAI Micro Electronics
C. INSTRUCTION
C.1 Terminology List
Terminology
Description
A
Accumulator
X
X - register
Y
Y - register
PSW
Program Status Word
#imm
8-bit Immediate data
dp
!abs
Direct Page Offset Address
Absolute Address
[]
Indirect expression
{}
Register Indirect expression
{ }+
Register Indirect expression, after that, Register auto-increment
.bit
Bit Position
A.bit
Bit Position of Accumulator
dp.bit
Bit Position of Direct Page Memory
M.bit
Bit Position of Memory Data (000H~0FFFH)
rel
upage
Relative Addressing Data
U-page (0FF00H~0FFFFH) Offset Address
n
Table CALL Number (0~15)
+
Addition
Upper Nibble Expression in Opcode
0
x
Bit Position
Upper Nibble Expression in Opcode
1
y
Bit Position
−
viii
Subtraction
×
Multiplication
/
Division
()
Contents Expression
∧
AND
∨
OR
⊕
Exclusive OR
~
NOT
←
Assignment / Transfer / Shift Left
→
Shift Right
↔
Exchange
=
Equal
≠
Not Equal
DEC. 1999
HYUNDAI Micro Electronics
GMS800 Series
C.2 Instruction Map
LOW 00000
HIGH
00
00001
01
SET1
dp.bit
00010
02
00011
03
BBS
BBS
A.bit,rel dp.bit,rel
00100
04
00101
05
00110
06
00111
07
01000
08
01001
09
ADC
#imm
ADC
dp
ADC
dp+X
ADC
!abs
ASL
A
ASL
dp
01010
0A
01011
0B
01100
0C
01101
0D
01110
0E
01111
0F
TCALL SETA1
0
.bit
BIT
dp
POP
A
PUSH
A
BRK
000
-
001
CLRC
SBC
#imm
SBC
dp
SBC
dp+X
SBC
!abs
ROL
A
ROL
dp
TCALL CLRA1
2
.bit
COM
dp
POP
X
PUSH
X
BRA
rel
010
CLRG
CMP
#imm
CMP
dp
CMP
dp+X
CMP
!abs
LSR
A
LSR
dp
TCALL
4
NOT1
M.bit
TST
dp
POP
Y
PUSH
Y
PCALL
Upage
011
DI
OR
#imm
OR
dp
OR
dp+X
OR
!abs
ROR
A
ROR
dp
TCALL
6
OR1
OR1B
CMPX
dp
POP
PSW
PUSH
PSW
RET
100
CLRV
AND
#imm
AND
dp
AND
dp+X
AND
!abs
INC
A
INC
dp
TCALL AND1
8
AND1B
CMPY
dp
CBNE
dp+X
TXSP
INC
X
101
SETC
EOR
#imm
EOR
dp
EOR
dp+X
EOR
!abs
DEC
A
DEC
dp
TCALL EOR1
10
EOR1B
DBNE
dp
XMA
dp+X
TSPX
DEC
X
110
SETG
LDA
#imm
LDA
dp
LDA
dp+X
LDA
!abs
TXA
LDY
dp
TCALL
12
LDC
LDCB
LDX
dp
LDX
dp+Y
XCN
DAS
111
EI
LDM
dp,#imm
STA
dp
STA
dp+X
STA
!abs
TAX
STY
dp
TCALL
14
STC
M.bit
STX
dp
STX
dp+Y
XAX
STOP
10011
13
10100
14
10101
15
10110
16
10111
17
11000
18
11001
19
11010
1A
11011
1B
11100
1C
11101
1D
11110
1E
11111
1F
ADC
{X}
ADC
!abs+Y
ADC
[dp+X]
ADC
[dp]+Y
ASL
!abs
ASL
dp+X
TCALL
1
JMP
!abs
BIT
!abs
ADDW
dp
LDX
#imm
JMP
[!abs]
TEST
!abs
SUBW
dp
LDY
#imm
JMP
[dp]
TCLR1 CMPW
!abs
dp
CMPX
#imm
CALL
[dp]
LOW 10000
HIGH
10
10001
11
10010
12
000
BPL
rel
001
BVC
rel
SBC
{X}
SBC
!abs+Y
SBC
[dp+X]
SBC
[dp]+Y
ROL
!abs
ROL
dp+X
TCALL
3
CALL
!abs
010
BCC
rel
CMP
{X}
CMP
!abs+Y
CMP
[dp+X]
CMP
[dp]+Y
LSR
!abs
LSR
dp+X
TCALL
5
MUL
011
BNE
rel
OR
{X}
OR
!abs+Y
OR
[dp+X]
OR
[dp]+Y
ROR
!abs
ROR
dp+X
TCALL
7
DBNE
Y
CMPX
!abs
LDYA
dp
CMPY
#imm
RETI
100
BMI
rel
AND
{X}
AND
!abs+Y
AND
[dp+X]
AND
[dp]+Y
INC
!abs
INC
dp+X
TCALL
9
DIV
CMPY
!abs
INCW
dp
INC
Y
TAY
101
BVS
rel
EOR
{X}
EOR
!abs+Y
EOR
[dp+X]
EOR
[dp]+Y
DEC
!abs
DEC
dp+X
TCALL
11
XMA
{X}
XMA
dp
DECW
dp
DEC
Y
TYA
110
BCS
rel
LDA
{X}
LDA
!abs+Y
LDA
[dp+X]
LDA
[dp]+Y
LDY
!abs
LDY
dp+X
TCALL
13
LDA
{X}+
LDX
!abs
STYA
dp
XAY
DAA
111
BEQ
rel
STA
{X}
STA
!abs+Y
STA
[dp+X]
STA
[dp]+Y
STY
!abs
STY
dp+X
TCALL
15
STA
{X}+
STX
!abs
CBNE
dp
XYX
NOP
DEC. 1999
CLR1
BBC
BBC
dp.bit
A.bit,rel
dp.bit,rel
ix
GMS800 Series
HYUNDAI Micro Electronics
C.3 Instruction Set
Arithmetic / Logic Operation
No.
x
Mnemonic
Op
Code
Byte
No
Cycle
No
Operation
1
ADC #imm
04
2
2
Add with carry.
2
ADC dp
05
2
3
A←(A)+(M)+C
3
ADC dp + X
06
2
4
4
ADC !abs
07
3
4
5
ADC !abs + Y
15
3
5
NV--H-ZC
6
ADC [ dp + X ]
16
2
6
7
ADC [ dp ] + Y
17
2
6
8
ADC { X }
14
1
3
9
AND #imm
84
2
2
Logical AND
10
AND dp
85
2
3
A← (A)∧(M)
11
AND dp + X
86
2
4
12
AND !abs
87
3
4
13
AND !abs + Y
95
3
5
14
AND [ dp + X ]
96
2
6
15
AND [ dp ] + Y
97
2
6
16
AND { X }
94
1
3
17
ASL A
08
1
2
18
ASL dp
09
2
4
19
ASL dp + X
19
2
5
20
ASL !abs
18
3
5
21
CMP #imm
44
2
2
22
CMP dp
45
2
3
23
CMP dp + X
46
2
4
24
CMP !abs
47
3
4
25
CMP !abs + Y
55
3
5
26
CMP [ dp + X ]
56
2
6
27
CMP [ dp ] + Y
57
2
6
28
CMP { X }
54
1
3
29
CMPX #imm
5E
2
2
30
CMPX dp
6C
2
3
31
CMPX !abs
7C
3
4
Flag
NVGBHIZC
N-----Z-
Arithmetic shift left
C
7 6 5 4 3 2 1 0
← ←←←←←←←←
N-----ZC
← “0”
Compare accumulator contents with memory contents
(A) -(M)
N-----ZC
Compare X contents with memory contents
(X)-(M)
N-----ZC
32
CMPY #imm
7E
2
2
33
CMPY dp
8C
2
3
Compare Y contents with memory contents
34
CMPY !abs
9C
3
4
35
COM dp
2C
2
4
1’S Complement : ( dp ) ← ~( dp )
N-----Z-
36
DAA
DF
1
3
Decimal adjust for addition
N-----ZC
37
DAS
CF
1
3
Decimal adjust for subtraction
N-----ZC
Decrement
N-----Z-
(Y)-(M)
N-----ZC
38
DEC A
A8
1
2
39
DEC dp
A9
2
4
40
DEC dp + X
B9
2
5
N-----Z-
41
DEC !abs
B8
3
5
N-----Z-
42
DEC X
AF
1
2
N-----Z-
43
DEC Y
BE
1
2
N-----Z-
M← (M)-1
N-----Z-
DEC. 1999
HYUNDAI Micro Electronics
No.
Mnemonic
Op
Code
GMS800 Series
Byte
No
Cycle
No
Operation
44
DIV
9B
1
12
Divide : YA / X Q: A, R: Y
45
EOR #imm
A4
2
2
Exclusive OR
Flag
NVGBHIZC
NV--H-Z-
A← (A)⊕(M)
46
EOR dp
A5
2
3
47
EOR dp + X
A6
2
4
48
EOR !abs
A7
3
4
49
EOR !abs + Y
B5
3
5
50
EOR [ dp + X ]
B6
2
6
51
EOR [ dp ] + Y
B7
2
6
52
EOR { X }
B4
1
3
53
INC A
88
1
2
54
INC dp
89
2
4
55
INC dp + X
99
2
5
N-----Z-
56
INC !abs
98
3
5
N-----Z-
57
INC X
8F
1
2
N-----Z-
58
INC Y
9E
1
2
N-----Z-
59
LSR A
48
1
2
60
LSR dp
49
2
4
61
LSR dp + X
59
2
5
62
LSR !abs
58
3
5
63
MUL
5B
1
9
Multiply : YA ← Y × A
64
OR #imm
64
2
2
Logical OR
65
OR dp
65
2
3
66
OR dp + X
66
2
4
67
OR !abs
67
3
4
68
OR !abs + Y
75
3
5
69
OR [ dp + X ]
76
2
6
70
OR [ dp ] + Y
77
2
6
71
OR { X }
74
1
3
72
ROL A
28
1
2
73
ROL dp
29
2
4
74
ROL dp + X
39
2
5
75
ROL !abs
38
3
5
76
ROR A
68
1
2
Rotate right through Carry
77
ROR dp
69
2
4
78
ROR dp + X
79
2
5
7 6 5 4 3 2 1 0
→→→→→→→→
79
ROR !abs
78
3
5
80
SBC #imm
24
2
2
81
SBC dp
25
2
3
82
SBC dp + X
26
2
4
83
SBC !abs
27
3
4
84
SBC !abs + Y
35
3
5
85
SBC [ dp + X ]
36
2
6
86
SBC [ dp ] + Y
37
2
6
87
SBC { X }
34
1
3
88
TST dp
4C
2
3
Test memory contents for negative or zero, ( dp ) - 00H
N-----Z-
5
Exchange nibbles within the accumulator
A7~A4 ↔ A3~A0
N-----Z-
89
XCN
DEC. 1999
CE
1
N-----Z-
Increment
N-----ZC
M← (M)+1
N-----Z-
Logical shift right
7 6 5 4 3 2 1 0
C
“0” → → → → → → → → → →
N-----ZC
N-----Z-
A ← (A)∨(M)
N-----Z-
Rotate left through Carry
C
7 6 5 4 3 2 1 0
←←←←←←←←
C
N-----ZC
N-----ZC
Subtract with Carry
A ← ( A ) - ( M ) - ~( C )
NV--HZC
xi
GMS800 Series
HYUNDAI Micro Electronics
Register / Memory Operation
No.
xii
Mnemonic
Op
Code
Byte
No
Cycle
No
1
LDA #imm
C4
2
2
2
LDA dp
C5
2
3
3
LDA dp + X
C6
2
4
4
LDA !abs
C7
3
4
5
LDA !abs + Y
D5
3
5
6
LDA [ dp + X ]
D6
2
6
7
LDA [ dp ] + Y
D7
2
6
8
LDA { X }
D4
1
3
Operation
Load accumulator
A←(M)
N-----Z-
9
LDA { X }+
DB
1
4
X- register auto-increment : A ← ( M ) , X ← X + 1
10
LDM dp,#imm
E4
3
5
Load memory with immediate data : ( M ) ← imm
11
LDX #imm
1E
2
2
Load X-register
12
LDX dp
CC
2
3
13
LDX dp + Y
CD
2
4
14
LDX !abs
DC
3
4
15
LDY #imm
3E
2
2
16
LDY dp
C9
2
3
17
LDY dp + X
D9
2
4
18
LDY !abs
D8
3
4
19
STA dp
E5
2
4
20
STA dp + X
E6
2
5
21
STA !abs
E7
3
5
22
STA !abs + Y
F5
3
6
23
STA [ dp + X ]
F6
2
7
24
STA [ dp ] + Y
F7
2
7
Flag
NVGBHIZC
X ←(M)
-------N-----Z-
Load Y-register
Y←(M)
N-----Z-
Store accumulator contents in memory
(M)←A
--------
25
STA { X }
F4
1
4
26
STA { X }+
FB
1
4
X- register auto-increment : ( M ) ← A, X ← X + 1
27
STX dp
EC
2
4
Store X-register contents in memory
28
STX dp + Y
ED
2
5
29
STX !abs
FC
3
5
30
STY dp
E9
2
4
31
STY dp + X
F9
2
5
32
STY !abs
F8
3
5
33
TAX
E8
1
2
Transfer accumulator contents to X-register : X ← A
N-----Z-
34
TAY
9F
1
2
Transfer accumulator contents to Y-register : Y ← A
N-----Z-
35
TSPX
AE
1
2
Transfer stack-pointer contents to X-register : X ← sp
N-----Z-
36
TXA
C8
1
2
Transfer X-register contents to accumulator: A ← X
N-----Z-
37
TXSP
8E
1
2
Transfer X-register contents to stack-pointer: sp ← X
N-----Z-
38
TYA
BF
1
2
Transfer Y-register contents to accumulator: A ← Y
N-----Z-
39
XAX
EE
1
4
Exchange X-register contents with accumulator :X ↔ A
--------
40
XAY
DE
1
4
Exchange Y-register contents with accumulator :Y ↔ A
--------
41
XMA dp
BC
2
5
Exchange memory contents with accumulator
42
XMA dp+X
AD
2
6
43
XMA {X}
BB
1
5
44
XYX
FE
1
4
(M)← X
--------
Store Y-register contents in memory
(M)← Y
(M)↔A
Exchange X-register contents with Y-register : X ↔ Y
--------
N-----Z--------
DEC. 1999
HYUNDAI Micro Electronics
GMS800 Series
16-BIT operation
No.
Mnemonic
Op
Code
Byte
No
Cycle
No
Operation
Flag
NVGBHIZC
1
ADDW dp
1D
2
5
16-Bits add without Carry
YA ← ( YA ) + ( dp +1 ) ( dp )
NV--H-ZC
2
CMPW dp
5D
2
4
Compare YA contents with memory pair contents :
(YA) − (dp+1)(dp)
N-----ZC
3
DECW dp
BD
2
6
Decrement memory pair
( dp+1)( dp) ← ( dp+1) ( dp) - 1
N-----Z-
4
INCW dp
9D
2
6
Increment memory pair
( dp+1) ( dp) ← ( dp+1) ( dp ) + 1
N-----Z-
5
LDYA dp
7D
2
5
Load YA
YA ← ( dp +1 ) ( dp )
N-----Z-
6
STYA dp
DD
2
5
Store YA
( dp +1 ) ( dp ) ← YA
--------
7
SUBW dp
3D
2
5
16-Bits subtract without carry
YA ← ( YA ) - ( dp +1) ( dp)
NV--H-ZC
Op
Code
Byte
No
Cycle
No
Bit Manipulation
No.
Mnemonic
Operation
Flag
NVGBHIZC
1
AND1 M.bit
8B
3
4
Bit AND C-flag : C ← ( C ) ∧ ( M .bit )
-------C
2
AND1B M.bit
8B
3
4
Bit AND C-flag and NOT : C ← ( C ) ∧ ~( M .bit )
-------C
3
BIT dp
0C
2
4
Bit test A with memory :
MM----Z-
4
BIT !abs
1C
3
5
Z ← ( A ) ∧ ( M ) , N ← ( M 7 ) , V ← ( M6 )
5
CLR1 dp.bit
y1
2
4
Clear bit : ( M.bit ) ← “0”
--------
6
CLRA1 A.bit
2B
2
2
Clear A bit : ( A.bit ) ← “0”
--------
7
CLRC
20
1
2
Clear C-flag : C ← “0”
-------0
8
CLRG
40
1
2
Clear G-flag : G ← “0”
--0-----
9
CLRV
80
1
2
Clear V-flag : V ← “0”
-0--0---
10
EOR1 M.bit
AB
3
5
Bit exclusive-OR C-flag : C ← ( C ) ⊕ ( M .bit )
-------C
11
EOR1B M.bit
AB
3
5
Bit exclusive-OR C-flag and NOT : C ← ( C ) ⊕ ~(M .bit)
-------C
12
LDC M.bit
CB
3
4
Load C-flag : C ← ( M .bit )
-------C
13
LDCB M.bit
CB
3
4
Load C-flag with NOT : C ← ~( M .bit )
-------C
14
NOT1 M.bit
4B
3
5
Bit complement : ( M .bit ) ← ~( M .bit )
--------
15
OR1 M.bit
6B
3
5
Bit OR C-flag : C ← ( C ) ∨ ( M .bit )
-------C
16
OR1B M.bit
6B
3
5
Bit OR C-flag and NOT : C ← ( C ) ∨ ~( M .bit )
-------C
17
SET1 dp.bit
x1
2
4
Set bit : ( M.bit ) ← “1”
--------
18
SETA1 A.bit
0B
2
2
Set A bit : ( A.bit ) ← “1”
--------
19
SETC
A0
1
2
Set C-flag : C ← “1”
-------1
20
SETG
C0
1
2
Set G-flag : G ← “1”
--1-----
21
STC M.bit
EB
3
6
Store C-flag : ( M .bit ) ← C
--------
22
TCLR1 !abs
5C
3
6
Test and clear bits with A :
A - ( M ) , ( M ) ← ( M ) ∧ ~( A )
N-----Z-
23
TSET1 !abs
3C
3
6
Test and set bits with A :
A-(M), (M)← (M)∨(A)
N-----Z-
DEC. 1999
xiii
GMS800 Series
HYUNDAI Micro Electronics
Branch / Jump Operation
No.
Mnemonic
Op
Code
Byte
No
Cycle
No
Operation
Flag
NVGBHIZC
1
BBC A.bit,rel
y2
2
4/6
Branch if bit clear :
2
BBC dp.bit,rel
y3
3
5/7
if ( bit ) = 0 , then pc ← ( pc ) + rel
3
BBS A.bit,rel
x2
2
4/6
Branch if bit set :
4
BBS dp.bit,rel
x3
3
5/7
if ( bit ) = 1 , then pc ← ( pc ) + rel
5
BCC rel
50
2
2/4
Branch if carry bit clear
if ( C ) = 0 , then pc ← ( pc ) + rel
--------
6
BCS rel
D0
2
2/4
Branch if carry bit set
if ( C ) = 1 , then pc ← ( pc ) + rel
--------
7
BEQ rel
F0
2
2/4
Branch if equal
if ( Z ) = 1 , then pc ← ( pc ) + rel
--------
8
BMI rel
90
2
2/4
Branch if minus
if ( N ) = 1 , then pc ← ( pc ) + rel
--------
9
BNE rel
70
2
2/4
Branch if not equal
if ( Z ) = 0 , then pc ← ( pc ) + rel
--------
10
BPL rel
10
2
2/4
Branch if minus
if ( N ) = 0 , then pc ← ( pc ) + rel
--------
11
BRA rel
2F
2
4
Branch always
pc ← ( pc ) + rel
--------
12
BVC rel
30
2
2/4
Branch if overflow bit clear
if (V) = 0 , then pc ← ( pc) + rel
--------
13
BVS rel
B0
2
2/4
Branch if overflow bit set
if (V) = 1 , then pc ← ( pc ) + rel
--------
14
CALL !abs
3B
3
8
Subroutine call
15
CALL [dp]
5F
2
8
M( sp)←( pcH ), sp←sp - 1, M(sp)← (pcL), sp ←sp - 1,
if !abs, pc← abs ; if [dp], pcL← ( dp ), pcH← ( dp+1 ) .
--------
16
CBNE dp,rel
FD
3
5/7
Compare and branch if not equal :
--------
17
CBNE dp+X,rel
8D
3
6/8
18
DBNE dp,rel
AC
3
5/7
Decrement and branch if not equal :
19
DBNE Y,rel
7B
2
4/6
if ( M ) ≠ 0 , then pc ← ( pc ) + rel.
20
JMP !abs
1B
3
3
21
JMP [!abs]
1F
3
5
22
JMP [dp]
3F
2
4
23
PCALL upage
4F
2
6
U-page call
M(sp) ←( pcH ), sp ←sp - 1, M(sp) ← ( pcL ),
sp ← sp - 1, pcL ← ( upage ), pcH ← ”0FFH” .
--------
24
TCALL n
nA
1
8
Table call : (sp) ←( pcH ), sp ← sp - 1,
M(sp) ← ( pcL ),sp ← sp - 1,
pcL ← (Table vector L), pcH ← (Table vector H)
--------
xiv
---------------
if ( A ) ≠ ( M ) , then pc ← ( pc ) + rel.
--------
Unconditional jump
pc ← jump address
--------
DEC. 1999
HYUNDAI Micro Electronics
GMS800 Series
Control Operation & Etc.
No.
1
Mnemonic
BRK
Op
Code
Byte
No
Cycle
No
Operation
0F
1
8
Software interrupt : B ← ”1”, M(sp) ← (pcH), sp ←sp-1,
M(s) ← (pcL), sp ← sp - 1, M(sp) ← (PSW), sp ← sp -1,
pcL ← ( 0FFDE H ) , pcH ← ( 0FFDFH) .
---1-0--
Flag
NVGBHIZC
2
DI
60
1
3
Disable all interrupts : I ← “0”
-----0--
3
EI
E0
1
3
Enable all interrupt : I ← “1”
-----1--
4
NOP
FF
1
2
No operation
--------
5
POP A
0D
1
4
sp ← sp + 1, A ← M( sp )
6
POP X
2D
1
4
sp ← sp + 1, X ← M( sp )
7
POP Y
4D
1
4
sp ← sp + 1, Y ← M( sp )
8
POP PSW
6D
1
4
sp ← sp + 1, PSW ← M( sp )
-------restored
9
PUSH A
0E
1
4
M( sp ) ← A , sp ← sp - 1
10
PUSH X
2E
1
4
M( sp ) ← X , sp ← sp - 1
11
PUSH Y
4E
1
4
M( sp ) ← Y , sp ← sp - 1
12
PUSH PSW
6E
1
4
M( sp ) ← PSW , sp ← sp - 1
13
RET
6F
1
5
Return from subroutine
sp ← sp +1, pcL ← M( sp ), sp ← sp +1, pcH ← M( sp )
--------
14
RETI
7F
1
6
Return from interrupt
sp ← sp +1, PSW ← M( sp ), sp ← sp + 1,
pcL ← M( sp ), sp ← sp + 1, pcH ← M( sp )
restored
15
STOP
EF
1
3
Stop mode ( halt CPU, stop oscillator )
--------
DEC. 1999
--------
xv
D. MASK ORDER SHEET
MASK ORDER & VERIFICATION SHEET
GMS81508B
GMS81516B -HF
GMS81524B
Customer should write inside thick line box.
2. Device Information
1. Customer Information
Company Name
Package
YYYY
Order Date
Tel:
MM
Mask Data
Application
DD
Fax:
64SDIP
64MQFP
64LQFP
Internet
Hitel
Chollian
(
File Name
ROM Size (bytes)
Check Sum
8K
PFD Option
24K
)
(24K ) 2000 H
(16K ) 4000 H
(8K ) 6000 H
3.0V
.O TP file d ata
2.4V
S et “FF H” in blan ked area
Not use
7FFF H
(Please check mark√ into
3. Marking Specification
08 or 16 or 24
HME
GMS815XXB-HF
YYWW
16K
(
E-mail address:
Name &
Signature:
) .OTP
Customer’s logo
GMS815XXB-HF
YYWW
KOREA
KOREA
Customer logo is not required.
If the customer logo must be used in the special mark, please submit a clean original of the logo.
Customer’s part number
4. Delivery Schedule
Date
YYYY
Customer sample
YYYY
Risk order
Quantity
MM
DD
MM
DD
HME Confirmation
pcs
pcs
5. ROM Code Verification
Please confirm out verification data.
YYYY
Verification date:
Check sum:
Tel:
E-mail address:
Name &
Signature:
DEC., 10. 1999
MM
DD
YYYY
Approval date:
MM
DD
I agree with your verification data and confirm you to
make mask set.
Fax:
Tel:
Fax:
E-mail address:
Name &
Signature:
+<81'$,#0LFUR(OHFWURQLFV
Semiconductor Group of Hyundai Electronics Industries Co., Ltd.
)