最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

AVR单片机指令集

来源:动视网 责编:小OO 时间:2025-09-25 16:31:25
文档

AVR单片机指令集

AVR单片机指令集指令集概述指令操作数说明操作标志#时钟数算数和逻辑指令ADDRd,Rr无进位加法Rd←Rd+RrZ,C,N,V,H1ADCRd,Rr带进位加法Rd←Rd+Rr+CZ,C,N,V,H1ADIWRdl,K立即数与字相加Rdh:Rdl←Rdh:Rdl+KZ,C,N,V,S2SUBRd,Rr无进位减法Rd←Rd-RrZ,C,N,V,H1SUBIRd,K减立即数Rd←Rd-KZ,C,N,V,H1SBCRd,Rr带进位减法Rd←Rd-Rr-CZ,C,N,V,H1SBCIRd,K带进位减立
推荐度:
导读AVR单片机指令集指令集概述指令操作数说明操作标志#时钟数算数和逻辑指令ADDRd,Rr无进位加法Rd←Rd+RrZ,C,N,V,H1ADCRd,Rr带进位加法Rd←Rd+Rr+CZ,C,N,V,H1ADIWRdl,K立即数与字相加Rdh:Rdl←Rdh:Rdl+KZ,C,N,V,S2SUBRd,Rr无进位减法Rd←Rd-RrZ,C,N,V,H1SUBIRd,K减立即数Rd←Rd-KZ,C,N,V,H1SBCRd,Rr带进位减法Rd←Rd-Rr-CZ,C,N,V,H1SBCIRd,K带进位减立
AVR单片机指令集

指令集概述

指令操作数说明操作标志# 时钟数

算数和逻辑指令

ADD Rd, Rr 无进位加法Rd ← Rd + Rr Z,C,N,V,H 1

ADC Rd, Rr 带进位加法Rd ← Rd + Rr + C Z,C,N,V,H 1

ADIW Rdl,K 立即数与字相加Rdh:Rdl ← Rdh:Rdl + K Z,C,N,V,S 2

SUB Rd, Rr 无进位减法Rd ← Rd - Rr Z,C,N,V,H 1

SUBI Rd, K 减立即数 Rd ← Rd - K Z,C,N,V,H 1

SBC Rd, Rr 带进位减法Rd ← Rd - Rr - C Z,C,N,V,H 1

SBCI Rd, K 带进位减立即数Rd ← Rd - K - C Z,C,N,V,H 1

SBIW Rdl,K 从字中减立即数Rdh:Rdl ← Rdh:Rdl - K Z,C,N,V,S 2

AND Rd, Rr 逻辑与Rd ← Rd ? Rr Z,N,V 1

ANDI Rd, K 与立即数的逻辑与操作Rd ← Rd ? K Z,N,V 1

OR Rd, Rr 逻辑或Rd ← Rd v Rr Z,N,V 1

ORI Rd, K 与立即数的逻辑或操作Rd ← Rd v K Z,N,V 1

EOR Rd, Rr 异或Rd ← Rd ⊕ Rr Z,N,V 1

COM Rd 1 的补码Rd ← 0xFF ? Rd Z,C,N,V 1

NEG Rd 2 的补码Rd ← 0x00 ? Rd Z,C,N,V,H 1

SBR Rd,K 设置寄存器的位Rd ← Rd v K Z,N,V 1

CBR Rd,K 寄存器位清零Rd ← Rd ? (0xFF - K) Z,N,V 1

INC Rd 加一操作Rd ← Rd + 1 Z,N,V 1

DEC Rd 减一操作Rd ← Rd ? 1 Z,N,V 1

TST Rd 测试是否为零或负Rd ← Rd ? Rd Z,N,V 1

CLR Rd 寄存器清零Rd ← Rd ⊕ Rd Z,N,V 1

SER Rd 寄存器置位Rd ← 0xFF None 1

MUL Rd, Rr 无符号数乘法R1:R0 ← Rd x Rr Z,C 2

MULS Rd, Rr 有符号数乘法R1:R0 ← Rd x Rr Z,C 2

MULSU Rd, Rr 有符号数与无符号数乘法R1:R0 ← Rd x Rr Z,C 2

FMUL Rd, Rr 无符号小数乘法R1:R0 ← (Rd x Rr) << 1 Z,C 2

FMULS Rd, Rr 有符号小数乘法R1:R0 ← (Rd x Rr) << 1 Z,C 2

FMULSU Rd, Rr 有符号小数与无符号小数乘法R1:R0 ← (Rd x Rr) << 1 Z,C 2

跳转指令

RJMP k 相对跳转PC ← PC + k + 1 无2

IJMP 间接跳转到 (Z) PC ← Z 无2

RCALL k 相对子程序调用PC ← PC + k + 1 无3

ICALL 间接调用(Z) PC ← Z 无3

RET 子程序返回PC ← STACK 无4

RETI 中断返回PC ← STACK I 4

CPSE Rd,Rr 比较,相等则跳过下一条指令if (Rd = Rr) PC ← PC + 2 or 3 无1 / 2 / 3

CP Rd,Rr 比较Rd ? Rr Z, N,V,C,H 1

CPC Rd,Rr 带进位比较Rd ? Rr ? C Z, N,V,C,H 1

CPI Rd,K 与立即数比较Rd ? K Z, N,V,C,H 1

SBRC Rr, b 寄存器位为"0” 则跳过下一条指令if (Rr(b)=0) PC ← PC + 2 or 3 无1 / 2 / 3

SBRS Rr, b 寄存器位为"1” 则跳过下一条指令if (Rr(b)=1) PC ← PC + 2 or 3 无1 / 2 / 3

SBIC P, b I/O 寄存器位为"0” 则跳过下一条指令if (P(b)=0) PC ← PC + 2 or 3 无1 / 2 / 3

SBIS P, b I/O 寄存器位为"1” 则跳过下一条指令if (P(b)=1) PC ← PC + 2 or 3 无1 / 2 / 3

BRBS s, k 状态寄存器位为"1” 则跳过下一条指令if (SREG(s) = 1) then PC←PC+k + 1 无1 / 2

BRBC s, k 状态寄存器位为"0” 则跳过下一条指令if (SREG(s) = 0) then PC←PC+k + 1 无1 / 2

BREQ k 相等则跳转if (Z = 1) then PC ← PC + k + 1 无1 / 2

BRNE k 不相等则跳转if (Z = 0) then PC ← PC + k + 1 无1 / 2

BRCS k 进位位为"1” 则跳转if (C = 1) then PC ← PC + k + 1 无1 / 2

BRCC k 进位位为"0” 则跳转if (C = 0) then PC ← PC + k + 1 无1 / 2

BRSH k 大于或等于则跳转 if (C = 0) then PC ← PC + k + 1 无1 / 2

BRLO k 小于则跳转if (C = 1) then PC ← PC + k + 1 无1 / 2

BRMI k 负则跳转if (N = 1) then PC ← PC + k + 1 无1 / 2

BRPL k 正则跳转if (N = 0) then PC ← PC + k + 1 无1 / 2

BRGE k 有符号数大于或等于则跳转if (N ⊕ V= 0) then PC ← PC + k + 1 无1 / 2

BRLT k 有符号数负则跳转if (N ⊕ V= 1) then PC ← PC + k + 1 无1 / 2

BRHS k 半进位位为"1” 则跳转if (H = 1) then PC ← PC + k + 1 无1 / 2

BRHC k 半进位位为"0” 则跳转if (H = 0) then PC ← PC + k + 1 无1 / 2

BRTS k T 为"1” 则跳转if (T = 1) then PC ← PC + k + 1 无1 / 2

BRTC k T 为"0” 则跳转if (T = 0) then PC ← PC + k + 1 无1 / 2

BRVS k 溢出标志为"1” 则跳转if (V = 1) then PC ← PC + k + 1 无1 / 2

BRVC k 溢出标志为"0” 则跳转if (V = 0) then PC ← PC + k + 1 无1 / 2

274 ATmega8(L)

2486N–AVR–07/04

指令操作数说明操作标志# 时钟数

BRIE k 中断使能再跳转if ( I = 1) then PC ← PC + k + 1 无1 / 2

BRID k 中断禁用再跳转if ( I = 0) then PC ← PC + k + 1 无1 / 2

数据传送指令

MOV Rd, Rr 寄存器间复制Rd ← Rr 无1

MOVW Rd, Rr 复制寄存器字Rd+1:Rd ← Rr+1:Rr 无1

LDI Rd, K 加载立即数Rd ← K 无1

LD Rd, X 加载间接寻址数据Rd ← (X) 无2

LD Rd, X+ 加载间接寻址数据,然后地址加一Rd ← (X), X ← X + 1 无2

LD Rd, - X 地址减一后加载间接寻址数据X ← X - 1, Rd ← (X) 无2

LD Rd, Y 加载间接寻址数据Rd ← (Y) 无2

LD Rd, Y+ 加载间接寻址数据,然后地址加一Rd ← (Y), Y ← Y + 1 无2

LD Rd, - Y 地址减一后加载间接寻址数据Y ← Y - 1, Rd ← (Y) 无2

LDD Rd,Y+q 加载带偏移量的间接寻址数据Rd ← (Y + q) 无2

LD Rd, Z 加载间接寻址数据Rd ← (Z) 无2

LD Rd, Z+ 加载间接寻址数据,然后地址加一Rd ← (Z), Z ← Z+1 无2

LD Rd, -Z 地址减一后加载间接寻址数据Z ← Z - 1, Rd ← (Z) 无2

LDD Rd, Z+q 加载带偏移量的间接寻址数据Rd ← (Z + q) 无2

LDS Rd, k 从SRAM 加载数据Rd ← (k) 无2

ST X, Rr 以间接寻址方式存储数据(X) ← Rr 无2

ST X+, Rr 以间接寻址方式存储数据,然后地址加一(X) ← Rr, X ← X + 1 无2

ST - X, Rr 地址减一后以间接寻址方式存储数据X ← X - 1, (X) ← Rr 无2

ST Y, Rr 加载间接寻址数据(Y) ← Rr 无2

ST Y+, Rr 加载间接寻址数据,然后地址加一(Y) ← Rr, Y ← Y + 1 无2

ST - Y, Rr 地址减一后加载间接寻址数据Y ← Y - 1, (Y) ← Rr 无2

STD Y+q,Rr 加载带偏移量的间接寻址数据(Y + q) ← Rr 无2

ST Z, Rr 加载间接寻址数据(Z) ← Rr 无2

ST Z+, Rr 加载间接寻址数据,然后地址加一(Z) ← Rr, Z ← Z + 1 无2

ST -Z, Rr 地址减一后加载间接寻址数据Z ← Z - 1, (Z) ← Rr 无2

STD Z+q,Rr 加载带偏移量的间接寻址数据(Z + q) ← Rr 无2

STS k, Rr 从SRAM 加载数据(k) ← Rr 无2

LPM 加载程序空间的数据R0 ← (Z) 无3

LPM Rd, Z 加载程序空间的数据Rd ← (Z) 无3

LPM Rd, Z+ 加载程序空间的数据,然后地址加一Rd ← (Z), Z ← Z+1 无3

SPM 保存程序空间的数据(Z) ← R1:R0 无-

IN Rd, P 从I/O 端口读数据Rd ← P 无1

OUT P, Rr 输出端口P ← Rr 无1

PUSH Rr 将寄存器推入堆栈STACK ← Rr 无2

POP Rd 将寄存器从堆栈中弹出Rd ← STACK 无2

位和位测试指令

SBI P,b I/O 寄存器位置位I/O(P,b) ← 1 无2

CBI P,b I/O 寄存器位清零I/O(P,b) ← 0 无2

LSL Rd 逻辑左移Rd(n+1) ← Rd(n), Rd(0) ← 0 Z,C,N,V 1

LSR Rd 逻辑右移Rd(n) ← Rd(n+1), Rd(7) ← 0 Z,C,N,V 1

ROL Rd 带进位循环左移Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z,C,N,V 1

ROR Rd 带进位循环右移Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z,C,N,V 1

ASR Rd 算术右移Rd(n) ← Rd(n+1), n=0..6 Z,C,N,V 1

SWAP Rd 高低半字节交换Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) 无1

BSET s 标志置位SREG(s) ← 1 SREG(s) 1

BCLR s 标志清零SREG(s) ← 0 SREG(s) 1

BST Rr, b 从寄存器将位赋给T T ← Rr(b) T 1

BLD Rd, b 将T 赋给寄存器位Rd(b) ← T 无1

SEC 进位位置位C ← 1 C 1

CLC 进位位清零C ← 0 C 1

SEN 负标志位置位N ← 1 N 1

CLN 负标志位清零N ← 0 N 1

SEZ 零标志位置位Z ← 1 Z 1

CLZ 零标志位清零Z ← 0 Z 1

SEI 全局中断使能I ← 1 I 1

CLI 全局中断禁用I ← 0 I 1

SES 符号测试标志位置位S ← 1 S 1

CLS 符号测试标志位清零S ← 0 S 1

SEV 2 的补码溢出标志置位V ← 1 V 1

CLV 2 的补码溢出标志清零V ← 0 V 1

SET SREG 的T 置位T ← 1 T 1

指令集概述

275

ATmega8(L)

2486N–AVR–07/04

指令操作数说明操作标志# 时钟数

CLT SREG 的T 清零T ← 0 T 1

SEH SREG 的半进位标志置位H ← 1 H 1

CLH SREG 的半进位标志清零H ← 0 H 1

MCU 控制指令

NOP 空操作无1

SLEEP 休眠( 见对睡眠功能的特殊说明) 无1

WDR 复位看门狗( 见对WDR/timer 的特殊说明) 无1

17

文档

AVR单片机指令集

AVR单片机指令集指令集概述指令操作数说明操作标志#时钟数算数和逻辑指令ADDRd,Rr无进位加法Rd←Rd+RrZ,C,N,V,H1ADCRd,Rr带进位加法Rd←Rd+Rr+CZ,C,N,V,H1ADIWRdl,K立即数与字相加Rdh:Rdl←Rdh:Rdl+KZ,C,N,V,S2SUBRd,Rr无进位减法Rd←Rd-RrZ,C,N,V,H1SUBIRd,K减立即数Rd←Rd-KZ,C,N,V,H1SBCRd,Rr带进位减法Rd←Rd-Rr-CZ,C,N,V,H1SBCIRd,K带进位减立
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top