首页 技术文章 setp AVR起步教程-2、SRAM和Flash
|
|
AVR起步教程-2、SRAM和Flash |
|
|
作者: Administrator
|
|
2007-11-14 |
在做简单的工程的时候,你使用的变量可能只需要用的寄存器就足够了,但是在比较复杂的工程下,就要频繁的进行寄存器和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 
|
|
最近更新 ( 2007-11-18 )
|
|