DEFINE LOADER_USED 1
DEFINE OSC 20
X VAR WORD
ADval VAR WORD
Quanta CON 6181 ' +Vref = 2.47V : Quanta=2.47V/1023*256=0.6181=6181

Begin:
FOR X = 1 TO 1023
ADval = X */ Quanta
HSEROUT ["Raw = ", DEC X, ": Result = ", dec ADval,13,10]
NEXT X
GOTO Begin

With +Vref at 2.47V, your resolution = 2.47V/1023 = 0.002414467

671 * 0.002414467 = 1.620V

If you run the above routine you'll see the values returned on any serial terminal while it simulates returned values with the dummy A/D input values.

Raw = 1: Result = 24
Raw = 2: Result = 48
Raw = 3: Result = 72
Raw = 4: Result = 96
Raw = 5: Result = 120
Raw = 6: Result = 144

144 represents 0.0144V

It's fairly close. 2.47V/1023*6=0.014486804. You loose some precision with the */ modifier returning only the middle 16-bits of the multiplication, but it's darn close for integer math.

<snip>

Raw = 668: Result = 16128
Raw = 669: Result = 16152
Raw = 670: Result = 16176
Raw = 671: Result = 16200
Raw = 672: Result = 16225
Raw = 673: Result = 16249
Raw = 674: Result = 16273
Raw = 675: Result = 16297
Raw = 676: Result = 16321
Raw = 677: Result = 16345
Raw = 678: Result = 16369
Raw = 679: Result = 16394
Raw = 680: Result = 16418

2.47V/1023*680=1.641837. Not too bad so far.

<snip>

Raw = 1020: Result = 24627
Raw = 1021: Result = 24651
Raw = 1022: Result = 24675
Raw = 1023: Result = 24699

2.47V/1023*1023=2.47V. 24699 is only 100uV off.