.


:




:

































 

 

 

 


AVR




 

( ), .

AVR Classic :

;

;

;

;

;

.

.

2.3.1.

, (), (), Ȼ, . / . , . .

( 2.1):

 

1. Ȼ - AND Rd, Rr

: Rd=Rd AND Rr

: Ȼ Rd Rr

: ldi R16,1; 1 R16

and R2,R16; Ȼ

 

2. Ȼ - ANDI Rd, K

: Rd=Rd AND K

: Ȼ Rd 8- . Rd. 16 (R16R31)

: andi R17,$0F; R17

andi R18,$10; 4- R18

 

3. Ȼ - OR Rd,Rr

: Rd=RdÚRr

: Ȼ Rd Rr. Rd

: or R15,R16; R15 R16

bst R15,6; 6- R15

brts ok; 1

ok:

 

4. Ȼ - ORI Rd,

: Rd=RdÚK

: Ȼ Rd . Rd. 16 (R16R31)

: ori R17,$0F; R17

ori R18,1; 0- R18

 

5. Ȼ - EOR Rd, Rr

: Rd=RdÅRr

: Ȼ Rd Rr. Rd

: eor R2,R2; R2

eor R0,R22; Ȼ R0 R22

 

6. - CLR Rd

: Rd= RdÅRd

: Ȼ

:

clr R18; R18

loop:

ink R18;R18=R18+1

cpi R18,$50; ?

brne loop

 

2.1.

AND Rd,Rr Ȼ Rd=Rd*Rr   Z,N,V
ANDI Rd,K Ȼ Rd=Rd*K   Z,N,V
EOR Rd,Rr Ȼ Rd=RdÅRr   Z,N,V
OR Rd,Rr Ȼ Rd=RdÚRr   Z,N,V
ORI Rd,K Ȼ Rd=RdÚK   Z,N,V
COM Rd Rd=$FF-Rd   Z,C,N,V
NEG Rd Rd=$00-Rd   Z,C,N,V,H
CLR Rd Rd= RdÅRd   Z,N,V
SER Rd Rd=$FF   -
TST Rd Rd*Rd     Z,N,V
SWAP Rd Rd(30)=Rd(74) Rd(74)=Rd(30)   -

 

2.3.2.

, , , , ( ), . . , , , .

, , , .

( 2.2):

:

1. - ADD Rd, Rr

: Rd=Rd+Rr

: Rd Rr

: add R16,R18;

 

2. - ADIW Rd,

: Rd+1:Rd=Rd+1:Rd+K

: Rd+1:Rd 6- . .

: adiw R24,1; 1 R25:R24

adiw R30,63; 63 Z(R31:R30)

 

3. - SUB Rd, Rr

: Rd=Rd-Rr

: Rd Rr. Rd

: sub R13,R12; R12 R13 (R13=R13-R12)

brne noteq;, R12 R13

noteq:

 

4. - SUBI Rd, K

: Rd=Rd-K

: Rd . .

: subi R22,$11; $11 R22

brne noteq;, R22 $11

noteq:

 

5. - DEC Rd

: Rd=Rd-1

: Rd . , . BREQ BRNE. . V 1 , $80

: ldi R17,$10; 16 R17

loop:

add R1,R2;R1=R1+R2

dec R17; R17

brne loop;, R17 0

 

6. - INC Rd

: Rd=Rd+1

: Rd . , . BREQ BRNE. . V 1 , $7F

: clr R22; R22

loop:

inc R22;R22=R22+1

cpi R22,$4F;

brne loop; , R22 $4F

7. - ASR Rd

: Rd(n)=Rd(n+1),n=06

: Rd 1 . 7- . 0- SPEG.

: ldi R16,$10; 16 R16

asr R16; R16=R16/2

ldi R17,$FC; -4 R17

asr R17; R17=R17/2

 

8. - LSL Rd

: Rd(n+1)=Rd(n),Rd(0)=0

: Rd . b0 0, b7 SPEG. ADD Rd,Rd

: add R0,R4; R0=R0+R4

lsl R0;R0=R0*2

 

9. - LSR Rd

: Rd(n)=Rd(n+1) Rd(7)=0

: Rd . b7 0, b0 SPEG.

: add R0,R4; R0=R0+R4

lsr R0;R0=R0/2

 

2.2.

ADD Rd,Rr Rd=Rd+Rr   Z,C,N,V,H
ADC Rd,Rr Rd=Rd+Rd+C   Z,C,N,V,H
ADIW Rd,K Rdh:Rdl=Rdh:Rdl+K   Z,C,N,V,S
SUB Rd,Rr Rd=Rd-Rr   Z,C,N,V,H
SUBI Rd,K Rd=Rd-K   Z,C,N,V,H
SBC Rd,Rr Rd=Rd-Rr-C   Z,C,N,V,H
SBCI Rd,K Rd=Rd-K-C   Z,C,N,V,H
SBIW Rd,K Rdh:Rdl=Rdh:Rdl-K   Z,C,N,V,S
DEC Rd Rd=Rd-1   Z,N,V,
INC Rd Rd=Rd+1   Z,N,V
ASR Rd Rd(n)=Rd(n+1), n=06   Z,C,N,V
LSL Rd Rd(n+1)=Rd(n),Rd(0)=0   Z,C,N,V
LSR Rd Rd(n)=Rd(n+1) Rd(7)=0   Z,C,N,V
ROL Rd Rd(0)=C,Rd(n+1)=Rd(n),C=Rd(7)   Z,C,N,V
ROR Rd Rd(7)=C,Rd(n)=Rd(n+1), C=Rd(0)   Z,C,N,V

 

2.3.3.

, . SREG (, ), .. . /, .

( 2.3) , , . .

( 2.3):

 

1. - CBI A, b

: A.b = 0

: b /, /. 32 ( 031)

: cbi $12,7;c 7- D

 

2. - SBI A, b

: A.b = 1

: b /, /. 32 ( 031)

: out $1E,R0; EEPROM

sbi $1C,0;

in R1,$1D; EEPROM

 

3. - BLD Rd,b

: Rd.b = T

: SPEG b Rd

: bst R1,2; 2- R1 T

Bld R0,4; 4- R0

 

4. - BST Rd,b

: T=Rd.b

: b Rd SPEG

: bst R1,2; 2- R1

bld R0,4; 4- R0

 

5. - CLI

: I=0

: 0 I SPEG. BCLR 7

: cli;

in R11,$16;

sei;

 

 

6. - SEI

: I=1

: 1 I SPEG. BSET 7

: cli;

in R13,$16;

sei;

 

7. C - CLT

: T=0

: 0 SPEG. BCLR 6

: clt;

 

8. - SET

: T=1

: 1 SPEG. BSET 6

: set;

 

2.3.

 

CBR Rd,K () Rd=Rd*($FF-K)   Z,N,V
SBR Rd,K () Rd=RdÚK   Z,N,V
CBI A,b A.b = 0   -
SBI A,b A.b = 1   -
BCLR s SREG.s = 0   SREG.s
BSET s SREG.s = 1   SREG.s
BLD Rd,b (SREG) Rd.b = T   -
BST Rr,b (SREG) T=Rd.b   T
CLC C=0   C
SEC C=1   C
CLN . N=0   N
SEN . N=1   N
CLZ Z=0   Z
SEZ . Z=1   Z
CLI I=0   I
SEI I=1   I
CLS S=0   S
SES S=1   S
CLV . V=0   V
SEV . V=1   V
CLT T=0   T
SET T=1   T
CLH H=0   H
SEH H=1   H

 

 

2.3.4.

( 2.4) , . (, , ) . , , :

Û;

Û;

Û .

PUSH POP ( AT90S1200), .

.

:

1. - MOV Rd, Rr

: Rd=Rr

: Rr Rd. - (Rr)

: mov R16, R0; R0 R16

call chec;

chec:

cpi R16, $11; R16 $11

ret;

 

2. - LDI Rd, K

: Rd=K

: 8- Rd. ( 1631)

: lr R31; . Z

ldi R30, $F0; Z

lpm;

; $00F0

 

3. - LD Rd, Y

: Rd=[Y]

: Rd. , , Y

: clr R29; .

ldi R28, $60; .

ld R1, Y;R1=[$0060]

 

 

4. - LDS Rd, K

: Rd=[k]

: Rd. , , .

: lds R2, $FF00;R2=[$FF00]

add R2, R1;R2=R2+R1

sts $FF000, R2;

 

5. - ST X, Rd

: [X]=Rr

: Rr . , ,

: clr R27; .

ldi R26, $60; .

st X, R1; R1 $0060

 

6. - STS K, Rd

: [k]=Rd

: Rd . , ,

: lds R2, $FF00;R2=[$FF00]

add R2, R1;R2=R2+R1

sts $FF000,R2;

2.4.

MOV Rd,Rr Rd=Rr    
LDI Rd,K Rd=K    
LD Rd,X Rd=[X]    
LD Rd,X+ Rd=[X],X=X+1    
LD Rd,-X X=X-1,Rd=[X]    
LD Rd,Y Rd=[Y]    
LD Rd,Y+ Rd=[Y],Y=Y+1    
LD Rd,-Y Y=Y-1,Rd=[Y]    
LDD Rd,Y+q Rd=[Y+q]    
LD Rd,Z Rd=[Z]    
LD Rd,Z+ Rd=[Z],Z=Z+1    
LD Rd,-Z Z=Z-1,Rd=[Z]    
LDD Rd,Z+q Rd=[Z+q]    
LDS Rd,k Rd=[k]    
ST X,Rr [X]=Rr    
ST X+,Rr [X]=Rr,X=X+1    
ST -X,Rr X=X-1,[X]=Rr    
ST Y,Rr [Y]=Rr    
ST Y+,Rr [Y]=Rr,Y=Y+1    
ST -Y,Rr Y=Y-1,[Y]=Rr    
STD Y+q,Rr [Y+q]=Rr    
ST Z,Rr [Z]=Rr    
ST Z+,Rr [Z]=Rr,Z=Z+1    
ST -Z,Rr Z=Z-1,[Z]=Rr    
STD Z+q,Rr [Z+q]=Rr    
STS k,Rr [k]=Rr    
LPM R0={Z}    
IN Rd,A Rd=A    
OUT A,Rr A=Rr    
PUSH Rr STACK=Rr    
POP Rd Rd=STACK    

 

2.3.5.

( 2.5) , /, . , SREG , , .

, () . , ( ), . . .

:

1. - RJMP k

: PC=PC+k+1

: , k.

: pi R16, $42; R16 $42

brne M1; M1, R16 $42

rjmp ok;

M1:

add R16, R17; R16 R17

ink R16;R16=R16+1

ok:

2. - RCALL k

: PC=PC+k+1

: , k. RCALL (2 ) .

: rcall routine;

routine:

push R14; R14

pop R14; R14

ret;

 

3. - RET

: PC=STACK

: ,

: rcall routine;

routine:

push R14; R14

pop R14; R14

ret;

 

4. - CPSE Rd, Rr

: Rd=Rr, PC=PC+2(3), =+1

: Rd Rr ,

: ink R4; R4 (R4=R4+1)

cpse R4, R0; R4 R0

neg R4; R4, R4 R0

5. - CP Rd, Rr

: Rd-Rr

: Rr Rd. SPEG, . . ,

: cp R4, R19; R4 R19 (R=R4-R19)

brne noteq;, R4<>R19

noteq:

 

6. - CPI Rd, K

: Rd-K

: Rd Rd. SPEG, . Rd . ,

: cpi R19, 3; R19 3 (R=R19-3)

brne noteq;, R19<>3

noteq:

 

7. - BREQ k

: Z=1, PC=PC+k+1, =+1

: . (Z) , . k . CP, CPI, SUB SUBI , ( ), Rd, ( ), Rr. BRBS 1, k

: cp R1, R0; R1 R0

breq equal;, R1=R2

equal:

 

 

8. - BRNE k

: Z=0, PC=PC+k+1, =+1

: . (Z) , . k . CP, CPI, SUB SUBI , ( ), Rd Rr, . BRBC 1,k

: eor R27, R27; R27

loop: inc R27;R27=R27+1

cpi R27, 5; R27 5

brne loop;, R27 5

 

9. ( )- BRSH k

: C=0, PC=PC+k+1, =+1

: . () , . k . CP, CPI, SUB SUBI , , Rd, ( ) , Rr. BRBC 0,k

 

: subi R19,4;R19=R19-4

brsh hgsm;, R19 4

hgsm:

 

10. ( )- BRLO k

: C=1, PC=PC+k+1, =+1

: . () , . k . CP, CPI, SUB SUBI , , Rd, , Rr. BRBS 0,k

: eor R19, R19; R19

loop: inc R19;R19=R19+1

cpi R19, $10; R19 $10

brlo loop;, R19<$10

 

11. - BRMI k

: N=1, PC=PC+k+1, =+1

: . (N) , . k . BRBS 2, k

: subi R18, 4;R18=R18-4

brmi minus;,

minus:

 

12. - BRPL k

: N=0, PC=PC+k+1, =+1

: . (N) , . k . BRBC 2, k

: subi R26, $50;R26=R26-$50

brpl plus;,

plus:

2.5.

RJMP k PC=PC+k+1   -
IJMP PC=Z   -
RCALL PC=PC+k+1   -
ICALL PC=Z   -
RET PC=STACK   -
RETI PC=STACK   I
CP Rd,Rr Rd-Rr   Z,N,V,C,H
CPC Rd,Rr Rd-Rr-C   Z,N,V,C,H
CPI Rd,K Rd-K   Z,N,V,C,H
CPSE Rd,Rr . Rd=Rr, PC=PC+2(3) 1/2/3 -
SBRC Rr,b . , Rr.b=0, PC=PC+2(3) 1/2/3 -
SBRS Rr,b . , Rr.b=1, PC=PC+2(3) 1/2/3 -
SBIC A,b . , A.b=0, PC=PC+2(3) 1/2/3 -
SBIS A,b . , A.b=1, PC=PC+2(3) 1/2/3 -
BRBC s,k , s SREG SREG.s =0, PC=PC+k+1 1/2 -
BRBS s,k , s SREG SREG.s =1, PC=PC+k+1 1/2 -
BRCS k C=1, PC=PC+k+1 1/2 -
BRCC k , C=0, PC=PC+k+1 1/2 -
BREQ k Z=1, PC=PC+k+1 1/2 -
BRNE k Z=0, PC=PC+k+1 1/2 -
BRSH k C=0, PC=PC+k+1 1/2 -
BRLO k C=1, PC=PC+k+1 1/2 -
BRMI N=1, PC=PC+k+1 1/2 -
BRPL N=0, PC=PC+k+1 1/2 -
BRGE ( ) (NÅV)=0, PC=PC+k+1 1/2 -
BRLT ( ) (NÅV)=1, PC=PC+k+1 1/2 -
BRHS H=1, PC=PC+k+1 1/2 -
BRHC , H=0, PC=PC+k+1 1/2 -
BRTS , T T=1, PC=PC+k+1 1/2 -
BRTC , T T=0, PC=PC+k+1 1/2 -
BRVS . V=1, PC=PC+k+1 1/2 -
BRVC , . V=0, PC=PC+k+1 1/2 -
BRID , I=0, PC=PC+k+1 1/2 -
BRIE , I=1, PC=PC+k+1 1/2 -

 

2.3.6.

3 :

NOP ;

SLEEP ;

WDR .

NOP WDR , SLEEP .





:


: 2016-11-24; !; : 415 |


:

:

, .
==> ...

1673 - | 1493 -


© 2015-2024 lektsii.org - -

: 0.178 .