1、运行速度不同:AVR单片机(ATmega16)的时钟源(晶振、内部RC等)可以不经过分频直接提供给CPU使用,51的CPU主频等于晶振的12分频,ATmega16外部提供16M晶掁,即CPU频率可达16M。
常规51的时钟源为12M,经12分频后CPU频率仅为1M,所以AVR单片机的运行速度比51单片机的运行速度要快的多,并且AVR单片机可提供内容1M、2M、4M、8M等可变的CUP频率。
2、操作简易度不同:AVR内部自带集成AD转换,更易于对模拟量的处理,这使得AVR单片机的性价比明显高于51单片机。
AVRI/O口是真正的双向/O口,单片机读取外部引脚电平直接通过PINX读取,不需要像51那样先给I/O口全写1操作后才能读取外部引脚电平,使得单片机读取外部数据更容易。
AVRI/O具有强大的电流驱动能力,具有大电流(灌电流)10~20mA或40mA(单一输出),可直接驱动SSR或继电器。
3、通用性不同:AVR单片机作为一个新兴起的系列,也具有了大多数新兴事物的特点,即在原有系列的基础上,拥有高性能、高速度、甚至是更低的功耗,但这些优化与更新的性能背后,也存在着一些问题,例如其价格相比之下显得较为昂贵。
此外,它的32个通用寄存器中前16个寄存器都不能直接与立即数打交道,而不像51系列的单片机中所有的通用寄存器均可直接与立即数打交道,因而AVR系列的单片机在通用性方面无疑有所下降。由此可见,较高的价格、较低的适用性,这两点便是AVR单片机进行市场推广所存在的最大制约。
扩展资料:
单片机不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符号进行控制,还是对系统下达运算指令都能通过单片机完成。
参考资料:百度百科-单片机
两款单片机我都有用过。先粗略的说下,如果你用过了mega16,你就再也不会想着去用51了呵呵,细节的话,先说资源51有什么资源,串口,定时计数器,中断,没了。16呢?串口,中断不说了,3个定时计数器包括PWM模式,TC1有16种定时计数模式供选择硬件的SPI,IIC,自带eeprom,8路10位AD,模拟比较器等等。51怎么处理这些东西的?用IO模拟。如果你做过开发或者了解过一些芯片模块,很多器件的通信都是要用到SPI的,比如SD卡、1003等用51来模拟IIC去读写AT24C0X吃力不讨好,占用CPU不说,效率不高,而16自带512B的eeprom一般都是够用的。51的IO是准双向IO,16是双向IO,也就是说51是不能设置为输入输出,而16是可以的再说功耗和输出。51功耗大,通上电就要几十毫安,但是输出又不高,想想为什么很多时候连器件的时候要加上拉16功耗小,通电后是在10毫安以下,当然与51不同的是,它的晶振选择范围很大,而且不需要12分频,如果晶振选小功耗会降低而且有多种休眠模式供选择,可以将一些无关紧要的功能关掉即可将功耗降到几毫安甚至毫安以下。16推挽输出,内部带上拉。再说下载。一般学校开的51课程用的都是STC而不是AT最常见的是串口下载,没有ISP,每次下载对着这么大的串口而且还要复位下载。。。16是有ISP和Jtag,可以在线下载在线单步仿真再说比较贴近的区别,51有位操作,AVR没有,不但AVR没有,几乎任何现代单片机都没有,有也是为了加速寻址的速度但是就因为如此51的工艺上不去,同flash的芯片51硅片大得多。编译器不同。51一般是keil独大,AVR有ICC,GCC,IAR,CVAVR等编译器。暂时就想到这么多,欢迎追问
只要把汇编指令都写出来了,你就可以到指令表中找到每一条指令所对应的机器码,然后你只要在机器码后面加上操作数即可,比如,把一个30H单元送入A累加器;指令是这样的:MOV A , 30H .那么你可以在指令表中查到执行这条指的机器码是1110 0101,但是由于这条指令后面的那个30H单元的数是根据你的要求在不断的变的,机器没规定你只能用30H单元,所以这个30的操作数必须由你填,它们和在一块儿,这条指令的机器码是:1110 0101 0011 0000用十六进制来表示:E530,很明显前两位E5是机器指定的,而后两位30是你自己加进去的。共是十六位,占用两个字节……。
http://www.icbom.com/ 电子元器件专家
51的io口为准双向io,所以对io口的操作不用设置io的方向,而AVR是双向io,每次对io操作,如输出输入都要对io的方向进行设置。
关键字不同,code是keil c51的非标准写法,如果AVR要使用常量,可以用const关键字取代。还有data关键字取消,也就是说什么data, idata,xdata,pdata都不可以使用。相对来说avr的编译器比较接近标准c。
51可以位操作,但是avr基本不使用位操作,因为avr可以位操作的区域比较少,所以sbit,bit什么的只有在51出现,avr不可以使用,除非你自己定义一个结构体。
你百度一下“avr与51系列单片机的异同”吧……