Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include <16f876a>
#device ADC=8
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use standard_io(b)
int valor=0x00;
void toma_adc(void){
// Lectura del canal 0
set_adc_channel(0);
delay_ms(1);
valor=read_adc();
delay_ms(1); //para que se estabilice
}
void main() {
setup_adc(ADC_CLOCK_INTERNAL); //configura el converso
setup_adc_ports(RA0_analog); //entrada 0 como analogica
do {
toma_adc();
output_b(valor);
}while(true);
}
#include <16f877A.h>
#device adc=8 //NUMERO DE BITS A UTILIZAR
#use delay(clock=4000000)
#byte porta= 0x05
#byte portd= 0x08
int valor;
void main()
{
set_tris_a(255);
set_tris_d(0);
setup_adc_ports(all_analog);//QUE PUERTOS SE VAN A UTIIZAR PARA LA CONVERSION, EN ESTE CASO SON TODOS LOS DEL PUERTOS
setup_adc(adc_clock_internal);//EL TIEMPO DE MUESTREO DE LA SEÑAL ANALOGA, EN ESTE CASO ES EL INTERNO QUE ES MAS O MENOS 19,7uS
set_adc_channel(0);
delay_us(20);
while(1)
{
valor=read_adc(); //LA LECTURA LA HACE IGUAL A UNA VAIABLE
portd=valor;//LA VARIABLE LA HACE IGUAL AL PUERTO D
}
}
#include <16f877A.h>
#device adc=8
#use delay(clock=4000000)
#byte porta= 0x05
#byte portc= 0x07
#bit rc0= 0x07.0
int cont,port,valor;
float var;
#int_timer2
interr()
{
cont++;
if(cont>var)
{
rc0=0;
}
else
rc0=1;
if(cont>200)
{
cont=0;
}
}
void main()
{
set_tris_a(255);
set_tris_c(0);
setup_adc_ports(all_analog);
setup_adc(adc_clock_internal);
setup_timer_2(t2_div_by_1,100,1);
enable_interrupts(int_timer2);
enable_interrupts(global);
set_adc_channel(0);
delay_us(20);
while(1)
{
valor=read_adc();
port=valor;
if (port==0)
var=3;
else
if (port==25)
var=4,5;
else
if (port==51)
var=6;
else
if (port==102)
var=10;
else
if (port==204)
var=17;
else
if(port==255)
var=21;
}
}
#include<16f877a.h>
#fuses HS,NOLVP,NOWDT,PUT,XT,NOPROTECT,NOCPD,NOBROWNOUT
#use delay(clock=20000000)
//#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
#include"lcd_raph.c"
void main() {
int value;
lcd_init();
//printf("muestras:");
setup_adc_ports( RA0_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel( 0 );
do {
delay_ms(100);
value = read_adc();
}
//printf("nrvalor: %x", value);
lcd_putc("\flos valores son...\n");
lcd_putc(value);
delay_ms(100);
} while (TRUE);
}
hola jenifer, no entiendo bien, tienes que hacer un conversor analogo digital o tienes que convertir una señal analoga a digital mediante el A/D del pic. yo tengo el codigo en c para convertir una señal analoga a digital en el pic.
#include <16f877a.h>
#fuses hs, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=4000000)
//#use fast_io(b)
#include <LCD.C>
//#use fast_io(c)
void main() {
int16 q;
float p;
// set_tris_c(0x00);
setup_adc_ports(AN0); //Canal 0 analógico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
// output_c(0x00);
lcd_init();
for (;;) {
set_adc_channel(0); //Habilitación canal0
delay_us(20);//aqui modifique era 20
q = read_adc(); //Lectura canal0
p =20.5 * q / 1024.0; //aquí es la duda, se supone que solo debería multiplicar por cinco pero no funciona, debo agregar el 20 y no funciona ok
delay_ms(200);
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %f", p);
delay_ms(200);
}
}
¿Para que divides entre 1024 si la resolución del ADC la tienes en 8 bits?no me funciona correctamente la conversión si alguien pudiera echarle un ojo a esto se los agradeciera,
debo multiplicar por 20.5 en lugar de 5
¿Y que es lo que llevas hecho por el momento?Buenos días. Quisiera saber si me pueden colaborar con un código que haga lo siguiente, un pic 12f675 lea por una entrada análoga una señal que varia en su amplitud en milivoltios, montada sobre un nivel de 2.5 voltios dc el programa debe hacer lo siguiente.
Cuando detecte en su entrada 20 milivoltios ac o mas debe el micro generar un cero por un pin de salida y si el valor leído es menor a 20 milivoltios ac debe sacar 5 voltios, les agradezco la ayuda.