历史上的今天
今天是:2025年01月06日(星期一)
2020年01月06日 | 51单片机与AVR和PIC单片机之间的比较
2020-01-06 来源:elecfans
我觉得51比较好。因为51是比较标准的复杂指令单片机,通过学习51可以比较全面掌握单片机和通用CPU知识,达到触类旁通的目的(Z80也不错,可惜有些过时了,开发工具也很落后)。而PIC是一种精简指令系统,虽然机器码好懂,但是局限性较大,就是说会过分偏重理解MicroChip的设计思想。其实全面掌握单片机技术较用精某一种芯片来得划算(不要被某一个公司捆住思想)。
类似PIC的芯片很多,比如AVR、MSP430、Z8等,掌握51的结构和指令系统之后理解这些单片机的原理就很容易。而反过来也许就要各个击破。

还有一些理由:
就芯片而言:51单片机有非常低廉的价格和数不胜数的衍生芯片系列,这些产品从低速(1MPS)到高速(30MPS)几乎涵盖整个自控领域。新芯片价格从5元到数百元都有,当然还有大量拆机片供应,很方便自学和自助实验。
就开发工具而言:51有完全免费的C语言编译器和实时任务系统,当然还有随手可得的大量评估版(包括D版)世界顶级开发工具,比如:KEIL / Tasking / HITech / Resonance / Franklin(Resonance前身)。当然在非盈利前提下领略这些大气的开发环境无疑对培养系统化的思维方式和细致入微的洞察能力有较大的帮助。
就调试工具而言:51系列的仿真器是最便宜的,也是种类最多的。
就PIC系列而言:
单一芯片的用途比较有限,受机器自身容量限制较大,即通用性稍差。这也是MicroChip的产品线非常长的原因。当然MicroChip的这一思想对商业运作十分有利,在成本/性能和量产方面与用户的结合点很好。
还有PIC的指令系统有一定的缺陷,常用户最有感觉,使人不得不陷入MicroChip的芯片选型迷宫,经常在小问题上犹豫不决。
在国内:PIC的价格也是阻碍其大量应用的致命原因,供货种类不够充足。
所以我觉得:
先学习通用单片机,就是51系列,然后结合具体应用需求选择学习其他常用单片机。做到灵活思考,灵活选择。比如当需要少量开关量资源时使用89C2051,需要简单A/D资源时选择PIC16F873,需要大量I/O时考虑89C52;需要低速时尽量考虑51系列,需要中速时考虑PIC系列,需要高速时考虑90S AVR系列,需要甚高速时返回来考虑51兼容的SOC系列。而需要低功耗时考虑MSP430系列。
顺便说一句,大家常说的PIC16F74/84完全可以用89C2051替代,因为一般的设计方案中都留有速度余量,且这几种芯片都没有A/D,其基本结构类似。而为了使用PIC就不得不使用纯汇编(编译器难寻),而用51系列就可以从容使用C代码,还有RTOS的支持。
最后建议一下:就速度而言,PIC不是最好的,AVR系列做到了类单周期指令和流水线操作,在同一功耗下AVR比PIC快得多,而价格便宜得多(当然比低档51系列稍贵),AVR是一种值得注意的新机型。
尽管做项目时应尽量使用C,但是为了用好C就必须先学习汇编,学完51系列规整的汇编体系后再领略各个小厂家自己的汇编环境真有游刃有余的感觉。我不得不佩服Intel在CPU技术方面的学识和规划能力,不愧是计算机界的巨人
史海拾趣
|
电子技术入门学习内容综述 学好电子技术,打好扎实的基础需要掌握哪些知识?初学者在学习之初能有所了解,学习就会心中有数,有的放矢。 一、元器件 1.识别 (1)认识元器件(实物的外形特征) (2)识别元器件引脚(极性,引脚排列顺序) ...… 查看全部问答> |
|
LED是发光二极管Light Emitting Diode的英文缩写。 LED应用可分为两大类:一是LED单管应用,包括背光源LED,红外线LED等;另外就是LED显示屏,目前,中国在LED基础材料制造方面与国际还存在着一定的差距,但就LED显示屏而言,中国的设计和生产技术 ...… 查看全部问答> |
|
非隔离式LED日光灯驱动常见问题 欢迎探讨;(SMD802) 之前调过一款SMD802; 常见问题如下 1, 散热问题 2,日光灯安装时机壳漏电问题(市场上都存在这个问题) 3,工作人员在换灯管时,未断开关情况下,直接更换灯管时导致LED烧坏。。。 各位在调试SMD802过程中,遇到何种问题欢迎探讨; 另外有谁 ...… 查看全部问答> |
|
我要做几个无线的传感器节点,新手初入门,不知道有没有专用芯片可以探测两个节点之间的距离的,如果有的话,请告诉我这个芯片的名字,感激不尽,在google,百度搜一堆都没结果!… 查看全部问答> |
|
#define ROUND_UP(x, align) (((int) (x) + (align - 1)) & ~(align - 1)) #define ROUND_DOWN(x, align) ((int)(x) & ~(align - 1)) #define ALIGNED(x, align) &nb ...… 查看全部问答> |
|
ARM7(单片机)LPC2XXX一个芯片同时烧录两段独立的工程主函数代码 在用LPC2378(LPC2XXX系列相同)做实验,想用KEIL FOR ARM做两个工程,也就是说有两个启动代码,有两个C语言main主函数,想在编译后分别烧录到同一芯片的不同地址处。 启动时先启动第一段代码,从第一段代码再跳到另一段代码处。 请高手们指点一 ...… 查看全部问答> |
|
哪位有WINCE远程调试的工具: 远程调用评测程序(Remote Call Profiler) 远程内核跟踪程序(Remote Kernel Tracker) 远程系统信息(Remote System Information) 远程性能监视程序(Remote Performance Monitor) 麻烦您发到我的邮箱 xia ...… 查看全部问答> |
|
一、管理职位 技术部主任 1.硕士以上学历,计算机、集成电路设计或嵌入式系统相关专业; 2.5年以上技术管理和项目管理经验; 3.有相关产品的设计经验; 4.能够全面制定公司的产品计划; 5.能够带领团队成功实施产品项目; 6.具有较强的组织 ...… 查看全部问答> |
|
STM32芯片的供电电压一般为3.3V。现在系统外部提供24V直流电源。 我需要将24V的电源转换为3.3V,不知道选什么样的电源比较好? 初步考虑使用TI的隔离式 DC DC 转换器,将24V直接变为3.3V不知道是否可行? 希望大家能给个意见。… 查看全部问答> |




