char BufferEntrada[4]; // Buffer donde vamos a ir almacenando lo que va llegando
char BufferCopia[4]; // Buffer que es el que va a leer el main
char recibido; // Donde se va a guardar el char
bool DatoListo // Para indicarle al main que hay un dato
// Codigo de interrupcion:
switch(Estado)
{
case 0:
if (recibido=='A' || recibido == 'B')
{
Estado++;
BufferEntrada[0]=recibido;
}
break;
case 1:
if(recibido >= '0' && recibido <= '9')
{
Estado++
BufferEntrada[1] = recibido;
}
else
{
Estado = 0;
}
break;
case 2:
if(recibido == 'P' || recibido == 'Z' || recibido == 'X')
{
BufferCopia[2] = recibido;
BufferCopia[1] = BufferEntrada[1];
BufferCopia[0] = BufferEntrada[0];
DatoListo = true;
}
Estado = 0;
break;
default:
Estado = 0;
break;
// Codigo del main:
while(true)
{
if(DatoListo==true)
{
DatoListo= false;
// De ser mas puertos usar un switch en ves de ifs
if(BufferCopia[0] == 'A')
{
// Puerto A
// Aca seteo de parpadeo y
}
else
{
// Puerto B
}
}
}
// Codigo de interrupcion de timer
int_timer()
{
// Aca cada tanto verificar cual es el que debe hacerse parpadear y cambiarle el estado.