AVR和51的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pic,avr和51的他们之间的区别是什么?
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脚)等等。
AVR单片机的主要特性
AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash,RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。
AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR的主要特性
高可靠性、功能强、高速度、低功耗和低价位 , 一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。
早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。
以后的 CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。
此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。
AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。
当然这种速度上的升跃,是以高可靠性为其后盾的。
AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。
提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。
故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。
AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。
内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。
片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部 RAM。
AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。
AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。
其中与8/16位定时器配合的具有多达10 位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。
AVR单片机独有的“以定时器/计数器(单)双
向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。
增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。
面向字节的高速硬件串行接口TWI、SPI。
TWI与I2C接口兼容,具备ACK
信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。
SPI支持主/从机等4种组合的多机通信。
AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。
AVR单片机具有多种省电休眠模式,且可宽电压运行(5-2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。
AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口…… )于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。
综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。
AVR系列单片机的选型
AVR单片机系列齐全,可适用于各种不同场合的要求。
AVR单片机有3个档次:
低档Tiny系列AVR单片机: 主要有Tiny11/12/13/15/26/28等;
中档AT90S系列AVR 单片机: 主要有AT90S1200/2313/8515/8535等; (正在淘汰或转型到Mega中)
高档ATmega系列AVR单片机: 主要有ATmega8/16/32/64/128(存储容量为
8/16/32/64/128 KB)以及ATmega8515/8535等。