简单的说,CPU构架不同,虽然都是8位的,但指令集不同,AVR是用RISC的,哈佛结构的总线;51是用CISC,冯诺衣曼结构的总线。跟AVR比,51是老掉牙的东西,内部资源少,速度慢,但学习简单,是用的最多最精典的单片机。AVR是后来才出来的,工艺上远超过51,内部资源丰富,速度快。
并不是必需得学,但学了最好,学了51再学AVR就快很多了,因为是同一个东西,就像学了一种编程语言一样,学了一门其它的就简单了,因为思路是一样的,只是格式写法不同而以。
单片机的品种多的跟米一样,看你用在什么上,我知道的常用的有AVR,51,PIC等.
AVR 我知道AT90系列和atmega系列,主要改进在使用了精简指令系统,多数指令都是单周期,速度是普通51的12倍,但是AT公司的AVR单片机外部晶振只能使用最高8MHZ的,高了不行,这一点,有一些增强的51已经达到了,不如STC的单片机,也是使用精简指令系统RICS。而且可以用32MHz的晶振……说偏了……
AVR我看更接近ARM,PIN已经可以定意功能,比如输入输出都要进行设置,当然51也需要了。AVR一般都有内部EEPROM,程序空间和RAM都比较大。更适合用C语言编写程序。有更多的功能寄存器需要设置,应为功能多了嘛,实际上和51本质上只有指令系统的区别。
如果你是采用C进行编程的话我个认为差别不大,无非是内部资源不同。51是12时钟周期才一机器周期,而AVR是1时钟周期一机器周期,AVR较51单片机速度快且抗干扰能力强。AVR里边一般也是集成了这几个内部接口,像SPI、I2C、AD、看门狗、模拟比较器(其实相当于运放可以触发中断的,可以用来做掉电检测)。如果你之前已经很了解了51采用的是C编程,现在想学AVR的话,那是非常简单的,你只需选用一款AVR单片机,然后阅读该款单片机的DATASHEET即可,做实验的话就一个资源一个资源的来做。AVR的C编译器可选用ICC
AVR这个软件小巧但无法软件仿真,还可以采用AVR
STUDIO4,我两个软件都用过,不过我介意采用AVR
STUDIO4这个是ATMEL公司自己推出的免费软件,且是采用GCC编译器,非常不错。我在做项目时就是采用的AVR
STUDIO4这个软件,之前我也是学的51也没学过AVR,但做项目时由于是医疗设备对系统稳定性和抗干扰性都要求比较高,就此我就放弃选用51直接采用AVR的,其实都一样,只是寄存器有些区别而已,I/O口的操作有点区别,刚接触时写程序效率低一点,因为对寄存器不太熟,但用一段时间就好了。介意直接看DATASHEET编写程序,预到不懂的再百度。51、AVR、PIC这三种单片机都可以这样。都差不多。ARM的话稍微复杂点。
先阐述一下哈佛结构的概念:将程序和资料记忆体分开使用.每个存储模块分别存储指令和数据.使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径.
AVR与51的区别:(以AT90s8515为例)
1.程序空间(000H~FFFH)访问时用LPM指令访问。
2.片内数据存储(0060H~025FH)访问时用STS、LDS和ST、LD指令访问。
3.片外数据存储(0260H~FFFFH)访问时用STS、LDS和ST、LD指令访问。
4.32个通用寄存器R0~R31,它们之间数据传送可使用MOV指令。
5.I/O寄存器(00H~3FH)使用IN、OUT访问。
堆栈:MCS-51的堆栈指针寄存器SP(单字节)将数据压入堆栈时SP增大,AVR正好相反。
注意:1.AVR堆栈既可以放置在片内SRAM中,也可以放置到片外SRAM.
2.在AVR中,若不支持外部SRAM,SP为一字节.若支持外部SRAM,则SP为两字节。
3.在对AVR编程时,一定要对SP进行初始化,否则很可能出现,模拟调试正常而程序下载到芯片后却不能工作的现象.
外部SRAM:
MCS-51单片机访问外部SRAM使用MOVX而在AVR中访问片内或片外SRAM均使用相同指令,芯片会自动选择,但为了正常工作还必须对相应寄存器进行设置。
AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced
Instruction
Set
CPU)
精简指令集高速8位单片机,和PIC系列的单片机类似,都是采用哈佛总线结构,快速的存取寄存器组、单周期指令系统,速度快。
51系列是复杂指令集的单片机,冯.诺依曼结构,学习比较简单,容易上手,但性能不如AVR。
另外,你可以在网上看看别人的文章,一般入门的书籍上都讲到这个问题,我就不多说了。