Hola, tengo un problema con este program. El programa debe de leer dos canales analogos (AN0, AN3) el canal AN0 me maneja el led1 y el AN3 me maneja el led2. El programa funciona al reves el AN0 me maneja el led2 y el AN3 me maneja el led1. el programa esta hecho en hi-tech (programación C).
Código:
#include <htc.h>
#include <stdio.h>
#define _XTAL_FREQ 4000000
#define bitset(var, bitno) ((var) |= 1UL << (bitno)) //Macro para set bit individual
#define bitclr(var, bitno) ((var) &= ~(1UL << (bitno))) //Macro para set bit individual
unsigned int value_adc; //Guarda el resultado del conversor en 10 bits
unsigned int t_scr;
void conversor_adc(void){
__delay_us(10);
ADGO=1; //Empieza la conversión
if (ADGO==1){
}
value_adc=0;
value_adc=(ADRESH << 8)+ADRESL;
ADCON0=0;
}
void main(){
OSCCON=0X6A; //Configuro oscilador interno 4MHz
TRISA=0X19; //0B011001
PR2=79; //Frecuencia del PWM (781.25 Hz)TMR2=16
CCP1CON=0X3C; //Bits LSB del Dc y modo de trabajo PWM; 0B00111100;
CCPR1L=0X0F; //Duty Cycle MSB; 0B01000000
PIR1=0; //limpiar bandera de interrupción
PIR2=0; //limpiar bandera de interrupción
T2CON=0X06; //Config. Prees del TMR2 en 16 OB00000110
ANSELA=0X11; //Entradas analogas AN0, AN3; 0B00010001
ADCON1=0XF0; //Configuro: resultado, clock, Vref
ADIE=0; //limpiar bandera de int del ADC
PORTA=0;
while (1){
ADCON0=0X0D;
conversor_adc ();
if (value_adc<=370){
RA5=0;
}
else {
RA5=1;
}
ADCON0=0X01;
conversor_adc ();
if (value_adc<=370){
RA1=0;
}
else {
RA1=1;
}
}
}
Última edición por un moderador: