标题: 远离51单片机珍惜脑浆 [打印本页]

作者: daliu    时间: 2014-9-1 01:10
标题: 远离51单片机珍惜脑浆
在遥远的80年代,8051以内部晶体振荡器、定时器,串行口,准双向IO等特色一举战胜了Z80,而后者需要外置PIO、CTC、SIO等40脚的芯片。

8051只用了一片外置地址锁存器解决了外部存储器的访问。

Z80构成需要“单板”,而8051构成只需一片,故“单片机”的美名一直延续了30年之久,真可谓“单片龟”!!!

几十年来大学一直以8051为模版教授“单片机”,估计还会延续数年。

随着时间的推移与技术的进步,8051“单片机”之父的美名早已不复存在,AVR,PIC等众多“单片机”都曾尝试挑战8051的霸主地位,但都无功而返……

“失败”原因很多,菜农认为其中一个环节常常被大家忽略:专用厂家专用指令。

各厂家为了简化汇编指令集,都在指令集中嵌入了IO及访问地址等,故每学习一种MCU就必须熟悉或了解其指令集。而8051由于教育的普及,故提到“汇编语言”就会首先想到8051指令集。

随着ARM介入MCU领域,上述问题彻底改观。

首先ARM不是MCU厂家,故其指令集不可能包含各厂家的外围模块,并且32位或16位指令集中不可能包含32位的立即数(如GPIO和分支地址),故对应操作必须间接寻址即指针操作。

对于反汇编而言,首要问题是解决数据和代码的分离,其次是从指令中得到GPIO信息从而证实硬件管脚的作用。

故专用厂家的MCU厂家的指令代码最容易反汇编,至少理论上可以100%被反汇编。

据解密界业内人士透露,这些MCU都可以被芯片解密!特别是8051。再结合菜农的超级反汇编,几乎从未失手过……

而ARM系列则不同,即使给你机器代码,理论上也无法反汇编!

因为干什么都是指针操作,故反汇编出来也是一堆乱码!

ARM的出现,特别是Cotex-M系列的出现,其价位早已逼近MCU,特别是各厂家众多的外围模块,其性价比远远超越8051,而8051必须扩展其外围模块或用模拟IO软件实现。

故菜农强烈呼吁:远离51珍惜脑浆!


作者: liaolinhui    时间: 2014-9-1 18:27
8051由于入门简单,所以适合初学者使用,虽然arm比51强大,但是不适合初学者,
作者: admin    时间: 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据教程书的,因为他简单,如果新生一开始就接触 arm的 m0 或者m3的话 能弄懂其原理的肯定在极少数  会打击到学生的自信心 ,但是如果学了8051以后在学习arm的m3内核就不同了 就容易理解了.
作者: morning_MCC    时间: 2015-1-22 12:24
有点夸张额。。

其实很多时候8051 还是非常好的, 如下是几个总结的特点。


1.绝大多数典型8位应用尚不需要32位性能
2.易用性高
3.应用性能表现卓越
4.静态功耗低




作者: 单片学子    时间: 2018-3-18 08:37
对于入门教学,几条指令比调用几个库函数更容易让学生理解。
作者: CWKQL    时间: 2018-5-1 06:01
各显其能,不能以一言蔽之,阿门
作者: fhsgjsgjsfgjsfj    时间: 2018-6-11 15:57
51单片机是基础,对学习其他单片机有很大帮助的
作者: includebrf    时间: 2018-6-13 08:57
如果你拥有解密mcu的水平,还回去破解入门级的8051吗?
作者: csy-2015-06    时间: 2018-6-24 15:47
51入门还是挺好的,现在在学F407了
作者: liugoon1    时间: 2018-6-26 22:10
51是用来入门的
作者: popuple    时间: 2018-6-27 09:31
在没有51的情况下如何入门?希望有大神发个话。
作者: lonnychen123    时间: 2018-7-5 14:30
51是基础
作者: Obaha    时间: 2018-8-4 13:55
单片机之父这种称呼怎么可能被抢走……爸爸永远是爸爸,不会因为后浪推了前浪,前浪就变成儿子了。
作者: rainman888    时间: 2018-8-15 17:03
教学经典,不能抹杀
作者: diannaoza    时间: 2018-8-16 01:57
教学经典
作者: xieqiang520    时间: 2018-8-16 08:27
初读不知文中意 再读已是文中人
作者: 向日葵男人    时间: 2018-8-29 23:11
精彩的辩论!我还是很喜欢51的,32有点墨迹
作者: donaldsu    时间: 2018-11-20 10:15
这个看使用场景吧,简单控制没什么太多的版权问题,用51也何尝不是好事
作者: yb1988001    时间: 2018-12-10 14:11
8位机能搞定很多项目了。。。
作者: 1092648746    时间: 2018-12-19 15:56
51现在还是挺便宜的,编程思想也简单,作为入门单片机的选择,没有比它更好的东西了。STM32很强大,但学起来也是比较难懂的,还是不能以偏概全啊……
作者: 晓博爱电子    时间: 2018-12-25 15:28
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

讲的很不错,我就是先学8051,原理搞懂之后再学ARM就感觉容易多了,如果一开始就学arm,很多初学者根本看不懂,时间长就不想学了
作者: shuisheng    时间: 2018-12-25 17:07
这不好说,有市场的地方就有它存在的价值,就如同功能手机与苹果手机,苹果已经退出了市场,但功能手机依然坚挺。那天出个TTM,STM一样凉凉!
作者: 九死还魂草    时间: 2018-12-25 17:30
如果五块钱能解决问题谁愿意花六块、七块、八块。。。。
作者: 天风情    时间: 2018-12-26 10:48
虽然近些年份额一直在跌,但是不可忽视的是51依旧占据着相当一部分市场,因为对于要求不是特别严格的场合依旧需求旺盛,毕竟成本在那儿放着
作者: vhgh2002    时间: 2019-1-19 17:56
还有个屏幕问题。产品带个像样的屏幕,51歇菜。
作者: 小8    时间: 2019-2-2 10:20
我学了51以后正准备学32,快半个月了还没学会建一个MDK工程
作者: hujj    时间: 2019-2-21 13:47
51作为入门和简单应用还是不错的,没有必要“远离”。
作者: 笨笨兔    时间: 2019-2-22 15:21
这么久远的帖子,还有人翻出来看?
作者: 文武双全1149    时间: 2019-3-31 21:25
51单片机比较基础,学会了其他的单片机会简单些
作者: 夏国特    时间: 2019-4-17 11:07
教学是要循序渐进的。对于学习过计算机组成原理的童鞋来说,学习ARM如同看小说。可是对于很多一般学习的教学计划,非计算机专业的是不学习组成原理和体系结构的,甚至连微机原理与x86汇编也不学,于是选款简单的8位机作为跳板,打好基础好入门是很重要的,而这个跳板一定要简单、经典,那么51就非常合适了。再者,工程上选择新品,都是按照实际需求来的,比如牛皮糖的51又放大招了,这么强的51才几毛钱,很多节点超多成本极其敏感的场合,方案定了它,就是51没学过或者全忘了也得捡起了不是,毕竟用什么片子不是工程师讲了算,是需要方案评审验证的,需要财务和销售、上面的老大说了算的。
作者: xing1954    时间: 2019-5-23 04:21
51也可以作好多事。
作者: jiangquancai    时间: 2019-5-25 21:30
51虽然只能处理8为数据。但是对于初学者容易理解
作者: dongfeng123    时间: 2019-7-8 17:14
入门最好选择工作中能使用的单片机或者ARM等型号,STC在量产方面还是不如台系等专业的单片机公司吧?量产对价格要求很苛刻。
作者: dongfeng123    时间: 2019-7-8 17:17
低端的芯片也不会被淘汰,跑的快必然功耗高,各取所需就是。
作者: 7631001    时间: 2019-7-27 00:08
循序渐进的学习,才是合适的教学规律。
先学习GPIO、定时器、中断、串口、IIC、SPI,通过一些基本的应用设计,再区学习ARM就很容易上手了,而且,现在使用ARM做开发的同仁们,哪个不是自学出来的,这都是51的底子。
作者: 小黑屋525    时间: 2019-7-27 09:05
大学只是入门,学到老,活到老,51简单,32更深,但是32大多数是自学,相当于中考,喜欢单片机的会深入,不喜欢的连51都不会!
作者: bbb168    时间: 2019-7-30 14:29
各取所需,看应用吧,像PIC16还是在用的。
作者: wcs1668    时间: 2019-8-22 17:44
morning_MCC 发表于 2015-1-22 12:24
**** 作者被禁止或删除 内容自动屏蔽 ****

赞成楼主的意思
作者: 王师13631676419    时间: 2019-12-25 16:55
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

但如果把M0或者M3搞懂。8051就很好理解吧
作者: duanhnhy2019    时间: 2019-12-27 15:02

对于入门教学,51还是挺不错的
作者: ynzsc001    时间: 2020-1-6 10:16
想我这种连C51都整不明白的人去弄那些且不是更烧脑么?
作者: azxiaxp    时间: 2020-1-31 12:04
由简入繁,51是很好的入门,便于学习,慢慢再学习arm比较好。
作者: HWL0541    时间: 2020-2-10 10:54
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

刚开始学stm32感觉比51 复杂多了
作者: lovexulu    时间: 2020-2-19 22:48
杀鸡焉用宰牛刀,RISC-V也出来了,跟随时代的进步而学习。
作者: 红绿通    时间: 2020-2-25 03:38
51->PIC->AVR->STM32
作者: liu888888    时间: 2020-4-8 21:14
感觉标题有点夸大。ARM 是很火,但高昂的授权费和使用版权费限也是很出名的,较早的M0/M3算是便宜的,每片使用版权费据说是4美分,折合人民币3角左右了,这对于低成本消费电子产品可绝不是小数目;据说51核专利已过期,芯片开发使用核心知识产权风险低,无后顾之忧,又易学易用,从供需角度看,51产品必将还会存在下去。
  另外补充一句,现在32位开源的RISV-V构架受到不少组织追捧认可,这对ARM是个挑战。
作者: ehengio    时间: 2020-5-15 14:55
ARM不能反汇编是来搞笑的吧,电脑都能反汇编。
作者: Yuriwu    时间: 2020-5-22 17:03
M0感觉是趋势,不过小心将来ARM内核又不免费了,来收割韭菜
作者: fengye615    时间: 2020-6-4 20:27

8051入门简单,适合初学者使用
作者: 51550461    时间: 2020-6-5 20:51
学校教什么,到了社会也跟着用了。
作者: XYB1995    时间: 2020-6-17 09:11
现在的大学课程已经逐渐转变到STM32了
作者: tanker_zheng    时间: 2020-8-13 11:10
各有各的用处,各有各的舞台,只是舞台大小问题,看在哪个方面更实用而已。51还不至于到淘汰的地步,ARM确实舞台广阔。
作者: Roy-2010    时间: 2020-8-13 11:46
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

我也觉得。
作者: xdqfc    时间: 2020-10-10 09:54
51是基础,对于速度要求不高的项目,完全可以胜任,最遗憾的是其运算只能达到8位,而现实中,起码达到16位的才能算马马虎虎,最好能达到32位的运算,当然也可以用编程的方法实现32位运算,但是太麻烦而且执行时间太长了,幸运的是,能实现32位运算的51单片机也出来了,像中颖的79f1611,还有STC8,等等,甚至有些8位机都内置函数外设了,只要价格合理,8位机也有存在的基础。

作者: xdqfc    时间: 2020-10-10 10:05
而对于ARM的M0或者M3来讲,的确是不错的IP,国内也有不少集成电路的厂家在使用,譬如兆易,华大等等,现在的价格基本跟51可以一拼了,32位的加减乘除全部实现(M0没有除法),但是,最近老美针对中国的贸易战,让人对ARM不免有些担心,华为就是典型的例子,下面就是其他中小公司了,本人之前的项目都是有兆易的GD32,M23的IP,不过下一步已经慢慢转用RISC_V的IP了,像GD32VF103,CH32V103,都是32位的,都是国内的IP,用的放心。

作者: wadeen    时间: 2020-10-14 12:43
8051很容易入门,本来产品就用几个简单的控制破解了一没有意义啊,自己开发都想通还破解干什么。
作者: 屎涕粪粥    时间: 2020-10-15 23:27
小白请教一下M0和M3对于软件开发来说有什么区别?我只知道是指令集M3更大,但是指令集不是汇编层面的东西吗。在MDK中用C语言开发的时候,是M0和M3有什么本质区别吗?
作者: 51hei团团    时间: 2020-10-16 00:09
屎涕粪粥 发表于 2020-10-15 23:27
小白请教一下M0和M3对于软件开发来说有什么区别?我只知道是指令集M3更大,但是指令集不是汇编层面的东西吗 ...

M0的市场定位本来就是用来取代51单片机的,性能较低,资源也少

性能:
Cortex-M0 基于32 位架构,利用一个
通过MULS 指令直接与内核相连的32×32 位硬件乘
法器,恩智浦M0 指令模式可以在单个周期中对两个
32 位字进行乘运算.
最高频率50MHZ-

Cortex-M3处理器的核心是基于哈佛架构的3级流水线内核,
该内核集成了分支预测,单周期乘法,
硬件除法等众多功能强大的特性
最高频率已经达到150MHZ+
作者: steven66    时间: 2022-10-7 06:59
单片机是拿来用的, 不只是学习机, 学习是为了用它, 简单有简单的用处,  能简单的地方决不复杂化, 有的应用则要更好的MCU, 应用才是学习, 开发的动力. 不要简单的说那个好, 那个不好, 合用就好.
作者: 涛qq623942603    时间: 2022-10-7 08:23
感觉越高级的东西,越容易使用,图形化操作,隔离了寄存器,甚至比51单片机还简单。例如STM32Cube
作者: hondephy@126.co    时间: 2022-10-30 00:35
适合入门的是经典51系列,新的芯片,外设寄存器数量方面看着已经与ARM核的差别不大了,而且有个天生的缺陷,串口,时钟为了兼容经典51,在寄存器组织上是真心有点散。
作者: mick32    时间: 2022-11-15 07:34
In 1981, Intel introduced an 8-bit microcontroller called the 8051

It is only CPU on market valid today after 40.. years

Workhorse of industry , just  excellent  CPU if you know how

to use it , if not 10 GHZ   1000 cores will not solve problems ...
作者: Longan.Wang    时间: 2022-11-23 17:34
存在即合理,各有各的应用场合!!!!
作者: task2008    时间: 2022-11-25 11:28
8051不可能消失,我觉得它还会发光发热,因为很多时候并不需要ARM这类高性能芯片,例如简单的逻辑控制,8051的寄存器控制速度其实并不慢,关键是简单,让指令变的简单,越是简单的东西,往往越好用。
作者: ljchip    时间: 2023-2-28 09:22
只有楼主思想喜新厌旧,arm有arm的好,51有51的优势。看不透的人,自以为高人一等。
作者: 倪海华    时间: 2023-3-10 07:57
CWKQL 发表于 2018-5-1 06:01
各显其能,不能以一言蔽之,阿门

你这厮,说的好
作者: qiyuwang    时间: 2023-4-25 14:08
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

赞同,我也这么认为,当年我在大学里学51的时候都感觉挺难的,(当初学的是汇编,如果学c语言编程的话也不会抵触了),如果一开始就学arm会根基不牢,地动山摇;能坚持学下来的应该会是小部分人。
作者: joyb    时间: 2023-4-29 08:50
51还没有学会
作者: heitudi    时间: 2023-6-10 15:20
入门可以,帮助小白认识单片机确实很好,但是不要太纠结于汇编指令,了解一下就可以了,如果太关注于底层的汇编指令,很有可能走火入魔,做大一点的项目就麻烦大了。

作者: hewayking    时间: 2023-6-13 17:28
存在就是有道理的 , 没有意义的东西历史会抛弃
作者: m5y2016    时间: 2023-6-30 17:20
51单片机入门很不错,简单应用也尚可;不过,51的栈空间少得可怜,复杂一点的项目,需要定义很多的函数,栈空间不够,很痛苦。所以,项目中尽量使用cortex-m3这类栈空间大的单片机。
作者: timeabcd    时间: 2023-7-28 10:51
各有优点,51成本低,简单项目推荐
作者: likejian    时间: 2023-8-23 14:12
还是先有51单片机功底才学习M0,进步快很多。
作者: 56379075    时间: 2023-8-23 17:25
业余的玩家简单的需求或者需要直接访问硬件的需求使用51单片机,再复杂一点的直接用PC上面的编程软件应用,比STM强大的不是一点点。基本不需要搞STM
作者: lmn2005    时间: 2023-9-29 07:52
听说ARM也可以读出里面的ROM代码,虽然很难反编译。
作者: zmc419    时间: 2024-2-5 18:21
popuple 发表于 2018-6-27 09:31
在没有51的情况下如何入门?希望有大神发个话。

如果会C语言,直接转arm也行。不会,从8051入门更简单,也能深入领会。当然,快速入门可选Arduino,学不深入。
作者: smiledog4    时间: 2024-2-8 10:18
王师13631676419 发表于 2019-12-25 16:55
但如果把M0或者M3搞懂。8051就很好理解吧

并不会
作者: 1600277881    时间: 2024-4-21 22:09
作为一合格的码农业, 高档低档的MCU你都应该有能力驾驭, 用32位的就比用51的高级是个非常非常错误的想法。
比如, 简单的翻转IO
作者: yaosongjin    时间: 2024-6-28 08:51
如果有一天楼主能破ARM程序了,是不是又叫人远离ARM了
作者: keemee    时间: 2025-4-18 04:45
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据中国的教科书的,因为他简单,如果新生一开始就接触 arm的 m0  ...

大学里都不应该教80386,多难呀,我学的是8086/8088微机原理和汇编语言,相对简单易懂,反正都不会拆机学电路
作者: keemee    时间: 2025-4-18 04:50
夏国特 发表于 2019-4-17 11:07
教学是要循序渐进的。对于学习过计算机组成原理的童鞋来说,学习ARM如同看小说。可是对于很多一般学习的教 ...

麻烦问一下牛皮糖是谁?新唐吗?
作者: hewayking    时间: 2025-6-13 08:14
存在即合理   各有优劣   
作者: GlenXu    时间: 2025-6-16 08:55
admin 发表于 2014-9-2 14:30
我觉得8051就像是和 80386一样 ,会长期占据  ...

反对!
我是个电子爱好者,多次想系统学点51单片机,由于工作原因,一直没如愿,之前封闭3个月中,我花了一周时间,就入门了STM32,3个月里,从点灯到ADC,从通讯到DMA,基本贯通。
首先声明,我是外行,开始连C是什么平台都不知道,现在也不知道,但大小项目已经做了很多,都是独立完成的,当然,电子爱好者一般硬件功底都不差,这也许是入门简单的一个前提。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1