Ningun Microcontrolador trabaja con codigo ASCII, hex, decimal u octal, ellos sólo trabajan en binario. Es decir, que una cadena de caracteres ASCII no es nadamas que un arreglo de valores en binario, pero el compilador se encarga de realizar las respectivas conversiones del valor que nosotros escribamos a binario.
Por ejemplo:
char Caracter[] = "485C" ;
Es equivalente a
char Caracter[] ={0x34,0x38,0x35,0x43,0x0};
Es decir que si tu llamas a Caracter[3], que en este caso es C en ASCII sería 0x43 en hexadecimal.
si quieres pasar de ASCII a decimal simplemente tienes que restar la variable en ASCII menos 0x30 hexadecimal (el equivalente a 0 ASCII).
valor=Caracter[0]-'0';
ya que Caracter[0] es 4 en ASCII o 0x34 en hexadecimal el valor será igual a 0 decimal.