HOLA COMPAÑEROS :
Estoy realizando un programa simple con el pic 12f675 quiero leer un dato analógico un simple potenciómetro y si se encuentra dentro de un rango, si lo llevamos a porcentaje seria de 40% a 70% y no me ha funcionado, he revisado por internet y tengo dos programas distintos de los cuales ambos funcionan en proteus y ninguno en protoboard, para descartar opciones ingrese un programa simple de encendido de un led y funciona correctamente, acá les dejo ambos programas espero que me puedan ayudar y de antemano muchas gracias:
programa 1 :
programa 2:
Estoy realizando un programa simple con el pic 12f675 quiero leer un dato analógico un simple potenciómetro y si se encuentra dentro de un rango, si lo llevamos a porcentaje seria de 40% a 70% y no me ha funcionado, he revisado por internet y tengo dos programas distintos de los cuales ambos funcionan en proteus y ninguno en protoboard, para descartar opciones ingrese un programa simple de encendido de un led y funciona correctamente, acá les dejo ambos programas espero que me puedan ayudar y de antemano muchas gracias:
programa 1 :
Código:
#include <12f675.h>
#device adc=10;
#use delay (clock = 20000000)
#fuses HS,NOWDT,NOPROTECT
#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5
int16 val;
void main () {
disable_interrupts(GLOBAL);
disable_interrupts(INT_EXT);
disable_interrupts(INT_TIMER0);
disable_interrupts(INT_TIMER1);
SET_TRIS_A(0b001001);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_ANALOG|VSS_VDD);
set_adc_channel(0);
delay_us(20);
output_low(pin_a2);
output_low(pin_a1);
while(true) {
val=read_adc();
if(val>=300 && val<=900) {
output_high(pin_a2);
output_high(pin_a1);
val=0;
}
else{
output_low(pin_a2);
output_low(pin_a1);
val=0;
}
}
}
Código:
#include <12F675.h> // Cambia para cada PIC. Esta y las 10 líneas siguientes las genera el PICWizard.
#device adc=10 // Setea el ADC a 10 BIT
#FUSES NOWDT // Watch Dog Timer: NO
#FUSES INTRC_IO // Internal RC Osc, no CLKOUT
#FUSES NOCPD // Protección EE : NO
#FUSES NOPROTECT // Protección lectura Codigo : NO
#FUSES NOMCLR // MCLR usado como Puerto de Entrada/Salida
#FUSES NOPUT // Power Up Timer : NO
#FUSES NOBROWNOUT // Brownout reset : NO
#use delay(clock=4000000) // Frecuencia del reloj interno elegido
#rom 0x3ff = {0x3448} // 0x34:RETLW; 0x48 valor de calibración del Osc. Interno
// Es válida solo para un determinado PIC.
// Este valor lo graba en el PIC el fabricante
long valor ;
void main()
{
setup_adc_ports(sAN0|VSS_VDD); // Esta y las 5 líneas siguientes las genera el PICWizard.
setup_adc(ADC_CLOCK_DIV_2); // Si aumento DIV_2 a 16, baja muy poco la frecuencia
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC);
setup_vref(FALSE);
// --543210
while(true) {
valor=read_adc();
if(valor>=300 && valor<=800) {
output_high(pin_a2);
output_high(pin_a1);
valor=0;
}
else{
output_low(pin_a2);
output_low(pin_a1);
valor=0;
}
}
}
Última edición por un moderador: