Pienso que puede ser devido a que has declarado
volatile struct Camino Matriz[30]; .. cosa muy correcta
pero si "CaminoNumero" se incrementa mas de 29 se jode la marrana y puede venir el cuelge , eso puede ser devido a los rebotes de algun pulsador .
Codigo:
/****************************************/
void Guardo_Info (Distancia,Recta, IDdir)
/****************************************/
{
Matriz[CaminoNumero].Distancia=Distancia;
Matriz[CaminoNumero].Recta=Recta;
Matriz[CaminoNumero].IDdir=IDdir;
if (CaminoNumero < 29 ) CaminoNumero++; // Obcional para poder ver si es el problema .
}
suerte
si es posible , sin algo antirrebotes no es dificil llegar a 30 con una pulsación
Codigo:
struct Camino{
int Distancia;
unsigned int Recta;
unsigned char IDdir;
}Matriz[30];
Asi tambien seria correcto no ?