/*Inicio pruebas de LCD con impresion del abecedario con intervalos de 300 ms*/ void main(void) { /*Configuracion del Timer1*/ T1CONbits.TMR1CS = 0; /*Configuro el timer1 como temporizador*/ T1CONbits.T1OSCEN = 0; T1CONbits.T1CKPS0 = 1; T1CONbits.T1CKPS1 = 1; T1CONbits.RD16 = 1; TRISB = 0;/*Declaro el puerto B como entradas y salidas mezcladas*/ LATB = 0; TRISA = 1; TRISD = 0; /*Declaro el puerto D como salida*/ LATD = 0; /*Limpio la informacion del puerto D*/ Lcd_Init(); /*Inicio la LCD*/ Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String("Sens Ultrasonico"); T1CONbits.T1OSCEN = 1; T1CONbits.TMR1ON = 1; while (1) { LATBbits.LB7 = 1; trigger = 1; /*Activo el disparo del sensor ultrasonico*/ __delay_us(10);/*Retardo de 10 microsegundos*/ trigger = 0; /*Apago la seņal de disparo*/ LATBbits.LB6 = 1; while (!echo) /*Mientras echo no reciba una seņal*/ { T1CONbits.TMR1ON = 0; } while (echo) { T1CONbits.TMR1ON = 1; } valor = TMR1H << 8; valor |= TMR1L; distancia = valor*.022666666; distancia = distancia + 1; /*Corrijo error de calibracion*/ centenas = distancia / 100; decenas = (distancia - (centenas*100))/10; unidades = (distancia -(centenas*100)-(decenas*10)); Lcd_Set_Cursor(2,1); Lcd_Write_Char(cen[centenas]); Lcd_Set_Cursor(2,2); Lcd_Write_Char(dec[decenas]); Lcd_Set_Cursor(2,3); Lcd_Write_Char(uni[unidades]); __delay_ms(500); } }