您的位置 首页 解答

AVR/C51和PIC八位单片机功能比较

八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由

八位单片机因为内部结构简略,体积小,本钱低价,在一些较简略的操控器中运用很广。即使到了本世纪,在单片机运用中,仍占有适当的比例。因为八位单片机品种繁复,本文仅将常用的几种在性能上作一个简略的比较,供读者在运用时作参阅。

1. 51系列

  运用最广泛的八位单片机首推Intel的51系列,因为产品硬件结构合理,指令体系规范,加之出产前史“悠长”,有先入为主的优势。国际有许多闻名的芯片公司都购买了51芯片的中心专利技术,并在其基础上进行性能上的扩大,使得芯片得到进一步的完善,构成了一个巨大的体系,直到现在仍在不断创新,把单片机国际炒得沸反盈天。有人估测,51芯片或许终究构成事实上的规范MCU芯片。

  51系列长处之一是它从内部的硬件到软件有一套完好的按位操作体系,称作位处理器,或布尔处理器。它的处理目标不是字或字节而是位。它不但能对片内某些特别功用寄存器的某位进行处理,如传送、置位、清零、测验等,还能进行位的逻辑运算,其功用十分齐备,运用起来称心如意。尽管其他品种的单片机也具有位处理功用,但能进行位逻辑运算的实属罕见。51系列在片内RAM区间还特别拓荒了一个两层功用的地址区间,十六个字节,单元地址20H~2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00H~7FH),运用极为灵敏。这一功用无疑给运用者供给了极大的便当,因为一个较杂乱的程序在运转进程中会遇到许多分支,因此需树立许多标志位,在运转进程中,需求对有关的标志位进行置位、清零或检测,以确认程序的运转方向。而施行这一处理(包含前面一切的位功用),只需用一条位操作指令即可。

  例1:如对21H的第0位(相应位地址为08H)置位,只需用一条位指令,
   SETB08H
  对周围的其他位不会产生影响。
  有的单片机并不能直接对RAM单元中的位进行操作,如AVR系列单片机中,若想对RAM中的某方位位时,有必要经过状况寄存器SREG的T位进行中转。
  例2:如对RAM中的R0寄存器的第4方位位,则
  BSET6 ;状况寄存器T置位
  BLD R0, 4 ;将T位复制到R0的第4位
  明显,后者比前者要杂乱。

  51系列的另一个长处是乘法和除法指令,这给编程也带来了便当。八位除以八位的除法指令,商为八位,精度嫌不行,用得不多。而八位乘八位的乘法指令,其积为十六位,精度仍是能满意要求的,用的较多。作乘法时,只需一条指令就行了,即 MULAB(两个乘数别离在累加器A和寄存器B中。积的低位字节在累加器A中,高位字节在寄存器B中)。许多的八位单片机都不具有乘法功用,作乘法时还得编上一段子程序调用,十分不便当。

  在51系列中,还有一条二进制-十进制调整指令 DA,能将二进制变为BCD码,这关于十进制的计量十分便当。而在其他的单片机中,则也需调用专用的子程序才行。

  Intel公司51系列的典型产品是8051,片内有4K字节的一次性程序存储器(OTP)。Atmel公司就将其改为电可改写的闪速存储器(Flash),容许改写1000次以上,这给编程和调试带来极大的便当,其产品AT89C51、AT89C52 ……等成为了当今最盛行的八位单片机。

  51系列的I/O脚的设置和运用十分简略,当该脚作输入脚运用时,只须将该脚设置为高电平(复位时,各I/O口均置高电平)。当该脚作输出脚运用时,则为高电平或低电平均可。低电平时,吸入电流可达20mA,具有必定的驱动才能;而为高电平时,输出电流仅数十μA乃至更小(电流实际上是由脚的上拉电流构成的),基本上没有驱动才能。其原因是高电平时該脚也一起作输入脚运用,而输入脚有必要具有高的输入阻抗,因此上拉的电流有必要很小才行。作输出脚运用,欲进行高电平驱动时,得运用外电路来完结,I/O脚不通,电流经R驱动LED发光;低电平时,I/O脚导通,电流由该脚入地,LED灭(I/O脚导通时对地的电压降小于1V,LED的域值1.5~1.8V)。

  51系列I/O脚运用简略,但高电平时无输出才能,可谓有利有弊。故其他系列的单片机(如PIC系列、AVR系列等)对I/O口进行了改善,增加了方向寄存器以确认输入或输出,但运用也变得杂乱。

  一些精装的51产品也相应呈现,如Atmel公司的AT89C1051、AT89C2051、AT89C4051等(闪速存储器别离为1K、2K、4K等,但不能外接数据存储器),指令体系与AT89C51彻底兼容,但引脚均为20脚,不但体积小,并且价格低价,这使得其他的公司竞相模仿。

  不过,原51系列也有许多值得改善之处,如运转速度过慢等。当晶振频率为12MHz时,机器周期达1μs,明显习惯不了现代高速运转的需求。华邦公司(Winbond)出产的产品类型为W77系列和W78系列,W78系列与AT89C系列彻底兼容。W77系列为增强型,对原有的8051的时序作了改善,每个机器周期从12个时钟周期改为4个周期,使速度提高了三倍,一起,晶振频率最高可达40MHz。W77系列还增加了看门狗WatchDog、两组UART、两组DPTR数据指针、ISP等多种功用。

  特别是双数据指针,能给编程带来很大的便当。在51系列中,数据指针DPTR是片内与片外的数据存储器打交道的首要途径(由片外数据存储器读入片内累加器A或由片内累加器A 写入片外数据存储器),也是程序存储器与累加器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,然后到达双数据指针的快速切换的意图,如:

  例3:
  MOVAUXR1,#0 ; DPS为0,DPTR0有用
   ……
  INC AUXR1 ; DPS为1,DPTR1有用
   ……
   INC AUXR1 ; DPS为0,DPTR0有用
   ……

  ISP功用能完结在体系可编程,能够省去通用的编程器,单片机在用户板上即可下载和烧录用户程序,而无需将单片机从出产好的产品上取下。未定型的程序还能够边出产边完善,加快了产品的开发速度,减少了新产品因软件缺陷带来的危险。因为能够将程序下载并观看运转成果,故也能够不必仿真器。

  单片机的提速运转、双数据指针及ISP功用并非是W77系列所特有的,一些新的类型的51系列产品大都有该功用,如Philips的51LPC系列、AT89系列中的某些类型、STC89C系列等等。有的单片机还附有A/D、D/A转化、片内EEPROM数据存储器、PWM输出、I2C总线、上电复位检测、欠压复位检测等等,这些新系列的单片机,它们都兼容8051的指令体系。增强功用的完结,大都是由片内新增的特别功用寄存器来进行设置,这些寄存器被安排在片内特别功用寄存器区间(80~FFH)的预留地址上。

  比较有代表性的产品还有STC89C51RC、C8051F331/330等等。能够这么说,新的51产品简直能够包括一切新的功用。因为新类型的芯片品种太多,此处不或许一一列举,读者可根据运用的需求查阅相关的材料.

 2.PIC系列

  PIC单片机系列是美国微芯公司(Microship)的产品,是当时市场比例增加最快的单片机之一。CPU选用RISC结构,别离有33、35、58条指令(视单片机的等级而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者杂乱。选用Harvard双总线结构,运转速度快(指令周期约160~200ns),它能使程序存储器的拜访和数据存储器的拜访并行处理,这种指令流水线结构,在一个周期内完结两部分作业,一是履行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(单个在外),这也是高效率运转的原因之一。此外,它还具有低作业电压、低功耗、驱动才能强等特色。PIC系列单片机共分三个等级,即基本级、中级、高档。其间又以中级的PIC16F873(A)、PIC16F877 (A) 用的最多,本文以这两种单片机为例进行阐明。这两种芯片除了引出脚不同外(PIC16F873(A)为28脚的PDIP或SOIC封装;PIC16F877(A)为40脚的PDIP或44脚的PLCC/QFP封装),其他的不同并不很大。

  PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状况的方向寄存器(TRISn , 其间n对应各口,如A、B、C、D、E等),然后处理了51系列I/O脚为高电平时同为输入和输出的状况。当置位1时为输入状况,且不论该脚呈高电平或低电平,对外均呈高阻状况;置位0时为输出状况,不论该脚为何种电平,均呈低阻状况,有适当的驱动才能,低电平吸入电流达25mA,高电平输出电流可达20mA。相关于51系列而言,这是一个很大的长处,它能够直接驱动数码管显现且外电路简略。它的A/D为10位,能满意精度要求。具有在线调试及编程(ISP)功用。

  该系列单片机的专用寄存器(SFR)并不像51系列那样都会集在一个固定的地址区间内(80~FFH),而是涣散在四个地址区间内,即存储体0(Bank0:00~7FH)、存储体1(Bank1 :80~FFH)、存储体2(Bank2 :100~17FH)、存储体3(Bank3 :180~1FFH)。只要5个专用寄存器PCL、STATUS、FSR、PCLATH、 INTCON在4个存储体内一起呈现。在编程进程中,少不了要与专用寄存器打交道,得重复地挑选对应的存储体,也即对状况寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。如:

  例4:
  CLRFSTATUS ;清零RP1, RP0。挑选存储体0
   ……
  BSF STATUS,RP0;置位RP0。挑选存储体1
   ……
  BCF STATUS,RP0;清零RP0。挑选存储体0
   ……

  这多少给编程带来了一些费事。关于上述的单片机,它的位指令操作一般约束在存储体0区间(00~7FH)。

  数据的传送和逻辑运算基本上都得经过作业寄存器W(适当于51系列的累加器A)来进行,而51系列的还能够经过寄存器相互之间直接传送(如:MOV 30H,20H;将寄存器20H的内容直接传送至寄存器30H中),因此PIC单片机的瓶颈现象比51系列还要严峻,这在编程中很有感触。

3.AVR系列

  AVR单片机是Atmel公司推出的较为新颖的单片机,其明显的特色为高性能、高速度、低功耗。它撤销机器周期,以时钟周期为指令周期,实施流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可履行本指令功用,一起完结下一条指令的读取。一般时钟频率用4~8MHz,故最短指令履行时间为250~125ns。该系列的类型较多,但可用下面三种为代表:AT90S2313(精装型)、AT90S8515、AT90S8535(带A/D转化)。

  通用寄存器总共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与当即数打交道,因此通用性有所下降。而在51系列中,它一切的通用寄存器(地址00~7FH)均能够直接与当即数打交道,明显要优于前者。

  AVR系列没有相似累加器A的结构,它首要是经过R16~R31寄存器来完结A的功用。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完结数据指针的功用(适当于有三组DPTR),并且还能作后增量或先减量等的运转,如:

  例5:
  LDRd, X ;将X所指的地址的内容装入寄存器Rd中。
  LDRd,Y+;将Y所指的地址的内容装入寄存器Rd
   中,然后Y的地址增1。
  LDRd,-X ;将X的地址减1所指的地址的内容装入
   寄存器Rd中。

  在51系列中,一切的逻辑运算都有必要在A中进行;而AVR却能够在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列强。

  AVR的专用寄存器会集在00~3F地址区间,无需像PIC那样得先进行选存储体的进程,运用起来比PIC便当。AVR的片内RAM的地址区间为0060~$00DF(AT90S2313) 和 0060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,一般不具有通用寄存器的功用。当程序杂乱时,通用寄存器R0~R31就显得不行用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。

  AVR的I/O脚相似PIC,它也有用来操控输入或输出的方向寄存器,在输出状况下,高电平输出的电流在10mA左右,低电平吸入电流20mA。虽不如PIC,但比51系列强。

  以上的三种AVR类型其管脚与对应的51系列兼容,如AT90S2313与51系列的AT89C2051的管脚兼容(PDIP-20脚),AT90S8515、AT90S8535与51系列的AT89C51兼容(PDIP-40脚)等等。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/258914.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部