找回密码
 注册
关于网站域名变更的通知
查看: 283|回复: 0
打印 上一主题 下一主题

常用单片机进行比较

[复制链接]
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2024-12-18 17:25 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    - `( l) m. f0 K9 a% W
    6 r2 h8 @' f; l1 R5 i1 p' @- I% R
    八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较,供读者在使用时作参考。
      r5 d$ Z: ]; P+ g2 z8 @. p2 Y  Z0 k# P
    1.xa051系列6 [& n1 x$ F" c4 H. J. i) T
    ' }; T+ j' c  i+ ~, ~4 g
    应用最广泛的八位单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准mcu芯片。
    8 o7 T/ v" @$ g  o8 ]9 J0 u2 C3 _' v* Q5 i* a+ f
    51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H~2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00H~7FH),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令即可。7 `# T, b, h& }9 n" \; @

    - l- l; S& R5 z+ B8 Q$ T5 `例1:如对21H的第0位(相应位地址为08H)置位,只需用一条位指令,5 ?& _7 d7 ^' M, k, R9 i
    , S! P% ^% ^  E2 g
    SETB08H
    : j9 K# g! a. M8 A0 v8 A2 \% E, e4 x* T& W
    对周围的其他位不会产生影响。0 N6 `: L. b7 C3 S

    & B7 T3 o7 K: v4 ~8 c; n. U有的单片机并不能直接对RAM单元中的位进行操作,如系列单片机中,若想对RAM中的某位置位时,必须通过状态寄存器SREG的T位进行中转。2 @8 h& a& p2 f2 L& M' Y! v  ^, y

      U  ~6 H* [& \! ?/ X' {9 Q% `  C例2:如对RAM中的R0寄存器的第4位置位,则
    * A+ G- |  R3 l9 o: V: w+ O  ?, y
    : q# X0 V0 d* W4 h6 m' X5 e2 QBSET6xa0;状态寄存器T置位9 b( g7 T; f9 b# Y8 D) k8 K

    - z; `$ J7 O2 f8 }5 wBLDxa0R0,xa04xa0;将T位复制到R0的第4位
    # J. o; F9 n' O$ v' ]7 P/ L) ^3 `3 g: r
    显然,后者比前者要复杂。
    # B! o$ P' W' B3 x/ u2 E0 R. q
    , G. |& l" E+ R; W( k) f) `! [$ N51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度嫌不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度还是能满足要求的,用的较多。作乘法时,只需一条指令就行了,即xa0MULAB(两个乘数分别在累加器A和寄存器B中。积的低位字节在累加器A中,高位字节在寄存器B中)。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。$ n+ z" |7 A8 W  }
    0 a/ J1 A" K. K/ A  R
    在51系列中,还有一条二进制-十进制调整指令xa0DA,能将二进制变为BCD码,这对于十进制的计量十分方便。而在其他的单片机中,则也需调用专用的子程序才行。
    6 n; O/ _2 a: ~1 w/ |- f" h0 T8 M! b$ L% W; p* h; m/ S( y; j
    Intel公司51系列的典型产品是8051,片内有4K字节的一次性程序存储器(OTP)。Atmel公司就将其改为电可改写的闪速存储器(Flash),容许改写1000次以上,这给编程和调试带来极大的便利,其产品AT89、AT89C52xa0……等成为了当今最流行的八位单片机。+ E" B; v+ l' G, Y7 _2 S

    4 L4 r  ]: I  }; [. d51系列的I/O脚的设置和使用非常简单,当该脚作输入脚使用时,只须将该脚设置为高电平(复位时,各I/O口均置高电平)。当该脚作输出脚使用时,则为高电平或低电平均可。低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十μA甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力。其原因是高电平时該脚也同时作输入脚使用,而输入脚必须具有高的输入阻抗,因而上拉的电流必须很小才行。作输出脚使用,欲进行高电平驱动时,得利用外电路来实现(见附图),I/O脚不通,电流经R驱动LED发光;低电平时,I/O脚导通,电流由该脚入地,LED灭(I/O脚导通时对地的电压降小于1V,LED的域值1.5~1.8V)。8 n/ b# R  z% N

    $ V. @# ?" Q- {$ ^51系列I/O脚使用简单,但高电平时无输出能力,可谓有利有弊。故其他系列的单片机(如PIC系列、AVR系列等)对I/O口进行了改进,增加了方向寄存器以确定输入或输出,但使用也变得复杂。% ?. P, ^. y) m  T$ R# M( C9 A

    8 z9 |7 n8 c9 p) o( X) \一些简装的51产品也相应出现,如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(闪速存储器分别为1K、2K、4K等,但不能外接数据存储器),指令系统与AT89C51完全兼容,但引脚均为20脚,不光体积小,而且价格低廉,这使得其他的公司竞相仿照。
    * B$ K! [5 a4 P$ j0 @' v
    - d- c. E6 q/ M不过,原51系列也有许多值得改进之处,如运行速度过慢等。当晶振频率为12MHz时,机器周期达1μs,显然适应不了现代高速运行的需要。华邦公司(Winbond)生产的产品型号为W77系列和W78系列,W78系列与AT89C系列完全兼容。W77系列为增强型,对原有的8051的时序作了改进,每个机器周期从12个时钟周期改为4个周期,使速度提高了三倍,同时,晶振频率最高可达40MHz。W77系列还增加了看门狗WatchDog、两组UART、两组DPTR数据指针、ISP等多种功能。
    0 E6 ^9 M6 j6 \- m9 k
    + m. M+ Q$ h" `. h" R6 S0 l8 T特别是双数据指针,能给编程带来很大的便利。在51系列中,数据指针DPTR是片内与片外的数据存储器打交道的主要途径(由片外数据存储器读入片内累加器A或由片内累加器Axa0写入片外数据存储器),也是程序存储器与累加器A之间的数据传送的必由之路。由于频繁的数据交换,特别是数据块的搬运和比较,数据指针非常吃紧,它需要不断地实施现场保护与还原,不光编程变得复杂,而且运行速度也减慢。而当采用两个数据指针时,可以各负其责,互不相扰,轻松地完成上述过程。两个数据指针的选取取决于特殊功能寄存器AUXR1的第D0位DPS。当DPS为0时,选中数据指针DPTR0(复位时DPS也为0);DPS为1时,选中数据指针DPTR1。DPS位不能位寻址,故不能进行布尔操作,但由于AUXR1的D1位被强制为逻辑“0”,不可能发生由D0位向D1位进位之可能,因而可以通过对AUXR1进行增1来使D0位由0变为1或由1变为0,从而达到双数据指针的快速切换的目的,如:
    ) E% x  [  O+ R! }% B& G* s2 l4 ?  T, S+ Q$ ^* u- a0 n2 m8 _! r
    例3:: O- L3 {) l0 S- n$ ]! E

    8 V6 }/ b! F0 F4 N0 _" m5 k1 Z. LMOVAUXR1,#0xa0;xa0DPS为0,DPTR0有效
    & U( D8 }1 I8 J3 ?
    2 j1 C1 C. R$ |) ?) n; g# p……
    5 W( D* b/ a5 w1 L6 o; Y! e5 K7 O6 Q; _/ T
    INCxa0AUXR1xa0;xa0DPS为1,DPTR1有效& n  g( @3 M4 T; B% S$ r( b

    & y7 r- N$ e" e' B# N5 Z) H5 r, \; _……0 L, X3 ~: H0 `8 r0 T: ~
    , g# T9 n7 {; D
    INCxa0AUXR1xa0;xa0DPS为0,DPTR0有效
    $ t$ _( }* o  Z5 @, E7 O4 G; w4 n
    ) r6 J$ ?+ {) X: e4 B……7 s& w) r: r9 r
    , f7 x$ I/ I; z8 X8 U
    ISP功能能实现在系统可编程,可以省去通用的编程器,单片机在用户板上即可下载和烧录用户程序,而无需将单片机从生产好的产品上取下。未定型的程序还可以边生产边完善,加快了产品的开发速度,减少了新产品因软件缺陷带来的风险。由于可以将程序下载并观看运行结果,故也可以不用仿真器。
    9 }7 }9 [6 d1 V* w7 v0 M1 I2 `+ n3 G9 {( }8 W* l3 I+ @$ r* t- i
    单片机的提速运行、双数据指针及ISP功能并非是W77系列所特有的,一些新的型号的51系列产品大都有该功能,如Philips的51LPC系列、AT89系列中的某些型号、STC89C系列等等。有的单片机还附有A/D、D/A转换、片内EEPROM数据存储器、PWM输出、I2C总线、上电复位检测、欠压复位检测等等,这些新系列的单片机,它们都兼容8051的指令系统。增强功能的实现,大都是由片内新增的特殊功能寄存器来进行设置,这些寄存器被安排在片内特殊功能寄存器区间(80~FFH)的预留地址上。7 B8 x- W  \# Q4 d5 G
    . n4 k( a& p/ ]  b' L5 P' g3 [
    比较有代表性的产品还有STC89C51RC、C8051F331/330等等。可以这么说,新的51产品几乎可以涵盖所有新的功能。由于新型号的芯片种类太多,此处不可能一一列举,读者可根据使用的需求查阅相关的资料.
    : J% _8 {+ S' z) j7 x; j9 K) x7 d/ z) G4 R7 @: \
    2.PIC系列
    % n4 e2 o$ H$ V; M
    ! D2 |( q' M" p5 H* t! P: X; Q& r4 u系列是美国微芯公司(Microship)的产品,是当前市场份额增长最快的单片机之一。CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。采用Harvard双总线结构,运行速度快(指令周期约160~200ns),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机共分三个级别,即基本级、中级、高级。其中又以中级的PIC16F873(A)、PIC16F877xa0(A)xa0用的最多,本文以这两种单片机为例进行说明。这两种芯片除了引出脚不同外(PIC16F873(A)为28脚的PDIP或SOIC封装IC16F877(A)为40脚的PDIP或44脚的PLCC/QFP封装),其他的差别并不很大。
    ' Z: h" Q% F( f1 a# X
    / G/ Z3 c: l6 B( |1 s: ePIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器(TRISnxa0,xa0其中n对应各口,如A、B、C、D、E等),从而解决了51系列I/O脚为高电平时同为输入和输出的状态。当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点,它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程(ISP)功能。0 z( m: w0 q  N, a7 u/ k, Z

    ) c! P9 b( x# v6 w! L' |* Y& f该系列单片机的专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内,即存储体0(Bank0:00~7FH)、存储体1(Bank1xa0:80~FFH)、存储体2(Bank2xa0:100~17FH)、存储体3(Bank3xa0:180~1FFH)。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、xa0INTCON在4个存储体内同时出现。在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。如:
    ' {2 R6 o2 a5 |8 i
    2 m, F& N6 \( o8 e' J例4:
    ( N& g5 h- b) o6 Y- K3 O8 R
    % S1 J9 j* |" B$ h% r! T9 a$ P6 G- wCLRFSTATUSxa0;清零RP1,xa0RP0。选择存储体0/ J8 L! H( N6 H4 g+ o

    9 H$ y$ Y: K/ i' o3 K7 M……
    1 o/ t1 {, L* X2 K0 E& S1 i- o1 e
    7 I5 E" M: C7 e4 @+ I- [7 \BSFxa0STATUS,RP0;置位RP0。选择存储体1* E$ U5 f7 `  Z- Q
    $ ~! @8 w1 l, e& u2 t5 R. c$ F
    ……
    . S1 I" M$ q4 o  G1 u
    0 {  ?! B+ I  g8 }* HBCFxa0STATUS,RP0;清零RP0。选择存储体0
    , e! T0 O  ?- U, C5 S" Z2 C( Q- i! D
    ……; P: M+ ^; q2 \9 J. \

    2 s8 A) Q' w; t- r这多少给编程带来了一些麻烦。对于上述的单片机,它的位指令操作通常限制在存储体0区间(00~7FH)。0 x, B# x8 P% ^: v$ c* V) Q

    * L3 k: o7 `- ]; l: y$ `数据的传送和逻辑运算基本上都得通过工作寄存器W(相当于51系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送(如:MOVxa030H,20H;将寄存器20H的内容直接传送至寄存器30H中),因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中很有感受。
    7 C, h' c" _9 e1 A, I
      I8 X7 X3 Y9 h/ v5 ^1 ]3.AVR系列
      v) ^0 O& [# v9 w' I/ l0 {: s, c9 z0 ^# g. ^' }4 b
    AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故最短指令执行时间为250~125ns。该系列的型号较多,但可用下面三种为代表:AT90S2313(简装型)、AT90S8515、AT90S8535(带A/D转换)。* y' d  r. h1 O. {/ x
    . o& c! x2 ~! ~0 @* S; F
    通用寄存器一共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接与立即数打交道,显然要优于前者。
    - g0 w2 M7 j& h& f% |9 t7 f) u  L: c) \8 k$ o# k% q7 x; m5 Z
    AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行,如:
    3 i( v" x8 y: j, z& @
    ( }# Q0 h/ m$ `例5:
    $ C! B8 I% k) `/ \! M) T! j' a" \  }' @+ u- M
    LDRd,xa0Xxa0;将X所指的地址的内容装入寄存器Rd中。9 x( s/ w9 D5 l# d
    , |# Y  Q) q% f' L8 d  r' G
    LDRd,Y+;将Y所指的地址的内容装入寄存器Rd. L! a2 H4 I8 h3 I4 L
    " p' }3 g8 A1 \, G& S
    中,然后Y的地址增1。
      s- m, U# H5 Q+ x$ q3 _2 ~) v: N( B
    ; t- E- k: @+ x" P7 mLDRd,-Xxa0;将X的地址减1所指的地址的内容装入
    * \2 y0 U. D8 H! n" K
    : _2 e) i+ a, f. m% W( d. R# @寄存器Rd中。. L, d/ D3 q! [+ [' X
    ) L# i. H2 g  o
    在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列强。
    , ?1 K1 S9 ^; N; @( d. @6 q) }! q" z  M9 c8 B7 }: R
    AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间为0060~$00DF(AT90S2313)xa0和xa00060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。
    / f4 Q1 l) \0 q$ {( P8 i
    ( E0 P1 i7 a1 GAVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。虽不如PIC,但比51系列强。
    1 P- Q$ j: C* ~( v3 @& K
    0 \2 l% }7 a9 w/ C以上的三种AVR型号其管脚与对应的51系列兼容,如AT90S2313与51系列的AT89C2051的管脚兼容(PDIP-20脚),AT90S8515、AT90S8535与51系列的AT89C51兼容
    * T* C- q8 J* M) B
    ( ?* S/ V  ~/ M& {8 ~
    7 A; L& y6 L' y7 ]9 B
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-24 04:44 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表