lo que yo quiero que aga el joystick es accionar 2 reles. y tengo todo el programa hecho lo unico que me falta es el adc para e joystick, que nunca lo e hecho y no se exactamente.
este es el programa:
#include <12f683.h>
#device ADC=8
#fuses NOWDT // SIN WATCH DOG TIMER
#fuses INTRC_IO // OSCILADOR INTERNO SIN CLKOUT
#fuses NOCPD // NO EE PROTECTION
#fuses NOPROTECT // NO SE PUEDE LEER EL CODIGO DEL PIC
#fuses NOMCLR // PIN_A3 USADA PARA ENTRADA Y NO PARA RESET
#fuses NOPUT // SIN POWER UP TIMER
#fuses NOBROWNOUT // SIN BROWNOUT RESET
#use delay (clock=8000000) //CONFIGURACION DEL RELOJ
void main()
{
int estado=0, esta_activo1=0,esta_activo2=0;
int16 tiempo=0, t1=0, t2=0;
setup_oscillator(OSC_8MHZ); //CONFIGURA EL OSCILADOR A 8 MHZ
setup_adc_ports(sAN0|VSS_VDD); //ADC 0 ACTIVADO - REF 5V
setup_adc(ADC_CLOCK_INTERNAL); //ADC POR EL PIN 0
setup_comparator(NC_NC_NC_NC); //COMPARADOR DESACTIVADO
setup_vref(FALSE); //SIN TENSION DE REFERENCIA
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1); //CONFIRACION TIMER0
setup_timer_1(T1_DISABLED); //TIMER1 DESACTIVADO
setup_timer_2(T2_DISABLED,0X3F,1); //TIMER2 DESACTIVADO
//**********CONFIGURACIONES DE LAS ENTRADAS Y SALIDAS
//**********GP0 ENTRADA ADC
//**********GP1 ENTRADA 1
//**********GP2 ENTRADA 2
//**********GP3 ENTRADA SELECTOR MODO AUTO.
set_tris_a(0b00001111);
//**********INICIALIZAMOS LA PUERTA A. APAGAMOS TODO***
output_low(PIN_A4);
output_low(PIN_A5);
//**********ACTIVAMOS EL CANAL 0 ADC*******************
set_adc_channel(0);
delay_ms(10);
while(true){
estado=INPUT(PIN_A3);
//************ACTIVAMOS EL ESTADO AUTO.****************
if(estado==1){
output_low(PIN_A4);
output_low(PIN_A5);
esta_activo1=esta_activo2=0;
t1=t2=0;
while(estado==1){
tiempo=read_adc();
tiempo=tiempo*20;
if(input(PIN_A1)&&(esta_activo1==0)){
output_high(PIN_A4);
esta_activo1=1;
t1=tiempo;
}
if(input(PIN_A2)&&(esta_activo2==0)){
output_high(PIN_A5);
esta_activo2=1;
t2=tiempo;
}
if(t1>0){t1--;}
if(t1<=0){
output_low(PIN_A4);
esta_activo1=0;
}
if(t2>0){t2--;}
if(t2<=0){
output_low(PIN_A5);
esta_activo2=0;
}
if((t1!=0)||(t2!=0))delay_ms(1);
estado=input(PIN_A3);
}
}
//********************MANUAL****************
else{ //Estado manual activado
output_low(PIN_A4);
output_low(PIN_A5);
esta_activo1=esta_activo2=0;
while(estado==0){
if(input(PIN_A1)&&(t1==0))
{
if(esta_activo1==0){
output_high(PIN_A4);
esta_activo1=1;}
else{
output_low(PIN_A4);
esta_activo1=0;}
t1=500;
}
if(input(PIN_A2)&&(t2==0)){
if(esta_activo2==0){
output_high(PIN_A5);
esta_activo2=1;}
else{
output_low(PIN_A5);
esta_activo2=0;}
t2=500;
}
if(t1!=0)t1--;
if(t2!=0)t2--;
if((t1!=0)||(t2!=0))delay_ms(1);
estado=input(PIN_A3);
}}}}