On the whole, the Freescale demo/example projects are a 'pretty good' source to follow to get peripheral modules up and running. Attached is my code to read a few analog pins plus the PMC 1V bandgap (I was thinking of the wrong BandGap previously, AD27 comes from the PMC 1V+/-3% point), using Vdd=VddA=VrefH=3.3V(nominal). My actual conversion result (stored as an integer multiplied by 100000) nets a 1V reading of 0.985V, so the 'inverse millivolt math' of 3300*1000/985 (the ideal ratio in millivolts) gives me an actual VDD of 3350mV, whereas it actually measures 3330mV.
I call ADC_HW_Init() early-on, and some time later ADC_ReadAll() to preset the ongoing measurement array. You'll probably only have the ONE measurement to make... My table of channel-info ADC_CHAN_DEFN has several power-supply dividers feeding some other analog inputs.
So then on every timer-tick I convert one of my channels with ADC_Read_Filt_One(chan) which updates a 1-part-in-100 recursive filter to make a pretty long-term average (and leads to the overall 100*1000 voltage scaling).
Let me know if this code set 'comes up seriously short' of something (other than our local integer typedefs).