The mother of camparisions. Over the past few months the project I have been working on projects which have demanded a fast processor and a compiler that is full featured and generates tight code. So I have changed platforms, and changed tool suites like there was no tommorow, here are my conclusions.

Pic16Fxxx: Slow. If you want to make blinking lights it is fine

Pic18Fxxx: If you are gonna use a pic you might as well start using the Pic18 instead, they are just as cheap as the Pic16 and generally offer better bang for the buck. The biggest Plus is that you can download a 60 day trial of the MPLABS C18 compiler for free to work with Pic18.

AVR: Great platform, more features than PIC, and faster. Huge amount of language support for this platform. Better value than the PIC.

PicBasic: Slow, generates big code, very user friendly actually painfully user friendly as it tends to castrate many of the hardware features on the PIC.

Proteus: better than Picbasic, but not by far. Castration issues as with Picbasic.

Hitech C for PIC: Complicated, you would think you are doing a PHD thesis when you read the 500 page manual. This is the exact opposite of Picbasic or Proteus, userfriendlyness was the last thing they considered. If you have time it should be great. DOes not seem to have much support for special hardware features.

MPLABS C18: C compiler for PIC18 platform. Integrates into MPLAB IDE, great manual, great interface, generate efficient code, not overly complex to use and has great support for special hardware. By far the best compiler for the PIC, i switched to Pic18 just because of this great compiler and the fact that it is free.

PIC ASM: started writing my own math 16 bit routines and gave up, good for blinking lights but bad for anything complex.

Summary: If you must choose PIC then you would be a fool not to choose the PIC18 and the free MPLABS c18 compiler. If you must use PIC16 then use whatever language you want, since you probally aren't after fast or efficient code, just something that is easy and quick.

If you are looking to learn something new and want a better platform, Use AVR. However I have found that the language suites are not as well designed as that of the PIC, really the best language suite I have found for embedded systems is MPLABS C18. If they had a compiler of similar caliber and a manual as concise as that of MPLABS C18 there would really be no reason to use the PIC platform at all.

So if you want the best hardware then choose AVR but if you are after quality compilers then choose PIC. I am not putting Picbasic or proteus down, they are actually very easy to use and generally do most jobs well, but there are definite limits to what you can do with those tools. And there are definte limits to what the pic can do.