搜索
bottom↓
回复: 96

学51单片机真的过时了吗?大家谈论一下

  [复制链接]

出0入0汤圆

发表于 2014-4-14 15:56:44 | 显示全部楼层 |阅读模式
难道初学者都不学51单片机了吗?51单片机真的过时了吗?在网上看到一篇文章,觉得写得很有道理,拿来和大家一起分享,一起来讨论51单片机是否真的过时了,不值得学了?以下内容转自网络。


         看到这个问题,相信大家很多人都在问,也有很多人想知道,还有很多人有自己的看法,今天我在这里发表一下自己的观点。



       现在在大学里,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单片机也没有过时!


阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2014-4-14 16:08:02 | 显示全部楼层
本人觉得学习51是基础,但往往很多人对基础的东西总是少关注

出0入0汤圆

发表于 2014-4-14 16:08:29 | 显示全部楼层
长篇大论也没说出个所以然来~~

我觉得过时了,51指令集跟Cortex-Mx比起来真心恶心,这辈子绝对不碰~

出0入0汤圆

 楼主| 发表于 2014-4-14 16:13:01 | 显示全部楼层
Borden 发表于 2014-4-14 16:08
长篇大论也没说出个所以然来~~

我觉得过时了,51指令集跟Cortex-Mx比起来真心恶心,这辈子绝对不碰~ ...

“对于一 个从来没有接触过单片机的人来说,面对复杂的ARM手册往往会感到无从下手。可以这样比喻一下,学ARM是一口气登上一座高山,而学51相当于到了半山 腰。在半山腰上的风景虽不及山顶,却仍可有所作为。而再从半山腰的高度上山,难度自然减小了。”

非常有道理!

对于没有单片机基础的人来说,面对ARM一大堆的寄存器真有一种老虎吃天的感觉!

出0入0汤圆

发表于 2014-4-14 16:22:35 | 显示全部楼层
有些道理。。。

出0入0汤圆

发表于 2014-4-14 16:24:08 | 显示全部楼层
409926778 发表于 2014-4-14 16:13
“对于一 个从来没有接触过单片机的人来说,面对复杂的ARM手册往往会感到无从下手。可以这样比喻一下,学 ...

对于没接触过外国话的人来说,法语和德语的难度是一样的,都是两眼一抹黑。不存在51比ARM简单的情况。

ARM指令集从ARM、Thumb到Thumb-2,传承性非常好,而且还在不断高速发展,可以说搭上了这班车以后ARMv8,ARMv9。。都没任何难度。

51早已经不再发展了,它就算曾经再辉煌也是夕阳产业了,虽然不会马上就消失,但用得越来越少的趋势是不会改变的。

51不是学习单片机的必经之路,再怎么粉饰也没用。我当年写68013的51程序恶心得要死,换到写ARM7TDMI立马觉得舒服多了,从此没再碰过51。

出0入12汤圆

发表于 2014-4-14 16:25:20 | 显示全部楼层
有什么好讨论的,领导让用什么咱就用什么。

出0入0汤圆

发表于 2014-4-14 16:28:43 | 显示全部楼层
51  arm fpga   DSP  不知道在未来的几年又会出现什么

出0入0汤圆

发表于 2014-4-14 16:32:07 | 显示全部楼层
我觉得没过时,做项目要根据产品的需要来选择单片机型号,没理由点亮led用arm吧?

出0入0汤圆

发表于 2014-4-14 16:34:53 | 显示全部楼层
51真的是过时了, 新手完全没必要学。

出0入4汤圆

发表于 2014-4-14 16:37:39 | 显示全部楼层
什么单片机不重要,重要的是学会编程的算法

出0入0汤圆

 楼主| 发表于 2014-4-14 16:42:06 | 显示全部楼层
holts2 发表于 2014-4-14 16:34
51真的是过时了, 新手完全没必要学。

我感觉目前还是有很多地方是用单片机的,例如一些低功耗的场合,还是以单片机为主导的,当然也有用M3或者M0内核的ARM,但是毕竟这些是少数。例如TI的430,AVR等单片机。

还有低价格的场合,单片机的价格还有是有优势的

出0入0汤圆

 楼主| 发表于 2014-4-14 16:42:55 | 显示全部楼层
wajlh 发表于 2014-4-14 16:37
什么单片机不重要,重要的是学会编程的算法

很赞通啊

出0入0汤圆

 楼主| 发表于 2014-4-14 16:44:13 | 显示全部楼层
黑夜之狼 发表于 2014-4-14 16:32
我觉得没过时,做项目要根据产品的需要来选择单片机型号,没理由点亮led用arm吧? ...

这是有感而发吧,哈哈

出0入0汤圆

发表于 2014-4-14 16:45:46 | 显示全部楼层
409926778 发表于 2014-4-14 16:44
这是有感而发吧,哈哈

个人观点,不喜勿喷

出0入0汤圆

 楼主| 发表于 2014-4-14 16:46:07 | 显示全部楼层
waterx3 发表于 2014-4-14 16:25
有什么好讨论的,领导让用什么咱就用什么。

哈哈,

出0入0汤圆

 楼主| 发表于 2014-4-14 16:47:27 | 显示全部楼层
黑夜之狼 发表于 2014-4-14 16:45
个人观点,不喜勿喷

大家讨论着,各有各的观点啊,这太正常了

出0入0汤圆

发表于 2014-4-14 16:54:06 | 显示全部楼层
409926778 发表于 2014-4-14 16:47
大家讨论着,各有各的观点啊,这太正常了

嗯              

出0入0汤圆

发表于 2014-4-14 16:58:39 | 显示全部楼层
过渡性产品,也还是有需要的。   

出0入0汤圆

发表于 2014-4-14 17:06:27 | 显示全部楼层
如果一开始学ARM学的很吃力,不如先学习51单片机,照着郭天祥的视频学一遍,再去看ARM,就有些眉目了,就会发现ARM就是个高级的单片机,可以跑操作系统。

出0入0汤圆

发表于 2014-4-14 17:11:33 | 显示全部楼层
根据项目需要选择,51对于初学者还是不错的选择!直接学ARM,估计学习的积极性一下子就没有了!嗯哼。。。。

出0入0汤圆

发表于 2014-4-14 17:21:42 | 显示全部楼层
还是先把C和计算机组成原理学好了再谈别的吧。

出0入0汤圆

发表于 2014-4-14 17:30:08 | 显示全部楼层
51用来学习基本原理挺好的, 总线, 时序, 指令等

出0入0汤圆

发表于 2014-4-14 18:59:19 | 显示全部楼层
我是在学校学的51单片机,上班后用过一段时间的keil C51,后来又陆续学习了msp、AVR、M0单片机,目前上新项目的时候基本上都是M0了,M0和小型RTOS搭档的话运算能力还可以、适应性广,程序容易写得规范,后期好维护。
曾经做过一个智能电表项目,开始用89C4051设计的,进行到一半的时候发现容量死活不够(刚进公司试用,不熟悉项目),后来和总工沟通困难,直接试用期结束走人了事!

出0入98汤圆

发表于 2014-4-14 19:11:59 | 显示全部楼层
不是面向应用或项目的,仅是用于学习和研究微机原理,嵌入式程序设计
用C51我觉得完全没问题

开发板,仿真器,集成开发环境,例程代码,书籍资料,技术社区样样齐全.
C语言写的程序移植到其他MCU如TI的DSC上,也没多大问题.

从嵌入式程序设计这个角度来讲,大同小异.

出0入0汤圆

发表于 2014-4-14 19:19:27 | 显示全部楼层


能赚钱的mcu就是好mcu。。。。
              -------------------------------码畜

出0入0汤圆

发表于 2014-4-14 19:53:43 | 显示全部楼层
单从价格看看, 你批量一个产品,51 arm 都能胜任      用 51 还是arm?

既然有市场,就不过时。

出0入0汤圆

发表于 2014-4-14 20:11:45 | 显示全部楼层
一直用PIC16,去年用到dsPIC,花了2-3个月才将它用到产品上,今年用到PIC24,又花了2个月时间。
对于学习一种单片机就能触类旁通举一反三的大牛们,我只能表示无比的敬仰。

出0入0汤圆

发表于 2014-4-14 20:42:33 | 显示全部楼层
已现在单片机的状况发展来说,可能51真的不合适了,用51编程很束缚手脚的,

出0入0汤圆

发表于 2014-4-14 22:28:03 | 显示全部楼层
51单片机在很多工业场合还是很有作用的

出0入0汤圆

发表于 2014-4-14 22:35:15 | 显示全部楼层
coleyao 发表于 2014-4-14 18:59
我是在学校学的51单片机,上班后用过一段时间的keil C51,后来又陆续学习了msp、AVR、M0单片机,目前上新项 ...

不是吧,试用期没过》?没转正?现在在搞研发吗

出0入0汤圆

发表于 2014-4-14 22:36:54 | 显示全部楼层
楼主很负责的告诉你,虽然现在主流是STM32,但我想告诉你STM32的硬件的基本原理跟51还是相通的,我说的是基本原理

出0入0汤圆

发表于 2014-4-14 23:04:23 来自手机 | 显示全部楼层
放弃51? 我觉得不可能,见识了太多那种什么不懂,初学arm 的人,什么都问,如果从51学起来,有了初步的了解,应该会好很多

出0入0汤圆

 楼主| 发表于 2014-4-15 09:02:22 | 显示全部楼层
345161974 发表于 2014-4-14 17:06
如果一开始学ARM学的很吃力,不如先学习51单片机,照着郭天祥的视频学一遍,再去看ARM,就有些眉目了,就会 ...

是滴,过渡一下总是好的

出0入0汤圆

 楼主| 发表于 2014-4-15 09:03:18 | 显示全部楼层
motodefy 发表于 2014-4-14 23:04
放弃51? 我觉得不可能,见识了太多那种什么不懂,初学arm 的人,什么都问,如果从51学起来,有了初步的了 ...

51是基础啊,这点是必须的

出0入0汤圆

 楼主| 发表于 2014-4-15 09:04:24 | 显示全部楼层
Glen_f 发表于 2014-4-14 22:28
51单片机在很多工业场合还是很有作用的

物美价廉,性价比很好的东西啊

出0入0汤圆

 楼主| 发表于 2014-4-15 09:05:10 | 显示全部楼层
磊磊映画 发表于 2014-4-14 22:36
楼主很负责的告诉你,虽然现在主流是STM32,但我想告诉你STM32的硬件的基本原理跟51还是相通的,我说的是基 ...

基本原理都相通。学习51这个打个基础,还是不错的

出0入0汤圆

 楼主| 发表于 2014-4-15 09:05:59 | 显示全部楼层
street 发表于 2014-4-14 19:53
单从价格看看, 你批量一个产品,51 arm 都能胜任      用 51 还是arm?

既然有市场,就不过时。 ...

存在的就是合理的啊,有需求就是市场啊

出0入0汤圆

发表于 2014-4-15 15:49:34 | 显示全部楼层
对于一些小工程的东西,还是用单片机比较合算,存在自然有存在的道理。

出0入0汤圆

发表于 2014-4-15 16:36:23 | 显示全部楼层
说51不行的人不晓得咋想的,既然存在就有存在的道理。。。。。不同的产品对应不同的需求。。。怎么不说PC的CPU更强大呢,为啥还用什么ARM 什么STM32还是啥的。。。都用I7啊都用志强啊,8核12核16核,哪个不比这个强?难道做个电子手表都要用I7,跑个WINDOWS 8? 不喜欢的就喷吧,我看能喷出个啥道理来。。。无论再怎么喷,存在的还是存在的,人家该怎么用还怎么用。。。争论这个有意思么?

出0入0汤圆

发表于 2014-4-15 16:55:01 | 显示全部楼层
4bit 机一样活得好好的,,,,  看市场缝隙吧

出0入0汤圆

发表于 2014-4-15 19:53:12 | 显示全部楼层
如果单纯从学习后获得的价值来看,当然是学ARM了,至少也要学主流的32位MCU。

出0入0汤圆

发表于 2014-4-15 20:57:46 | 显示全部楼层
lswhome 发表于 2014-4-15 16:36
说51不行的人不晓得咋想的,既然存在就有存在的道理。。。。。不同的产品对应不同的需求。。。怎么不说PC的 ...

因为你没有仔细审题。楼主问的是学51,不是用51。要说用什么片子,现在51乃至31都还很有价值。但是现在新入行的人再学这个,真的就不值得了。有什么项目要用51就让那一批搞了一辈子51的人去做呗。等这批人退休的时候,基本上也就是51退出江湖的时候了。

出0入0汤圆

发表于 2014-4-15 21:01:53 | 显示全部楼层
学单片机的谁没有几片51?

出0入0汤圆

发表于 2014-4-15 22:02:55 来自手机 | 显示全部楼层
你做个遥控器也用arm? 谁告诉我谁家的洗衣机等用的是arm

出0入0汤圆

发表于 2014-4-16 01:36:12 | 显示全部楼层
个人建议把51学精了, 学ARM真的就没那么难了。现在的流行的库函数方法,是让很多系统应用工程师更快的开发出产品,也是一种行销ARM的手段。但是如果在学习阶段,还是应当学习寄存器操作,而学习寄存器操作的基础,便是51单片机。

出0入0汤圆

发表于 2014-4-16 08:00:54 | 显示全部楼层
单片机入门,51的资料最多,这个没得说的,但是等有了感觉就转向其它单片机吧。

出0入0汤圆

发表于 2014-4-16 08:18:24 | 显示全部楼层
其他的8位单片机也不错啊

出0入0汤圆

发表于 2014-4-16 13:54:46 | 显示全部楼层
写的很好,现在很多讲究是速成。很少有人去注重基础了

出0入0汤圆

 楼主| 发表于 2014-4-16 16:32:29 | 显示全部楼层
laotui 发表于 2014-4-15 21:01
学单片机的谁没有几片51?

对啊,都是先学基础啊

出0入0汤圆

 楼主| 发表于 2014-4-16 16:33:16 | 显示全部楼层
1826772880 发表于 2014-4-15 22:02
你做个遥控器也用arm? 谁告诉我谁家的洗衣机等用的是arm

单片机用的场合还是相当对的,有市场

出0入0汤圆

 楼主| 发表于 2014-4-16 16:33:40 | 显示全部楼层
DIYdianzi 发表于 2014-4-16 13:54
写的很好,现在很多讲究是速成。很少有人去注重基础了

技术源于积累啊,基础很重要啊

出0入0汤圆

 楼主| 发表于 2014-4-16 16:34:50 | 显示全部楼层
macp 发表于 2014-4-16 01:36
个人建议把51学精了, 学ARM真的就没那么难了。现在的流行的库函数方法,是让很多系统应用工程师更快的开发 ...

有51单片机的基础,学好了,arm就不难

出0入0汤圆

发表于 2014-4-16 16:44:33 | 显示全部楼层
409926778 发表于 2014-4-16 16:34
有51单片机的基础,学好了,arm就不难

个人认为51单片机和ARM单片机指令集和外设操作完全不一样。所以“51是单片机的基础”这句话我丝毫不赞同。误导了不少人。
现在M3,M0价格就5-9元,和51单片机价格相差不大。更何况AVR/LGT/STM8单片机用起来也更比51强大,从价格和功能上来说51根本没啥用的价值。
如果对于有SDK的ARM单片机,比如STM32之流,用起来完全比51方便。

出0入0汤圆

发表于 2014-4-16 17:10:09 | 显示全部楼层
各有各的优势,从简单到复杂,这样路会顺一些

出0入17汤圆

发表于 2014-4-16 17:16:30 | 显示全部楼层
很多消费电子的专用的ic的内核还是51的。

出0入0汤圆

发表于 2014-4-16 18:24:00 来自手机 | 显示全部楼层
各有各的想法,一下子去接触arm有许多朋友被困难而放弃。

出0入0汤圆

发表于 2014-4-16 19:03:54 | 显示全部楼层
我觉得是不会的,至少你做一个洗衣机什么的控制总不可能拿个ARM架构的芯片来控制吧。

出0入0汤圆

发表于 2014-4-17 22:35:38 来自手机 | 显示全部楼层
岁月静好小7 发表于 2014-4-16 19:03
我觉得是不会的,至少你做一个洗衣机什么的控制总不可能拿个ARM架构的芯片来控制吧。 ...

很多洗衣机都用M3控制。。。这就是ARM架构的单片机。51性价比低结构渣没必要用

出0入0汤圆

发表于 2014-4-18 09:04:53 来自手机 | 显示全部楼层
51可是基础啊,卤煮

出0入0汤圆

发表于 2014-4-18 09:09:41 | 显示全部楼层
imfv 发表于 2014-4-15 15:49
对于一些小工程的东西,还是用单片机比较合算,存在自然有存在的道理。

不是;
前些天我就想做一个简单的东西,要的资源也不多,结果发现老姚的片子并不便宜啊,要6块多;而STM8S呢?3块;STM32呢,8元;
相差了1元钱,不管是SMT32的大容量FLASH,还是STM8S的低价位完爆51,完全看不出来它有存在的价值;

出0入0汤圆

发表于 2014-4-18 09:39:06 | 显示全部楼层
没有学会初等数学,怎么能学会高等数学呢?(除非你是天才)不学51,就想着学ARM、FPGA,你那是一口气要上珠峰,多半“死”在半路,估计你从此连51的小山都没信心爬了。再说俺们只是以51入门,不是只学51,俺们都是将来要登“珠峰”的人啊。

出0入131汤圆

发表于 2014-4-18 09:55:17 | 显示全部楼层
过时不过时不能一概而论,不同行业,有不同需求,51不会被淘汰。

出10入10汤圆

发表于 2014-4-18 10:30:39 | 显示全部楼层
工具而已,根据应用选合适的,没有过时不过时,除非停产了。

出0入42汤圆

发表于 2014-4-18 10:34:01 | 显示全部楼层
345161974 发表于 2014-4-14 17:06
如果一开始学ARM学的很吃力,不如先学习51单片机,照着郭天祥的视频学一遍,再去看ARM,就有些眉目了,就会 ...

照这么说, 机房里那些服务器都是高级单片机, 有os有gui罢了. 所有的软件工程师不过是在写单片机程序而已,而且他们连底层都没搞懂过

出0入42汤圆

发表于 2014-4-18 10:38:09 | 显示全部楼层
我觉得吧, 如果用C写, 很多单片机差异并不是非常大.  如果在c层面仍然无法在多个单片机自由切换, 那我得说, 你的编程该加强下了.  
如果用汇编, 那你就干一行爱一行, 用哪个就学哪个, 而且这基本是做产品的, 也由不得你想学不想学了.

出0入0汤圆

发表于 2014-4-18 17:39:40 | 显示全部楼层
xymbmcu 发表于 2014-4-18 09:39
没有学会初等数学,怎么能学会高等数学呢?(除非你是天才)不学51,就想着学ARM、FPGA,你那是一口气要上 ...

51什么时候是基础了……

出0入0汤圆

发表于 2014-4-18 19:00:29 | 显示全部楼层
踏实的人会一步一个脚印。

出0入0汤圆

发表于 2014-4-18 21:40:40 | 显示全部楼层
Borden 发表于 2014-4-14 16:08
长篇大论也没说出个所以然来~~

我觉得过时了,51指令集跟Cortex-Mx比起来真心恶心,这辈子绝对不碰~ ...

51是CISC的指令系统, 设计理念有根本区别.
不过不管是51还是ARM, 非关键场合还是交给C编译器吧, 特别是ARM这种RISC.
(我反而觉得ARM的指令集难用呢, 加载个32位立即数还要4条指令, 比x86弱暴了)

51, PIC, Cortex-M这种是一个档次的, CPU非常简单, 都是顺序发射的流水线 (经典的51还不是), 没有缓存和MMU, 重在成本低功耗, 谈不上性能 (DMIPS在1点几那个样子)
A8 A9那些, 都是一个CPU加上l1 l2 i-cache/d-cache, 都有MMU TLB, 现代点的(比如A9)是乱序的, 还有浮点和SIMD协处理器, 这种是和x86之类的是一个档次.

"即便是相同的时钟速率,32位机的处理一些数据的速度也要快于8位机,如一个32 位的加法运算,8位机至少需要4个周期,而32位机只需要一个周期即可完成。"
这和几位有毛关系. ARM快是因为都用了流水线, 经典的51不是. 一个指令是要不要做成单周期也是要有考量的, 一味追求“单周期”, 导致过长的组合逻辑, 制约的最大频率, 反而会降低整体性能.

"ARM的位 操作是通过移位,与或等操作之后实现的,而51单片机则又位寻址空间,是真正的位操作"
CM3 CM4都是支持bit-band alias的, 希望不要胡诌.

我一直觉得, 学了CM3 CM4, 还是自称"单片机工程师"比较号, 别动不动ARM ARM.

出0入0汤圆

发表于 2014-4-18 22:14:02 | 显示全部楼层
xieyudi 发表于 2014-4-18 21:40
51是CISC的指令系统, 设计理念有根本区别.
不过不管是51还是ARM, 非关键场合还是交给C编译器吧, 特别是AR ...

嗯,我一开始也没搞懂楼主的叫法,后来才明白,原来楼主把ARM单片机叫做ARM,51单片机才叫做单片机~~我一直把它们都叫做单片机的~~~

出0入0汤圆

发表于 2014-4-21 09:27:23 | 显示全部楼层
albert_w 发表于 2014-4-18 10:34
照这么说, 机房里那些服务器都是高级单片机, 有os有gui罢了. 所有的软件工程师不过是在写单片机程序而已, ...

哪有,我以前做网站的,后来学嵌入式开发那时候,寄存器操作压根不知道是在干嘛,后来学的一头雾水,有朋友说不如先学习下51单片机,于是我就学51,跟着老郭的教程学了一遍,发现学51还算简单,也对寄存器操作神马的有了个概念,后来又重新开始学ARM这块,发现至少在对某些控制器的寄存器设置不会出现刚开始的那种完全不懂的现象了,后来慢慢的大部分的精力放到了对系统的一些原理以及体系结构的学习上了。

出0入0汤圆

发表于 2014-4-21 09:34:29 | 显示全部楼层
Borden 发表于 2014-4-14 16:24
对于没接触过外国话的人来说,法语和德语的难度是一样的,都是两眼一抹黑。不存在51比ARM简单的情况。

A ...

那你觉得1年纪小朋友学加法简单还是学乘法简单啊?  P1^1 = 1; 比 P1FUC =XXX ;P1DIR = XXXX ; P1OUT = XXXX; 容易懂吧...基础那就是基础,基础打起来后面学得才快,没基础那就云里雾里...

出0入0汤圆

发表于 2014-4-21 10:27:16 | 显示全部楼层
我认为就眼下而言,确实没有过时!

出0入0汤圆

发表于 2014-4-21 11:02:32 | 显示全部楼层
只要有人用,就有人生产。只要你的方案人家同意,那就不过时。

出0入0汤圆

发表于 2014-4-21 12:04:16 | 显示全部楼层
很简单的可以用51,复杂一点的用51你拿什么与别人竞争!

出0入0汤圆

发表于 2014-4-21 12:11:47 | 显示全部楼层
浮华一生 发表于 2014-4-21 09:34
那你觉得1年纪小朋友学加法简单还是学乘法简单啊?  P1^1 = 1; 比 P1FUC =XXX ;P1DIR = XXXX ; P1OUT = X ...

加法是乘法的基础,要理解乘法必须先理解加法。所以我不觉得51和ARM是加法和乘法的关系,它们是完全没有关系的不同指令集,就像德语和俄语的关系。

还有我说的“学”都是指汇编,我觉得无论对于51还是ARM,如果只用C,根本还谈不上学会。

出0入0汤圆

发表于 2014-4-21 14:33:57 | 显示全部楼层
Borden 发表于 2014-4-21 12:11
加法是乘法的基础,要理解乘法必须先理解加法。所以我不觉得51和ARM是加法和乘法的关系,它们是完全没有 ...


那你这让用C写底层驱动的广大电工们情何以堪,用了好多年的ARM, 居然还没学会? 呵呵...

出0入4汤圆

发表于 2014-4-21 15:23:43 | 显示全部楼层
没看出所以然, 学和用是两码事, 学51和ARM与过不过时貌似不冲突吧, 打基础学51再学ARM,肯定要比直接学ARM上手快。有市场就会有需求,另外当部分ARM芯片价格低于51的时候,51单片机还会有优势吗?即使51单片机没有市场了,仍然可以用来先学习它再学习ARM。

出0入0汤圆

发表于 2014-4-21 23:57:51 | 显示全部楼层
浮华一生 发表于 2014-4-21 14:33
那你这让用C写底层驱动的广大电工们情何以堪,用了好多年的ARM, 居然还没学会? 呵呵... ...

你觉得会就会咯,我是没所谓。我只是觉得紫霞神功练了再多年也干不过练仨月的独孤九剑,起点就不一样。

出0入0汤圆

发表于 2014-7-28 23:14:06 | 显示全部楼层
我是先学STM32的后学8051的,后来觉得用在功率放大器控制上没必要用STM32 一个3块钱左右的台湾8051单片机就能搞定的东西,没必要用最便宜8块的STM32, 合适就好,C语言和算法一定要过关··

出0入0汤圆

发表于 2014-7-30 09:15:51 | 显示全部楼层
赞成                     

出100入101汤圆

发表于 2014-7-30 09:39:33 | 显示全部楼层
没过时,但只学51单片机肯定不够。

出0入8汤圆

发表于 2014-7-30 10:04:06 | 显示全部楼层
学什么单片机都不过时,要学会编程思想。而不是局限在那个单片机,按我的学习来说  只要学2中架构的,剩下的就都OK了。

出0入0汤圆

发表于 2014-12-10 22:17:34 | 显示全部楼层
      我第一次学51时,是2010年的事了,首先我没上过一节英语课,认不了几个单词,就更不懂C语言了,之前觉得C语言是多么可望不可及的高大上语言,但还是硬着头皮看了,当看到ADC那一节时,就觉得挺难,感觉再也学不下去了,就把开发板丢到了一边,成果是只会点灯。
      就这样,一直到2012年,感觉到单片机编程对于一个产品的重要性,就又捡起来重新看视频,每天晚上看到十一点甚至更晚,边看边做实验,终于在几个月内有了一些基础,
而后就开始做一些自己想做的小东西,来提升自己的应用能力,接着相继学了AVR、PIC、STM8,PIC是跑了一遍例程就没碰了,AVR还是做了一些东西的,比如电压电流表等,STM8直到现在都在用,因为确实很便宜。
      然后又买了STM32开发板,第一块,配套视频教程看不懂,因为里面都是用库函数来操作的,面对长长的英文字母,根本不明白是什么意思。又买一块,还是看不懂,好吧,STM32也睡觉了。
      2013年,换了个新公司,公司比较小,需要一个既能做硬件,又能做软件的,虽然待遇也不是很高,但我觉得对我是一个很好的机会,可以将我对单片机的学习应用在真正的产品上了,公司所用的单片机是松翰的单片机,之前从未接触过,但因为对51单片机已能熟练应用,无非就是多看几遍规格书的问题,经过两个月的调试,产品已经出了样机了;
      期间继续折腾51单片机,逛论坛,看前辈们的资料,汲取经验。
      突然又想起STM32了,刚好也看到了论坛里的正点原子前辈的寄存器操作STM32教程,下载了教程后又开始折腾了;这下进步很快了,对着教程,再看规格书,慢慢的已经从点灯到驱动LCD液晶屏了,真心感觉挺不容易的,接着又用STM32折腾各种小玩具,也能弄个所以然了,但这时仍然不懂库函数。
      2013年底,换到了另一个较有名的公司做专职软件编程,用的是合泰的单片机,因为有了前面的基础,半个月的时间基本就可以熟练操作了。
      2014年,偶然间想到单纯使用寄存器对STM32进行编程,寄存器太多,想操作一个不熟的外设需要花很多时间看寄存器,还是不是库函数方便,就开始学起库函数来,对着教程,对着库函数说明,慢慢的,也能正常操作起来,这样初始化起来就简单多了。
      以上是我学习单片机的历程,虽然时间跨度大,也挺辛苦,但对于多从一个C语言语句都不懂的人到现在作为一个软件工程师来说,也还算是值得的。

出0入0汤圆

发表于 2014-12-11 12:11:56 | 显示全部楼层
对啊 ,51是基础,是入门的,没有这个就不好做其他的东西

出0入0汤圆

发表于 2014-12-12 21:16:16 | 显示全部楼层
有些东西用51做足够,杀鸡焉用宰牛刀

出0入0汤圆

发表于 2014-12-13 01:42:12 | 显示全部楼层
学校:我们学的不仅仅是51,而是单片机技术、编程思想、发现解决问题的能力。公司:当然以产品性能、价格要求等方面考虑。

出0入0汤圆

发表于 2014-12-13 14:32:40 | 显示全部楼层
学习51单片机是为了历练编程基础吧。

出0入0汤圆

发表于 2014-12-15 12:57:23 | 显示全部楼层
51是比较基础的,很多东西51就可以实现,没有必要使用更高级的单片机如STM32等

出0入0汤圆

发表于 2014-12-22 20:14:01 | 显示全部楼层
51是大学里开设的课程,本来就是入门学习基础、原理的,学了51再学其他的单片机入手也是比较快的,不过做产品已经很少用了。

出0入0汤圆

发表于 2014-12-22 20:21:56 | 显示全部楼层
其实现在51价格和AVR,stm8等价格差的不大,但性能比不上avr,stm8   初学者也可以直接上手avr,stm8, 51的最终命运还是由市场价格决定

出0入0汤圆

发表于 2014-12-22 21:43:46 | 显示全部楼层
大部分大学里教课还是在用51吧,毕竟上手最容易。

出0入0汤圆

发表于 2014-12-23 16:44:09 | 显示全部楼层
楼主说的不错,51是基础。51是入门,只有入了门才可以学习更高端的!

出0入0汤圆

发表于 2014-12-23 16:47:45 | 显示全部楼层
没有过时的技术,只有不懂的更新知识的你。

出0入0汤圆

发表于 2014-12-23 16:53:16 | 显示全部楼层
wajlh 发表于 2014-4-14 16:37
什么单片机不重要,重要的是学会编程的算法

真理!算法才能重要,硬件就是一个平台而以。

出0入0汤圆

发表于 2014-12-23 17:02:42 | 显示全部楼层
这一点我想明白了,什么单片机都好,都是在不停地读写寄存器

出0入0汤圆

发表于 2014-12-23 23:14:19 | 显示全部楼层
学习是没有过时的,但收入一定会过时!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 10:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表