Datasheet

Section 2 CPU
Rev.7.00 Dec. 24, 2008 Page 68 of 698
REJ09B0074-0700
P17 P16 P15 P14 P13 P12 P11 P10
I/O Output Output Output Output Input Input Input Input
P1DDR 1 1 1 1 0 0 0 0
Read value 1 1 1 1 1 0 0 0
The BCLR instruction performs bit manipulation on the read value, which is H'F8 in this example.
It clears bit 4 to 0.
P17 P16 P15 P14 P13 P12 P11 P10
I/O Output Output Output Output Input Input Input Input
P1DDR 1 1 1 1 0 0 0 0
After bit
manipulation
1 1 1 0 1 0 0 0
Following bit manipulation the data is written to P1DDR and the BCLR instruction terminates.
P17 P16 P15 P14 P13 P12 P11 P10
I/O Output Output Output
Input Output Input Input Input
P1DDR 1 1 1 0 1 0 0 0
Write value 1 1 1 0 1 0 0 0
The contents of P1DDR should have been overwritten with a value of H'E0, but in fact a value of
H'E8 was written to the register. This changed pin 13, which should have been an input pin, to an
output pin. In this example we assumed that the value of bit 1 in P1DDR was 1. However, since
the values of bits 7 to 0 in P1DDR are all undefined when read, there is the possibility that
individual bit values could be changed from 0 to 1 or from 1 to 0. To prevent this from happening,
the recommendations in section 2.9.4, Accessing Registers Containing Write-Only Bits, should be
followed when changing the values of registers containing write-only bits.
In addition, the BCLR instruction can be used to clear flags in internal I/O registers to 0. In such
cases it is not necessary to read the relevant flag beforehand so long as it is clear that it has been
set to 1 by an interrupt processing routine or the like.
2.9.4 Accessing Registers Containing Write-Only Bits
Using data transfer instructions or bit manipulation instructions on registers containing write-only
bits can result in undefined values being read. To prevent the reading of undefined values, the
procedure described below should be used to access registers containing write-only bits.