Además de lo que dijo stevenvh, asegúrate de que estás ejecutando el A/D correctamente dentro del procesador. No estoy familiarizado con ese procesador, pero los que he visto tienen todos un sample and hold delante del A/D interno. A menudo hay uno o un pequeño número de convertidores A/D reales, con un mux delante de la muestra y retención para seleccionar el único canal para leer ese tiempo. El muestreo y retención tarda un tiempo finito en asentarse. Tienes que asegurarte de que se ha dado suficiente tiempo después de cambiar el mux antes de que el muestreo y retención pase al modo de retención y el A/D haga la conversión.
Otro posible error es la impedancia de la señal que conduce al pin A/D. La hoja de datos debería tener una especificación para eso, y podría ser mucho más baja de lo que piensas. Para evitar errores de offset, generalmente no hay amplificador en el chip. La muestra y retención es sólo un condensador con un FET que lo conecta al pin de entrada en el modo de muestra. La impedancia que conduce el pin necesita estar por debajo de algún valor para obtener la precisión especificada y el tiempo mínimo de muestreo.
Comprueba también qué utiliza exactamente el A/D para sus referencias de voltaje, particularmente la referencia del lado bajo en tu caso. El valor por defecto es probablemente la tierra regular del procesador. Sin embargo, también podría tener una clavija de tierra analógica separada, y a veces una clavija de entrada analógica separada puede ser utilizada como la referencia negativa. Comprueba que todo esto está configurado tal y como lo has previsto.
Como dijo stevenvh, 80mV es demasiado alto para cualquier error normal. A lo sumo se esperaría una cuenta o tal vez dos cuando realmente debería estar leyendo 0. Algo está definitivamente mal con su configuración. Ten en cuenta que esto incluye la configuración del uso del A/D por el firmware.