原创 市场上主流单片机有哪些,与51相比各有什么优点?

2009-2-27 12:48 5394 2 3 分类: MCU/ 嵌入式

AVR系列:


AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用48MHz,故最短指令执行时间为250125ns。该系列的型号较多,但可用下面三种为代表:AT90S2313(简装型)AT90S8515AT90S8535(A/D转换)

  通用寄存器一共32个(R0R31),前16个寄存器(R0R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址007FH)均可以直接与立即数打交道,显然要优于前者。 AVR系列没有类似累加器A的结构,它主要是通过R16R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26R27组成)、Y(由R28R29组成)、Z(由R30R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


在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脚)等等


2.PIC系列:


PIC单片机系列是美国微芯公司(Microship)的产品,是当前市场份额增长最快的单片机之一。CPU采用RISC结构,分别有333558条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。采用Harvard双总线结构,运行速度快(指令周期约160200ns),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机共分三个级别,即基本级、中级、高级。其中又以中级的PIC16F873A)、PIC16F877 (A) 用的最多,本文以这两种单片机为例进行说明。这两种芯片除了引出脚不同外(PIC16F873A)为28脚的PDIPSOIC封装;PIC16F877A)为40脚的PDIP44脚的PLCC/QFP封装),其他的差别并不很大。

  PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器(TRISn , 其中n对应各口,如ABCDE等),从而解决了51系列I/O脚为高电平时同为输入和输出的状态。当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点,它可以直接驱动数码管显示且外电路简单。它的A/D10位,能满足精度要求。具有在线调试及编程(ISP)功能。


  该系列单片机的专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80FFH),而是分散在四个地址区间内,即存储体0Bank0007FH)、存储体1(Bank1 80FFH)、存储体2(Bank2 10017FH)、存储体3(Bank3 1801FFH)。只有5个专用寄存器PCLSTATUSFSRPCLATH INTCON4个存储体内同时出现。在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。


这多少给编程带来了一些麻烦。对于上述的单片机,它的位指令操作通常限制在存储体0区间(00~7FH)。

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


3. 51系列


  应用最广泛的八位单片机首推Intel51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准MCU芯片。

  51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算的实属少见。51系列在片内RAM区间还特别开辟了一个双重功能的地址区间,十六个字节,单元地址20H2FH,它既可作字节处理,也可作位处理(作位处理时,合128个位,相应位地址为00H7FH),使用极为灵活。这一功能无疑给使用者提供了极大的方便,因为一个较复杂的程序在运行过程中会遇到很多分支,因而需建立很多标志位,在运行过程中,需要对有关的标志位进行置位、清零或检测,以确定程序的运行方向。而实施这一处理(包括前面所有的位功能),只需用一条位操作指令即可。

  例1:如对21H的第0位(相应位地址为08H)置位,只需用一条位指令,
   SETB08H
  对周围的其他位不会产生影响。
  有的单片机并不能直接对RAM单元中的位进行操作,如AVR系列单片机中,若想对RAM中的某位置位时,必须通过状态寄存器SREGT位进行中转。
  例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次以上,这给编程和调试带来极大的便利,其产品AT89C51AT89C52 ……等成为了当今最流行的八位单片机。



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

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

  一些简装的51产品也相应出现,如Atmel公司的AT89C1051AT89C2051AT89C4051等(闪速存储器分别为1K2K4K等,但不能外接数据存储器),指令系统与AT89C51完全兼容,但引脚均为20脚,不光体积小,而且价格低廉,这使得其他的公司竞相仿照。

  不过,原51系列也有许多值得改进之处,如运行速度过慢等。当晶振频率为12MHz时,机器周期达1μs,显然适应不了现代高速运行的需要。华邦公司(Winbond)生产的产品型号为W77系列和W78系列,W78系列与AT89C系列完全兼容。W77系列为增强型,对原有的8051的时序作了改进,每个机器周期从12个时钟周期改为4个周期,使速度提高了三倍,同时,晶振频率最高可达40MHzW77系列还增加了看门狗WatchDog、两组UART、两组DPTR数据指针、ISP等多种功能。

ISP功能能实现在系统可编程,可以省去通用的编程器,单片机在用户板上即可下载和烧录用户程序,而无需将单片机从生产好的产品上取下。


 单片机的提速运行、双数据指针及ISP功能并非是W77系列所特有的,一些新的型号的51系列产品大都有该功能,如Philips51LPC系列、AT89系列中的某些型号、STC89C系列等等。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户382789 2009-3-4 12:43

首先,请看一下我在你的第二篇文章中的回复,结合那个要求将此文整理一下,不要将两个问题合并回答,太长。 其次,在弄清并罗列出单片机比较的指标后,具体比较时,不要去看哪些别人看过手册后给出的评价,要自己去看厂家的 Datasheet,所有单片机的 Datasheet 开始都有 Feature 这一项,准确地描述其主要指标,如果对于一些细节不太理解,可以看 Datasheet 后面的对应章节,不过复杂些的 MCU 通常有配套的用户手册(User Manual),里面对功能进行详细描述,只有电气指标(如功耗等)在 Datasheet 中。 学会阅读厂家的资料是从事电子行业工作的最基本技能,靠别人翻译乃至理解后的描述决不会成为一个好的设计者。 这就像中国老式的喂养婴儿,由大人嚼烂再喂,那样只能永远是婴儿。必须学会自己阅读第一手资料! 希望回答中的所有信息只有两个来源:一是厂家资料,二是自己消化理解后的见解。
相关推荐阅读
用户189519 2009-04-24 12:22
串口编程
帧头 帧长 发送方地址 自己的地址 命令 低地址 高地址 读字节数  N字节数据 校验和帧头 帧长 发送方地址 自己的地址 命令 低地址 高地址 写成功字节数        校验和发送需要以下几个变量...
用户189519 2009-04-22 16:32
学习建议
你现在定时器编程应该基本掌握了,下一步可以参照小车的Step之二尝试串口编程。最好能自己先根据示例程序的功能编写,如果实在觉得困难,可以将示例程序逐步抄写到你的程序中,一点点理解,对于不理解的地方,可...
用户189519 2009-04-10 12:08
二维数组实现指示灯闪烁
/*----------------------------------------------------- 程序功能:LED 闪烁,用 Timer0 实现: 闪烁速度从 0.5次/秒 到 4次/秒...
用户189519 2009-04-09 12:13
for循环机制
for 循环的增量条件是自身运算结束,而我需要的是基于外部触发的条件,所以不可以使用 For循环。...
用户189519 2009-04-08 14:12
关于for循环
        你仔细琢磨一下 for 循环的机制,看看它的循环变量是如何增加的?可否用于这种由外部事件驱动的状态变化?        本周你继续完成上周布置得任务。        1、将数组应用的再...
用户189519 2009-04-08 14:04
一维数组实现LED闪烁
/*----------------------------------------------------- 程序功能:LED 闪烁,用 Timer0 实现 闪烁速度从 0.5次/秒 到4次/秒 工...
我要评论
1
2
关闭 站长推荐上一条 /3 下一条