#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;
}
}
También es viable, igual en los dos casos se pierde un pin :mrgreen:A pero en mi caso no del puerto B :D :D ;-)
Saludos