#FUSES XT, NOPROTECT // CODIGO NO PROTEGIDO
#USE DELAY(CLOCK=4000000) // SELECCION DE LA FRECUENCIA DEL CRISTAL
#USE RS232(BAUD=9600, BITS=8, PARITY=N, XMIT=PIN_C6, RCV=PIN_C7) // COMUNICAION CON EL PUERTO SERIAL
#ORG 0X1F00, 0X1FFF VOID LOADER16F877(VOID){} // DIRECCION DEL CODIGO DE BUDLOADER
// DEFINICION DE LAS CONEXIONES DE LA LCD AL PIC
#DEFINE LCD_DB4 PIN_B4
#DEFINE LCD_DB5 PIN_B5
#DEFINE LCD_DB6 PIN_B6
#DEFINE LCD_DB7 PIN_B7
#DEFINE LCD_RS PIN_B2
#DEFINE LCD_E PIN_B3
#INCLUDE <lcd1.c>
INT N; // CONTADOR DEL CICLO DE 3
INT D; // CONTADOR DE REPETICIONES
INT L; // CONTADOR DEL LASER
INT I; // CONTADOR DE LOS PULSOS
INT ENC; // ENTRADA DEL ENCODER
VOID MAIN(){
LCD_INIT();
FOR(I=0;I<30;I++){
OUTPUT_C(0X00); // APAGA EL LASER
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1500); // COLOCA EL SERVO EN NEUTRO
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_PUTC("\fSERVO NEUTRO");
} // FOR
WHILE(1){
FOR(N=1;N<4;N++){
OUTPUT_E(0X00); // APAGA EL LASER
LCD_PUTC("\fCICLO: "); // NUMERO DEL CICLO DE 3
PRINTF(LCD_PUTC,"%u",N);
DELAY_MS(1000);
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(2400); // COLOCA EL SERVO EN 0°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
LCD_PUTC("\fSECUENCIA P1"); // INICIA LA SECUENCIA DE LA PRACTICA 1
LCD_GOTOXY(1,2);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("SERVO: 0");
LCD_PUTC(", ENC: 0");
} // FOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1050); // COLOCA EL SERVO EN 135°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:135, ");
LCD_PUTC("ED:157.5");
} // FOR
FOR(D=1;D<6;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
FOR(D=1;D<6;D++){
LCD_GOTOXY(1,1);
LCD_PUTC("\fREPETICIONES: ");
PRINTF(LCD_PUTC,"%u",D);
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(2400); // COLOCA EL SERVO EN 0°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("SV:0, ");
LCD_PUTC("ED:0");
} // FOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(600); // COLOCA EL SERVO EN 180°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("SV:180, ");
LCD_PUTC("ED:202.5");
} // FOR
} // FOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1500); // COLOCA EL SERVO EN 90°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:90, ");
LCD_PUTC("ED:67.5");
} // FOR
FOR(D=1;D<11;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
FOR(D=1;D<4;D++){
LCD_GOTOXY(1,1);
LCD_PUTC("\fREPETICIONES: ");
PRINTF(LCD_PUTC,"%u",D);
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(600); // COLOCA EL SERVO EN 180°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("SV:180, ");
LCD_PUTC("ED:202.5");
} // FOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1500); // COLOCA EL SERVO EN 90°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("SV:90, ");
LCD_PUTC("ED:67.5");
} // FOR
} // FOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(2250); // COLOCA EL SERVO EN 15°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:15, ");
LCD_PUTC("ED:0");
} // FOR
FOR(D=1;D<4;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(2100); // COLOCA EL SERVO EN 30°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:30, ");
LCD_PUTC("ED:0");
} // FOR
FOR(D=1;D<4;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1950); // COLOCA EL SERVO EN 45°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:45, ");
LCD_PUTC("ED:22.5");
} // FOR
FOR(D=1;D<4;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1800); // COLOCA EL SERVO EN 60°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:60, ");
LCD_PUTC("ED:45");
} // FOR
FOR(D=1;D<4;D++){
LCD_GOTOXY(1,2);
LCD_PUTC("ESPERA: ");
PRINTF(LCD_PUTC,"%u",D);
LCD_PUTC("s");
DELAY_MS(1000);
} // CONTADOR
} // FOR DE CILO DE 3
FOR(I=0;I<30;I++){
OUTPUT_D(0X01); // ACTIVA LA SALIDA D
DELAY_US(1050); // COLOCA EL SERVO EN 135°
OUTPUT_D(0X00); // DESACTIVA LA SALIDA D
DELAY_US(20000); // DELAY DE APAGADO
LCD_GOTOXY(1,1);
// DESPLIEGA EL ANGULO DEL SERVO Y DEL ENCODER EN LA LCD
LCD_PUTC("\fSV:135, ");
LCD_PUTC("ED:157.5");
} // FOR
FOR(L=0;L<5;L++){
OUTPUT_E(0X01); // ENCIENDE EL LASER
LCD_GOTOXY(1,2);
LCD_PUTC("LASER PULSANDO"); // ESPLIEGA MENSAJE DE SALER PULANDO
DELAY_MS(500);
OUTPUT_E(0X00); // APAGA EL LASER
DELAY_MS(500);
} // FOR LASER
} // WHILE
} //MAIN
No hay comentarios:
Publicar un comentario