Creo que estás terriblemente confundido y usando los términos incorrectos, pero creo que veo lo que estás tratando de preguntar.
Usted aplica un voltaje a la entrada del ADC, y su MCU recibe un código que indica la porción del rango del ADC.
Supongamos que tiene un ADC de 12 bits que puede aceptar un voltaje de 0 a 3.0 voltios. Si aplica 3.0 voltios a la entrada de ADC, entonces el ADC dará un valor numérico de 4095 a la MCU.
Lo que está preguntando es: ¿por qué el ADC no puede reportar un valor numérico de 3.0 en lugar de 4095?
Bueno, podrías hacer uno que haga eso. Sin embargo, sería muy complicado por dentro, ya que tendría que lidiar con dígitos codificados en binario (BCD) o números de punto flotante. También tendría que comunicar los números a su MCU en ese formato.
Por lo tanto, pasaría de una representación binaria de 12 bits a 32 bits (punto flotante) o posiblemente más bits (BCD) para representar el mismo valor. Eso requiere más tiempo para comunicarse desde el ADC a la MCU, por lo que está reduciendo la velocidad a cero. Su MCU tendría que entender el formato que envía el ADC y convertirlo internamente en algo que pueda usar, y muchas MCU más pequeñas no pueden manejar el punto flotante de forma nativa y necesitarán una gran biblioteca para trabajar con esos números. Lo mismo se aplica a BCD.
Lo siguiente es que muchos ADC operan desde un voltaje de referencia que se puede cambiar desde afuera, el ADC no tiene idea de qué referencia está usando. Tendría que ser capaz de medir eso y darle algún tipo de sentido para hacer el cálculo.
Entonces, se está preguntando por qué el ADC no realiza un paso simple (valor binario a valor de voltaje) para que simplifique su software. Al realizar ese paso simple (en software) resulta ser un enorme desorden en el hardware. .
Razón simple: se puede hacer, pero no es necesario y sería complejo, costoso y más lento de lo que se usa normalmente.