Ok. This isn't very hard to do. In writing your code start by writing out the steps needed in your native language. This helps you see clearly what you need to have the code do.
For your application interrupts would be best. The PWM duty gets adjusted in the TMR2 ISR (Interrupt Service Routine) and use one of the PIC inputs that can cause an interrupt for the Hall sensor (INT0 or one of the PortB IOCs would work. In the Hall sensor ISR grap the counts from the timer, reset the timer (to start counting the next period), set a flag (a bit) to signal the PWM ISR to recalculate and update the duty cycle.
I posted code I use for my bot in this thread:
http://www.societyofrobots.com/robotforum/index.php?topic=11042.0Look for the P_bot.c attachment.
This code controls two motors and measures the wheel speed to adjust the PWM duty.
The code is written for the free HiTech compiler available from Microchip for the 16F874 but is easy to port to the 16F88 with only a few minor changes. Compare the ports in the data sheets for the two PICs for differences.
For learning PIC programming I recommend these tutorials:
http://www.gooligum.com.au/tutorials.htmlDo use the MPLAB SIMulator to test your code and/or to learn how the code works.