Я хочу запустить два HC-SR04 на одном PIC16F877A и отправить значение, измеренное двумя ультразвуковыми последовательными портами.прочитайте из Ultrasonic HC-SR04
это мой код, используя PIC C Compiler:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define e1 PIN_B6
#define t1 pin_B7
#define e2 pin_B4
#define t2 pin_B5
int a;
int distanse(int,int);
void main()
{
while(1){
int u1,u2;
u1=distanse(e1,t1);u2=distanse(e2,t2);
printf("%3u", u1);
printf("%3u", u2);
delay_ms(1000);
}
}
int distanse(int e,int t){
long long counter=0;
output_bit(t,1);delay_us(10);output_bit(t,0);
a=input(e);
while(a==0){a=input(e);}
while(a==1){counter=counter+1;a=input(e);}
return counter/3.333333;
}
но компьютер получил случайные значения! в чем проблема ?
RS-232 имеет три провода, XMIT, Recv и GND. Я не вижу положения для наземной линии. – user3629249
По моему опыту, неправильные символы указывают на ошибку заземления. – Joshpbarron
последовательный отступ кодовых блоков делает код намного проще для людей читать/понимать. Предложите отступы 4 пробела после каждой открытой скобки '{' и un-indent перед каждой закрывающей скобкой '}' – user3629249