English
Language : 

C868_02 Datasheet, PDF (52/244 Pages) Infineon Technologies AG – 8 - Bit CMOS Microcontroller
C868
On-Chip Peripheral Components
4.4.1 Read-Modify-Write Feature of Ports
Some port-reading instructions read the latch and others read the pin. The instructions
reading the latch rather than the pin read a value, possibly change it, and then rewrite it
to the latch. These are called "read-modify-write"- instructions, which are listed in 4-3. If
the destination is a port or a port pin, these instructions read the latch rather than the pin.
Note that all other instructions which can be used to read a port, exclusively read the port
pin. In any case, reading from latch or pin, resp., is performed by reading the SFR P3;
for example, "MOV A, P3" reads the value from port 3 pins, while "ANL P3, #0AAH"
reads from the latch, modifies the value and writes it back to the latch.
It is not obvious that the last three instructions in Figure 4-3 are read-modify-write
instructions, but they are. The reason is that they read the port byte, all 8 bits, modify the
addressed bit, then write the complete byte back to the latch.
Table 4-3 "Read-Modify-Write"-Instructions
Instruction Function
ANL
ORL
XRL
JBC
CPL
Logic AND; e.g. ANL P1, A
Logic OR; e.g. ORL P2, A
Logic exclusive OR; e.g. XRL P3, A
Jump if bit is set and clear bit; e.g. JBC P1.1, LABEL
Complement bit; e.g. CPL P3.0
INC
Increment byte; e.g. INC P4
DEC
Decrement byte; e.g. DEC P5
DJNZ
Decrement and jump if not zero; e.g. DJNZ P3, LABEL
MOV Px.y,C Move carry bit to bit y of port x
CLR Px.y Clear bit y of port x
SETB Px.y Set bit y of port x
The reason why read-modify-write instructions are directed to the latch rather than the
pin is to avoid a possible misinterpretation of the voltage level at the pin. For example, a
port bit might be used to drive the base of a transistor. When a "1" is written to the bit,
the transistor is turned on. If the CPU then reads the same port bit at the pin rather than
the latch, it will read the base voltage of the transitor (approx. 0.7 V, i.e. a logic low level!)
and interpret it as "0". For example, when modifying a port bit by a SETB or CLR
instruction, another bit in this port with the above mentioned configuration might be
changed if the value read from the pin were written back to th latch. However, reading
the latch rater than the pin will return the correct value of "1".
User’s Manual
4-8
V 0.4, 2002-01