Buen día
me encuentro programando 2 sensores de ultrasonido hy-srf05 en simultaneo, utilizando un pic 16f877a donde necesito enviar, las 2 distancias en una cadena de caracteres por puerto serial; sin embargo solo me esta tomando un dato y el otro no lo mide siempre me muestra un 0; en otras palabras solo esta operando un sensor, les enseño el código para que me recomiende y evalúen a ver si es que me falta algo o esta mal hecho, muchas gracias.
#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOWRT,NOBROWNOUT
#use delay(clock=4000000)
#USE RS232(BAUD=9600,BITS=8,PARITY=N, XMIT=PIN_C6, RCV=PIN_C7, STREAM=COM_A)
#byte port_a=5
#byte port_b=6
#byte port_d=8
#define trigD pin_A0
#define echoD input(pin_A1)
#define trigI pin_B0
#define echoI input(pin_B1)
#include <stdlib.h>
int16 EnviaDerecho;
int16 EnviaIzquierdo;
char c;
int d;
int16 SensorDerecho(void){
int16 centimetrosD=0;
output_high(trigD);
delay_us(50);
output_low(trigD);
while(echoD==0);
while(echoD==1){
if (centimetrosD < 80){
centimetrosD++;
delay_us(58);
}
}
delay_ms(50);
return(centimetrosD);
}
int16 SensorIzquierdo(void){
int16 centimetrosI=0;
output_high(trigI);
delay_us(50);
output_low(trigI);
while(echoI==0);
while(echoI==1){
if (centimetrosI < 80){
centimetrosI++;
delay_us(58);
}
}
delay_ms(50);
return(centimetrosI);
}
void main (){
SET_TRIS_A( 0x02 );
SET_TRIS_B( 0x02 );
set_tris_d(0x00);
setup_ccp1(CCP_PWM); // Primero se configura el PWM a utilizar
setup_ccp2(CCP_PWM); // Primero se configura el PWM a utilizar
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DIV_BY_16,255,1); // El periodo de la señal PWM
set_pwm1_duty(0);
set_pwm2_duty(0);
Delay_ms(200);
while (true)
{
c = getc(COM_A);
d= atoi(c);
EnviaIzquierdo=SensorIzquierdo();
EnviaDerecho=SensorDerecho();
printf("%Lu cm %LU cm",EnviaDerecho,EnviaIzquierdo);
}
}