Está en la página 1de 4

SEMÁFORO CON MICROCONTROLADOR pic 16f84a

// INICIO DE CONFIG
#pragma config FOSC = XT
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config CP = OFF
// FIN CONFIG
# include <xc.h>
#define _XTAL_FREQ 4000000 // crystal de 4MHZ

void delay_ms(int); // Procedimiento

void main (void)


{
int tiempo=3000; //Tiempo de espera antes de que ingrese a bucle

TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;

PORTBbits.RB3=0;
PORTBbits.RB4=0;
PORTBbits.RB5=0;
delay_ms (tiempo);

while(1)
{
tiempo=5000;
PORTBbits.RB3=1; //luz ROJA 5000
PORTBbits.RB4=0;
PORTBbits.RB5=0;
delay_ms (tiempo);

tiempo=2000;
PORTBbits.RB3=0; //luz ambar 2000
PORTBbits.RB4=1;
PORTBbits.RB5=0;
delay_ms (tiempo);

tiempo=3000;
PORTBbits.RB3=0; //luz verde 3000
PORTBbits.RB4=0;
PORTBbits.RB5=1;
delay_ms (tiempo);
}
return;
}

void delay_ms(int t)
{
int i;
while(i<t)
{
__delay_ms(1);
i++;
}
}
# include <xc.h> //archivo de cabecera en el cual se encuentran los datos del PIC

#define _XTAL_FREQ 4000000 //frecuencia del oscilador //crystal de 4MHZ

void delay_ms(int);

void main (void) //PROGRAMA PRINCIPAL

int tiempo=2000; //SECUENCIA DE LEDS

TRISBbits.TRISB3=0;

TRISBbits.TRISB4=0;

TRISBbits.TRISB5=0;

TRISBbits.TRISB6=0;

PORTBbits.RB3=0;

PORTBbits.RB4=0;

PORTBbits.RB5=0;

PORTBbits.RB6=0;

while(1) {

PORTBbits.RB3=0; //señal 0

PORTBbits.RB4=0;

PORTBbits.RB5=0;

PORTBbits.RB6=0;

delay_ms (tiempo);
PORTBbits.RB3=1; //primer led

PORTBbits.RB4=0;

PORTBbits.RB5=0;

PORTBbits.RB6=0;

delay_ms (tiempo);

PORTBbits.RB3=1; //segundo led

PORTBbits.RB4=1;

PORTBbits.RB5=0;

PORTBbits.RB6=0;

delay_ms (tiempo);

PORTBbits.RB3=1; //tercer led

PORTBbits.RB4=1;

PORTBbits.RB5=1;

PORTBbits.RB6=0;

delay_ms (tiempo);

PORTBbits.RB3=1; //cuarto led

PORTBbits.RB4=1;

PORTBbits.RB5=1;

PORTBbits.RB6=1;

delay_ms (tiempo);
}

return;

//Procedimiento

void delay_ms(int t)
{
int i;
while(i<t)
{
__delay_ms(1);
i++;
}
}

También podría gustarte