Your code does not set the ADCON0 register properly to right justify the result. The default is Left justification, hence the 65520, or FFF0 or 1111 1111 1111 0000 result, which seems as 12 bit just fine, only left justified.
You need to set FRM bit to 1. It is the bit 2 in the ADCON0 register. Look at the page 536 of the datasheet. There are many other settings regarding ADC converter if you need other features.
I bet that your first reading after 0 was 16 then 32, then 48 etc instead of 1,2,3
Ioannis
Bookmarks