Hola a todos, necesito su ayuda para entender qué hace esta parte del código, se supone que DRX es dato de recepción de la data del USART usado por el PIC, en primer lugar no sé que valor inicial tiene regRX, en segundo lugar, no sé cuando se ejecuta el case 13, si lo único que ingreso por hyperterminal es la secuencia 'yz', nunca ingreso '13' para que sea leido por el modulo de recepción del USART mediante DRX; posteriormente uso la variable 'y' y la variable 'z' en otra función donde se verifica la veracidad de 'noentiendoestafuncion' con una sentencia 'If', esta sentencia es TRUE a pesar que ingreso solo 'y' y 'z', como puede ser TRUE si el unico caso es en el case 13 (return 1) si yo nunca ingreso '13'...ahhh y la función 'atoi' sé que convierte una cadena de caracteres en entero, pero como funciona aca?, supongo que debe haber una tabla de valores correspondiente, si no cómo se qué valor tiene una cadena específica? por ejemplo 'sdr' que valor tiene como entero? 1? 4? 30?...porfavor si alguien me pueda ayudar estaría muy agradecido, saludos
char regRX[16];
unsigned int x=0;
char z;
unsigned int y;
unsigned int DRX;
unsigned int noentiendoestafuncion()
{
if (DataRdyUART1())
{
switch (DRX)
{
case 10 : break;
case 13 : if (x>0)
{
z = regRX[x-1];
regRX[x-1] = 0;
y = atoi(regRX);
x = 0;
regRX[x] = 0;
return 1;
}
break;
default : regRX[x] = DRX;
x++;
regRX[x] = 0;
break;
}
}
return 0;
}