es:
OUT (DISPLAY, 0xff);
o OUT (DISPLAY, IN(DISPLAY)&0xff);
si hay algun otro error por favor corrijanlo.
Gracias.
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