1. If your PIC is not going to do anything else besides beeing this PID... I suggest you to use a Timer flag to synchronize the ADC readings... for that, you need some idea of how much time it takes to process all this program... (for example, add a togglin led, and check with a oscilloscope the minimum and maximum time it takes to perform the process; and use the Timer to overflow (or use an spare CCP to compare) at a little higher time.. (for example if you see in your oscilloscope a variation from 7.5ms to 8.5ms better be safe and configure the timer to overflow every 10ms, with that you can estimate a fixed sampling of 100Hz). you wait for the flag, then perform the process, and clear the flag, so you wait for it again...
If your pic need to do small things like showing in a LCD or serial to PC and you don't mind taking more time between tasks, you can still synchronize everything with the timer.
If your pic is destined to do higher and mightier things than this PID, the common approach is to use the Timer Interrupt to synchronize the ADC readings and the rest of the mathz...
2.for this you need to perform more tests, and some info about your process... let's assume it's something slow like a heather PWM-controlled and some kind of temperature sensor... in this kind of process the I_term WILL and NEED TO get a high value to maintain the output according the historical response in time... (and the P_term is used only to kickstart before stabilization...) so, yeah the Sum_err could get a high number and here comes the real magic...
in the math world your error should be between -1 to 1 (+-100%) and your output between -1 to 1 (again +-100%) with your Coefficients KP and KI should be values between 0.00 to 1.00 .... so the common way to do this in integers is by doing fixed point math, as you are doing here right?
the last step you are missing is converting the ideal output value [-1, 1] to a PWM value from 0 to 255 (also I think you don't have a heat pump or cooler to work when this values goes from 0 to -1, so limit also the Sum_err to positive values)...
for you, I suggest to try to guess the value Sum_err could get... (for example in 10 seconds) it gets to 30000 (your upper limit for I_err) and that value should output the PWM to its 100% so just divide 30000/118 =254 (close enough with integer math) soooo your magic number is 118 for now...
I have seen people getting pedantic with the math associated with a PID controller and started using float math and failing miserably by forgetting ADC scaling, negative readings, DC bias, sampling phases, output delay, and a list of stuff for a very simple task... and don't talk about PID tunning...
Maaaybe look in your compiler about Long ints (like 32 bits) for stuffing the I_err accumulator... and try to figure a better upper limit (again i suggest you to limit the lower value to 0 if this is a temperature case) and reuse that value to get a better magic number to convert to 0-255 (8 bit) number...