I am using mikroC PIC compiler from mikroelectronica. The free version has limitation that the output hex file cannot be larger than 2K. But it work great if you want to work on PIC16F628A which has Flash memory of 2K. I have some test programs with hardwares too. Check it Experiments with PIC16F628A