0% found this document useful (0 votes)
96 views

Atmega32 Instruction Set Summary

The document summarizes the instruction set of the ATmega32(L) microcontroller. It includes arithmetic, logic, branching, and data transfer instructions. The instructions operate on registers and constants, perform arithmetic, logical, and bitwise operations, conditional and unconditional jumps, subroutine calls and returns, and data transfers between registers and memory. The summary provides the instruction mnemonic, operands, description, operation performed, status flags affected, and number of clock cycles for each instruction.

Uploaded by

Numo Bami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views

Atmega32 Instruction Set Summary

The document summarizes the instruction set of the ATmega32(L) microcontroller. It includes arithmetic, logic, branching, and data transfer instructions. The instructions operate on registers and constants, perform arithmetic, logical, and bitwise operations, conditional and unconditional jumps, subroutine calls and returns, and data transfers between registers and memory. The summary provides the instruction mnemonic, operands, description, operation performed, status flags affected, and number of clock cycles for each instruction.

Uploaded by

Numo Bami
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

ATmega32(L)

Instruction Set Summary


Mnemonics Operands Description Operation Flags #Clocks
ARITHMETIC AND LOGIC INSTRUCTIONS
ADD Rd, Rr Add two Registers Rd m Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr Add with Carry two Registers Rd m Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl,K Add Immediate to Word Rdh:Rdl m Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr Subtract two Registers Rd m Rd - Rr Z,C,N,V,H 1
SUBI Rd, K Subtract Constant from Register Rd m Rd - K Z,C,N,V,H 1
SBC Rd, Rr Subtract with Carry two Registers Rd m Rd - Rr - C Z,C,N,V,H 1
SBCI Rd, K Subtract with Carry Constant from Reg. Rd m Rd - K - C Z,C,N,V,H 1
SBIW Rdl,K Subtract Immediate from Word Rdh:Rdl m Rdh:Rdl - K Z,C,N,V,S 2
AND Rd, Rr Logical AND Registers Rd m Rd x Rr Z,N,V 1
ANDI Rd, K Logical AND Register and Constant Rd m Rd x K Z,N,V 1
OR Rd, Rr Logical OR Registers Rd m Rd v Rr Z,N,V 1
ORI Rd, K Logical OR Register and Constant Rd m Rd v K Z,N,V 1
EOR Rd, Rr Exclusive OR Registers Rd m Rd † Rr Z,N,V 1
COM Rd One’s Complement Rd m $FF Rd Z,C,N,V 1
NEG Rd Two’s Complement Rd m $00 Rd Z,C,N,V,H 1
SBR Rd,K Set Bit(s) in Register Rd m Rd v K Z,N,V 1
CBR Rd,K Clear Bit(s) in Register Rd m Rd x ($FF - K) Z,N,V 1
INC Rd Increment Rd m Rd + 1 Z,N,V 1
DEC Rd Decrement Rd m Rd 1 Z,N,V 1
TST Rd Test for Zero or Minus Rd m Rd x Rd Z,N,V 1
CLR Rd Clear Register Rd m Rd † Rd Z,N,V 1
SER Rd Set Register Rd m $FF None 1
MUL Rd, Rr Multiply Unsigned R1:R0 m Rd x Rr Z,C 2
MULS Rd, Rr Multiply Signed R1:R0 m Rd x Rr Z,C 2
MULSU Rd, Rr Multiply Signed with Unsigned R1:R0 m Rd x Rr Z,C 2
FMUL Rd, Rr Fractional Multiply Unsigned R1:R0 m (Rd x Rr) << 1 Z,C 2
FMULS Rd, Rr Fractional Multiply Signed R1:R0 m (Rd x Rr) << 1 Z,C 2
FMULSU Rd, Rr Fractional Multiply Signed with Unsigned R1:R0 m (Rd x Rr) << 1 Z,C 2
BRANCH INSTRUCTIONS
RJMP k Relative Jump PC m PC + k + 1 None 2
IJMP Indirect Jump to (Z) PC m Z None 2
JMP k Direct Jump PC m k None 3
RCALL k Relative Subroutine Call PC m PC + k + 1 None 3
ICALL Indirect Call to (Z) PC m Z None 3
CALL k Direct Subroutine Call PC m k None 4
RET Subroutine Return PC m Stack None 4
RETI Interrupt Return PC m Stack I 4
CPSE Rd,Rr Compare, Skip if Equal if (Rd = Rr) PC m PC + 2 or 3 None 1/2/3
CP Rd,Rr Compare Rd Rr Z, N,V,C,H 1
CPC Rd,Rr Compare with Carry Rd Rr C Z, N,V,C,H 1
CPI Rd,K Compare Register with Immediate Rd K Z, N,V,C,H 1
SBRC Rr, b Skip if Bit in Register Cleared if (Rr(b)=0) PC m PC + 2 or 3 None 1/2/3
SBRS Rr, b Skip if Bit in Register is Set if (Rr(b)=1) PC m PC + 2 or 3 None 1/2/3
SBIC P, b Skip if Bit in I/O Register Cleared if (P(b)=0) PC m PC + 2 or 3 None 1/2/3
SBIS P, b Skip if Bit in I/O Register is Set if (P(b)=1) PC m PC + 2 or 3 None 1/2/3
BRBS s, k Branch if Status Flag Set if (SREG(s) = 1) then PCmPC+k + 1 None 1/2
BRBC s, k Branch if Status Flag Cleared if (SREG(s) = 0) then PCmPC+k + 1 None 1/2
BREQ k Branch if Equal if (Z = 1) then PC m PC + k + 1 None 1/2
BRNE k Branch if Not Equal if (Z = 0) then PC m PC + k + 1 None 1/2
BRCS k Branch if Carry Set if (C = 1) then PC m PC + k + 1 None 1/2
BRCC k Branch if Carry Cleared if (C = 0) then PC m PC + k + 1 None 1/2
BRSH k Branch if Same or Higher if (C = 0) then PC m PC + k + 1 None 1/2
BRLO k Branch if Lower if (C = 1) then PC m PC + k + 1 None 1/2
BRMI k Branch if Minus if (N = 1) then PC m PC + k + 1 None 1/2
BRPL k Branch if Plus if (N = 0) then PC m PC + k + 1 None 1/2
BRGE k Branch if Greater or Equal, Signed if (N † V= 0) then PC m PC + k + 1 None 1/2
BRLT k Branch if Less Than Zero, Signed if (N † V= 1) then PC m PC + k + 1 None 1/2
BRHS k Branch if Half Carry Flag Set if (H = 1) then PC m PC + k + 1 None 1/2
BRHC k Branch if Half Carry Flag Cleared if (H = 0) then PC m PC + k + 1 None 1/2
BRTS k Branch if T Flag Set if (T = 1) then PC m PC + k + 1 None 1/2
BRTC k Branch if T Flag Cleared if (T = 0) then PC m PC + k + 1 None 1/2
BRVS k Branch if Overflow Flag is Set if (V = 1) then PC m PC + k + 1 None 1/2
BRVC k Branch if Overflow Flag is Cleared if (V = 0) then PC m PC + k + 1 None 1/2

329
2503Q–AVR–02/11
ATmega32(L)

Mnemonics Operands Description Operation Flags #Clocks


BRIE k Branch if Interrupt Enabled if ( I = 1) then PC m PC + k + 1 None 1/2
BRID k Branch if Interrupt Disabled if ( I = 0) then PC m PC + k + 1 None 1/2
DATA TRANSFER INSTRUCTIONS
MOV Rd, Rr Move Between Registers Rd m Rr None 1
MOVW Rd, Rr Copy Register Word Rd+1:Rd m Rr+1:Rr None 1
LDI Rd, K Load Immediate Rd m K None 1
LD Rd, X Load Indirect Rd m (X) None 2
LD Rd, X+ Load Indirect and Post-Inc. Rd m (X), X m X + 1 None 2
LD Rd, - X Load Indirect and Pre-Dec. X m X - 1, Rd m (X) None 2
LD Rd, Y Load Indirect Rd m (Y) None 2
LD Rd, Y+ Load Indirect and Post-Inc. Rd m (Y), Y m Y + 1 None 2
LD Rd, - Y Load Indirect and Pre-Dec. Y m Y - 1, Rd m (Y) None 2
LDD Rd,Y+q Load Indirect with Displacement Rd m (Y + q) None 2
LD Rd, Z Load Indirect Rd m (Z) None 2
LD Rd, Z+ Load Indirect and Post-Inc. Rd m (Z), Z m Z+1 None 2
LD Rd, -Z Load Indirect and Pre-Dec. Z m Z - 1, Rd m (Z) None 2
LDD Rd, Z+q Load Indirect with Displacement Rd m (Z + q) None 2
LDS Rd, k Load Direct from SRAM Rd m (k) None 2
ST X, Rr Store Indirect (X) m Rr None 2
ST X+, Rr Store Indirect and Post-Inc. (X) m Rr, X m X + 1 None 2
ST - X, Rr Store Indirect and Pre-Dec. X m X - 1, (X) m Rr None 2
ST Y, Rr Store Indirect (Y) m Rr None 2
ST Y+, Rr Store Indirect and Post-Inc. (Y) m Rr, Y m Y + 1 None 2
ST - Y, Rr Store Indirect and Pre-Dec. Y m Y - 1, (Y) m Rr None 2
STD Y+q,Rr Store Indirect with Displacement (Y + q) m Rr None 2
ST Z, Rr Store Indirect (Z) m Rr None 2
ST Z+, Rr Store Indirect and Post-Inc. (Z) m Rr, Z m Z + 1 None 2
ST -Z, Rr Store Indirect and Pre-Dec. Z m Z - 1, (Z) m Rr None 2
STD Z+q,Rr Store Indirect with Displacement (Z + q) m Rr None 2
STS k, Rr Store Direct to SRAM (k) m Rr None 2
LPM Load Program Memory R0 m (Z) None 3
LPM Rd, Z Load Program Memory Rd m (Z) None 3
LPM Rd, Z+ Load Program Memory and Post-Inc Rd m (Z), Z m Z+1 None 3
SPM Store Program Memory (Z) m R1:R0 None -
IN Rd, P In Port Rd m P None 1
OUT P, Rr Out Port P m Rr None 1
PUSH Rr Push Register on Stack Stack m Rr None 2
POP Rd Pop Register from Stack Rd m Stack None 2
BIT AND BIT-TEST INSTRUCTIONS
SBI P,b Set Bit in I/O Register I/O(P,b) m 1 None 2
CBI P,b Clear Bit in I/O Register I/O(P,b) m 0 None 2
LSL Rd Logical Shift Left Rd(n+1) m Rd(n), Rd(0) m 0 Z,C,N,V 1
LSR Rd Logical Shift Right Rd(n) m Rd(n+1), Rd(7) m 0 Z,C,N,V 1
ROL Rd Rotate Left Through Carry Rd(0)mC,Rd(n+1)m Rd(n),CmRd(7) Z,C,N,V 1
ROR Rd Rotate Right Through Carry Rd(7)mC,Rd(n)m Rd(n+1),CmRd(0) Z,C,N,V 1
ASR Rd Arithmetic Shift Right Rd(n) m Rd(n+1), n=0..6 Z,C,N,V 1
SWAP Rd Swap Nibbles Rd(3..0)mRd(7..4),Rd(7..4)mRd(3..0) None 1
BSET s Flag Set SREG(s) m 1 SREG(s) 1
BCLR s Flag Clear SREG(s) m 0 SREG(s) 1
BST Rr, b Bit Store from Register to T T m Rr(b) T 1
BLD Rd, b Bit load from T to Register Rd(b) m T None 1
SEC Set Carry Cm1 C 1
CLC Clear Carry Cm0 C 1
SEN Set Negative Flag Nm1 N 1
CLN Clear Negative Flag Nm0 N 1
SEZ Set Zero Flag Zm1 Z 1
CLZ Clear Zero Flag Zm0 Z 1
SEI Global Interrupt Enable Im1 I 1
CLI Global Interrupt Disable Im0 I 1
SES Set Signed Test Flag Sm1 S 1
CLS Clear Signed Test Flag Sm0 S 1
SEV Set Twos Complement Overflow. Vm1 V 1
CLV Clear Twos Complement Overflow Vm0 V 1
SET Set T in SREG Tm1 T 1
CLT Clear T in SREG Tm0 T 1
SEH Set Half Carry Flag in SREG Hm1 H 1

330
2503Q–AVR–02/11
ATmega32(L)

Mnemonics Operands Description Operation Flags #Clocks


CLH Clear Half Carry Flag in SREG Hm0 H 1
MCU CONTROL INSTRUCTIONS
NOP No Operation None 1
SLEEP Sleep (see specific descr. for Sleep function) None 1
WDR Watchdog Reset (see specific descr. for WDR/timer) None 1
BREAK Break For On-Chip Debug Only None N/A

331
2503Q–AVR–02/11

You might also like