Diff.betn AVR\51Series\PIC

摘要

单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。它包括CPU、内存、内部和外部总线系统。在AVR、51系列、PIC单片机中,51系列最基本,同时有解密容易等缺点;PIC单片机工业抗干扰性强,各个型号的兼容性强;AVR最新的MEGA系列运行速度快。各种单片机都有各自的优缺点,应根据需要选择。

关键词:单片机、AVR、51系列、PIC、性能对比分析

一、单片机的概述。

1、单片机的定义。

单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。

2、单片机的发展。

单片机也被称为微控制器(Microcontroller),因为它最早被用于工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。

早期的单片机都是8位或4位的。其中最成功的是INTEL的8031。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,同时性价比非常乐观。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。

3、单片机的应用。

单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。而个人电脑中也会有为数不少的单片机在工作。单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。

 

二、单片机分类AVR、51系列、PIC单片机简单概述。

单片机按CPU的处理能力分类目前有4位、8位、16位、32位,位数越高的单片机在数据处理能力和指令系统方面就越强,AVR、51、PIC都属于8位机。8位单片机由于内部构造简单、体积小、成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。8位单片机也是目前应用最广泛的单片机,在各个领域上都可以看到它的身影。1、51系列单片机概述。51系列单片机最早有Intel公司推出,主要有8031系列,8051系列。后来Atmel公司以8051的内核为基础推出了AT89系列单片机。比较适合初学者的需要。 2、AVR单片机概述。AVR单片机也是Atmel公司的产品,最早的就是AT90系列单片机,现在很多AT90单片机都转型为Atmega系列和Attiny系列,AVR单片机最大的特点是精简指令型单片机,执行速度,在相同的振荡频率下是8位MCU中最快的一种单片机。     3、PIC单片机概述。 PIC单片机是Microchip公司的产品,它也是一种精简指令型的单片机,指令数量比较少,中档的PIC系列仅仅有35条指令而已,低档的仅有33条指令。但是如果使用汇编语言编写PIC单片机的程序有一个致命的弱点就是PIC中低档单片机里有一个翻页的概念,编写程序比较麻烦。

三、AVR、51系列、PIC单片机的对比分析。

1、51系列单片机的优缺点分析。

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

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

51系列的另一个优点是乘法和除法指令,这给编程也带来了便利。八位除以八位的除法指令,商为八位,精度嫌不够,用得不多。而八位乘八位的乘法指令,其积为十六位,精度还是能满足要求的,用的较多。作乘法时,只需一条指令即可。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。

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

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

2、PIC单片机的优缺点分析。

PIC单片机CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。采用Haryard双总线结构,运行速度快(指令周期约160~200nS),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。此外,它还具有低工作电压、低功耗、驱动能力强等特点。

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

该系列单片机的专用寄存器)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内,即存储体0(Bank0:00-7FH)、存储体1(Bankl:80-FFH)、存储体2(Bank2:100-17FH)、存储体3(Bank3:180-1FFH)。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现。在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RPl)和第5位(RPO)置位或清零。这多少给编程带来了一些麻烦。对于上述的单片机,它的位指令操作通常限制在存储体0区间(00~7FH)。数据的传送和逻辑运算基本上都得通过工作寄存器w(相当于5l系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送(如:MOV30H,20H;将寄存器20H的内容直接传送至寄存器30H中),因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中很有感受。

综合来说PIC单片机应该说有三个主要特点:

(1)总线结构:MCS-51单片机的总线结构是冯-诺依曼型,计算机在同一个存储空间取指令和数据,两者不能同时进行;而PIC单片机的总线结构是哈佛结构,指令和数据空间是完全分开的,一个用于指令,一个用于数据,由于可以对程序和数据同时进行访问,所以提高了数据吞吐率。正因为在PIC单片机中采用了哈佛双总线结构,所以与常见的微控制器不同的一点是:程序和数据总线可以采用不同的宽度。数据总线都是8位的,但指令总线位数分别位12、14、16位。

(2)流水线结构:MCS-51单片机的取指和执行采用单指令流水线结构,即取一条指令,执行完后再取下一条指令;而PIC的取指和执行采用双指令流水线结构,当一条指令被执行时,允许下一条指令同时被取出,这样就实现了单周期指令。

(3)寄存器组:PIC单片机的所有寄存器,包括I/O口,定时器和程序计数器等都采用RAM结构形式,而且都只需要一个指令周期就可以完成访问和操作;而MCS-51单片机需要两个或两个以上的周期才能改变寄存器的内容。

3、AVR单片优缺点分析。

AVR单片机其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通用寄存器一共32个(RO-R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在5l系列中,它所有的通用寄存器(地址00-7FH)均可以直接与立即数打交道,显然要优于前者。

AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像5l系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、.R29组成)、z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行。

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

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

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

综合来看,AVR与51、PIC单片机相比具有一系列的优点,用通俗的说法主要体现在这几个方面:

(1)、在相同的系统时钟下AVR运行速度最快;

(2)、所有AVR单片机的FLASH、EEPROM蓄存器都可以反复烧写、支持在ISP在线编程(烧写),入门费用非常少;

(3)、片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,使得电路设计变得非常简单;

(4)、每个IO口作输出时都可以输出很强的高、低电平,作输入时IO口可以是高阻抗或者带上拉电阻;

(5)、片内具有丰富实用的资源,如AD模数器、DA数模器,丰富的中断源、SPI、USART、TWI通信口、PWM等等;

(6)、片内采用了先进的数据加密技术,大大的提高了破解的难度;

(7)、片内FLASH空间大、品种多,引脚少的有8脚,多的有64脚等各种封装

8051 – 8 bit micro based on CISC architecture ( Complex Instruction Set Computer)

PIC – 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)

AVR – 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)

there are also 16bit and 32 bit micros from the same family

invention wise, 8051 is the forefather ( date of birth = 1985), next cam PIC s and then came the AVRs.

its essential to learn 8051 to be able to learn other micros. if we come to instruction set of these micros :

8051 has 250 instructions which take 1 to 4 machine cycles to executive
PIC has nearly 40 instructions which are mostly 4 cycles instructions
AVRs have 140 instructions whcih are mostly 1 cycle based

if we come to speed factor:

1 machine cycle in 8051 (normal) divides the clock freq. by 12 ( some derivatives divide by 6 and by 1 also)

1 machine cycle in PIC divides the clock freq by 4

1 M.C in AVRs divides the clock freq by 1

for eg: if we use 12 Mhz Xtal in all the 3 micros then the speed of execution will be as follows:

8051 = 12Mhz /12 = 1 Mhz i,e = 1 million instructions per second
PIC = 12Mhz/4 = 3 Mhz i,e = 3 million instructions per second
AVR = 12Mhz/1 = 12 MHz i,e = 12 Million instructions per second

so you can clearly see the that AVR executes more nof instructions per given time and can be considered as the fastest among the 3.

also 8051 consumes more power than the other two and PIC consumes the least power.

Both PIC and AVR are RISC based but their instruction Sets are entirely different.

from Programming ( i,e writing code ) point of view : 8051s are easy to code , next come PIcs and last comes AVRs.

8051 has very powerful instruction set, it has commands which do more complex calculations, it also has got strong arithmetic logic unit which makes computation simple.

whereas PICs and AVRs have simple single instrcutions and the programmer has to tell (dictate) each and every step to achieve the final outcome.

for eg:

you would be surprised to know that normal AVRs do not have Multiplication instruction.

in 8051 Assembly we can simple use the instruction : MUL A,B

but in AVR you have to write some 20 lines of code to multiply two resgisters or values.

similiarly division also : in 8051 we have DIV A,B but in AVR again you have to write some 20 lines of code.

There is no ADD instruction in AVRs, in 8051 we can Compliment a port bit or a bit variable by using CPL instruction but in AVR we don’t have this instruction.

in 8051 we can easily access the individual port bits but in AVRs we don’t have this freedom.

8051 is still in use bcoz of its simplicity and popularity and lowest cost.

AVRs and PICS are costly and come with many on chip peripherals like : hardware SPI, ADC, I2C, USART , Analog comparator, internal RC oscillator, in-system programmablity etc.

also if see vendor support: 8051 are manufactured by over 50 companies whereas PIC & AVRs are manufactured only by their parent companies i,e microchip and Atmel.

for eg: if you are using a particular variant of AVR and Atmel discontinues it then you’ll have no other choice than to shift to another variant offered by Atmel which may be costly and need program changes.

but with 8051 you can run the code in any 8051s manufactured by so many companies.

(8)、部分芯片的引脚兼容51系列,代换容易,如ATtiny2313兼容AT89C2051,ATmega8515/162兼容AT89S51等

四、单片机的选择。

各种单片机都有各自的优缺点,应根据需要选择。选择单片机原则如下:

1.  单片机的基本参数例如速度,程序存储器容量,I/O引脚数量2.  单片机的增强功能,例如看门狗,双指针,双串口,RTC(实时时钟),EEPROM,扩展RAM,CAN接口,I2C接口,SPI接口,USB接口。3.  Flash和OTP(一次性可编程)相比较,最好是Flash。4.  封装

8051 – 8 bit micro based on CISC architecture ( Complex Instruction Set Computer)

PIC – 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)

AVR – 8 bit micro based on RISC architecture ( Reduced Instruction Set Computer)

there are also 16bit and 32 bit micros from the same family

invention wise, 8051 is the forefather ( date of birth = 1985), next cam PIC s and then came the AVRs.

its essential to learn 8051 to be able to learn other micros. if we come to instruction set of these micros :

8051 has 250 instructions which take 1 to 4 machine cycles to executive
PIC has nearly 40 instructions which are mostly 4 cycles instructions
AVRs have 140 instructions whcih are mostly 1 cycle based

if we come to speed factor:

1 machine cycle in 8051 (normal) divides the clock freq. by 12 ( some derivatives divide by 6 and by 1 also)

1 machine cycle in PIC divides the clock freq by 4

1 M.C in AVRs divides the clock freq by 1

for eg: if we use 12 Mhz Xtal in all the 3 micros then the speed of execution will be as follows:

8051 = 12Mhz /12 = 1 Mhz i,e = 1 million instructions per second
PIC = 12Mhz/4 = 3 Mhz i,e = 3 million instructions per second
AVR = 12Mhz/1 = 12 MHz i,e = 12 Million instructions per second

so you can clearly see the that AVR executes more nof instructions per given time and can be considered as the fastest among the 3.

also 8051 consumes more power than the other two and PIC consumes the least power.

Both PIC and AVR are RISC based but their instruction Sets are entirely different.

from Programming ( i,e writing code ) point of view : 8051s are easy to code , next come PIcs and last comes AVRs.

8051 has very powerful instruction set, it has commands which do more complex calculations, it also has got strong arithmetic logic unit which makes computation simple.

whereas PICs and AVRs have simple single instrcutions and the programmer has to tell (dictate) each and every step to achieve the final outcome.

for eg:

you would be surprised to know that normal AVRs do not have Multiplication instruction.

in 8051 Assembly we can simple use the instruction : MUL A,B

but in AVR you have to write some 20 lines of code to multiply two resgisters or values.

similiarly division also : in 8051 we have DIV A,B but in AVR again you have to write some 20 lines of code.

There is no ADD instruction in AVRs, in 8051 we can Compliment a port bit or a bit variable by using CPL instruction but in AVR we don’t have this instruction.

in 8051 we can easily access the individual port bits but in AVRs we don’t have this freedom.

8051 is still in use bcoz of its simplicity and popularity and lowest cost.

AVRs and PICS are costly and come with many on chip peripherals like : hardware SPI, ADC, I2C, USART , Analog comparator, internal RC oscillator, in-system programmablity etc.

also if see vendor support: 8051 are manufactured by over 50 companies whereas PIC & AVRs are manufactured only by their parent companies i,e microchip and Atmel.

for eg: if you are using a particular variant of AVR and Atmel discontinues it then you’ll have no other choice than to shift to another variant offered by Atmel which may be costly and need program changes.

but with 8051 you can run the code in any 8051s manufactured by so many companies.