Red de conocimiento informático - Material del sitio web - Programa para diseño de semáforos basado en microcontrolador

Programa para diseño de semáforos basado en microcontrolador

void main()

{

P3 = 0

P1 = 0

P2 =; 0xff;

initTimer();

TR0=1;

ET0=1;

while(1)

{

switch(state)

{

// Salto de estado

caso 0:

if(ct == 0)

{

P3=0; P2=0xff;

ct = 10;

estado = 1;

}

descanso

caso 1:

if(ct == 0)

{

P3=0; P2=0xff

ct = 2; > p>

estado = 2;

}

descanso;

caso 2:

if(ct == 0 )

{

P3=0; P2=0xff;

ct = 2

estado = 3;

}

descanso

caso 3:

if(ct == 0)

{

P3=0;P1=0;P2=0xff;

ct=10;

estado=4; p >

ruptura;

caso 4:

if(ct == 0)

{

P3=0; P1 =0; P2=0xff;

ct = 2;

estado = 5; >

caso 5:

if(ct == 0)

{

P3=0; p >

ct = 2;

estado = 0;

}

descanso

predeterminado: descanso

}

// Ejecutar

switch(estado)

{

caso 0:

//Luces verdes en el este y oeste, luces rojas en el norte y sur, cuenta regresiva hasta 30 segundos;

E_G = 1; S_R = 1; p>

descanso;

caso 1:

//El tubo digital cuenta atrás durante 10 segundos;

E_G = 1; W_G = 1; S_R = 1; N_R = 1;

mostrar(ct, 0);

mostrar(ct, 2

mostrar(ct 2, 1); display(ct 2, 3);

break;

caso 2:

// Luces amarillas este y oeste, cuenta regresiva para 2 segundos

E_Y = 1; W_Y = 1; S_R = 1; N_R = 1;

mostrar(ct, 1); p>

descanso;

caso 3:

// Luces verdes en el norte y sur, luces rojas en el este y oeste, cuenta atrás hasta 30 segundos

E_R = 1; W_R = 1; S_G = 1; N_G = 1;

descanso

caso 4:

//El digital tubo cuenta atrás durante 10 segundos;

E_R = 1; S_G = 1;

display(ct, 1); > mostrar(ct, 3);

mostrar (ct 2, 0);

mostrar (ct 2, 2); >

caso 5:

// Luces amarillas norte y sur, cuenta regresiva 2 segundos

E_R = 1; /p>

mostrar(ct, 0);

mostrar(ct, 2);

romper

predeterminado: romper

}

}

}