先谈硬件:
对于PIC,它的优点有诸如抗干扰性能好,双向I/O口驱动电流大等优点,甚至内部有上电复位电路,上电延时电路,内建RC振荡器,看门狗定时器,A/D变换电路,功耗低等。硬件上吸引人的地方确实比较多,而且正是由于这些点点滴滴使得它的抗干扰性能比51好,这好像是公认的。当然它也有一个致命的弱点--不能外扩程序存储器和数据存储器,对于程序比较大而且是低端的产品来说是致命的!让人不得不转而投入51的怀抱。更何况PIC就微芯这一家公司,而拥有51内核的单片机遍地都是,让人在价格和供货时间上多了不少选择。
再谈谈软件编程:
一般的教科书谈到PIC好像总忘不了说它的程序代码是如何的小,速度又是如何的快。速度快,对于单条指令同样频率的晶振来说,PIC当然是比51快得多,PIC毕竟是RISC,既然指令总线和数据总线分离,速度当然快,但我们往往忽视了一点:我们是比较单条指令,而不是以实现同样一个功能所需的时间作为判断的标准!!就像CISC一样,它的一条指令可以顶RISC好几条指令,51和PIC也存在类似的情况。对于PIC来说,实现一个基本的功能需要好几条指令,而51往往只需要一两条就做到了。如果以这样的标准来比较的话,PIC比51并不快多少,更何况还有如下的情况存在呢:
1)、PIC的软件编程,不是我故意贬它,确实是挺麻烦,一不小心就要犯错。这恐怕要归结于PIC的分页思想,不但数据空间要分页,程序空间还得分页,而且不同型号的PIC还不一样!!要访问一个寄存器还得考虑考虑它是在哪个BANK,你说累不累!因此编起程序还时不时要去查看它的编程手册,不然出了错都不知错在哪里。
2)、中断向量地址只有0004H这一个,因此发生了中断还得去判断是哪一个中断,然后再跳到相应的处理子程序。如此等等虽然是鸡毛蒜皮的事情,但用惯了51的方便简明,总觉得不是那么爽。
3)、说到软件编程,不能不提到C。想当初用单片机时到处都是用汇编在开发,也有高级一点的就用PLM(限于51/96),不像现在很多人都在用C开发。51的好处就是有几家做得很好的C编译器,像TASKING,KEIL之流。大家知道现在开发产品,软件编程所占的比重越来越大,因此有一个好的开发环境可以大大提高编程的效率,使产品尽早上市。而PIC在这一点上就没有51做得好!再加上由于2)的存在给使用者设置了障碍,无疑使编程效率打了折扣。
结论:爱用PIC的还是继续用你的PIC好了,本人无意要你抛弃你的所爱而另寻他欢,因为PIC也有它的可爱之处。