One of many possible approaches. Here the way I have done this.
First I generated my adjustable frequency using HPWM set to approximately 50% duty. Next I fed the output from CCP1 pin
to Portb.0 pin. Using DT interupts "INT_INT" set to trigger on the rising edge of my pwm signal. In the ISR the output pin was toggled
Basic concept
Code:
Setup HPWM
Set INTCON to trigger on rising edge
Main:
Read Buttons or ADC
Set HPWM Frequency
Goto main
Interupt Service Routine:
gpio.x = 1
pauseus 5
gpio.x = 0
INT_RETURN
Not sure if you have enough pins using a 12f683 to do this and what ever else you need?
Bookmarks