打印

PIC系列单片机与MCS-51系列单片机的区别

[复制链接]
3613|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycat2008|  楼主 | 2008-7-29 14:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


应该说有三个主要特点:

     (1)总线结构:MCS-51的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能

同时进行;而PIC的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由

于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC系列单片机中采用了哈佛双总

线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位

的,但指令总线位数分别位12、14、16位。 

      (2)流水线结构:MCS-51的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条

指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样

就实现了单周期指令。
 
    (3)寄存器组:PIC的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需

要一个指令周期就可以完成访问和操作;而MCS-51需要两个或两个以上的周期才能改变寄存器的内容。 
更详细的区别可参考相关书籍

本**来自中国IT实验室http://embed.chinaitlab.com/

相关帖子

沙发
lyjian| | 2008-7-29 14:14 | 只看该作者

晕,都是老掉牙的东西了还拿出来卖

尽管PIC“都只需要一个指令周期就可以完成访问和操作,而MCS-51需要两个或两个以上的周期才能改变寄存器的内容”,
但大部分会出现这样的情况:
MCS51一条指令所完成的功能,PIC至少要两条或以上的指令才能完成。

使用特权

评论回复
板凳
machunshui| | 2008-7-29 14:39 | 只看该作者

看看pic

 针对pic

1.A=B;

movf _B,w
movwf _A

总共: 2指令字,2指令周期


2. C = A+B;

movf    _A,w
addwf    _B,w
movwf    _C

总共: 3指令字,3指令周期


3. A[B] = C;

movf    _B,w
addlw    _A
movwf    4
bcf    3,7
movf    _C,w
movwf    0
总共: 6指令字,6指令周期


4.
for(i = 0; i < 10;i++)
{
A = 1;
}

    clrf    _i
    goto    $2

$1    movf    _i,w
    addlw    _A
    movwf    4
    bcf    3,7
    clrf    0
    incf    0
    incf    _i

$2    movlw    10
    subwf    _i,w
    btfsc    3,0
        return
    goto    $1

运行时间123个指令周期,17个指令字



5.

if(A > 10)
B = 0;
else
B = 1;


         movlw     11
         subwf     _A,w
    clrf    _B
    btfss    3,0
    incf    _B

总共: 5指令字,5指令周期


6.
unsigned char A,B

switch(A)
{
case 0:
B = 10;
break;

case 1:
B = 20
break;

default:
B = 30;
break;
}


    goto    l3
l4
    movlw    10
    movwf    _B
    return
    
l5
    movlw    20
    movwf    _B
    return
    
16
    movlw    30
    movwf    _B
    return

l3
    bcf    3,5
    bcf    3,6    ;carry unused
    movf    _A,w
    xorlw    0
    btfsc    3,2
    goto    l4
    xorlw    1
    btfsc    3,2
    goto    l5
    goto    l6

27指令字,运行9个指令周期

使用特权

评论回复
地板
machunshui| | 2008-7-29 14:46 | 只看该作者

挺51的别光说不练

挺51的别光说不练.

51虽然是一条指令,

但是一条指令不代表快速,也不代表高指令代码率.

51很多条指令是多字节指令和多周期指令.

使用特权

评论回复
5
machunshui| | 2008-7-29 14:54 | 只看该作者

不过楼主,该批评

很多年前的东西,还发到这里,有何意义?

pic比51好在,一直在发展,从最初的功能简单的甚至连中断都没有的pic12到功能强大的pic32,

pic16--->pic18---->pic24(dspic)---->pic32

指令系统cpu内核也一直在改进,改良,

而开发环境,外设模快甚至引脚都保持一定程度的兼容性.

pic系列绝非是架构一百年不便之51可以比的.













使用特权

评论回复
6
chenczy| | 2008-7-29 16:10 | 只看该作者

PIC有PIC的优点,51有51的优点

   我学的是汇编的,在这说一下我的感觉。PIC总的来说要比51快一些(我说的是一般的使用情况),PIC的指令是少,但我觉得学起来没51那么快上手,PIC有好多东西好像都要转弯,没51那么直观,编PIC时要很小心,这是我一个初学PIC的菜鸟的感觉。

使用特权

评论回复
7
machunshui| | 2008-7-29 16:40 | 只看该作者

pic比51架构简单高效

pic比51架构简单高效.

51由于外扩ram,rom导致一些非常奇观不好的特性.

诸如IO驱动能力差,内部RAM小,外部RAM的访问速度慢.

还要就是外设模块少,

结构并不简单.

还有一百多条指令,实在是烦人.


pic的35条指令,非常少,远比51容易学.

使用特权

评论回复
8
machunshui| | 2008-7-29 16:47 | 只看该作者

主要是51太老了

主要是51太老了,

非特殊情况,可以放弃了,

不是就是pic比51好,后出的一大堆诸如430,avr...都比51好.

使用特权

评论回复
9
lyjian| | 2008-7-29 17:08 | 只看该作者

不是51太老了,是因为你只知道老51

用51可以做得更好


1.A1=B1;

    mov    A1,B1
总共: 3字节(=PIC 2指令字),2指令周期
A1、B1可以为RAM地址0~255,如果用PIC,RAM〉32时,2指令字根本做不到。

2. C1 = A1+B1;

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


3. A[B] = C;

movf    _B,w
addlw    _A
movwf    4
bcf    3,7
movf    _C,w
movwf    0
总共: 6指令字,6指令周期
(这个是什么意思,没看懂)

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指令字)



5.

if(A1 > 10)
B1 = 0;
else
B1 = 1;
    mov    B1,#1    
    cjne    A1,#10,CHECK
    ret
CHECK:
    jc    RETURN
    dec    B1
RETURN:
    ret
总共: 8指令字令节(<PIC的5指令字),3指令周期(if A<10),6指令周期(if A1>10),
(使用寄存器寻址)


6.
unsigned char A1,B1

switch(A1)
{
case 0:
B1 = 10;
break;

case 1:
B1 = 20
break;

default:
B1 = 30;
break;
}
    mov    A,A1
    jnz    OTHER_CASE
    mov    B1,#10
    ret
OTHER_CASE:
    djnz    A1,DEFAULT
    mov    B1,#20
    ret
DEFAULT:
    mov    B1,#30
    ret
14指令字节(<PIC的27指令字),运行8个指令周期(<PIC的9个指令周期)
(使用寄存器寻址)

使用特权

评论回复
10
jimoom| | 2008-7-29 17:09 | 只看该作者

不知道楼主要干什么。

使用特权

评论回复
11
常来21ic| | 2008-7-29 17:18 | 只看该作者

好多应用 还不都一模一样的

使用特权

评论回复
12
lyjian| | 2008-7-29 17:25 | 只看该作者

7楼对51了解不多

7楼: pic比51架构简单高效 

pic比51架构简单高效.

51由于外扩ram,rom导致一些非常奇观不好的特性.

诸如IO驱动能力差,内部RAM小,外部RAM的访问速度慢.

还要就是外设模块少,

结构并不简单.

还有一百多条指令,实在是烦人.


pic的35条指令,非常少,远比51容易学.

**********************************
你所说的是八十年代的51,看看现在的新51吧。
没有哪一个比PIC差的。
pic开始只有35条指令,确实够精简的。可笑的是:Microchip为什么没有继续努力把指令再进一步精简,反而在新的PIC中把指令增加到了七八十条? 
 

使用特权

评论回复
13
mohanwei| | 2008-7-29 17:31 | 只看该作者

按照这种比法,应该拿C8051F120和PIC12C508比,哈哈

再看看结论如何……

使用特权

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

PIC并不比51容易学

7楼: pic比51架构简单高效 

pic比51架构简单高效.

51由于外扩ram,rom导致一些非常奇观不好的特性.

诸如IO驱动能力差,内部RAM小,外部RAM的访问速度慢.

还要就是外设模块少,

结构并不简单.

还有一百多条指令,实在是烦人.


pic的35条指令,非常少,远比51容易学 
 
***************************************** 
 
虽然PIC只有35条指令,但这并不能说明它比51容易学
确实,如果光是记指令的话,PIC确实要比51占优势
可惜的是,学单片机不单单是记住指令就算学会单片机了
PIC的RAM分Bank,ROM分Page有多少初学者会觉得它容易
51确实难学一点,但只要学会了,所有的51都能拿来就用,不管哪个厂家的哪个型号,基本不需要再什么看资料都能马上上手。
PIC却不行,换个不同的型号还得重新把规格书仔细研究一遍才行,你得仔细研究这个芯片的该在哪“Page”,该在哪“Bank”;还得看看原来可以用的“Register”是不是被IO又给占了;要用IO或功能模块你得先这“Bank”一下那“Bank”一下,等“Bank”了好几下之后终于可以用了(出了一口气:我容易吗?)


使用特权

评论回复
15
machunshui| | 2008-7-29 22:59 | 只看该作者

关于pic的分段,分页问题

关于pic的分段,分页问题.

跳转分段错误有编译警告,分页有banksel,bankisel伪指令,

跳转分段有pagesel,

根本就不用烦神.


小片子用汇编写,本来就是要求清楚内存地址位置,即使手工分页,也没有什么吧?

使用特权

评论回复
16
machunshui| | 2008-7-29 23:02 | 只看该作者

要是用C的话

要是用C的话,还有分段分页问题吗?

相反,

51不是说什么难学,而是没有价值.

使用特权

评论回复
17
machunshui| | 2008-7-30 08:06 | 只看该作者

google 一下c8051f抗干扰

google 一下c8051f抗干扰.

借用51的壳,强行提高频率,

后果必然是产品的其他性能的确实.

毛病一堆的东西,没什么比头.

使用特权

评论回复
18
5880527| | 2008-7-30 09:11 | 只看该作者

我一直在用c8051f

用于工业控制,没见得啥不好的,和变频器,步进,伺服,放同一电箱里,当然里面还有一大堆接触器啥的,几年下来没见得死过机误动作什么的。只是唯一有个现象很奇怪,本本在给它现场编程时一般本本都会死,台式机也会死,所以很多时候不敢在现场编程

使用特权

评论回复
19
lyjian| | 2008-7-30 09:24 | 只看该作者

抗干扰不是某一个芯片决定的

抗干扰体现的是整体系统的设计水平。
楼上这样说给人的感觉就是一个初哥儿的水平。

51要是没价值的话就不会从1980年推出来到现在还那么有活力。
也不会有上百家芯片厂家选择51核来做单片机。

C8051F如果都是由你这类的初哥儿来用的话,我相信确实会抗干扰较差:因为像你这类的使用者只会依赖一个芯片,产品出问题的时候你只会埋怨的是芯片抗干扰能力差。为什么就不会去思考一下:是不是自己的水平有限造成的?

51要是没价值的话,没有工控产品会用它。
令人欣慰的是:现在大部分工控产品选用的8位机几乎都是51,反而用PIC的寥寥无几。
51有没价值不是由你来说了算的。

楼上说PIC可以用C,就好像51不能用C一样。51用C的时候,PIC还在娘胎里没出来呢?可笑的是PIC用的语言也好意思叫C!

使用特权

评论回复
20
machunshui| | 2008-7-30 10:28 | 只看该作者

那种强调完全是设计问题,不负责任在误导

那种强调完全是设计问题,不负责任在误导!

虽然,电源,布板,接地等一大堆处理好了,可能抗干扰差的片子,能工作的不错.

但是,仍然不敢说实际产品就不会有问题.

不承认片子本身抗干扰有差别,就是不尊重事实.

鉴于实际情况的复杂性,当然没有必要选择抗干扰差的片子.

使用特权

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

本版积分规则

88

主题

103

帖子

0

粉丝