TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: RamonGarcia 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
}
}
-
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
}
}
-
Que crees que lo compilo y me marca error en else!
-
Porque faltan las llaves
-
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
}
-
Ahora recuerdo porque no me gusta el lenguaje C ... por esas benditas llaves. :x
-
Ahora recuerdo porque no me gusta el lenguaje C ... por esas benditas llaves. :x
Mejor que hacer tabs unicamente lo es.