学习C51真的过时了吗?!

看到这个问题,相信大家很多人都在问,也有很多人想知道,还有很多人有自己的看法,今天我在这里发表一下自己的观点。
现在在大学里,51单片机仍是电子类专业必修的课程,然而这几年随着ARM的火爆,很多51的学习者有了专业一个疑问:既然大家都在用ARM,我们为什么还要学51?而且找工作的时候人家也比较关注有过ARM使用经验的。
为了解决这个疑问,我们首先需要分清下面几个概念:单片机、ARM、DSP、FPGA/CPLD,这几个关键词是学习电子的人常见的几种芯片(我不知道该统称什么,姑且这么叫吧)。这几个词要分类的话首先要把FPGA/CPLD和其他的分开,因为FPGA/CPLD的原理和单片机、ARM、DSP不同。
FPGA/CPLD 是通过硬件实现功能的,FPGA是Field-Programmable Gate Array的缩写,即现场可编程门阵列;CPLD是Complex Programmable Logic Device的缩写,即复杂可编程逻辑器件。通过名字可以看出,二者都是可编程的逻辑器件,即实实在在的硬件,通过对硬件编程以实现某种特定功能。说直白 一些,二者就是一个与非门或者或非门阵列。由于所有的逻辑式子都可以变换成与非结构或者或非结构,因此所有的逻辑功能都可以通过FPGA/CPLD实现, 编程后的芯片相当于一个数字芯片,如加法器,移位寄存器等。二者的区别在于FPGA是基于RAM结构的,CPLD是基于ROM机构的,这些不是本次讨论的 重点,不再赘述。
再说单片机和ARM及DSP的关系,单片机是“单片微型计算机”的简称;ARM是Advanced RISC Machines的简称,它只是一家微处理器设计企业的名字,因此ARM是他们设定的微处理器的统称;DSP是Digital Signal Processing的简称,即数字信号处理。了解了这些,我们可以说单片机是所有所有MCU(微型控制单元)的统称,ARM是DSP只是他们的一 种,ARM属于用公司名称的一种称呼,而DSP则是根据功能(数字处理)命名的一种称呼。但是,在行业内,单片机一般特指8位或16位的MCU,在本文中 仍采用大家熟悉的叫法,把单片机和ARM放在并列的位置。
了解了这些,我们还需要了解一个问题,什么是51单片机。这个问题本不想说,可是 看到有人说51是AT89C51的简称,所有觉得有必要提一下。1980年,Intel推出了首款单片机8051(这个8051有可能是公司内部的设计编 号,我没有找到为什么叫这个),之后又陆续推出了与8051指令完全相同的8031、8032、8052等系列的单片机,初步形成了MCS-51系列。 1984年,Intel出售了51核,此后,世界上出现了上千种51单片机,如爱特梅尔、飞利浦,华邦,还有国内的宏晶等。51单片机泛指所有兼容 8051指令的单片机。当然,一些公司购买51核后增加了一些功能或者寄存器等,增加的这些东西是不兼容的。于51单片机处于并列关系的有AVR系 列,PIC系列等,他们的区别在于虽然都属于8位机(PIC系列的有16位的),但所使用的指令集不同,这也就是区别一个单片机系列的一种方法。.
51 单片机过时了吗?要了解怎么一个问题,首先得搞清楚51单片机在市场中的应用情况以及将来的发展情况。众所周知,自从ARM出现以来,短短的几年内便出现 了ARM7、ARM9、M3、M4、A8、A9、A10等等多个系列,其性能也得到了飞速发展,以其高性能,低价格,低功耗等优势迅速占领了MCU的江 山,比起当年的51有过之而无不及。作为32位机,其性能是毋庸置疑的,即便是相同的时钟速率,32位机的处理一些数据的速度也要快于8位机,如一个32 位的加法运算,8位机至少需要4个周期,而32位机只需要一个周期即可完成。ARM的优势在于较高的处理速度,还有丰富的外设资源,还有就是较大的数据和 程序存储空间。相比之下,51单片机就没有优势了吗?当然不是,51单片机的优势在于小巧的内核,成熟的技术(其实现在ARM的技术也很成熟),还有就是 位操作。在相当多的应用场合,我们并不需要ARM如此强大的处理功能和速度,而是只需要简单的控制,51单片机已经完全可以满足实际的需求,这样一 来,ARM的优势便显的不再重要,而51的位操作则是ARM达不到的,也许你会说ARM同样可以实现位操作,但如果你了解的比较深的话会发现,ARM的位 操作是通过移位,与或等操作之后实现的,而51单片机则又位寻址空间,是真正的位操作。再一个就是价格,在价格上最便宜的ARM好像已经降到了0.5美元 (可能是这个价格,记不清了),而最便宜的51可能是0.5RMB。但一些中档的ARM则要比高端的51单片机便宜了。十几或者几十RMB的ARM的性能 是同价格的51单片机无法比拟的。此外,由于51内核简单,一些高端的51增加的功能使得他们的51单片机操作起来变得异常复杂,而且不同厂家的操作完全 不同,这样就增加是使用的难度。综合看来,在高端或者中端应用方面,51单片机已经没有了任何优势,其市场主要是一些老产品或者不想学新东西的老工程师在 支撑,其消亡也是必然的。然而在低端应用方面,51仍然可以占有一席之地,除了操作和价格上的微弱优势,其更大的优势在于学习简单。.
从学习角度来讲,衡量是否学会一个MCU的标准应该是你写的程序你应该知道他是怎么执行的,应该具体到某一个指令所涉及到的寄存器,看到一个指令之后脑子里应 该是一串01运算才行,而不是可以简单的应用了。虽然现在很多公司推出的新产品都给出了固件库,可以使工程师更快的进行编程使用。但是,这样的结果是使更 多的硬件工程师变成纯软件工程师而已。你会对一个芯片编程,但你并不了解他。也许有人说,反正我能用了就行了,干嘛非要了解它呢。其实这样想就错了,要想 真正的用好一个芯片。不了解他是不行的,甚至不深入全面的了解都是不行的,一些硬件上的简单改动有可能使系统的性能发生很大的变化。因此要想设计一个比较 好的产品,必须对芯片本身有一个深入的了解。在这方面,51单片机由于内核简单,很容易上手并容易深入了解。学习起来比较简单。熟练掌握了51,再学习其 他的芯片,如ARM也是很简单的,因为所有的微控制器的功能结构框架都是一样的,了解了一种之后再学习另一种很简单。相比复杂的ARM结构,51结构就显 的很简单了,甚至可以认为,ARM是在51的结构上增加的许多功能模块构成的,虽然二者的结构并不真的相同。
前几天在论坛里 看到有人呼吁,别学51了,改学ARM吧。我觉得这样的人应该属于二者都没有学好的人,二者的区别和联系肯定不清楚才这样喊的,同时有过51和ARM学习 经验的人应该知道,学精了51再学ARM所用的时间只不过是看一遍芯片手册的时间(有些夸张),而直接以ARM作为MCU入门的话则要费很大的劲。对于一 个从来没有接触过单片机的人来说,面对复杂的ARM手册往往会感到无从下手。可以这样比喻一下,学ARM是一口气登上一座高山,而学51相当于到了半山 腰。在半山腰上的风景虽不及山顶,却仍可有所作为。而再从半山腰的高度上山,难度自然减小了。至于有人抱怨说找工作的时候没人要只会51的,我觉得应该这 样看这个问题,学51和学ARM并不存在冲突,了解了51只后当然可以再学ARM。
我觉得,即便将来51的应用没落了,学习51仍是一种不错的入门手段,就行学计算机的一直在学X86一样。我不反对直接选择ARM入门,但却反对那些不了解51就呼吁大家放弃51的人。作为电子产品的设计者,如何在种类繁多的MCU中选择自己合适的一款才是最重要的。
虽然不可否认51单片机越来越多的被高端产品,尤其是ARM所替代,但我仍觉得51单片机没有过时,学习51单片机也没有过时!

原文地址:https://blog.51cto.com/14355585/2406448

时间: 2024-10-17 01:29:52

学习C51真的过时了吗?!的相关文章

memcached真的过时了么

这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来.关于Redis与Memcached的比较更是比比皆是.然而,Redis真的在功能.性能以及内存使用效率上都超越了Memcached吗?没有必要过于关注性能,因为二者的性能都已经足够高了.由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高.而在100k以上的数据中,Memcached性能要高于Redis.虽然R

[注]新手学习编程的最佳方式是什么?

回答这个问题是我最近两年来唯一的关注点.我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面,比其他人有着更好的表现. 聚焦习惯而不是目标 独自学习非常痛苦 项目实践 聚焦习惯而不是目标 聚焦习惯而不是目标听起来似乎不合常理,但是请听我把话说完 – 这是一个有关平衡的问题.凡是和我共过事的人都知道,我有时就像傻子一样,在一天内,引用<蝙蝠侠:侠影之谜>中 Ra’s Al Ghul 的话多达 3-4 次. Bloc 公司的投资者们对于我在董事

新手学习编程的最佳方式

作者: Roshan Choxi  来源: 图灵社区  发布时间: 2015-05-30 17:26  阅读: 3775 次  推荐: 21   原文链接   [收藏] 英文链接: What are the best ways for a complete beginner to learn programming 回答这个问题是我最近两年来唯一的关注点.我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面,比其他人有着更好的表现. 聚焦习惯

TensorFlow学习路径【转】

作者:黄璞链接:https://www.zhihu.com/question/41667903/answer/109611087来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言:其实TensorFlow本身仅仅是一个分布式的高性能计算框架,想要用TF做深度学习,仅仅学习这个框架本身是没有太大意义的.因此应该将TF看作技术路线中的一个核心点,去掌握整个开发所需要的必要技术,知识.尤其是深度学习的基本原理,这对日后搭建模型,模型调参以至提出新的模型都是极其有用的.

新手学习编程的最佳方式是什么

英文链接: What are the best ways for a complete beginner to learn programming 回答这个问题是我最近两年来唯一的关注点.我觉得此处提及的许多资源尽管都很不错,然而我却注意到,成功的学生,无论使用哪种资源,往往都会在以下三个方面,比其他人有着更好的表现. 聚焦习惯而不是目标 独自学习非常痛苦 项目实践 聚焦习惯而不是目标 聚焦习惯而不是目标听起来似乎不合常理,但是请听我把话说完 - 这是一个有关平衡的问题.凡是和我共过事的人都知道

学习Linux是件苦差

学习本是件痛苦的是事情,如果学习linux 真的很简单,那么必定是骗子说的谎话,起码这将不能给你带来高薪,打开电脑后的沉思.是该聊会天,还是追个美剧那,还是打盘LOL 还是看看那该死的刘遄写的那本可怕的Linux教材时,请不要忘记自己最初的梦想.同是linux初学者,在这里我推荐两本适用于学习linux的书籍. <Linux就该这么学>刘老师的这本书的初衷,是为了能够让更多的人在学习Linux的道路上,走一条笔直大道,为避免初学Linux的童鞋们少走弯路,刘老师通过自己的工作经验,将一些无需用

ASP.NET MVC学习系列(一)-WebAPI初探

由于即将要接手的新项目计划用ASP.NET MVC3来开发,所以最近一段时间一直在看相关的书或文章.因为之前在大学里也曾学习过MVC2开发,也做过几个简单的MVC2的小型测试项目,不过在后来工作以后主要还是开发WebForm的项目,所以MVC的东西也就逐渐的淡忘了. 经过这一段时间的系统学习,真的觉得MVC3相比于之前的MVC2还有WebForm来说,确实有一种让人欲罢不能爽歪歪的感觉.特别是Razor语法.Linq表达式等的结合运用. 为了将学习过程中遇到的一些值得留意的问题和知识点进行一个很

C51的数据类型

摘自百度文库 每写一个程序,总离不开数据的应用,在学习 c51 语言的过程中掌握理解数据类型也是 很关键的.先看表 3-1,表中列出了 KEIL uVision2 单片机c语言编译器所支持的数据类型.在标准C语言中基本的数据类型为 char,int,short,long,float 和 double,而在c51编译器中int 和 short 相同,float 和 double 相同,这里就不列出说明了.下面来看看它们的具体定 义: 数据类型 长 度 值 域 unsigned char 单字节 0

20145237第六周学习总结

20145237第6周学习总结 教材学习内容总结 第十章 •InputStream与OutputStream 流(Stream)是对「输入输出」的抽象. read:每次会尝试读入byte数组长度的数据,并返回实际读入的字节.为-1时即为未读取到数据. write:指定要写出的byte数组.初始索引与数组长度. •标准输入输出//这部分已经很熟悉了 System.in: 标准输入,默认关联到键盘(终端输入) System.out: 标准输出,默认关联到显示器(终端输出) System.err: 标