AT89S52 modo conmutado IO Pin 2 no se está poniendo a tierra

0

Estoy diseñando un circuito simple con microcontrolador AT89S52. Establecí los pines de E / S como altos y cuando se presiona el interruptor se conectará a tierra. Y en mi programa, compruebo que los pines de E / S estén en 0 y en 0 el pión 1.5 se pondrá tan alto y el LED se iluminará.

Pero los pines 2.0 a 2.7 no funcionan como se esperaba. Estos pines siempre están altos, incluso cuando se presiona el interruptor. Por favor revise la imagen adjunta y sugiérame si algo está mal.

    

1 respuesta

2

Necesitas cambiar tu circuito y posiblemente tu software.

Los pines de E / S son el estándar cuasi bidireccional denominado para el MCS-51. Estos tienen pull-ups internos y transistores de drenaje abierto para bajarlos. El nivel de entrada del pin se puede leer directamente y no hay un 'modo de entrada' o 'modo de salida' distinto.

Eliminar R3 y R1. Conecte cada uno de sus conmutadores a través de un pin de E / S y GND. Ahora, cuando un interruptor está cerrado, el pull-up interno del pin de E / S está en corto a GND y el pin de E / S lee la lógica '0'. Cuando un interruptor está abierto, el pull-up interno jala el pin alto y lee la lógica '1'.

En su software, escriba el SFR de cada puerto con 0FFh para eliminar la lógica. Luego puede leer el SFR de cada puerto para obtener los estados del conmutador.

    
respondido por el TonyM

Lea otras preguntas en las etiquetas