Saludos
He trabajado con el modulo PWM en el PIC16F877, pero en el 876 la verdad no, no he checado el dataSheet, pero teoricamente no debe cambiar, te doy el codigo ASM de un programita sencillo, ya funcionandote ya puedes incrementar y decrementar la frecuencia.
Espero te sirva, si te sirve ahi me habisas
bye
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
      LIST            p=16f874
ESTADO      EQU      0x03
PUERTOC      EQU      0x07
T2CON      EQU      0x12      ;control de timer2
PR2      EQU      0x12      ;periodo del timer2 (banco1)
CCP1CON      EQU      0x17      ;modulo Captura/Comparación/PWM
CCPR1L      EQU      0x15      ;parte alta del duty cycle
      org      0
      goto      inicio
      org      5
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
inicio      bsf      ESTADO,5
      bcf      PUERTOC,2   ;C.2 sale la señal PWM
      movlw      0x18      ;Frecuencia de 33 Khz=0x1D
      movwf      PR2      ;periodo del PWM
      bcf      ESTADO,5
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   
      movlw      0x2C      ;Empieza en el bit4 y bit5 para el ciclo de trabajo,bit0-bit3 modo de funciponamiento
      movwf      CCP1CON      ;duty cycle, PWM off ciclo de trabajo
      movlw      0x0C      ;0x0F
      movwf      CCPR1L      ;duty cycle
      movlw      0x04      ;(bit2) on timer2,  (bit0, bit1)prescaler
      movwf      T2CON
espera      goto      espera
      
      end