
;
#include <16f876.h>
#fuses XT, PUT, NOWDT, NOPROTECT
#use delay(clock=4000000)
#use fast_IO(B)
#use fast_IO(C)
#use i2c (master,scl=PIN_b3,sda=PIN_b4,slow)
void main()
{
char distancia_L, distancia_H;
set_tris_C(0x00);
do
{
i2c_start(); // Bit de Start.
i2c_write(0xE0); // Dirección del SRF08 en escritura.
i2c_write(0x00); // El registro de comando está en la ubicación 0.
i2c_write(0x51); // 0x51 es el comando de cálculo de distancia en cm.
i2c_stop(); // Bit de Stop.
delay_ms(80); // Espera más de 65 ms hasta la lectura.
i2c_start(); // Bit de Start.
i2c_write(0xE0); // Dirección del SRF08 en escritura.
i2c_write(0x01); // Apunta a la ubicación 0x01 que es a partir donde se
i2c_stop();
i2c_start();
i2c_write(0xE0|0x01); // Dirección del SRF08 en lectura.
distancia_H = i2c_read(1); // Lee el byte alto de la distancia.
distancia_L = i2c_read(0); // Lee el byte bajo de la distancia.
i2c_stop();
delay_ms(80);
output_C(distancia_L);
}while (true);
}
___________________________________
he hecho los cambios que me has comentado; pero me sale por la puerta C (FF);
esty desesperado MLO__ :S
_____
unicamente necesito una rutina que al llamarla calcule si hay objetos cerca o no; (si no hay dara todo 0x00, si hay algo otros valores);
asi el robot sabrá si tiene al enemigo en el lado del sensor.
pero no consigo hacerlo funcionar; siempre lee 0xff..
q puede fallar ??