Red de conocimiento informático - Espacio del host - Estoy trabajando en un programa de semáforo de un solo chip (c51). El requisito es controlar dos conjuntos de semáforos en una intersección. ¡Estoy usando un chip 8255!

Estoy trabajando en un programa de semáforo de un solo chip (c51). El requisito es controlar dos conjuntos de semáforos en una intersección. ¡Estoy usando un chip 8255!

Para que te hagas una idea:

Supongamos que se trata de un semáforo simple, sin luz amarilla, y configura la luz roja para que esté encendida durante 30 segundos y la luz verde para que esté encendida durante 30 segundos. Necesita dos cantidades de estado:

Dirección Dir (1: dirección este-oeste, 0: dirección norte-sur), color de luz este-oeste LightcolorEW, color de luz norte-sur LightcolorNS.

En este momento, las luces en dirección este-oeste son rojas, luego Dir=1, LightcolorEW=rojo, LightcolorNS=verde. Sólo la dirección este-oeste es opuesta a la dirección norte-sur.

Supongamos que hay una luz amarilla, configure la luz roja en 30 segundos, la luz verde en 25 segundos y la luz amarilla en 5 segundos. En este momento, la luz roja se enciende en dirección este-oeste, luego Dir = 1, LightcolorEW = luz roja, LightcolorNS = luz verde durante los primeros 25 segundos y LightcolorNS = luz amarilla durante los siguientes 5 segundos. Debido a que se agrega una luz verde a la luz amarilla, es necesario agregar otra cantidad de estado, es decir, el estado final de la luz verde. La luz amarilla se activa de acuerdo con el estado final de la luz verde y el temporizador completa la luz roja. Simplemente asigne un valor al puerto correspondiente. Solo necesita que la dirección este-oeste sea opuesta a la dirección norte-sur.