发新帖我要提问
12
返回列表
打印

揭开单片机内核的神秘面纱

[复制链接]
楼主: 我是新手226
手机看帖
扫描二维码
随时随地手机跟帖
21
huangqi412| | 2011-4-14 08:32 | 只看该作者 回帖奖励 |倒序浏览
标题党

使用特权

评论回复
22
我是新手226|  楼主 | 2011-4-14 08:41 | 只看该作者
我怎么成标题党了。。。
只是想和大家一起探讨一下,因为有些概念希望有一个整体的了解,心里有个数而已。
标题因为是临时想的,本来想的标题是单片机内核的疑惑,后来临时更改的。。哪知道会造成现在这种局面。。。
先看看20L提供的资料,看起来不错

使用特权

评论回复
23
jack_shine| | 2011-4-14 09:21 | 只看该作者
lz被bs了

使用特权

评论回复
24
jiangfuquan999| | 2011-4-14 10:26 | 只看该作者
:@

使用特权

评论回复
25
hgnos| | 2011-4-14 11:02 | 只看该作者
被忽悠了

使用特权

评论回复
26
dosculler| | 2011-4-14 11:26 | 只看该作者
如来神掌,一掌震碎你的“天灵盖”,看下LZ里的结构如何,
大忽悠来着

使用特权

评论回复
27
我是新手226|  楼主 | 2011-4-14 11:58 | 只看该作者
没碍着你们什么事,即使我是有意的,也不用对我这么仇恨吧,本来论坛就是一起讨论问题的

使用特权

评论回复
28
autopccopy| | 2011-4-14 12:22 | 只看该作者
没碍着你们什么事,即使我是有意的,也不用对我这么仇恨吧,本来论坛就是一起讨论问题的
我是新手226 发表于 2011-4-14 11:58

标题党!还不知悔改,BS LZ!!!:Q

使用特权

评论回复
29
开鑫浪子| | 2011-4-14 12:30 | 只看该作者
被骗同感!

使用特权

评论回复
30
我是新手226|  楼主 | 2011-4-14 12:44 | 只看该作者
说够了吗??为了杜绝大家“受骗”,我就结贴了,对那些“被骗”的表示“遗憾”,我只是取了一个形象化的标题而已,原本希望大家一起讨论,我才没空做这种无谓的事,下次我会改进提问方式的。24楼说的很对,想这种“技术外”的问题只是出于好奇和兴趣

使用特权

评论回复
31
lwq030736| | 2011-4-22 23:21 | 只看该作者
24# 刘前辈

你搞反了吧?不是8051越学越深奥,而是可以越用越深奥。这用法的深奥跟8051没什么关系,这是人的思想和想法深奥,只不过用8051来实现而已,你用ARM或者AVR或者其他什么CPU来实现这些用法也一样的。跟我们说话不是一个道理吗?总共的汉字就这么多个,看你怎么用,对不对。

使用特权

评论回复
32
jerry_hust| | 2011-4-23 11:34 | 只看该作者
是的,它们代表不同的类型单片机,体系结构不同,指令集不同,但用C编程操作的话,基本上差别不大

使用特权

评论回复
33
abin0415| | 2011-4-24 09:08 | 只看该作者
被骗过来的。

使用特权

评论回复
34
xiaoyuan_ly| | 2011-4-24 15:48 | 只看该作者
还是我再来说几句,别再被骗了。。。。

使用特权

评论回复
35
xiaoyuan_ly| | 2011-4-24 15:53 | 只看该作者
本帖最后由 xiaoyuan_ly 于 2011-4-24 15:55 编辑

51系列的是代码和数据混合放在ROM区的,可以这么理解,对MOV A,#12H 这条汇编来说,其实它的 12H数据是和指令关联的,所以在单片机51核的指令译码阶段,核已知道12H数据在ROM中的位置,这个数据位置和当前的程序PC是关联的,可以计算知道的,所以可以直接向ROM寻址得到这个12H数据。而MOVC指令是向ROM的所有数据进行寻址的方式,也就是说你可以读写在ROM中的任意一个数据(也包括指令数据)。 还有就是ROM和RAM都是存储单元,只是一个只读,一个可读也可写罢了。MOV也好,MOVC也好,只是一种操作动作的表示,是让单片机核在译码阶段区别动作功能的表示了。并不是说对ROM的操作一定要用哪个指令,而是能知道在ROM中的数据位置地址,就能取到相应的这个数据。对RAM也是一样的,只是你的理解中RAM的地址是直接给出的好理解罢了(比如MOV A,50H),RAM的地址是50H,其实这个50H也是存在ROM中,它的读取也是按我上面说的ROM中关联的方式读取的。还有就是同样的MOV,在不同的寻址方式,其编译后的操作码(就是指令)也是不一样的,你可以自己再看看细节就知道了。
    我再来细说下: 举个列子 比如 MOV A,#12H 和MOV A,12H 这两条指令,其实他们的12H的这个数据都是存在ROM中的,那你的理解肯定是 MOV A,#12H,是向ROM中取数据12H,而MOV A,12H是向RAM中的12H单元中取数据。下面我再来说说实质:这2条指令的机器码是: 74H 12H和E5H 12H。在指令译码阶段:74H的操作码指令功能是向ROM中取得这个立即数据12H就可以了,这个立即数据的位置是在74H指令字节的下一个字节中。而E5H的操作码指令功能是向ROM中取得数据12H后,再将这个12H数据作为RAM地址向RAM单元中的12H单元中取得相应的数据。我再来说下细节MOVC这个东西。 我还是那个说法: MOVC指令是向ROM的所有数据进行寻址的方式,也就是说你可以读写在ROM中的任意一个数据(也包括指令数据)。 只是取得的数据有意义和无意义的差别罢了,或者说是你需要的和不需要的罢了。 不需要的我们也不会去取,那我们就不在乎这些数据的所在地址到底在哪儿。 需要的数据在ROM中的地址才是我们关心的。所以你在定义有用数据在ROM中时,DPTR中的数据就是这些有用数据的地址。
    最后,51是代码和数据混合存放在ROM中的。比较ARM或其他的,代码和数据是分别存放在ROM的各个块区中。如果是直接从ROM中执行,那就没有搬运。如果从RAM中去执行的话,那就是将ROM中的代码和数据都搬运到RAM中,然后再执行。这样做的好处是提高指令运行速度。 ROM中执行速度慢,RAM中执行速度快。   这也就是单片机为什么只能运行在较低频率的瓶颈之一。因为没有外围高速的ROM配合,如果ROM器件能到200M,那就没有问题了。

使用特权

评论回复
36
xiaoyuan_ly| | 2011-4-24 15:57 | 只看该作者
我上面说的,算不算有点揭开单片机的神秘面纱了??!  请指正。

使用特权

评论回复
37
whlz58| | 2011-4-24 16:38 | 只看该作者
单片机就是判断的工具,只是实现的方法和速度的差异,外设不算核的部分,我还以为有芯片级的设计方法,结果不是那么回事,我见过的一个设计mips的工程师,他说设计单片机从来不把内部看成数字电路,而是一个个模拟的管子,我的体会也是,模拟电路的设计是单片机的基础,设计一个好的单片机,最好是先学好模拟电路设计。

使用特权

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

本版积分规则