Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

20/12/2010 #1


Ayuda Programacion pic16f877
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.
20/12/2010 #2

Avatar de kiws

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.
25/01/2011 #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
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.