Pr8 ej 10 semaforo

Pr8 ej 10 semaforo

de Juan Francisco Magrini Bornisich -
Número de respuestas: 0
Buenas , dejo el ejercicio hecho, quisiera saber si el OUT esta escribiendo bien la salida.

es:
 OUT (DISPLAY, 0xff);
o OUT (DISPLAY, IN(DISPLAY)&0xff);

si hay algun otro error por favor corrijanlo.

Gracias.



void actualizarDisplay(){

char higher,lower,display;
int t;
if (se_apreto_boton==1)
 t= (300 - tiempo)/5;
else
 t= (250-tiempo)/5;
 
higher = (t-(t%10))/10; //cargo las descenas de los segundos
lower = t%10; // cargo las unidades de los segundos
display = higher | lower;
OUT (DISPLAY, display); 

} // end actualizarDisplay


void time(){

tiempo++;

if ((se_apreto_boton==0)&& ((BOTON & 0x01)==0x01))
se_apreto_boton=1;

switch (luz)
 {
case 0: //encendida luz verde
 {
 if (((se_apreto_boton==1) && tiempo==300)  || ((se_apreto_boton==0) && tiempo==250))
 {
 OUT (DISPLAY, 0xff); // apago el display
 OUT (LUCES, 0x02); //enciendo luz amarilla
 tiempo=0;
 luz=1;
 se_apreto_boton=0;
 }
 }
 
 else
 {
 if (tiempo%5 == 0) //multiplo de 5 son segundos validos
 actualizarDisplay();
 }
 break; 
 
 
case 1: //encendida luz amarilla
 {
 if (tiempo==25) // 5 seg
 {
 OUT (LUCES, 0x04); //enciendo luz roja
 tiempo = 0;
 luz = 2; // se enciende luz roja
 }
 }
 break;
 
case 2: //encendida luz roja
 {
 if (tiempo==600) // 120 seg
 {
 OUT (LUCES, 0x01); //enciendo luz verde
 tiempo=0;
 luz=0;  //se enciende luz verde
 }
 }
 break;
 
default:
 break;
 }
 
} //end time

int tiempo,se_apreto_boton,luz;

int main() {
deshabilitar_instrucciones();
//instalar interrupciones
tiempo=0;
se_apreto_boton=0;
luz=0; // el semaforo comienza en verde
habilitar_interrupciones();
while(1);

} //end main