¿Por qué necesitamos declarar puertos como entrada / salida?

0

Estoy escribiendo código en lenguaje ensamblador (AT89s51). Cuando veo un programa estándar, los puertos se definen normalmente como entradas o salidas. Pero, sin definirlos parece funcionar bien. ¿Cómo es esto posible?

    
pregunta pankaj prasad

3 respuestas

1

Con los bits de registro de dirección de DATOS cuando está desactivado (como después del restablecimiento) configure el puerto como una entrada, en este estado los bits de registro de salida controlan el pull-up, lo que le otorga, en efecto, una unidad de salida muy débil. Si no necesita una unidad fuerte (por ejemplo, solo quiere manejar la base de un transistor NPN), en este estado, el puerto se puede usar como salida.

Pero si necesita más de unos cuantos cientos de microamperios, deberá configurar el registro de dirección para la salida.

    
respondido por el Jasen
1

La antigua serie 8051, al menos los modelos que se adhieren a la arquitectura original, no tienen registros de dirección de datos para los pines GPIO.

Los pines son "pseudo-bidireccionales" (todo el tiempo) y los pines no pueden generar mucha corriente en DC. Para usarlos como entradas, simplemente configúrelos en "1". El débil MOSFET de pullup es fácilmente superado por una salida MOSFET de canal N externa.

Si los configura en "0", el canal N fuerte estará arrastrando la "entrada" hacia 0V y, por lo tanto, luchará contra una salida externa que intenta impulsar el pin alto y puede o no ganar bajo todas las condiciones.

Más información en esta respuesta.

Solo en términos generales, siempre debe estudiar la hoja de datos de la MCU que está programando. En el caso del 8051 es posible que tenga que mirar datos más antiguos. Muchas MCU modernas tienen hojas de datos que se encuentran en el rango de 2,000 páginas, además de información adicional del proveedor principal, además de toda la información sobre el software intermedio y los controladores. El 8051 es una parte muy simple y es una buena idea meterse en este hábito o tendrá problemas para trabajar con partes modernas.

    
respondido por el Spehro Pefhany
0

Se accede a los puertos a través de los SFR (registros de funciones especiales).

Los registros de latch del puerto tienen valores de restablecimiento de 0xFF, que atraen a los pines a través de los pull-ups internos, y luego se pueden leer como entradas. En este punto, la salida del pin será alta, pero si se baja a nivel externo, el SFR registrará el cambio de valor. Por lo tanto, de manera predeterminada, puede leer las entradas leyendo sus SFR correspondientes.

Cuando se escribe un SFR de puerto, el puerto se convierte en una salida y los datos de SFR se envían al cierre del puerto.

Tenga en cuenta que, aunque se utiliza el mismo SFR, internamente se realizan dos operaciones distintas, que se ejecutan completamente en hardware, lo que evita que tenga que realizar un seguimiento de la dirección en la que se mueven los datos.

    
respondido por el Blair Fonville

Lea otras preguntas en las etiquetas