Visio AVR v2

3
Καταχωρητές: R16-R25, R26:R27 X R28:R29 Y R30:R31 Z MOVW R17:R16,R21:R20 MOV R16,R20 R0 MOV R0,R20 MOVW ... PROGRAM MEMORY LPM //όπου δείχνει ο Ζ LPM R20,Z LPM R20,Z+ STACK POP R2 PUSH R4 SRAM LD R20,X //also Y,Z LD R20,X+ // same LD R20,-X //same LD R20,Y+2 //also Z ST X,R20 //also Y,Z ST X+,R20 // same ST -X,R20 //same ST Y+2,R20 //also Z IMMEDIATE (NUMBER) LDI R20,$F5 LDS R20,$F5FF I/O REGISTERS DDRA/B/C/D SP etc IN R2,PINA OUT PORTB,R21 OUT DDRB,R3 AVR Moving Data MOVW Rb+1:Rb,Rn+1:Rn MOV Rb,Rn POP Rb PUSH Rb LPM LPM Rb,Z LPM Rb,Z+ IN Rb,PINA/B/C/D OUT PORTA/B/C/D,Rb OUT DDRA/B/C/D,Rb LD Rb,X/Y/Z LD Rb,X/Y/Z+ LD Rb,-X/Y/Z LD Rb,Y/Z+#number ST X/Y/Z,Rb ST X/Y/Z+,Rb ST -X/Y/Z,Rb ST Y/Z+#number,Rb LDI Rb,#number LDS Rb,#number Rn and Rn+1 must be neighboors, same for Rb ; Copy data from Rn:Rn+1 to Rb:Rb+1 Any Rb, Any Rn; Copy data from Rn to Rb Any Rb; Copy data from pointed by SP address to Rb Any Rb; Copy data from Rb to pointed by SP address Any Rb ; Copy data from pointed by Z address of Program Memory to Rb Any Rb ; Copy data from pointed by Z address of Program Memory to Rb, increase Z after Any Rb, Any Port ; Copy data from I/O Resgister to Rb Any Rb, Any Port ; Copy data from Rb to I/O Resgister Any Rb, Any Port Sreg ; Copy data from Rb to I/O status Resgister Any Rb, any pointer ; Copy data from pointed by pointer address to Rb Any Rb, any pointer ; Copy data from pointed by pointer address to Rb, increase pointer after Any Rb, any pointer ; Copy data from pointed by pointer address to Rb, decrease pointer before Any Rb, pointers Y and Z ; Copy data from pointed by (pointer + #number) address to Rb ; pointer doesn’t change Any Rb, any pointer ; Copy data from Rb to pointed by pointer address Any Rb, any pointer ; Copy data from Rb to pointed by pointer address, increase pointer after Any Rb, any pointer ; Copy data from Rb to pointed by pointer address, decrease pointer before Any Rb, pointers Y and Z ; Copy data from Rb to (pointed by pointer address + #number), pointer doesn’t change Rb: R16-R31,#number is 8-bit ; Copy the value of #number to Rb (immidiate) Any Rb, #number is 16-bit ; Copy #number address of Ram to Rb Copy data from pointed by Z address of Program Memory to R0 ST - LD (για αντίστοιχες διευθύνσεις)

description

Visio AVR v2

Transcript of Visio AVR v2

Page 1: Visio AVR v2

Καταχωρητές:R16-R25,

R26:R27 XR28:R29 YR30:R31 Z

MOVW R17:R16,R21:R20MOV R16,R20

R0

MOV R0,R20MOVW ...

PROGRAM MEMORY

LPM //όπου δείχνει ο Ζ

LPM R20,ZLPM R20,Z+

STACK POP R2

PUSH R4 SRAM

LD R20,X //also Y,ZLD R20,X+ // sameLD R20,-X //same

LD R20,Y+2 //also Z

ST X,R20 //also Y,ZST X+,R20 // sameST -X,R20 //same

ST Y+2,R20 //also Z

IMMEDIATE(NUMBER)

LDI R20,$F5

LDS R20,$F5FF

I/O REGISTERSDDRA/B/C/D

SP etc

IN R2,PINA

OUT PORTB,R21

OUT DDRB,R3

AVR Moving Data

MOVW Rb+1:Rb,Rn+1:Rn

MOV Rb,Rn

POP Rb

PUSH Rb

LPMLPM Rb,ZLPM Rb,Z+

IN Rb,PINA/B/C/D

OUT PORTA/B/C/D,Rb

OUT DDRA/B/C/D,Rb

LD Rb,X/Y/ZLD Rb,X/Y/Z+ LD Rb,-X/Y/Z

LD Rb,Y/Z+#number

ST X/Y/Z,RbST X/Y/Z+,RbST -X/Y/Z,Rb

ST Y/Z+#number,Rb

LDI Rb,#number

LDS Rb,#number

Rn and Rn+1 must be neighboors, same for Rb ; Copy data from Rn:Rn+1 to Rb:Rb+1

Any Rb, Any Rn; Copy data from Rn to Rb

Any Rb; Copy data from pointed by SP address to Rb

Any Rb; Copy data from Rb to pointed by SP address

Any Rb ; Copy data from pointed by Z address of Program Memory to RbAny Rb ; Copy data from pointed by Z address of Program Memory to Rb, increase Z after

Any Rb, Any Port ; Copy data from I/O Resgister to Rb

Any Rb, Any Port ; Copy data from Rb to I/O Resgister

Any Rb, Any Port Sreg ; Copy data from Rb to I/O status Resgister

Any Rb, any pointer ; Copy data from pointed by pointer address to RbAny Rb, any pointer ; Copy data from pointed by pointer address to Rb, increase pointer afterAny Rb, any pointer ; Copy data from pointed by pointer address to Rb, decrease pointer beforeAny Rb, pointers Y and Z ; Copy data from pointed by (pointer + #number) address to Rb ; pointer doesn’t change

Any Rb, any pointer ; Copy data from Rb to pointed by pointer addressAny Rb, any pointer ; Copy data from Rb to pointed by pointer address, increase pointer afterAny Rb, any pointer ; Copy data from Rb to pointed by pointer address, decrease pointer before

Any Rb, pointers Y and Z ; Copy data from Rb to (pointed by pointer address + #number), pointer doesn’t change

Rb: R16-R31,#number is 8-bit ; Copy the value of #number to Rb (immidiate)

Any Rb, #number is 16-bit ; Copy #number address of Ram to Rb

Copy data from pointed by Z address of Program Memory to R0

ST - LD (για αντίστοιχες διευθύνσεις)

Page 2: Visio AVR v2

Registers and Actions

R0

R1

LPM

...

R16

...

R23

R26

R27

R28

R29

R30

R31

SUBI R20,$3F

SBCI R17,$2A

ANDI R24,$FE

ORI R18,$01

CPI R22,$2C

LDI R20,$2A

SBR R28,$FE

CBR R30,$10

SER R31

MULS R21,R17

X

Y

Z

ADIW Zh:Zl,$01

SBIW R25:R24,$02

R24

R25

MULSU R23,R20FMUL R21,R22

FMULS R21,R22FMULSU R21,R22

I/O

Αποτελέσµατα MUL

CBI $12,3

63

...

31

0

... SBI $02,1

SBIC $10,4

SBIS $1A,2

Registers

SBCI Rb,#number

SUBI Rb,#number

ANDI Rb,#number

ORI Rb,#number

CPI Rb,#number

MULS Rb,Rn

CBR Rb,#number

SER Rb

MULSU Rb,Rn

FMUL Rb,Rn

FMULS Rb,Rn

FMULSU Rb,Rn

ADIW Rb+1:Rb,#number

SBIW Rb+1:Rb,#number

CBI #num1,#num2

SBIC #num1,#num2

SBI #num1,#num2

Rb 16-31, #number 8-bit; Αφαίρεση µε κρατούµενο από το Rb τιµή #number ; Αποτέλεσµα στον Rb

Rb 16-31, #number 8-bit; Αφαίρεση από το Rb τιµή #number ; Αποτέλεσµα στον Rb

Rb 16-31, #number 8-bit; Λογικό AND του Rb µε τιµή #number ; Αποτέλεσµα στον Rb

Rb 16-31, #number 8-bit; Λογικό OR του Rb µε τιµή #number ; Αποτέλεσµα στον Rb

Rb 16-31, #number is 8-bit ; Copy the value of #number to Rb (immidiate)

Rb 16-31, Rn 16-31; Multiplies (signed) Rn*Rb ; Αποτέλεσµα στους R1:R0

Rb 16-31, #number 8-bit; Clear bits of Rb according to #number ; Αποτέλεσµα στον Rb

Rb 16-23(sign), Rn 16-23(unsign); Multiplies (signed) Rn*Rb ; Αποτέλεσµα στους R1:R0

Rb 16-23(uns 1.7), Rn 16-23(uns 1.7);Fractional multiplies (uns 1.15) Rn*Rb ; Αποτέλεσµα

στους R1:R0

Rb 16-23(sig 1.7), Rn 16-23(sig 1.7);Fractional multiplies (sig 1.15) Rn*Rb ; Αποτέλεσµα στους

R1:R0

Rb 16-23(sig 1.7), Rn 16-23(uns 1.7);Fractional multiplies (sig 1.15) Rn*Rb ; Αποτέλεσµα στους R1:R0

Rb 24-31, #number 8-bit; Add word Rb+1:Rb with #number ; Αποτέλεσµα Rb+1:Rb

Rb 24-31, #number 8-bit; Sub word from Rb+1:Rb the #number ; Αποτέλεσµα Rb+1:Rb

#num1 0-31, #num2 is 8-bit ; Clear bits of #num1 I/O according to #num2;

#num1 0-31, #num2 is 8-bit ; Skips a command if #num1 I/O bits (according to #num2) are cleared

#num1 0-31, #num2 is 8-bit ; Set bits of #num1 I/O according to #num2;

Rb 16-31, #number 8-bit; Σύγκριση του Rb µε τιµή #number ; Αποτέλεσµα ΠΟΥΘΕΝΑ !

LDI Rb,#number

SBR Rb,#number Rb 16-31, #number 8-bit; Sets bits of Rb according to #number ; Αποτέλεσµα στον Rb

Rb 16-31; Sets all bits of Rb ; Αποτέλεσµα στον Rb

SBIS #num1,#num2 #num1 0-31, #num2 is 8-bit ; Skips a command if #num1 I/O bits (according to #num2) are set

Page 3: Visio AVR v2

Jump Conditions

SREG

I T H S V N Z C

BRIEBRTS

BRTCBRTS

BRHCBRHS

BRVC

BRGEBRLT

BRNEBREQ

Condition

Rd > Rs

Rd >= Rs

Rd == Rs

Rd != Rs

Rd <= Rs

Rd <Rs

Signed Unsigned

BREQ noBRGE yes

no: jump outyes:

BREQ noBRSH yes

no: jump outyes:

BRGE yes

BRSH yesor

BRCC yes

BREQ yes BREQ yes

BRNE yes BRNE yes

BRLT yesBREQ yesjump out

yes:

BRLO yesBREQ yesjump out

yes:

BRLT yesBRLO yes

orBRCS yes