AVR单片机指令入门.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AVR指令中使用的符号 1、状态寄存器与标志位 SREG: 8位状态寄存器,其中每一位的定义为: C: 进位标志位 Z: 结果为零标志位 N: 结果为负数标志位 V: 2的补码溢出标志位 S: N⊕V,用于符号测试的标志位 H: 操作中产生半进位的标志位 T: 用于和BLD、BST指令进行位数据交换的位 I: 全局中断触发/禁止标志位 2、寄存器和操作码 Rd: 目的(或源)寄存器,取值为R0~R31或R16~R31(取决于指令)。 Rr: 源寄存器,取值为R0~R31。 A: I/O寄存器,取值为0~63或0~31(取决于指令)。 b: I/O寄存器中的指定位,常数(0~7)。 s: 状态寄存器SREG中的指定位,常数(0~7)。 K: 立即数,常数(0~255)。 k: 地址常数,取值范围取决于指令。 q: 地址偏移量常数(0~63)。 X、Y、Z:地址指针寄存器(X=R27:R26;Y=R29:R28;Z=R31:R30)。 3、堆栈 STACK: 作为返回地址和压栈寄存器的堆栈 SP: 堆栈STACK的指针 AVR指令的寻址方式和寻址空间 1、单寄存器直接寻址 由指令指定一个寄存器的内容作为操作数,在指令中给出寄存器的直接地址,这种寻址方式称为单寄存器直接寻址。单寄存器寻址的地址范围限制为通用工作寄存器组中的32个寄存器R0~R31,或后16个寄存器R16~R31。 例:INC Rd;操作:Rd←Rd+1。 INC R5;将寄存器R5内容加1回放。 2、双寄存器直接寻址 双寄存器直接寻址方式与单寄存器直接寻址方式相似,它是将指令指出的两个寄存器Rd和Rr的内容作为操作数,而结果存放在Rd寄存器中。指令中同时给出两个寄存器的直接地址,这种寻址方式称为双寄存器直接寻址。双寄存器寻址的地址范围限制为通用工作寄存器组中的32个寄存器R0~R31,或后16个寄存器R16~R31,或后8个寄存器R16~R23(取决于不同指令)。 例:ADD Rd,Rr;操作:Rd←Rd+Rr。 ADD R0,R1;将R0和R1寄存器内容相加,结果回放R0。 3、I/O寄存器直接寻址 由指令指定一个I/O寄存器的内容作为操作数。在指令中直接给出I/O寄存器的地址,这种寻址方式称为I/O寄存器直接寻址。I/O寄存器直接寻址的地址使用I/O寄存器空间的地址$00~$3F,共64个,取值为0~63或0~31。 例:IN Rd,P;操作:Rd←P。 IN R5,$3E;读I/O空间地址为$3E寄存器(SPH)的内容,放入寄存器R5。 4、数据存储器空间直接寻址 数据存储器空间直接寻址方式用于直接CPU从SRAM存储器中存取数据。数据存储器空间直接寻址为双字指令,在指令的低字中指出一个16位的SRAM地址。 例:LDS Rd,K;操作:Rd←(K)。 LDS R18,$100;读地址为$100的SRAM中内容,传送到R18中。 指令中16位SRAM的地址字长度限定了SRAM的地址空间为64K字节,该地址空间实际包含了32个通用寄存器和64个I/O寄存器。因此,也可使用数据存储器空间直接寻址的方式读取通用寄存器或I/O寄存器中的内容,此时应使用这些寄存器在SRAM空间的映射地址,而且其效率也比使用寄存器直接寻址的方式要低。原因在于数据存储器空间直接寻址的指令为双字指令,指令周期为2个系统时钟。 5、数据存储器空间的寄存器间接寻址 由指令指定某一个16位寄存器的内容作为操作数在SRAM中的地址,该寻址方式称为数据存储器空间的寄存器间接寻址。AVR单片机中使用16位寄存器X、Y或Z作为规定的地址指针寄存器,因此操作数的SRAM地址在间址寄存器X、Y或Z中。 例:LD Rd,Y;操作:Rd ←(Y),把以Y为指针的SRAM的内容送Rd。 LD R16,Y;设Y=$0567,即把SRAM地址为$0567的内容传送到R16中。 6、带后增量的数据存储器空间的寄存器间接寻址 这种寻址方式类似于数据存储器空间的寄存器间接寻址方式,间址寄存器X、Y、Z中的内容仍为操作数在SRAM空间的地址,但指令在间接寻址操作后,再自动把间址寄存器中的内容加1。这种寻址方式特别适用于访问矩阵、查表等应用。 例:LD Rd,Y+;操作:Rd←(Y),Y=Y+1,先把以Y为指针的SRAM的内容送Rd,再把Y增1。 LD R16,Y+;设原Y=$0567,指令把SRAM地址为$0567的内容传送到R16中,再将Y的值加1,操作完成后Y=$0568。 7、带预减量的数据存储器空间寄存器间接寻址 这种寻址方式类似于数据存储器空间的寄存器间接寻址方式,间址寄存器X、Y、Z中的内容仍为操作数在SRAM空间的地址,但指令在间接寻址操作之前,先自动将间址寄存器中的内容减1,然后把减1后的内容作为操作数在S

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档