打印

单片机指令大比拼

[复制链接]
楼主: machunshui
手机看帖
扫描二维码
随时随地手机跟帖
21
machunshui|  楼主 | 2008-7-29 20:22 | 只看该作者 回帖奖励 |倒序浏览

看来pic16的跳转和间接寻址操作效率确实比较低

看来pic16的跳转和间接寻址操作效率确实比较低.

真没想到,我出了一段最能体现pic劣势的代码.

关于RAM,

pic16一页128字节.

换页的情况是有的.

但是在对集中与一页的RAM空间的操作上,pic16还是高效率的吧?


关于51的RAM间接地址操作,虽然简直操作本身是一个字节,

但是地址总要导入寄存器,才能谈的上寻址,

还是要占用一个字节的.

使用特权

评论回复
22
xwj| | 2008-7-29 20:34 | 只看该作者

说到指令pic是最差的,基本上谁都比它好

就更别说间址、中断了

使用特权

评论回复
23
lyjian| | 2008-7-29 20:43 | 只看该作者

楼主又错了

关于51的RAM间接地址操作,虽然简直操作本身是一个字节,

但是地址总要导入寄存器,才能谈的上寻址,

还是要占用一个字节的.
*********************************************
难道PIC的地址不需要导入寄存器?
PIC不需要占用字节?
PIC用W寄存器作中介,51用A寄存器作中介,这有什么区别。

使用特权

评论回复
24
lyjian| | 2008-7-29 21:04 | 只看该作者

即使集中在一页中,PIC也不比51高效

22楼: 看来pic16的跳转和间接寻址操作效率确实比较低 

看来pic16的跳转和间接寻址操作效率确实比较低.

真没想到,我出了一段最能体现pic劣势的代码.

关于RAM,

pic16一页128字节.

换页的情况是有的.

但是在对集中与一页的RAM空间的操作上,pic16还是高效率的吧?


关于51的RAM间接地址操作,虽然简直操作本身是一个字节,

但是地址总要导入寄存器,才能谈的上寻址,

还是要占用一个字节的.
************************************************
51可以直接RAM to RAM,PIC行吗?
还有PIC16虽然一页可以寻址128字节,但实际每页只有80字节才是可以使用的RAM(Bank0多一点为96B),每页的顶部是都影射到Bank0,不小心就数据冲突了。
 

使用特权

评论回复
25
machunshui|  楼主 | 2008-7-29 22:18 | 只看该作者

广义上说pic当然可以RAM to RAM

使用特权

评论回复
26
machunshui|  楼主 | 2008-7-29 22:21 | 只看该作者

广义上说pic当然可以RAM to RAM

MOVFF,

只不过pic18而已.

51的RAM to RAM,双字节,2指令周期.
没有什么优势.

使用特权

评论回复
27
machunshui|  楼主 | 2008-7-29 22:24 | 只看该作者

关于51操作外部ram的间址操作

关于51操作外部ram的间址操作,

算上对间址寄存器的操作

本质上来讲仍然是2字节,2周期.

使用特权

评论回复
28
machunshui|  楼主 | 2008-7-29 22:45 | 只看该作者

看来pic的指令效率确实要低一些

看来pic的指令效率确实要低一些,

不过这也是正常的,

精简指令指令数目少,要是比复杂指令效率高,反而倒是不正常了.


不过51仍然是明日黄花,没有太多的价值.

使用特权

评论回复
29
lyjian| | 2008-7-30 10:00 | 只看该作者

楼主尽在说胡话

建议你在做对比前把做对比的双方做足够了解后再说话好不好?
*******************************************************
28楼: 关于51操作外部ram的间址操作 

关于51操作外部ram的间址操作,

算上对间址寄存器的操作

本质上来讲仍然是2字节,2周期.
********************************************************
本质上讲你是在打肿脸充胖子,不懂装懂。

PIC的间址操作(写一个字节到指定地址的RAM中):
movlw  0Xx1
movwf  FSR
movlw  0Xx2
movwf  INDEX0
...
(4指令字,4指令周期)

51的间址操作(写一个字节到指定地址的RAM中):
mov    R0,#x1H
mov    A,#x2H
mov    @R0,A
...
(5指令字节,3指令周期)
51的间址操作(写一个字节到指定地址的XRAM中):
mov    R0,#x1H
mov    A,#x2H
movx   @R0,A
...
(5指令字节,4指令周期)

使用特权

评论回复
30
machunshui|  楼主 | 2008-7-30 11:41 | 只看该作者

好像不大符合题意

4.
for(i = 0; i < 10;i++)
{
A = 1;
}
    mov    R0,#9
    mov    A,#1
LOOP:
    mov    @R0,A
    djnz    R0,LOOP
    mov    @R0,A
    ret
运行时间30个指令周期(<PIC的123个指令周期),8个指令节(<PIC的17指令字)



A[]是一个数组,地址是任意的,假设首地址为_A,

上面的这段
没有实现把任意首地址一段数组置1吧??





2. C1 = A1+B1;

    mov    A,A1
    add     A,B1
    mov     C1,A
总共: 3字节(A1,B1,C1使用寄存器),3指令周期。


pic实现的本意也是实现两个存储单元相加,存到第三个存储单元,

意思是考查,单片机的存储,运算能力.

要比较,也要是同等条件下,

再说C1,A1,B1作为三个变量,直接假设在已经寄存器里面,是不对的

使用特权

评论回复
31
lyjian| | 2008-7-30 11:50 | 只看该作者

51要任意的地址也行,就是PIC不行

51要任意的地址也行,就是PIC不行
PIC要是落在两页之中还得忙着换页

for(i = 0; i < 10;i++)
{
A = 1;
}
    mov    R0,#10
    mov    R1,#ADDR
    mov    A,#1
LOOP:
    mov    @R1,A
    djnz   R0,LOOP
    inc    R1
    ret
运行时间43个指令周期(<PIC的123个指令周期),10个指令节(<PIC的17指令字)
同样优于PIC多多

使用特权

评论回复
32
machunshui|  楼主 | 2008-7-30 11:53 | 只看该作者

还有呢?


2. C1 = A1+B1;

使用特权

评论回复
33
lyjian| | 2008-7-30 11:54 | 只看该作者

即使不在寄存器中也不必PIC差

2. C1 = A1+B1;

    mov    A,A1
    add    A,B1
    mov    C1,A
总共: 6字节(=PIC的3指令字),3指令周期

使用特权

评论回复
34
lyjian| | 2008-7-30 11:56 | 只看该作者

上面指令51在RAM 0~FF都可以,PIC行吗?

使用特权

评论回复
35
machunshui|  楼主 | 2008-7-30 13:32 | 只看该作者

pic当然可以啊

pic当然可以啊.

pic18一页RAM,256字节.

pic18有快速寄存器堆栈,硬件现场保护系统寄存器,

51有吗?

pic24有除法器,单周期乘法器,

51有吗?


有意思吗???

没有又怎么样呢?



不是说51的CISC比pic同MIPS下效率高一点,51就好了.
对应到实际产品51日落西山是不争的事实.
(这个不是这个帖子要说得,楼上挺51,那就顺便提一句)


使用特权

评论回复
36
lyjian| | 2008-7-30 14:05 | 只看该作者

拿一个16bit的PIC来和51比,楼主羞不羞?

pic18确实一页256字节只不过要频繁换页而已
pic18一条指令要么16bit要么32bit,51多少
51的堆栈设计可以让用户灵活保护现场及传递参数,PIC行吗
最老的51一开始就有了除法器/乘法器,PIC到了第几代才有
51有16bit的MAC,PIC有吗

说51日落西山只是楼主认为的事实
是楼主不做任何了解就下的结论
51能从推出来到现在将近30年屹立不倒,能从当时只有一个厂家生产到现在有几百个厂家生产,这是PIC能比的吗
什么是工业标准核?51就是工业标准核!
有没人叫工业标准PIC核?
楼主如果真想对单片机作比较的话,最好去了解它的过去和现在
不要拿着当年Intel的8031H在这里狂叫:51日落西山!
要知道8031H是1980年的产品,现在都2008年了,奥运都开了,你还在怀旧1980年的51。
有本事拿PIC和C8051F120来比
有本事那PIC的位处理指令来和51的位处理指令来比

使用特权

评论回复
37
HWM| | 2008-7-30 14:20 | 只看该作者

MCS-51和PIC至少不是一个年代的东西,老子与儿子有什么好比

使用特权

评论回复
38
machunshui|  楼主 | 2008-7-30 14:34 | 只看该作者

同一时期的情况

同一时期的情况是:

早期的pic16 5MIPS  普通51多少?

pic24H,  16位cpu, 40MIPS,中档51多少?

dspic带有dsp结构,51有吗?

pic32,32位, 80 MHz, 1.56 DMIPS/MHz, 是8051f能比的吗?


如果作为pic16同期的51相比,51当然不能比,12个时钟周期,有多少个MIPS?

使用特权

评论回复
39
wlq_9| | 2008-7-30 14:35 | 只看该作者

我不爽51的原因是

LS很多人讲的时候,RAM都指的是内部直接寻址或者是R间址的那小小的2百多个字节空间.一旦出了这个范围,效率奇低!
现在做做小东西,那点RAM肯定是够了,但横向地看过来,集成大RAM的细分市场越来越大!也就是51架构越来越显老态!
现在部分51已经开始集成128K FLASH,1K/2K的RAM.可惜,架构并没有改变,对于这些资源,执行的效率比起别单片机来就没有优势了.
照着电子技术发展的趋势,FLASH和RAM的成本肯定会越来越低,如果一个人还老抱着51不放的话,即使将来51能集成几十K的RAM,几百K的FLASH,你们还敢说51效率高???
PIC再改进结构出来个PIC64,谁又敢说PIC效率低???
现在有这许多的片子ARM,430,PIC,AVR,68K,不谈应用方向和系统构成,空谈效率无意义!

使用特权

评论回复
40
aihe| | 2008-7-30 14:36 | 只看该作者

又有人掐架了,好玩,我也凑凑热闹

觉得PIC最好用的就是位处理能力

使用特权

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

本版积分规则