What, just the code or how it interacts with other hardware?
MPLAB has its own simulator under Debug which works just dandy. It cannot convert ADC (or most peripherals actually) of course, but there is a "register injection" where you can insert values into a peripheral's registers to emulate their behavior. You can make lengthy stimulus files containing pin data and such as well.