Autor Tema: Programación de reles  (Leído 1025 veces)

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

Desconectado RamonGarcia

  • PIC10
  • *
  • Mensajes: 16
Programación de reles
« en: 23 de Octubre de 2021, 21:28:54 »
Buenas alguien puede a ayudarme con el siguiente código en leguaje c++ para programación en pic.
Tengo mi código de la forma en la que activo un relé pero a su vez quiero que en ese apartado pueda desactivar otro con el mismo botón, alguien puede ayudarme de favor.

#include<18F4550.H>
#fuses HSPLL, PLL5, USBDIV, NOWDT, CPUDIV1, NOPROTECT, NODEBUG, NOPBADEN, NOLVP, NOVREGEN  //20MHz
#use delay(clock=40MHz)
#define LCD_DATA_PORT getenv("SFR:PORTD")
#BYTE PORTA = 0xf80
#BYTE PORTB = 0xf81
#DEFINE Rele PORTA,0
#DEFINE Push PORTB,0
VOID MAIN()
{
   BOOLEAN start=0;
   SET_TRIS_A(0);             //Configura el puerto A como Salida
   SET_TRIS_B(0b00000001);    //Configura el puerto RB0 Entrada
   PORTA=0;
   WHILE(TRUE)                // Haga por siempre
   {
      //Pregunta por el botón
      if(bit_test(Push))
      {
         delay_ms(200);       //Anti-Debounce
         //Instrucción para contabilizar una pulsación del botón
         while(bit_test(Push))
         {
            delay_ms(200);       //Anti-Debounce
         }
         start = !start;      //Cambia el estado lógico de start
      }
     
      //Activa o desactiva el relé
      if(start)
         bit_set(Rele);    //Activa Rele
      else
         bit_clear(Rele);  //Desactiva rele
           
 
   }
   }

Desconectado Eduardo Rodas

  • PIC12
  • **
  • Mensajes: 62
    • Kit electronica
Re:Programación de reles
« Respuesta #1 en: 24 de Octubre de 2021, 11:37:51 »
Pues yo de C no se  :mrgreen: pero siguiendo la lógica del programa, diría que es algo como esto:

#include<18F4550.H>
#fuses HSPLL, PLL5, USBDIV, NOWDT, CPUDIV1, NOPROTECT, NODEBUG, NOPBADEN, NOLVP, NOVREGEN  //20MHz
#use delay(clock=40MHz)
#define LCD_DATA_PORT getenv("SFR:PORTD")
#BYTE PORTA = 0xf80
#BYTE PORTB = 0xf81
#DEFINE Rele PORTA,0
#DEFINE Rele2 PORTA,1
#DEFINE Push PORTB,0
VOID MAIN()
{
   BOOLEAN start=0;
   SET_TRIS_A(0);             //Configura el puerto A como Salida
   SET_TRIS_B(0b00000001);    //Configura el puerto RB0 Entrada
   PORTA=0;
   WHILE(TRUE)                // Haga por siempre
   {
      //Pregunta por el botón
      if(bit_test(Push))
      {
         delay_ms(200);       //Anti-Debounce
         //Instrucción para contabilizar una pulsación del botón
         while(bit_test(Push))
         {
            delay_ms(200);       //Anti-Debounce
         }
         start = !start;      //Cambia el estado lógico de start
      }
     
      //Activa o desactiva el relé
      if(start)
         bit_set(Rele);    //Activa Rele
         bit_clear(Rele2); // Desactiva Rele 2
      else
         bit_clear(Rele);  //Desactiva rele
         bit_set(Rele2); //Activa rele 2
 
   }
   }

Desconectado RamonGarcia

  • PIC10
  • *
  • Mensajes: 16
Re:Programación de reles
« Respuesta #2 en: 24 de Octubre de 2021, 15:21:26 »
Que crees que lo compilo y me marca error en else!

Conectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 965
Re:Programación de reles
« Respuesta #3 en: 24 de Octubre de 2021, 16:32:32 »
Porque faltan las llaves

Desconectado RamonGarcia

  • PIC10
  • *
  • Mensajes: 16
Re:Programación de reles
« Respuesta #4 en: 24 de Octubre de 2021, 19:41:32 »
De esa forma, me queda bien, así es correcto?


if(start){
         bit_set(Rele);    //Activa Rele
         bit_clear(Rele2); //Descativa Rele 2
      }
      else{
         bit_clear(Rele);  //Desactiva rele
        bit_set(Rele2);   //Descativa rele 2
      }
 

Desconectado Eduardo Rodas

  • PIC12
  • **
  • Mensajes: 62
    • Kit electronica
Re:Programación de reles
« Respuesta #5 en: 25 de Octubre de 2021, 11:45:15 »
Ahora recuerdo porque no me gusta el lenguaje C ... por esas benditas llaves.  :x

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Programación de reles
« Respuesta #6 en: 25 de Octubre de 2021, 22:39:07 »
Ahora recuerdo porque no me gusta el lenguaje C ... por esas benditas llaves.  :x

Mejor que hacer tabs unicamente lo es.


 

anything