The following question arrived in my inbox, and I believe that questions should be asked and answered in the open forum.
I have thought long and hard about this but i just can't crack it.
To me Quasi means, like the real thing but not quite. So when they say PORT 1,2 and 3 on the 8051 are quasi bidirectional i don't get it.
Is it because these ports have an internal pull up resistors that makes them unable to source significant current as opposed to port 0 that uses an external pull up connected to Vcc that can source significant current? I am a total beginner to microcontrollers. Are the I/O ports on other micro controllers different?
Has the high impedance state of the port 0 pin on reset have something to do with it?
Please help, it's driving me crazy. I just can't move on without understanding this.
It is an excellent question and I'll try to provide an answer.
A true bi-directional port has an output register with two states, 0 and 1. It also has a data direction register with two states, input and output. In the 8051 port architecture there are no data direction registers, so the behavior of a port pin must accommodate two output states and one input state. It does this by combining the output high state and the input state. The output high state is actually implemented with a high value active pullup of around 40K ohms. It can source only small amounts of current, and a strong external driver can pull it low with very little effort and no damage to the pin. The output low state is like any normal pin in that it can sink a reasonable amount of current, a few milliamps.
Port 0 on the 8051 is different in that the outputs are open-drain. This means that to go high they require an external pullup. Writing a 1 to the port latch allow them to be used as inputs, just like the other ports.
I hope this answers the question, but others may have additional points.
I have thought long and hard about this but i just can't crack it.
To me Quasi means, like the real thing but not quite. So when they say PORT 1,2 and 3 on the 8051 are quasi bidirectional i don't get it.
Is it because these ports have an internal pull up resistors that makes them unable to source significant current as opposed to port 0 that uses an external pull up connected to Vcc that can source significant current? I am a total beginner to microcontrollers. Are the I/O ports on other micro controllers different?
Has the high impedance state of the port 0 pin on reset have something to do with it?
Please help, it's driving me crazy. I just can't move on without understanding this.
It is an excellent question and I'll try to provide an answer.
A true bi-directional port has an output register with two states, 0 and 1. It also has a data direction register with two states, input and output. In the 8051 port architecture there are no data direction registers, so the behavior of a port pin must accommodate two output states and one input state. It does this by combining the output high state and the input state. The output high state is actually implemented with a high value active pullup of around 40K ohms. It can source only small amounts of current, and a strong external driver can pull it low with very little effort and no damage to the pin. The output low state is like any normal pin in that it can sink a reasonable amount of current, a few milliamps.
Port 0 on the 8051 is different in that the outputs are open-drain. This means that to go high they require an external pullup. Writing a 1 to the port latch allow them to be used as inputs, just like the other ports.
I hope this answers the question, but others may have additional points.