Hola a todos,
en primer lugar, quería felicitaros por hacer que éste foro sea posible, ya que en el he encontrado bastante ayuda, y bibliografía que consultar. Mi más sincera enhorabuena.
Os expongo mi consulta.
Como principiante en el tema de la programación de PIC's, me he propuesto como ejercicio, realizar el parpadeo de una serie de led's como piloto trasero para una bicicleta, la función que se pretende realizar es, si presiono una vez el pulsador, que ejecute un tipo de parpadeo, si vuelvo a pulsar, el siguiente tipo de parpadeo, así pasando por una serie de funciones hasta volver nuevamente a 0.
Probando con un par de funciones, simulando en proteus, solo consigo que acceda a la segunda función, no soy capaz de que alterne entre las 2 funciones que tiene y que luego se quede en 0, digamos que se quede de nuevo sin funcionar.
#include <16f84A.h>
#fuses XT,NOWDT,NOPROTECT,NOPUT
#byte puertoa=0x05
#byte puertob=0x06
#use delay(clock=4000000)
#use standard_io(A)
int pulsa=0;
void funcion1() //PARPADEAN TODOS LOS LED
{
while(true)
{
puertob=(0x1ff);
delay_ms(100);
puertob=(0x00);
delay_ms(100);
}
}
void funcion2() //PARPADEO ALTERNO DE LOS LED
{
while(true)
{
puertob=(0x55);
delay_ms(100);
puertob=(0x00);
delay_ms(100);
puertob=(0xaa);
delay_ms(100);
puertob=(0x00);
delay_ms(100);
}
}
void main()
{
set_tris_a(0x01);
set_tris_b(0x00);
puertob=0x00;
puertoa=0x00;
while(true)
{
if (input(pin_a0)); pulsa++;
if (pulsa==1) funcion1();
if (pulsa==2) funcion2();
if (pulsa==3); pulsa=0;
}
}
Aparte, en el simulador, me aparecen una serie de advertencias, haciendo referencia a Trisa y a Trisb, TRISA instruction is deprecated for pic 1684.
He tratado de buscar algo relacionado sobre esa advertencia, pero no me he acabado de aclarar muy bien. A ver si me podéis aclarar un poco sobre ambas dudas.
Agradezco vuestra atención.
Un saludo.