| AVR起步教程2:SRAM和Flash—AVR,起步教程,AVR单片机,GCC,SRAM,Flash |
|
| AVR起步教程2:SRAM和Flash—AVR,起步教程,AVR单片机,GCC,SRAM,Flash |
|
作者:佚名 文章来源:不详 点击数: 更新时间:2008-8-22 9:35:55  |
本文介绍了AVR系列的SRAM和Flash的结构 SRAM实际上就是AVR的内存,运算只能通过32个工作寄存器,而SRAM在这个过程中起到 保存数据的作用。 在做简单的工程的时候,你使用的变量可能只需要用的寄存器就足够了,但是在比较复杂的工程下,就要频繁的进行寄存器和SRAM之间的数据交换了。 如果你是使用汇编进行工作,此时你需要知道的是AVR的地址空间分配,对SRAM的操作的汇编指令等,而如果是使用C编译器,知道这些,能有帮助你优化你的程序。 所有的地址空间能被直接或者间接的寻址。 直接寻址: 在要保存(加载)数据到(从)你所指定的直接地址的时候,你可以使用sts、lds指令。 ldi r16,0x55 ;r16装入立即数0x55 sts 0x0190,r16 ;把r16里的数据保存在SRAM中地址为0x190的地方
lds r16,0x0190 ;把SRAM中地址为190的数据装入r16 间接寻址可以象C或者Pascal里的指针那样操作,这些相应的寄存器我们在上一节提到过,就是32个寄存器里的(R26,R27)X,(R28,R29)Y,(R30,R31)Z。 还是以地址0x0190为例子 ldi XL, 0x90 ;加载目标地址的低位 ldi XH, 0x01 ;加载目标地址的高位 ld r16, X ;把目标地址的数据加载到r16 间接寻址的加载和存储和直接的指令是不一样的,间接的只能使用ls和st来执行。 接下来,我们来看看AVR的存储器的映像 AVR的地址空间是由3个主要部分构成的:32个寄存器、I/O寄存器(UART、TIME、等等)、内部SRAM。 图1

在官方的数据手册上,我们经常可以看到寄存器的地址有2个表示方法,比如状态寄存器SREG的地址就是$3F($5F),刚接触AVR的可能会有些不明白,下图应该对你有所帮助 图2

|
| 文章录入:dycxin 责任编辑:dycxin |
|
上一篇文章: AVR起步教程3:从51到AVR编程篇—AVR,起步教程,AVR单片机,GCC,51到AVR 下一篇文章: AVR起步教程1:ALU—AVR,起步教程,ALU,AVR单片机,GCC,算术逻辑单元 |
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |