公告

非常抱歉,由于我们的服务器提供商硬盘出错,数据丢失,网站重建中...
I am so sorry, because of our server's hard disk error, data lost, the website reconstructioning
QQ:512000523
MSN : funchip@hotmail.com

 
首页 arrow 技术文章 arrow setp arrow AVR起步教程-2、SRAM和Flash
AVR起步教程-2、SRAM和Flash Recommend to my friend via E-mail(推荐给朋友)
作者: 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

评论 (0)Add Comment

输入评论内容
quote
bold
italicize
underline
strike
url
image
quote
quote
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley
Smiley

security code
输入验证码


busy
最近更新 ( 2007-11-18 )
 
< 上一篇   下一篇 >

© 2009 杭州福芯电子 浙ICP备05040812号
Joomla!是基于GNU/GPL许可发行的免费软件.