#INCLUDE <16F876A.H>
#INCLUDE <MATH.H>
#FUSES XT, NOPUT, NOPROTECT, NOWDT
#use delay(clock=4000000)
//Defines------------------------------------------
#BYTE PORTA = 0x05
#BYTE PORTB = 0x06
#BYTE PORTA_TRIS = 0x85
#BYTE PORTB_TRIS = 0x86
#DEFINE LED PIN_A3
#DEFINE RDD_CLOCK PIN_A4
Int Tiempo = 500;
Void SemaforoSur (Void);
Void SemaforoEste (Void);
Void SemaforoNorte (Void);
Void SemaforoOeste (Void);
Void Retardo (Void);
void fConfigurar_puertos(void);
void main(void)
{
fConfigurar_puertos();
while(true)
{
SemaforoSur();
SemaforoEste();
SemaforoNorte();
SemaforoOeste();
}
}
Void SemaforoSur (Void)
{
output_b(0b10101001);
Retardo ();
output_b(0b10101000);
delay_MS(Tiempo);
output_b(0b10101001);
delay_MS(Tiempo);
output_b(0b10101000);
delay_MS(Tiempo);
output_b(0b10101001);
delay_MS(Tiempo);
output_b(0b10101000);
delay_MS(Tiempo);
output_b(0b10101001);
delay_MS(Tiempo);
}
Void SemaforoEste (Void)
{
if(input(pin_A0)==0) break;
output_b(0b10100110);
Retardo ();
output_b(0b10100010);
delay_MS(Tiempo);
output_b(0b10100110);
delay_MS(Tiempo);
output_b(0b10100010);
delay_MS(Tiempo);
output_b(0b10100110);
delay_MS(Tiempo);
output_b(0b10100010);
delay_MS(Tiempo);
output_b(0b10100110);
delay_MS(Tiempo);
}
Void SemaforoNorte (Void)
{
if(input(pin_A0)==0) break;
output_b(0b10011010);
Retardo ();
output_b(0b10001010);
delay_MS(Tiempo);
output_b(0b10011010);
delay_MS(Tiempo);
output_b(0b10001010);
delay_MS(Tiempo);
output_b(0b10011010);
delay_MS(Tiempo);
output_b(0b10001010);
delay_MS(Tiempo);
output_b(0b10011010);
delay_MS(Tiempo);
}
Void SemaforoOeste (Void)
{
output_b(0b01101010);
Retardo ();
output_b(0b00101010);
delay_MS(Tiempo);
output_b(0b01101010);
delay_MS(Tiempo);
output_b(0b00101010);
delay_MS(Tiempo);
output_b(0b01101010);
delay_MS(Tiempo);
output_b(0b00101010);
delay_MS(Tiempo);
output_b(0b01101010);
delay_MS(Tiempo);
}
Void Retardo (Void)
{
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
Delay_ms(Tiempo);
}
void fConfigurar_puertos(void)
{
PORTA_TRIS = 0b11000001; //1=ENTRADA, 0=SALIDA
PORTB_TRIS = 0b00000000; //1=ENTRADA, 0=SALIDA
}