hola, es primera vez que entro por aca, escribo ya que necesito enlazar un sensor ultrasonico SR04 a un microcontrolador PIC18F452 para que lo muestre en la LCD, he intentado sacando de aqui y de alla pero no logro que me sense, muestra 0.0cm.. ademas de esto nuestro profesor nos lo pidio con el compilador XC8 de MPLAB... aca dejo algo del programa que llevo sin aun lograr que sense:
// <editor-fold defaultstate="collapsed" desc="LIBRERIAS">
#include <stdio.h>
#include <stdlib.h>
#include <delays.h>
#include <XC.h>
#include <XLCD.h>
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="CONFIGURACIONES: FUSES">
#define _XTAL_FREQ 4000000
// CONFIG1H
#pragma config OSC = XT
#pragma config OSCS = OFF
// CONFIG2L
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 20
// CONFIG2H
#pragma config WDT = OFF
#pragma config WDTPS = 128
// CONFIG3H
#pragma config CCP2MUX = OFF
// CONFIG4L
#pragma config STVR = ON
#pragma config LVP = OFF
// CONFIG5L
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CP2 = OFF
#pragma config CP3 = OFF
// CONFIG5H
#pragma config CPB = OFF
#pragma config CPD = OFF
// CONFIG6L
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRT2 = OFF
#pragma config WRT3 = OFF
// CONFIG6H
#pragma config WRTC = OFF
#pragma config WRTB = OFF
#pragma config WRTD = OFF
// CONFIG7L
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTR2 = OFF
#pragma config EBTR3 = OFF
// CONFIG7H
#pragma config EBTRB = OFF
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="RETARDOS LCD">
void DelayFor18TCY(void){
_delay(18);
}
void DelayPORXLCD(void){
__delay_ms(15);
}
void DelayXLCD(void){
__delay_ms (5);
}
void commandXLCD (unsigned a) {
BusyXLCD();
WriteCmdXLCD(a);
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="CONFIGURACION DEL GOTOXYXLCD">
void gotoxyXLCD(unsigned char x, unsigned char y)
{
unsigned char direccion;
if(y != 1)
direccion=0x40;
else
direccion=0;
direccion+=x-1;
commandXLCD( 0x80 | direccion);
}
// </editor-fold>
void main(void) {
// <editor-fold defaultstate="collapsed" desc="VARIABLES">
long distancia;
long tiempo;
unsigned char cadena [10];
int formula;
formula=0.017*tiempo;
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="CONFIGURACION DE PUERTOS">
ADCON1 = 0x0F;
TRISAbits.RA0 = 0;
TRISAbits.RA1 = 1;
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="CONFIGURACION LCD">
OpenXLCD(FOUR_BIT & LINES_5X7);
commandXLCD (0x06);
commandXLCD (0x0c);
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="MUESTRA DE LA MEDIDA EN PANTALLA">
while (1){
PORTAbits.RA0 = 0;
Delay1TCYx(10);
PORTAbits.RA0 = 1;
Delay1TCYx(10);
tiempo=PORTAbits.RA1;
distancia = formula;
gotoxyXLCD(1,1);
putsXLCD("***Bienvenido***");
gotoxyXLCD(1,2);
putrsXLCD ("Distancia: ");
sprintf (cadena, "%1.1f", distancia);
putsXLCD (cadena);
putrsXLCD ("cm");
Delay10KTCYx (50);
}
// </editor-fold>
}
acepto sugerencias asi sea un algoritmo, pero algo que se adapte a este PIC18F452.. de ante mano muchisimas gracias