English
Language : 

UPD78F1502AGK-GAK-AX Datasheet, PDF (871/1031 Pages) Renesas Technology Corp – 16-Bit Single-Chip Microcontrollers
78K0R/Lx3
CHAPTER 29 BCD CORRECTION CIRCUIT
29.3 BCD Correction Circuit Operation
The basic operation of the BCD correction circuit is as follows.
(1) Addition: Calculating the result of adding a BCD code value and another BCD code value by using a
BCD code value
<1> The BCD code value to which addition is performed is stored in the A register.
<2> By adding the value of the A register and the second operand (value of one more BCD code to be added) as
are in binary, the binary operation result is stored in the A register and the correction value is stored in the
BCDADJ register.
<3> Decimal correction is performed by adding in binary the value of the A register (addition result in binary) and
the BCDADJ register (correction value), and the correction result is stored in the A register and CY register.
Caution
The value read from the BCDADJ register varies depending on the value of the A register
when it is read and those of the CY and AC flags. Therefore, execute the instruction <3>
after the instruction <2> instead of executing any other instructions. To perform BCD
correction in the interrupt enabled state, saving and restoring the A register is required
within the interrupt function. PSW (CY flag and AC flag) is restored by the RETI instruction.
An example is shown below.
Examples 1: 99 + 89 = 188
Instruction
A Register CY Register AC Flag
MOV A, #99H
; <1>
99H
−
−
ADD A, #89H
; <2>
22H
1
1
ADD A, !BCDADJ
; <3>
88H
1
0
BCDADJ
Register
−
66H
−
Examples 2: 85 + 15 = 100
Instruction
A Register CY Register AC Flag
MOV A, #85H
; <1>
85H
−
−
ADD A, #15H
; <2>
9AH
0
0
ADD A, !BCDADJ
; <3>
00H
1
1
BCDADJ
Register
−
66H
−
Examples 3: 80 + 80 = 160
Instruction
A Register CY Register AC Flag
MOV A, #80H
; <1>
80H
−
−
ADD A, #80H
; <2>
00H
1
0
ADD A, !BCDADJ
; <3>
60H
1
0
BCDADJ
Register
−
60H
−
R01UH0004EJ0501 Rev.5.01
855
Jun 20, 2011