TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: velaale en 13 de Julio de 2016, 09:08:08

Título: Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: velaale en 13 de Julio de 2016, 09:08:08
Hola amigos; me inicio en esto de los PICS y necesito una grana ayuda, intento controlar un relay (rele) que encienda y apague en un determinado tiempo que ya consegui hacerlo pero aun no se como hacer para que A3 que es un led encienda y apague durante todo el tiempo que este encendido el PIC pues este quiero ponerlo en la tarjeta indicando el funsionamiento de la misma.   Por favor podrian ayudarme a que lineas debo incluir para este led todo el tiempo parpadee? Agradezco sus ayuda

#include <16F628.h>

#fuses nowdt
#fuses hs
#fuses noput
#fuses noprotect
#fuses nobrownout
#fuses nolvp
#fuses nocpd
#fuses XT
#use delay(clock=4000000)

#byte porta=0xF00
#byte portb=0xF01


void main()
{


while(true)
{

output_low(PIN_A2);
output_low(PIN_A0);   //Rele
output_high(PIN_A1);  //Led verde indicador de Relay apagado

delay_ms(10000);

output_low(PIN_A1);
output_high(PIN_A0);
output_high(PIN_A2);  //Led rojo cuando el relay enciende

delay_ms(10000);

}

return;

}
Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: planeta9999 en 13 de Julio de 2016, 09:33:59


Puedes usar interrupción+temporizador, o quitar esos delay y usar variables como contadores para condicionar la activación de los puertos.
Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: velaale en 13 de Julio de 2016, 09:46:25
 :shock: Definitivamente estoy en un forum donde no deberia estar esas palabras son muy profundas para mi jejejejeje bueno gracias   :)
Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: Chaly29 en 13 de Julio de 2016, 09:54:00
Hola velaale, yo estoy peor que vos, en cuanto a conocimientos de C, pero se me ocurre esto:

Reemplazas los delay_ms(10000); por:

output_low(PIN_A3);
delay_ms(1000);
output_high(PIN_A3);
delay_ms(1000);
output_low(PIN_A3);
delay_ms(1000);
output_high(PIN_A3);
delay_ms(1000);
output_low(PIN_A3);
delay_ms(1000);
output_high(PIN_A3);
delay_ms(1000);
output_low(PIN_A3);
delay_ms(1000);
output_high(PIN_A3);
delay_ms(1000);
output_low(PIN_A3);
delay_ms(1000);
output_high(PIN_A3);
delay_ms(1000);

Por supuesto se que dista mucho de ser la manera correcta de hacerlo, pero para mis conocimientos de C, esto es espectacularmente complicado  :D

Un saludo.

Atte. CARLOS.

Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: velaale en 13 de Julio de 2016, 10:05:22
Hola amigo Carlos no ese no me sirve porque debe ser que encienda como si fuese una expresion WHILE osea siempre parpadee haga las inclusiones que haga nunca deje de parpadear, ya ese lo intente jejejejejeje gracias
Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: planeta9999 en 13 de Julio de 2016, 10:25:43


Prueba con este código, pero lo ideal será que uses una interrupción con un temporizador. Los valores en DELAYX1 y DELAYX2 los tendrás que ir probando hasta que salgan las temporizaciones que quieres.


void main()
{

unsigned long contador=0;
unsigned int contador2=0
#define DELAYX1 6000;
#define DELAYX2 10;

while(true)
{

if (contador2==0) output_high(PIN_A3); // Parpadea led en A3
if (contador2==DELAYX2) output_low(PIN_A3);

if (contador==0)
   {
   output_low(PIN_A2);
   output_low(PIN_A0);   //Rele
   output_high(PIN_A1);  //Led verde indicador de Relay apagado
   }

if (contador==DELAYX1)
   {
   output_low(PIN_A1);
   output_high(PIN_A0);
   output_high(PIN_A2);  //Led rojo cuando el relay enciende
   }

contador2++;
contador++;
if (contador  == DELAYX1 * 2)  contador=0;
if (contador2 == DELAYX2 * 2) contador2=0;

}

return;

}

Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: Chaly29 en 13 de Julio de 2016, 10:25:58
Hola velaale, pero ese parpadea siempre, por lo menos si el programa que estas usando es el que posteaste anteriormente.

Un saludo.

Atte. CARLOS.

Título: Re:Como hacer parpadear un led en PIC16F628A durante toda la ejecucion del programa
Publicado por: velaale en 13 de Julio de 2016, 10:29:27
OOOK ya pruebo amigos muchas gracias