AVR单片机指令详解与不同器件对应

需积分: 10 2 下载量 85 浏览量 更新于2024-07-30 收藏 163KB PDF 举报
AVR单位片机指令是针对Atmel公司生产的AVR系列单片机(如ATmega161、ATtiny11/12/15/22、AT90S2313/2323/2343/2333等)设计的一套指令集。这些指令集根据不同型号的AVR器件,具有不同的指令数量和特性。以下是一些关键的指令及其功能: 1. **基本运算指令**: - `addrd,rr`:加法操作,将寄存器`rr`的值加上另一个寄存器或立即数,并将结果存回`rr`。 - `subrd,rr`:减法操作,从`rr`中减去另一个寄存器或立即数。 - `lsld,rr`:左移操作,将`rr`中的数据左移指定的位数。 - `lsrd,rr`:带进位的右移操作,将`rr`中的数据右移指定的位数。 - `rorrd,rr`:带进位的循环右移操作,将`rr`中的数据循环右移。 2. **条件转移指令**: - `sbrcrr,b`:如果`rr`的第`b`位清零,则执行下一条指令。 - `sbisp,bi/o`:如果I/O端口的`bi/o`位置位,则执行下一条指令。 - `brbss,ksreg`:如果标志寄存器的`ksreg`位设置,则转到指定地址。 - `brbcs,ksreg`:如果标志寄存器的`ksreg`位未设置,则转到指定地址。 3. **位操作指令**: - `sbip,b`:如果输入引脚`b`置位,则执行下一条指令。 - `cbip,b`:如果输入引脚`b`清零,则执行下一条指令。 - `sbrsrr,b`:如果`rr`的第`b`位置位,则执行下一条指令。 - `cbrrd,k`:将寄存器`rr`的第`k`位清零。 4. **控制转移指令**: - `brlok`/`brltk`:根据操作数的大小进行无符号或带符号的转移,判断是否满足条件。 - `brmik`/`brplk`:根据操作数的符号进行转移,当操作数为负/正时执行特定指令。 - `bsets`/`bclrs`:设置/清零标志寄存器的指定位。 5. **位操作辅助指令**: - `bldrd,bt`:将寄存器`rr`的第`b`位复制到`bt`。 - `negrd`:对`rr`执行取反操作。 - `sen`:置位特定标志(可能是中断请求)。 6. **与/或/异或操作**: - `andrd,rr`:逻辑与操作,如果`rr`与指定值相等则转移。 - `orrd,rr`:逻辑或操作,如果`rr`与指定值置位则转移。 - `eordr,rr`:逻辑异或操作,根据指定值的奇偶性决定转移。 每个AVR型号的指令集可能会有所扩展,例如ATmega161相较于基础型号(如AT90S1200)增加了更多的指令,以支持更复杂的计算和功能。了解和掌握这些指令对于编写AVR单片机程序至关重要,因为它们直接影响到代码的效率和功能实现。通过查阅各种AVR器件的指令比较表,开发者可以根据具体硬件选择合适的指令来编写针对性的程序。