No se Basic, pero voy a responderte la principal diferencia de lo que es un PWM por software y uno por hardware.
¿ Uno es mejor que otro ?
Si y no.
El PWM por hardware ( Usando un Timer + CCP ) permite al micro desvincularse completamente con la salida del mismo. Es decir no es necesario que ejecute ninguna instruccion, solo se configura el modulo y listo ya esta funcionando continuamente, esta es la principal ventaja, ademas hay PWM mas completos que suelen incluir tiempos muertos, complemento, entre otras cosas que facilitan la aplicacion para fuentes/motores ( entre otros.
¿Que tiene de malo el PWM por hardware?
Es dependiente de la frecuencia del oscilador. Si vos tenes un oscilador de mucha frecuencia, no vas a poder hacer un PWM de poca frecuencia., El otro tema es que segun la frecuencia que elijas por ahi no es posible obtener si o si los 10 bits de resolucion, sino que tal ves obtengas un poco menos, unos 8/7 bits.
Tambien estas obligado a usar los pines que poseen el PWM, ya que ese PIC no permite remapearlos.
El PWM por software se realiza con un timer y su interrupcion, supongamos que tenes una frecuencia de PWM a 100Hz ( 10ms ciclo ) y queres una resolucion de 8 bits, entonces tu interrupcion deberia hacerse cada ( 10ms / 255 = 40us ) , y el funcionamiento seria el siguiente, cada ves que entra a la interrupcion se suma un contador que va de 0 a 255, si tenes por ejemplo 2 salidas de PWM una a 100 y otra a 150, cada ves que entra e incrementa el contador pregunta si el contador es mayor a los valores Si es mayor le pone un 0 a la salida y si es menor un 1. Y ahi tenes tu PWM.
¿Desventajas?
Varias, si usas un micro de 4Mhz ( 1us por instruccion ) se la pasaria en la interrupcion, ya que cada 40us entraria, y lleva aproximadamente unos 30 ciclos o mas entrar y salir de la interrupcion, en resumen tu programa no haria nada, si tenes otra interrupcion va a ser un problema. Entonces estas forzado a usar frecuencias mas altas. Sino te los va a consumir completo tu PWM, sino podes disminuir la cantidad de bits de resolucion.
¿Ventajas?
No estas limitado a unos pines, cualquier pin que pueda servir de salida puede usarse, entonces podes tener un PWM con 10 salidas.
Se pueden hacer PWM con frecuencias muy bajas, 100Hz es poco ya, pero intentarlo hacer con un PWM por hardware no es tan facil, y menos si hablamos de 10Hz o menos.
Creo que eso resume las 2 diferencias, uno te ocupa el micro, el otro no. Y va a depender justamente de lo que necesites hacer, la cantidad de salidas, los bit de resolucion y del periodo de la señal.
Y esto deberia responder a todas tus preguntas.