Simulación de control de semáforo en intersección basada en microcontrolador
incluir?
#define?uint?unsigned?int//Definición de macro
#define?uchar?unsigned?char //Definición de macro
sbit?xg=P3^0;?//Definición de bits
sbit?xy=P3^1;
sbit?xr= P3^2;
sbit?yg=P3^3;
sbit?yy=P3^4;
sbit?yr=P3^5;
sbit?led1=P2^0;?
sbit?led2=P2^1;
uint?mun,sun;?//Entero de 16 bits variable
uchar?x,y,z,aa,bb;?//variable de carácter de 8 bits
uchar?tab[]=
{0x3F , 0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F,0x3f};
void?init();
void ? outled();
void?delay();
void?main()//función principal
{?init();
mientras(1)
{ for(y=6;y!=3;outled()?)
{yy=0;yr=0;xg= 0 ;xy=0;xr=1;yg=1;}? para(y=3;y!=0;outled())
{/*xr=!xr;*/yy= 1 ;yg=0;} for(y=9;y!=3;outled()) {?yy=0;?xr=0;?yr=1;xg=1;}? y !=0;outled())
{/*yr=!yr;*/xy=1;xg=0;} }?
}
void?delay()//Subfunción de retardo
{ for(x=255;x>0;x--);
}?
void?init?()//Inicialización de interrupción temporizada
{ TMOD=0x01; TH0=(65536-50000)/256; = 1;
TR0=1;
}
void?timer0()?interrupt?1//Función de temporización de interrupción
{ TH0=(65536-50000)/256; TL0=(65536-50000)%256;
z++;
if(z==20) {z=0;? if (y>0)?{y--;} }
}
void?outled()?//Mostrar subfunción
{? aa= y/10; bb=y%10; P0=tab[bb]; retraso(); led1=1; P0=tab[aa]; p>
}
/El programa está escrito en lenguaje C y el diagrama del circuito es como se muestra en la imagen adjunta. Si está satisfecho, ¡no olvide calificarlo!