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

Port configuration

my question is about the power on / reset values of the 8051 ports:
at power on /reset, the port latches are loaded with FFh hence there are configured as inputs or outputs.

The 8051 Microcontroller and Embedded System
Using assembly and c by MUHAMMAD ALI MAZIDI JANICE GILLISPIE MAZDI ROLIN D. McKINLAY second edition PEARSON EDUCATION mentions that they are configured as inputs.

But most websites mention that,at power on /reset the port are configured as outputs .
which is correct?

****************
also look at the following code that monitors a switch connected to P1.5 and sets P1.7 if P1.5 is high

SETB P1.5 ; set P1.5 as input L1:JNB P1.5 ,L1 ; continuously poll P1.5,exit the loop if P1.5 SETB P1.7 ; set P1.7
will not the first instruction, SETB P1.5 itself produce an erroneous output since the port 1.5 pin has already been set high by the instn. SETB P1.5.

Thank you

Parents
  • Please answer to the second part of my question:
    also look at the following code that monitors a switch connected to P1.5 and sets P1.7 if P1.5 is high

    SETB P1.5 ; set P1.5 as input
    L1:JNB P1.5 ,L1 ; continuously poll P1.5,exit the loop if P1.5 is high
    SETB P1.7 ; set P1.7

    my question is,will not the first instruction, SETB P1.5 itself produce an erroneous output since the port 1.5 pin has already been set high by the instn. SETB P1.5.

    Thank you

Reply
  • Please answer to the second part of my question:
    also look at the following code that monitors a switch connected to P1.5 and sets P1.7 if P1.5 is high

    SETB P1.5 ; set P1.5 as input
    L1:JNB P1.5 ,L1 ; continuously poll P1.5,exit the loop if P1.5 is high
    SETB P1.7 ; set P1.7

    my question is,will not the first instruction, SETB P1.5 itself produce an erroneous output since the port 1.5 pin has already been set high by the instn. SETB P1.5.

    Thank you

Children
  • my question is,will not the first instruction, SETB P1.5 itself produce an erroneous output since the port 1.5 pin has already been set high by the instn. SETB P1.5.
    the short answer: NO

    the long answer: why would it?

    you REALLY need to get this thing about 'input mode' out of your head.

    read up in ch3 of "the bible" about ports.

    another issue
    SETB P1.7 ; set P1.7
    that is NOT a comment, comments are supposed to say "why", not "what"

    Erik
    here are the links to "the bible"
    Chapter 1 - 80C51 Family Architecture:
    www.nxp.com/.../80C51_FAM_ARCH_1.pdf

    Chapter 2 - 80C51 Family Programmer’s Guide and Instruction Set:
    www.nxp.com/.../80C51_FAM_PROG_GUIDE_1.pdf

    Chapter 3 - 80C51 Family Hardware Description:
    www.nxp.com/.../80C51_FAM_HARDWARE_1.pdf

  • Thank you, Ecik
    The 8051 hardware manual says
    " All the port latches in 80C51 have 1's written to them by the reset function.If a 0 is subsequently written to the port latch,it can be reconfigured as an input by writing a 1 to it"

    JIM

  • many wrongs do not make a right.

    I know this old wifes tale is one of the most popular misconceptions and permeates all '51 litterature.

    One way that would be correct would be
    "when connecting other signals to a '51 the configuration is a "wire OR' between the '51 port pin and the other device(s) connected. Thus if any device (the '51 or external) pull the line low all devices reading the wire OR line will read a low.

    Note: this fully explains everything and there is not a word about "input mode" or "output mode".

    as you see an 'output pin' is also an 'input pin' (most of us has had inputs happen to an output with a prototype) just as an 'input pin ' also is an 'output pin'

    Erik