This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Reading from a port

Hi,

I have just started learning embedded programming on my own. The book I am using (Embedded C Book by Micheal Pont) says:
"because of the underlying hardware, we can only read from a pin if the
corresponding latch contains a '1'."
This line is confusing me as I have been able to read values of the port without initializing it first.
This is my code:

#include <reg52.h>
sbit pin = P2 ^ 1;
void main(void)
{ P2 = 0; while(1) { pin ^= 1; }
}

Debugging shows that it is working just as anticipated. Can someone please explain what's going on here? I am using the Keil C51 simulator (device selected is 8052), could that be the problem?

Thanks in advance.

Aaron

Parents
  • Thanks for the reply.

    By further playing with the simulator, I have concluded following. Please correct me if I am wrong.

    "In order to read the value of a port (pin), the corresponding latch (pin) should first be set.
    This doesn't affect the value being read from the PORT itself as the initialization is performed before the value is read off it."

    Thanks and sorry for bothering you again.

Reply
  • Thanks for the reply.

    By further playing with the simulator, I have concluded following. Please correct me if I am wrong.

    "In order to read the value of a port (pin), the corresponding latch (pin) should first be set.
    This doesn't affect the value being read from the PORT itself as the initialization is performed before the value is read off it."

    Thanks and sorry for bothering you again.

Children