#INCLUDE <16F877.H> // LIBRERIA DEL PIC A UTILIZAR
#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 D; // CONTADOR DE REPETICIONES
INT I; // CONTADOR DE LOS PULSOS
INT ENC;
VOID MAIN(){
LCD_INIT();
while(1){
FOR(D=1;D<6;D++){
LCD_GOTOXY(1,1);
LCD_PUTC("\f");
FOR(I=0;I<20;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(200000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
ENC=INPUT_A(); // VALOR DE ENCODER IGUAL AL PUERTO A
// COMPARA EL VALOR DE ENC PARA DETERMINAR EL ANGULO
IF(ENC==0X00){ // COMPARA CON CERO
LCD_PUTC("\fENC:0");
} // IF
ELSE IF(ENC==0X01){ // COMPARA CON UNO
LCD_PUTC("\fED:22.5");
} // ELSE IF
ELSE IF(ENC==0X02){ // COMPARA CON DOS
LCD_PUTC("\fED:45");
} // ELSE IF
ELSE IF(ENC==0X03){ // COMPARA CON TRES
LCD_PUTC("\fED:67.5");
} // ELSE IF
ELSE IF(ENC==0X04){ // COMPARA CON CUATRO
LCD_PUTC("\fED:90");
} // ELSE IF
ELSE IF(ENC==0X05){ // COMPARA CON CINCO
LCD_PUTC("\fED:112.5");
} // ELSE IF
ELSE IF(ENC==0X06){ // COMPARA CON SEIS
LCD_PUTC("\fED:135");
} // ELSE IF
ELSE IF(ENC==0X07){ // COMPARA CON SIETE
LCD_PUTC("\fED:157.5");
} // ELSE IF
ELSE IF(ENC==0X08){ // COMPARA CON OCHO
LCD_PUTC("\fED:180");
} // ELSE IF
ELSE IF(ENC==0X09){ // COMPARA CON NUEVE
LCD_PUTC("\fED:202.5");
} // ELSE IF
ELSE IF(ENC==0X10){ // COMPARA CON DIES
LCD_PUTC("\fED:225");
} // ELSE IF
} // FOR
FOR(I=0;I<20;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(200000); // DELAY DE APAGADO
LCD_GOTOXY(1,2);
ENC=INPUT_A(); // VALOR DE ENCODER IGUAL AL PUERTO A
// COMPARA EL VALOR DE ENC PARA DETERMINAR EL ANGULO
IF(ENC==0X00){ // COMPARA CON CERO
LCD_PUTC("\fENC:0");
} // IF
ELSE IF(ENC==0X01){ // COMPARA CON UNO
LCD_PUTC("\fED:22.5");
} // ELSE IF
ELSE IF(ENC==0X02){ // COMPARA CON DOS
LCD_PUTC("\fED:45");
} // ELSE IF
ELSE IF(ENC==0X03){ // COMPARA CON TRES
LCD_PUTC("\fED:67.5");
} // ELSE IF
ELSE IF(ENC==0X04){ // COMPARA CON CUATRO
LCD_PUTC("\fED:90");
} // ELSE IF
ELSE IF(ENC==0X05){ // COMPARA CON CINCO
LCD_PUTC("\fED:112.5");
} // ELSE IF
ELSE IF(ENC==0X06){ // COMPARA CON SEIS
LCD_PUTC("\fED:135");
} // ELSE IF
ELSE IF(ENC==0X07){ // COMPARA CON SIETE
LCD_PUTC("\fED:157.5");
} // ELSE IF
ELSE IF(ENC==0X08){ // COMPARA CON OCHO
LCD_PUTC("\fED:180");
} // ELSE IF
ELSE IF(ENC==0X09){ // COMPARA CON NUEVE
LCD_PUTC("\fED:202.5");
} // ELSE IF
ELSE IF(ENC==0X10){ // COMPARA CON DIES
LCD_PUTC("\fED:225");
} // ELSE IF
} // FOR
} // FOR
} // WHILE
} //MAIN
No hay comentarios:
Publicar un comentario