Read self battery voltage using PIC microcontroller
This part has a internal band-gap voltage reference that the A/D can read directly.  See section 20.0 on page 341, the CHS field in the ADCON0 register.  By using AVdd and AVss as the reference voltages and reading the 1.2 V bandgap voltage, you can calculate what the AVdd reference actually was.

For example, if you get a reading of 365 that you know corresponds to 1.2 V, then you know that the full scale reading of 1023 would be 3.36 V, which is the AVdd voltage.

It takes a divide to actually compute the AVdd voltage from the internal reference reading, but often you don't actually need to do that.  For example, you can pre-compute the readings that corresponds to battery low, battery really really low, etc.