Está en la página 1de 2

//definiciones //Bucle de semáforo en modo normal

#define S1 PORTA.B0 GV=ON;YV=OFF;RV=OFF;RP=ON;GP=OFF;


#define GV LATB.B0 for(x=0;x<20;x++)
#define YV LATB.B1 {
#define RV LATB.B2 TMR0H=194;
#define RP LATB.B3 TMR0L=247;
#define GP LATB.B4 TMR0IF_bit=0;
#define ON 1 while(!TMR0IF_bit && !S1);
#define OFF 0 if(S1)
//VARIABLES break;
unsigned int x; }
//Programa if(S1)
void main() continue;
GV=OFF;YV=ON;RV=OFF;RP=ON;GP=OFF;
{ for(x=0;x<5;x++)
//Bloque de configuración {
OSCCON=0b01110011; //Oscilador interno a TMR0H=194;
8Mz TMR0L=247;
TRISA=0b00000001; //Pueto A0 como TMR0IF_bit=0;
entrada while(!TMR0IF_bit && !S1);
TRISB=0; //puerto B como salidas if(S1)
TRISC=0; //puerto C como salidas break;
ADCON1=0b00001111; }
T0CON=0b10010101; //Timer en modo de if(S1)
16 bits con predivisor 1:64 continue;
//Bucle principal GV=OFF;YV=OFF;RV=ON;RP=ON;GP=OFF;
while(1) for(x=0;x<2;x++)
{ {
//inicialización TMR0H=194;
TMR0L=247;
GV=OFF;YV=OFF;RV=OFF;RP=OFF;GP=OF TMR0IF_bit=0;
F; while(!TMR0IF_bit && !S1);
//Bucle de semáforo en modo mantenimiento if(S1)
while(S1) break;
{ }
if(S1)
GV=OFF;YV=OFF;RV=OFF;RP=OFF;GP=OF continue;
F; GV=OFF;YV=OFF;RV=ON;RP=OFF;GP=ON;
TMR0H=194; //Prepara timer0 for(x=0;x<21;x++)
TMR0L=247; //para 1s {
TMR0IF_bit=0; //Borrar el flag de tiempo TMR0H=194;
while(!TMR0IF_bit); TMR0L=247;
GV=ON;YV=ON;RV=ON;RP=ON;GP=ON; TMR0IF_bit=0;
TMR0H=194; //Prepara timer0 while(!TMR0IF_bit && !S1);
TMR0L=247; //para 1s if(S1)
TMR0IF_bit=0; //Borrar el flag de tiempo break;
while(!TMR0IF_bit); }
} if(S1)
continue;
GV=OFF;YV=OFF;RV=ON;RP=ON;GP=OFF;
for(x=0;x<2;x++)
{
TMR0H=194;
TMR0L=247;
TMR0IF_bit=0;
while(!TMR0IF_bit && !S1);
if(S1)
break;
}
if(S1)
continue;
}
}

También podría gustarte