I "cheated" since I don't need the resolution of the two LSBs. I just set them both to 0 and don't write them. That greatly simplifies my code, as I only need to set CCPR1L. I have a routine for the user to set the value of CCPR1L, and all is good. I go from full off (actually, I set the lower limit to '5' to prevent a full-off backlight) to full on, and 250 steps between. I did have a minor 'trip-up' since PWM1 is port C,2 and PWM2 is C,1. But, I quickly found that. I also had to 'invert' my settings since I wanted 0 to be full off and 255 full on. My interface inverts the on/off state. Again, minor issue. I was thinking/making PWM much more difficult than it is. But, when you don't know squat about it, even the simple things help. Now, on to the fan part of the code! I already have a step up on that, but my PWM output may make the counting a challenge if the timers are interdependent. Joe M. ivp wrote: > Just one little point > > movlw d_lo ;put duty cycle bits 1-0 > swapf wreg > iorwf ccp1con ;into bits 5-4 of CCP1CON > > will not put the bits into 'fresh' locations > > movlw b'11001111' > andwf ccp1con > > clears ccp1con <5:4> before including the duty cycle bits as above > > wbr > -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist