第1个回答 2011-03-30
先阐述一下哈佛结构的概念:将程序和资料记忆体分开使用.每个存储模块分别存储指令和数据.使用独立的两条总线,分别作为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均使用相同指令,芯片会自动选择,但为了正常工作还必须对相应寄存器进行设置.本回答被提问者采纳