struct fifo{
int ptr_e; //puntero de escritura
int ptr_l; //puntero de lectura
char reg[50]; //vector de datos
}fifo1, fifo2, fifo3;void push(char dato)
{
fifo1.reg[fifo1.ptr_e]=dato;
if(fifo1.ptr_e<fifo1.ptr_l)
{
if(fifo1.ptr_l<=99)
{
fifo1.ptr_l++;
}
else
{
fifo1.ptr_l=0;
}
}
if(fifo1.ptr_e<=99)
{
fifo1.ptr_e++;
}
else
{
fifo1.ptr_e=0;
}
}
char pull(void)
{
char temp;
if((fifo1.ptr_l==0)&&(fifo1.ptr_e==0))
{
temp= 0x1F;
}
if(fifo1.ptr_l==fifo1.ptr_e)
{
fifo1.ptr_l=0;
fifo1.ptr_e=0;
temp=0x1F;
}
//if((fifo1.ptr_l<fifo1.ptr_e)
else
{
temp=fifo1.reg[fifo1.ptr_l];
if(fifo1.ptr_l!=99)
{
fifo1.ptr_l++;
}
else
{
fifo1.ptr_l=0;
}
}
return temp;
};struct datos_carnet
{
int numero;
};
struct datos_carnet dni1, dni2;void escribir_dni(struct datos_carnet* dni,int dato1);
void escribir_dni(struct datos_carnet* dni,int dato1)
{
dni->numero=dato1;
}
escribir_dni(&dni1,50);
struct reg_fifo
{
int ptr_e;
int ptr_l;
unsigned char reg[50];
};
struct reg_fifo fifo1, fifo2, fifo3;
void push(struct reg_fifo* fifo, char dato);
char pull(struct reg_fifo* fifo);
void push(struct reg_fifo* fifo, char dato)
{
fifo->reg[fifo->ptr_e]=dato;
if(fifo->ptr_e<fifo->ptr_l)
{
if(fifo->ptr_l<=99)
{
fifo->ptr_l++;
}
else
{
fifo->ptr_l=0;
}
}
if(fifo->ptr_e<=99)
{
fifo->ptr_e++;
}
else
{
fifo->ptr_e=0;
}
}
char pull(struct reg_fifo* fifo)
{
char temp;
if((fifo->ptr_l==0)&&(fifo->ptr_e==0))
{
temp= 0x1F;
}
if(fifo->ptr_l==fifo->ptr_e)
{
fifo->ptr_l=0;
fifo->ptr_e=0;
temp=0x1F;
}
//if((fifo->ptr_l<fifo->ptr_e)
else
{
temp=fifo->reg[fifo->ptr_l];
if(fifo->ptr_l!=99)
{
fifo->ptr_l++;
}
else
{
fifo->ptr_l=0;
}
}
return temp;
};