... remember, we have 255 steps for DC ...
I do not remember such constraint for PIC12. Is it a specifics of used library?
I do remember though that BASIC is used in projects were you can allow yourself not to think about performance. So below is just my personal reaction on code that hurts my eyes.
adc1= ADC_read(1)
PWMDC_out = adc1 * 0.097752 * 2.55
I am sure that use of floating point arithmetic for integer conversion is not a reasonable solution. Especially for processor without FPU.
I suppose ADC_read() returns value from 0 to 1023 that you have to fit in byte variable PWMDC_out. Not arguing with this objective you can reach desirable result by one division by constant, that compiler should translate to simple shift (two rrf):
PWMDC_out = ADC_read(1)/4
adc3= ADC_read(3)
count = 1000 + adc3 * 0.97752
PPM_out = count * 0.026429
Here the range [0 1023] is converted to [26 52]. The same could be done by
PPM_out = (1025 + ADC_read(3))*26/1024
or:
PPM_out = 26 + (((ADC_read(3)/4)*27)/256) 'that could be processed mostly in 1-byte arithmetic.