打印
[51单片机]

8051其实是个很奇葩的架构

[复制链接]
5218|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
turmary|  楼主 | 2016-5-7 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 turmary 于 2016-5-7 16:45 编辑

地址空间有bit,data,sfr,idata,pdata,xdata,code.
register可以分BANK,
code也可以分BANK,
reigster/bit/data/idata互相重叠,pdata/xdata互相重叠,
xdata,code很难做在一起,
函数传参可以用OVERLAY空间,
如果你的程序大了,编译器设置不当,程序相当难调试。
再有CODE分BANK,
加上PDATA STACK,XDATA STACK,
16位整数运算,浮点运算要扩展成多个8位指令,
整个程序效率已经低到极点。
相比每个指令周期有12晶震周期,以上这些缺点恐怕是相比Cortex-M 32位架构最恐怖的地方,
欢迎拍砖。

相关帖子

沙发
mcu5i51| | 2016-5-7 17:02 | 只看该作者
不如说说8051核心是什么时候的产品,Cortex-M 32位架构是什么时候的产品;
或者你用一台I7的台式PC和精典的首台8088PC对比一下,8088PC应该不比这台I7便宜;
8051核心目前在用是因为它免费了,大量厂家生产,大量的用户,很多的时候速度和资源够用,价格优势等;

使用特权

评论回复
评论
lfjwfm 2016-5-10 20:54 回复TA
是的,应该是经典之作,同时代的6502之类的已经很少见了,而古老的(最古老的)8031及后裔还在漫天飞,真是不错的好东西。 
板凳
mcu5i51| | 2016-5-7 17:06 | 只看该作者
在当时这样的构架,一方面是新的产品,思路和经验不是很多,另一方面是兼容原始的8048芯片,好平滑过渡;还有可能当时以为64K的RAM/ROM已经够用了,生产水平和认知有关的

使用特权

评论回复
地板
ayb_ice| | 2016-5-7 17:30 | 只看该作者
都是为了提高效率

使用特权

评论回复
5
hgjinwei| | 2016-5-7 17:44 | 只看该作者
不能拿当前的认知,去批判前人的想法,这不公平!

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
xuander + 3 赞一个!
6
xuander| | 2016-5-7 18:26 | 只看该作者

有人听说过“一位机”没?


使用特权

评论回复
7
yhn1973| | 2016-5-7 18:27 | 只看该作者
如果楼主懂汇编的话就知道51这样设计在8位机上对提高程序效率多有帮助,因为实际应用中很多变量的执行速度和出现频率都是不同,比如说在中断程序中做一些标记或者判断一些标记或者做一些小范围计数并判断,你用51做和用CM3做就知道哪个效率高了,当然你如果拿8位机和32位机比32位运算,你打死8位机他也比不上

使用特权

评论回复
8
江枫渔火| | 2016-5-7 18:32 | 只看该作者
51不会用这东西,哈哈,反正去过的公司基本也不用。

使用特权

评论回复
9
turmary|  楼主 | 2016-5-7 18:39 | 只看该作者
ZigBee芯片CC2530就是51架构的,还有很多其它SOC芯片都有用51核的,分BANK少不了,表示是被迫用的.

使用特权

评论回复
10
wztoad| | 2016-5-7 20:11 | 只看该作者
想想pic的code区分页,二级的堆栈,c51已经很好了

使用特权

评论回复
11
huangqi412| | 2016-5-7 23:19 | 只看该作者
那个都是多少年前的东西了。   之前也没有分BANK吧,那时候根本用不这么大的ROM.      
奇葩的应该是现在那些新出的资源规模很大的51芯片。都超过64K范围了,外部模块寄存器都多的没地方放了,然后在51上折腾出很多复杂的东西。  就像车子动力和车架不匹配了,非要凑在一起。

使用特权

评论回复
12
coody| | 2016-5-7 23:56 | 只看该作者
楼猪,这是上世纪70年代末的架构,你觉得呢?那时候有ARM不?
51再差,欧美一些大厂的产品依旧有内嵌51核,你是否觉得像TI这样的公司很奇葩呢?

用现在的眼光看几十年前的东西,难免太那个了。
等于说,以前的手机就是奇葩,就接打电话、收发短信,不能上网。。。。
以前的螺旋桨飞机很奇葩,那么慢的速度,居然存在了几十年,还拿去空战!100架都打不过现在的一架!但是螺旋桨飞机貌似还是有的啊。。。

汽车飞机都有了,自行车更加奇葩。。。。
这么多富人,穷人真奇葩。。。。

使用特权

评论回复
13
robter| | 2016-5-8 08:13 | 只看该作者
很好 很好,学习了

使用特权

评论回复
14
lkk2266| | 2016-5-8 08:28 | 只看该作者
51推出时打趴6502, z80当时主流芯片, 那时16K dram已经到顶, 64k当年是很大的, 成熟够用, 12t变1t, 还具有价格优势, 使51能活到现在, 跟ARM当然没得比

使用特权

评论回复
15
linqing171| | 2016-5-8 09:23 | 只看该作者
函数传参可以用OVERLAY空间 是C51的特性。
其它的8051特性是因为70年代末80年代初的软硬件分工和成本考虑和现在不一样。
还有:
中断地址 i*8+3 不是i*8 ... ...
bit sbit sfr 这三种只能直接寻址,无法间接寻址,也就是无法指针。没有指针就导致重入等操作系统必备的基础没有了。

使用特权

评论回复
16
linqing171| | 2016-5-8 09:28 | 只看该作者
还有已经过时的BCD,以及它的加减运算调整指令DAA。比如十进制 98+76=174; 则0x98+0x76后,DAA一下结果CY=1,ACC=0x74.
这种组合BCD在当今的年代看起来都是另类了。
还有就是堆栈指针只有一个,而且不能用来间接寻址。这个带来的效率非常大。以至于keil的变量在寄存器放不开的时候,用静态空间overlay。

使用特权

评论回复
17
ayb_ice| | 2016-5-8 09:57 | 只看该作者
arm不见得会比51寿命长

使用特权

评论回复
18
chunk| | 2016-5-8 10:05 | 只看该作者
一点都不奇葩。

当你使用汇编语言开发软件并且为节省存储器的每一个BYTE而奋斗的时候你就明白了。

当然,时代进步了,你已经不必再经历那样的奋斗过程了。

使用特权

评论回复
19
chipon单片机| | 2016-5-8 10:47 | 只看该作者
bank实际是所有8位架构的局限性,PC/DPTR只有16位,如果长度加大到24位或者32位,对8位来说代码会增大不少。

所以8位能生存下来的产品就是有特色的,如低功耗、抗干扰能力强,有特殊模拟或数字外设的,在大容量的程序和数字存储器需求的一定会让位给32位,编译器反而容易做。

使用特权

评论回复
20
NF同学| | 2016-5-8 11:27 | 只看该作者
貌似没怎么玩51呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

295

帖子

0

粉丝