Ayuda Programacion pic16f877

#1
Hola

Estoy haciendo un proyecto en el cual ocupo 5 sensores infrarrojos analogicos, quiciera saber como es posible controlarlos todos con un mismo pic, en este caso el 16f877, siendo este elegido gracias a su convertigor analogico-digital integrado, solo me hace falta lo que es la configuracion de las 5 entradas analogicas, que comandos se utilizan.

pd. Ya hize un programa que controla muy bien la respuesta de un solo sensor, solo que no se como programar para los otros 4:).
Gracias.
 
#2
para empezar que lenguaje de programación estas usando? y que quieres que haga con los datos de los 5 sensores los compare, los sume, o hagas una tarea especifica según el sensor?? a lo mejor podría ayudarte si me das mas datos o mostrándome el que ya hiciste que controla solo uno.
 
#3
hola por si usas el ccs yo acabo de hacer un programa pero con 2 sensores infrarrojos analógicos, sin embargo programe todas las entradas del puerto a como analógicas asií setup_adc_ports(ALL_ANALOG).....
te dejo mi programa con dos sensores, solo es cuestión de que le agregues los otros 3 canales:

#include <16f877.h>
#device ADC=8 //se va a usar el ADC de 8 bits
#fuses XT,NOPROTECT,NOWDT,PUT
#use delay (clock=4000000)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07

void main()
{
int valor=0,valor2=0;

set_tris_a(0xff);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0xff); //configure como salidas
set_tris_e(0xff);
setup_adc_ports(ALL_ANALOG); //configura RA0 como entrada analogica
// lo configuro RA1 como entrada analogica
setup_adc(adc_clock_internal); //selecciona el tiempo de muestreo igual al crystal
//Retardo de 20 microsegundos para estabilizar
do
{
set_adc_channel(0); //selecciona el canal RA0 // seleccione el canal de RA1
delay_us(20);
valor=read_adc(); //lee el adc
delay_ms(1); //retardo de 1 milisegundo
portb=valor; //el valor lo saca por el puerto b

set_adc_channel(1); //selecciona el canal RA0 // seleccione el canal de RA1
delay_us(20);
valor2=read_adc(); //lee el adc
delay_ms(1); //retardo de 1 milisegundo
portc=valor2;



}while(true); //se repite infinitamente la conversion


}


espero que les sirva :)
 
Arriba