Autor Tema: Error en sentencia If, ayuda por favor...  (Leído 1454 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado telesystem

  • PIC10
  • *
  • Mensajes: 12
Error en sentencia If, ayuda por favor...
« en: 08 de Octubre de 2019, 17:58:54 »
Hola gente, seguramente es un estupidez, pero ya me estoy olvidando de algunas cosas básicas, les comento, si bien los pines A1, A2, A3 y A4 están en bajo (0), la sentencia solo me reconoce A1, el resto pasa de largo, seguro hay algo mal echo...

El main
Código: [Seleccionar]
#include <16F1503.h>
#device ADC=10
#use delay(internal=4MHz)
#use FIXED_IO( C_outputs=PIN_C5,PIN_C4,PIN_C3,PIN_C2,PIN_C1,PIN_C0 )

#fuses NOMCLR NOBROWNOUT NOLVP INTRC_IO

El código

Código: [Seleccionar]
#include <main.h>

int16 sensor1=0;
int16 sensor2=0;
int16 sensor3=0;
int16 sensor4=0;

#INT_RA
void ext_isr(void){
  clear_interrupt(INT_RA);                      // Clear PORTB IOC flag bit
                                                //  output_c(input_a());
 
if(input(pin_A1)==0){
   sensor1= sensor1 + 1;     
   output_toggle(PIN_C1);
   output_toggle(PIN_C1);
   
   if (sensor1 == 33){
     output_toggle(PIN_C1);
     output_toggle(PIN_C1);
     sensor1 = 0;
   }
}
 

if(input(pin_A2)==0){
   sensor2= sensor2 + 1;     
   output_toggle(PIN_C2);
   output_toggle(PIN_C2);
   
   if (sensor2 == 33){
     output_toggle(PIN_C2);
     output_toggle(PIN_C2);
     sensor2 = 0;
   }


if(input(pin_A3)==0){
   sensor3= sensor3 + 1;     
   output_toggle(PIN_C3);
   output_toggle(PIN_C3);
   
   if (sensor3 == 33){
     output_toggle(PIN_C3);
     output_toggle(PIN_C3);
     sensor3 = 0;
   }
}

if(input(pin_A4)==0){
   sensor4= sensor4 + 1;     
   output_toggle(PIN_C5);
   output_toggle(PIN_C5);

   if (sensor4 == 33){
     output_toggle(PIN_C5);
     output_toggle(PIN_C5);
     sensor4 = 0;
   }
}
}


void main()
{
  port_a_pullups(0x3F);
  port_c_pullups(0x3F);
  clear_interrupt(INT_RA);                       // Clear PORTB IOC flag bit
  enable_interrupts(INT_RA);                     // Enable all PORTB IOC pins
  enable_interrupts(GLOBAL);                     // Enable global interrupts

   while(TRUE)
   {

   }

}

No se si me expresé bien lo que esta pasando... soy medio nuevo en esto..
Desde ya muchas gracias...

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1295
Re:Error en sentencia If, ayuda por favor...
« Respuesta #1 en: 08 de Octubre de 2019, 18:31:52 »
Tu problema no es la sentencia "if", el problema es que no estas definiendo el puerto como digital. Recuerda que por default los pines que usas son analógicos.
Lo que tienes que hacer es colocar el registro ANSEL en cero para que los pines sean digitales.

elreypic.

Desconectado telesystem

  • PIC10
  • *
  • Mensajes: 12
Re:Error en sentencia If, ayuda por favor...
« Respuesta #2 en: 09 de Octubre de 2019, 00:04:59 »
Gracias por la info elreypic... he buscado info del ANSEL y no pude encontrar mucho, solo que tendría que agregar ANSELA = 0;  pero el compilador no reconoce el comando, estoy con CCS Ver 5.076...

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Error en sentencia If, ayuda por favor...
« Respuesta #3 en: 09 de Octubre de 2019, 08:21:57 »
Código: C
  1. setup_adc_ports(NO_ANALOG);

Ademas si tiene comparadores

Código: C
  1. setup_comparator(NC_NC_NC_NC);

Para pasarlos a digital


 

anything