Technical Support

C51: HOW DO I READ A LATCH?


Information in this article applies to:

  • C51 All Versions

QUESTION

How I can read the latch for an I/O port instead of reading the pins (from C)?

ANSWER

There is no way to read the latch value of an 8051 I/O port. However, there are instructions that allow you to read, modify, and write back the new value to the port latch. Basically, the ANL, ORL, and XRL instructions support this READ-MODIFY-WRITE feature.

If you must have access to the port latch you can create a shadow variable that contains the latch value. For example:

sfr P1 = 0x90;
unsigned char P1_shadow = 0xFF;   // same reset as P1
.
.
.
P1 &= 0xF0;
P1_shadow &= 0xF0;
.
.
.
P1 |= 0x03;
P1_shadow |= 0x03;

Then, when you need to know how the latch is set you can read the P1_shadow variable.

MORE INFORMATION

  • Refer to ANL in the 8051 Instruction Set Manual.
  • Refer to ORL in the 8051 Instruction Set Manual.
  • Refer to XRL in the 8051 Instruction Set Manual.

SEE ALSO

Last Reviewed: Thursday, September 22, 2005


Did this article provide the answer you needed?
 
Yes
No
Not Sure