Autor Tema: Activar una salida temporizada segun estado 12F629 C ¿QUE HAGO MAL?  (Leído 2020 veces)

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

Desconectado nomakon

  • PIC10
  • *
  • Mensajes: 7
#include <12F629.h>               //pic que vamos a utilizar
//#device adc=8                   //conversor Analogico/digital patilla 8

#FUSES NOWDT                    //El perro encerrado en la caseta
#FUSES INTRC_IO                 //reloj interno del pic
#FUSES NOCPD                    //No EE proteccion
#FUSES NOPROTECT                //El codigo libre de leer
#FUSES NOMCLR                   //No Master Clear
#FUSES PUT                      //Espera un tiempo al encenderse para
                               //que se estabilice la tension
#FUSES BROWNOUT                 //Reset cuando baja la tension a niveles no seguros

//#FUSES IESO                   //y eso es mi amiga y no baila
//#FUSES FCMEN                  //Habilita el modo a prueba de fallos del reloj

#define GP0 PIN_A0
#define GP1 PIN_A1
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5

#use delay(clock=4000000)       //Necesario para usar delay_ms


void main()
{
   //setup_adc_ports(NO_ANALOGS|VSS_VDD);       //desactivamos los puertos ADC

   //setup_adc(ADC_OFF);                        //apagamos el conversor ADC

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);   //activamos timer0 como interno

   setup_timer_1(T1_DISABLED);                //deshabilitamos

   //setup_timer_2(T2_DISABLED,0,1);            //lo mismo

   setup_comparator(NC_NC);                   //las comparaciones son odiosas

   setup_vref(FALSE);                         //voltaje referencia, no

      if (GP0 == 0)    
      {
         output_high(GP5);
      }
      else
      {
         delay_ms(2000);
         output_low(GP5);  
      }
}

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Activar una salida temporizada segun estado 12F629 C ¿QUE HAGO MAL?
« Respuesta #1 en: 25 de Octubre de 2010, 12:34:58 »
para leer el estado de un pin en ccs se usa la función input(pin_XX)


en lugar de
...
if (GP0==0)
...

debes usar
...
if (input(GP0)==0)
...


además de colocar tu if dentro de un ciclo infinito (while), para que se ejecute constantemente, sino solo se ejecuta una sola vez cuando arranca el pic.
« Última modificación: 25 de Octubre de 2010, 12:37:04 por pablomanieri »

Desconectado nomakon

  • PIC10
  • *
  • Mensajes: 7
Re: Activar una salida temporizada segun estado 12F629 C ¿QUE HAGO MAL?
« Respuesta #2 en: 25 de Octubre de 2010, 13:10:24 »
Listo lo he puesto en un while y se activa cuando GP0 esta activo pero no respeta los (ms) antes de activarse.


Soy nuevo en esto =(

void main()
{
   //setup_adc_ports(NO_ANALOGS|VSS_VDD);       //desactivamos los puertos ADC

   //setup_adc(ADC_OFF);                        //apagamos el conversor ADC

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);   //activamos timer0 como interno

   setup_timer_1(T1_DISABLED);                //deshabilitamos

   //setup_timer_2(T2_DISABLED,0,1);            //lo mismo

   setup_comparator(NC_NC);                   //las comparaciones son odiosas

   setup_vref(FALSE);                         //voltaje referencia, no
while(1)
{
      if (input(GP0)==1)   
      {
         delay_ms(50000);
         output_high(GP5);
      }
      else
      {
         output_low(GP5);   
      }
}
}


 

anything