Buenos dias todopics

, deseo realizar una pregunta . Tengo el siguiente codigo en XC8, PIC16F1947, que funciona bien:
He logrado ingresar con el teclado de PC cualquier numero, por serial (en proteus), pero solo puedo de un digito (1-9). Que funcion o como podria cambiar este codigo para que pueda ingresar mas de un digito o talvez un numero con coma

. Gracias

En el code configurator lo unico relevante que hice es:
1. En el oscillator: INTOSC, FOSC, 8MHZ, PLL enabled ---> current system clock 32MHZ
2. agregar modulo EUSART1 y marcar la opcion "redirect stdio to usart".
MAIN.C :
#include "mcc_generated_files/mcc.h"
/*
Main application
*/
void main(void)
{
// initialize the device
SYSTEM_Initialize();
int opcion, valor, res;
printf("\r Introduzca un valor entero mayor que 0:\n");
printf("\r ");
valor = getch();
valor = valor-48; //Codigo ASCII
printf("\r El valor ingresado es %i",valor); ///Ingresado por RVR
printf("\r ");
printf("\r ***Menu de opciones***");
printf("\r 1-Averiguar el cuadrado:");
printf("\r 2-Averiguar el cubo:\n");
printf("\r 3-Averiguar si es par o no:");
printf("\r Ingrese opcion:");
printf("\r ");
opcion = getch();
opcion = opcion-48; //Codigo ASCII
printf("\r La opcion escogida es %i",opcion); ///Ingresado por RVR
switch(opcion)
{
case 1:
res = valor*valor;
printf("\r El cuadrado de %i es %i",valor,res);
break;
case 2:
res = valor*valor*valor;
printf("\r El cubo de %i es %i",valor,res);
break;
case 3:
res = valor%2;
if(res)
printf("\r El numero %i es impar",valor);
else
printf("\r El numero %i es par",valor);
break;
default:
printf("\r Opcion erronea");
}
printf("\r ");
while (1)
{
// Add your application code
}
}