100% found this document useful (2 votes)
279 views34 pages

AVR Architecture and Assembly Language Programming

1. The document describes the general purpose registers (GPRs) in an AVR microcontroller. It notes that the 32 GPRs (R0-R31) are located in the lowest memory addresses and are all 8 bits. 2. Some simple instructions for the AVR are described, including loading values into GPRs with the LDI instruction, arithmetic operations like ADD and SUB, and incrementing registers with INC. 3. A few example programs are shown that demonstrate adding numbers stored in different GPRs to calculate simple expressions.

Uploaded by

Kummara Bhargavi
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
100% found this document useful (2 votes)
279 views34 pages

AVR Architecture and Assembly Language Programming

1. The document describes the general purpose registers (GPRs) in an AVR microcontroller. It notes that the 32 GPRs (R0-R31) are located in the lowest memory addresses and are all 8 bits. 2. Some simple instructions for the AVR are described, including loading values into GPRs with the LDI instruction, arithmetic operations like ADD and SUB, and incrementing registers with INC. 3. A few example programs are shown that demonstrate adding numbers stored in different GPRs to calculate simple expressions.

Uploaded by

Kummara Bhargavi
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/ 34

Dr.

Hassan SHARABATY
EEE Department, Faculty of Engineering
University of Turkish Aeronautical Association

Simplified View of an AVR Microcontroller


7KHJHQHUDOSXUSRVHUHJLVWHUV*35VLQ$95
,QWKH&38UHJLVWHUVDUHXVHGWRVWRUHLQIRUPDWLRQ 5
5
WHPSRUDULO\7KDWLQIRUPDWLRQFRXOGEHDE\WHRIGDWDWR
5
EHSURFHVVHGRUDQDGGUHVVSRLQWLQJWRWKHGDWDWREH
«

IHWFKHG 5$0 ((3520 7LPHUV

352*5$0
5
7KHYDVWPDMRULW\RI$95UHJLVWHUVDUHELWUHJLVWHUV
520 5
3URJUDP 5
%XV
06% &38 %XV /6%
«

5
7KH*35VRI$955±5DUHORFDWHGLQWKHORZHVW 5
,QWHUUXSW 2WKHU
26& 3RUWV
8QLW 3HULSKHUDOV
ORFDWLRQRIPHPRU\DGGUHVV$OORIWKHVHUHJLVWHUVDUHELWV *35V
,2
7KHJHQHUDOSXUSRVHUHJLVWHUVLQ$95FDQEHXVHGE\DOO
3,16

DULWKPHWLFDQGORJLFLQVWUXFWLRQV

2
6RPHVLPSOHLQVWUXFWLRQV
/RDGLQJYDOXHVLQWRWKHJHQHUDOSXUSRVHUHJLVWHUV
/',LQVWUXFWLRQ /RDG ,PPHGLDWH
5
WKH/',LQVWUXFWLRQFRSLHVELWGDWDLQWRWKH $/8 5
5
JHQHUDOSXUSRVHUHJLVWHUV,WKDVWKHIROORZLQJ

«
65(* , 7 + 6 9 1 = &

&38
5
IRUPDW 5
/',5GNŁ5G N 5
3&

«
¾ . LVDQELWYDOXHWKDWFDQEHGRU))+
5
,QVWUXFWLRQGHFRGHU
¾ 5G GHVWLQDWLRQLV5WR5 5
,QVWUXFWLRQ5HJLVWHU
UHJLVWHUV
([DPSOH

/',5ORDGVWKH5ZLWKWKHYDOXHLQGHFLPDO

/',5[RU /',5ORDGVWKH5ZLWKWKHYDOXH+

/', 5[ LQYDOLGLQVWUXFWLRQ


3

6RPHVLPSOHLQVWUXFWLRQV
$ULWKPHWLFFDOFXODWLRQ
‡ 7KHUHDUHVRPHLQVWUXFWLRQVIRUGRLQJ$ULWKPHWLFDQGORJLFRSHUDWLRQV
VXFKDV
5

$''68%08/$1'HWF $/8 5
5
«

65(* , 7 + 6 9 1 = &
‡ $''5G5VÎ 5G 5G5V
&38
5
5
$''5VWR5GDQGVWRUHWKHUHVXOWLQ5G 5
3&
«

([DPSOH ,QVWUXFWLRQGHFRGHU
5
5
,QVWUXFWLRQ5HJLVWHU
‡ $''55Î 5 55 UHJLVWHUV

‡ $''55Î 5 55

4
$VLPSOHSURJUDP

„ :ULWHDSURJUDPWKDWFDOFXODWHV

LDI R16, 19 ;R16 = 19 5


$/8 5
LDI R20, 95 ;R20 = 95
5
ADD R16, R20 ;R16 = R16 + R20

«
65(* , 7 + 6 9 1 = &

&38
5
5
5
3&

«
5
,QVWUXFWLRQGHFRGHU
5
,QVWUXFWLRQ5HJLVWHU
UHJLVWHUV

$VLPSOHSURJUDP

„ :ULWHDSURJUDPWKDWFDOFXODWHV
LDI R16, 19 ;R16 = 19
LDI R20, 95 ;R20 = 95
LDI R21, 5 ;R21 = 5
ADD R16, R20 ;R16 = R16 + R20
ADD R16, R21 ;R16 = R16 + R21

2U
LDI R16, 19 ;R16 = 19
LDI R20, 95 ;R20 = 95
ADD R16, R20 ;R16 = R16 + R20
LDI R20, 5 ;R20 = 5
ADD R16, R20 ;R16 = R16 + R20

7KHQG ZD\LVUHFRPPHQGHGZK\"
6
$VLPSOHSURJUDP

„ :ULWHDSURJUDPWRDGGWKHIROORZLQJQXPEHUV
++

6RPHVLPSOHLQVWUXFWLRQV
$ULWKPHWLFFDOFXODWLRQ

„ 68%5G5V
5
Î 5G 5G± 5V $/8 5
5
«

65(* , 7 + 6 9 1 = &

&38
5
5
„ ([DPSOH 5
3&
«

„ 68%55Î 5 5 5 ,QVWUXFWLRQGHFRGHU


5
5
,QVWUXFWLRQ5HJLVWHU
„ 68%55Î 5 5 5 UHJLVWHUV

8
6RPHVLPSOHLQVWUXFWLRQV
$ULWKPHWLFFDOFXODWLRQ

„ ,1&5G5G 5G


5
$/8 5
([DPSOH 5

«
,1&5Î 5 5 65(* , 7 + 6 9 1 = &

&38
5
5
5
3&

«
5
,QVWUXFWLRQGHFRGHU
5
„ '(&5G5G 5G± ,QVWUXFWLRQ5HJLVWHU
UHJLVWHUV

([DPSOH

'(&5Î 5 5


9

AVR Memory Organization


,Q$95PLFURFRQWUROOHUVWKHUHDUHWUHHNLQGVRIPHPRU\VSDFHUHPRYLQJWKH
QHHGIRUH[WHUQDOPHPRU\LQPRVWDSSOLFDWLRQV

5$0 ((3520

&RGHPHPRU\ 'DWDPHPRU\
10
AVR Memory Organization
¾ 2XUSURJUDPLVVWRUHGLQFRGHPHPRU\VSDFH
ZKHUHDVWKHGDWDPHPRU\ VWRUHVGDWD

5$0 ((3520

&RGHPHPRU\ 'DWDPHPRU\
11

AVR Memory Organization


'DWD0HPRU\5$0 ¾ 7KHGDWDPHPRU\VSDFHLV
FRPSRVHGRIWKUHHSDUWV
*35V JHQHUDOSXUSRVHUHJLVWHUV
,2PHPRU\
,QWHUQDOGDWD65$0

‡ *35V space consists of 32


general purpose 8-bit
registers (R0-R31) (WKH *35V GR
QRW KDYH DQ\ VSHFLILF IXQFWLRQ).
™ These registers have the shortest (fastest) access time,
which allows single-cycle Arithmetic Logic Unit (ALU)
operation.

™ Its always take the address location $00–$1F in the


12
data memory space, regardless of the AVR chip number.
AVR Memory Organization
'DWD0HPRU\5$0 ‡ I/O Memory or Specific
Function Registers (SFRs) :
These registers control the CPU
peripherals functions, such as
status register, timers, serial
communication, I/O ports,
ADC, and so on.
‡ 7KH $95 ,2 PHPRU\ LV PDGH DOVR
RI ELW UHJLVWHUV

‡7KH QXPEHU RI ORFDWLRQV GHSHQGV RQ WKH SLQ QXPEHUV DQG


SHULSKHUDO IXQFWLRQV VXSSRUWHG E\ WKDW FKLS +RZHYHU DOO RI WKH
$95V KDYH DW OHDVW E\WHV RI ,2 PHPRU\ ORFDWLRQV FDOOHG
VWDQGDUG ,2 PHPRU\ 13

AVR Memory Organization


'DWD0HPRU\5$0 ‡ I/O Memory or Specific
Function Registers (SFRs) :
These registers control the CPU
peripherals functions, such as
status register, timers, serial
communication, I/O ports,
ADC, and so on.
‡ 7KH $95 ,2 PHPRU\ LV PDGH DOVR
RI ELW UHJLVWHUV

‡ In AVRs with more than 32 I/O pins (e.g., ATmega64,


ATmega128, and ATmega256) there is also an extended
I/O memory, which contains registers for controlling
the extra ports and the extra peripherals. 14
I/O Registers & their Data Memory Address Locations
$GGUHVV $GGUHVV $GGUHVV
Unleash your Creativity!
1DPH 1DPH 1DPH
,2 0HP ,2 0HP ,2 0HP
7:%5 3,1% % % 2&5$+
7:65 ''5% & & 7&17/
7:$5 3257% ' ' 7&17+
7:'5 3,1$ ( ( 7&&5%
$'&/ $ $ ''5$ ) ) 7&&5$
$'&+ % % 3257$ 6),25
$'&65$ & & ((&5 2&'5
' ' (('5
$'08; 26&&$/
$&65 ( ( (($5/ 7&17
8%55/ ) ) (($5+ 7&&5
$ $ 8&65% 8%55& 0&8&65

% % 8&65$ 8%55+ 0&8&5
& & 8'5 :'7&5 7:&5
(DFKORFDWLRQLQ ' ' 63&5 $665 630&5
( ( 6365 2&5 7,)5
) ) 63'5
,2PHPRU\KDV 3,1'




7&17
7&&5

$

$
7,06.
*,)5
''5' ,&5/ % % *,&5
WZRDGGUHVVHV



3257'
3,1&
,&5+ & & 2&5
2&5%/ ' ' 63/
''5& 2&5%+ ( ( 63+
3257& $ $ 2&5$/ ( ( 65(*

'DWDPHPRU\DGGUHVV+ ))))+ Î IRU,2PHPRU\+ )+


,2DGGUHVV+ )+ZKLFKLV DUHODWLYHDGGUHVVLQFRPSDULVRQWRWKHEHJLQQLQJRI
WKH,2PHPRU\
15

AVR Memory Organization


'DWD0HPRU\5$0
‡ Internal data SRAM is used
for storing temporary data and
parameters by AVR programmers
and C compilers. Generally, this
is called scratch pad.

¾ (DFKORFDWLRQRIWKH65$0FDQEHDFFHVVHGGLUHFWO\E\LWV
DGGUHVV WRVWRUHDQ\GDWDZHZDQWDVORQJDVLWLVELW8VLQJ
/'6 676 LQVWUXFWLRQV

¾7KHVL]HRI65$0FDQYDU\IURPFKLSWRFKLSHYHQDPRQJ
16
PHPEHUVRIWKHVDPHIDPLO\
Using instruction with Data Memory.
/'6/RDGGLUHFWIURPGDWDVSDFH
Unleash your Creativity! ORDG 5G ZLWK WKH FRQWHQWV RI ORFDWLRQ .
/'65GN5G >N@
” G ”
([DPSOH
. LV DQ DGGUHVV EHWZHHQ WR ))))
/'65[

¾ 7KH/'6LQVWUXFWLRQWHOOVWKH&38WRORDGFRS\RQHE\WHIURPDQDGGUHVV


LQWKHGDWD PHPRU\ WRWKH*35V
¾ 7KHORFDWLRQN LQWKHGDWDPHPRU\FRXOGEHDQ\SDUWRIWKHGDWDVSDFH
LWFDQEHRQHRIWKH,2UHJLVWHUVDORFDWLRQLQWKHLQWHUQDO65$0RUD*35
¾ )RUH[DPSOH
/'65[ZLOOFRS\WKHFRQWHQWVRIORFDWLRQ
ZKLFKLVWKHDGGUHVVRI5LQWR5
6RWKHLQVWUXFWLRQFRSLHV5WR5
17

Using instruction with Data Memory.


Unleash your Creativity!

:ULWH SURJUDP WR
DGG WKH FRQWHQWV RI
ORFDWLRQ [ RI 65$0
WR ORFDWLRQ [

18
Using instruction with Data Memory.

Unleash your Creativity!


6766WRUHGLUHFWWRGDWDVSDFH
676N5V>N@ 5V VWRUHUHJLVWHU 5V LQWRORFDWLRQ.

([DPSOH .LVDQDGGUHVVEHWZHHQWR))))

676[5 >[@ 5

¾7KH676LQVWUXFWLRQWHOOVWKH&38WRVWRUHFRS\WKHFRQWHQWVRIWKH


*35WRDQDGGUHVVORFDWLRQLQWKHGDWDPHPRU\VSDFH
¾ 7KHORFDWLRQ .FRXOGEHDQ\SDUWRIWKHGDWDPHPRU\VSDFHLWFDQ
EHRQHRIWKH,2UHJLVWHUVDORFDWLRQLQWKH65$0RUD*35

¾ ([DPSOH:ULWHSURJUDPWRDGGWKHFRQWHQWVRIORFDWLRQ[WR
ORFDWLRQ[DQGVWRUHVWKHUHVXOWLQORFDWLRQ[

19

Using instruction with Data Memory.


¾ ([DPSOH:ULWHDSURJUDPWKDWVWRUHV&$+ LQWRORFDWLRQ[RI5$0
Unleash your Creativity!

6ROXWLRQ
LDI R20, 0xCA ;R20 =CA+ = 11001010
STS 0x35, R20 ;[0x35] = R20 = CA+

1RWLFHWKDW\RXFDQQRWFRS\VWRUHDQLPPHGLDWHYDOXHGLUHFWO\LQWR


WKH65$0ORFDWLRQLQWKH$957KLVPXVWEHGRQHYLDWKH*35V

¾ ([DPSOH:ULWHDSURJUDPWKDWFRSLHVWKHFRQWHQWVRI
ORFDWLRQ[RI5$0LQWRORFDWLRQ[

6ROXWLRQ
LDS R20, 0x80 ;R20 = [0x80]
STS 0x81, R20 ;[0x81] = R20 = [0x80]

20
Using instruction with Data Memory.
¾ ([DPSOH$GGFRQWHQWVRIORFDWLRQ[WRFRQWHQWVRIORFDWLRQ[DQG
Unleash your Creativity! VWRUHWKHUHVXOWLQORFDWLRQ[
6ROXWLRQ
LDS R20, 0x90 ;R20 = [0x90]
LDS R21, 0x95 ;R21 = [0x95]
ADD R20, R21 ;R20 = R20 + R21
STS 0x313, R20 ;[0x313] = R20

¾ ([DPSOH:KDWGRHVWKHIROORZLQJLQVWUXFWLRQGR"/'65

$QVZHU
,WFRSLHVWKHFRQWHQWVRI5LQWR5DVLVWKHDGGUHVVRI5

¾ ([DPSOH6WRUH[LQWRWKH3257& 7KHDGGUHVVRI3257& LV[

6ROXWLRQ LDI R20, 0x53 ;R20 = 0x53


STS 0x35, R20 ;PORTC = R20

21

IN instruction (IN from I/O location)


,15G,2 DGGU Î 5G >DGGU@
Unleash your Creativity!

ORDG DQ ,2 ORFDWLRQ WR WKH *35


” G ” ” DGGU ”
RU+ ” DGGU ” )+

¾ 7KH,1LQVWUXFWLRQWHOOVWKH&38WR
ORDGRQHE\WHIURPDQ,2UHJLVWHU
WRWKH*35
™ ([DPSOH

,15[( FRS\WKHFRQWHQWVRIORFDWLRQ(+ ZKRVHGDWD


PHPRU\DGGUHVVLV[(RIWKH,2PHPRU\LQWR5

Î 5 63+

22
IN instruction (IN from I/O location)
Unleash your Creativity! ([DPSOH
,15[ ORDG5ZLWKWKHFRQWHQWVRIORFDWLRQ5 3,1'
ZULWHWKHHTXLYDOHQW/'6LQVWUXFWLRQ"

7RZRUNZLWKWKH,2UHJLVWHUVPRUHHDVLO\ZHFDQXVHWKHLUQDPHVLQVWHDG RIWKHLU
,2DGGUHVVHV

9 ,15 3,1' ORDG5ZLWK3,1'

([DPSOH:ULWHD SURJUDPWRDGGVWKHFRQWHQWVRI3,1'WR3,1%DQGVWRUHVWKH
UHVXOWLQORFDWLRQ[RIWKHGDWDPHPRU\
,153,1' ORDG5ZLWK3,1'
,153,1% ORDG5ZLWK3,1%
$''55 5 55
676[5 VWRUH5WRGDWDVSDFHORFDWLRQ
23

OUT instruction (Out to I/O location)


Unleash your Creativity!

287,2$GGU 5V >DGGU@ 5V


VWRUHUHJLVWHUWR,2ORFDWLRQ
”V””$GGU ”

¾ 287 LQVWUXFWLRQWHOOVWKH&38WRVWRUH
WKH*35FRQWHQWWR WKH,2UHJLVWHU

™ ([DPSOH287[(563+ 5

™ ([DPSOH7KH IROORZLQJ SURJUDPFRSLHV 3,1% WR 3257&

,1 53,1% ORDG 5ZLWK WKH FRQWHQWV RI,2UHJ 3,1%


287 3257&5 RXW 5WR 3257&
24
OUT instruction (Out to I/O location)
5HDGDOVRS029 5G5V
Unleash your Creativity! ([DPSOH
:ULWHDSURJUDPWKDWDGGVWKHFRQWHQWVRIWKH3,1& ,2UHJLVWHUWRWKHFRQWHQWV
RI3,1' DQGVWRUHVWKHUHVXOW LQORFDWLRQ[RIWKH65$0

6ROXWLRQ IN R20,PINC ;R20 = PINC


IN R21,PIND ;R21 = PIND
ADD R20,R21 ;R20 = R20 + R21
STS 0x90,R20 ;[0x90] = R20

([DPSOH :ULWHDSURJUDPWRJHWGDWDIURPWKH3,1%DQGVHQGLWWR WKH,2


UHJLVWHURI3257& FRQWLQXRXVO\

6ROXWLRQ $*$,1 ,153,1% EULQJGDWDIURP3RUW%LQWR5


2873257&5 VHQGLWWR3RUW&
-03$*$,1 NHHSGRLQJLWIRUHYHU

25

COM - Complement instruction


Unleash your Creativity!

&20 5G
7KLVLQVWUXFWLRQFRPSOHPHQWV LQYHUWVWKHFRQWHQWVRI5GDQGSODFHVWKH
UHVXOW EDFNLQWRWKHVDPHUHJLVWHU

([DPSOH
6HQGWKHYDOXH LQWR3257&7KHQLQYHUWLWEHIRUHVHQGLQJLW
DJDLQWR3257&

/', 5 [ 5 [


287 3257&5 FRS\5WR3RUW& 3& [
&20 5 FRPSOHPHQW5 5 [$$
287 3257&5 FRS\5WR3RUW& 3& [$$

26
Unleash your Creativity!

27

AVR Status Register (SREG)


¾ 7KHVWDWXVUHJLVWHU65(* LQ$95LV
Unleash your Creativity!

5
DQELWUHJLVWHU,WFRQWDLQVLQIRUPDWLRQ $/8 5
5
DERXWWKHVWDWH RIWKH SURFHVVRU
«

65(* , 7 + 6 9 1 = &
,WLVDOVRUHIHUUHGWRDVWKHIODJUHJLVWHU
&38
5
5
5
7KH ELWV & = 1 9 6 DQG + DUH FDOOHG
3&
«

FRQGLWLRQDO IODJV PHDQLQJ WKDW WKH\ LQGLFDWH


5
,QVWUXFWLRQGHFRGHU
VRPH FRQGLWLRQV WKDW UHVXOW DIWHU DQ LQVWUXFWLRQ 5
,QVWUXFWLRQ5HJLVWHU
UHJLVWHUV
LV H[HFXWHG

28
AVR Status Register (SREG)
Unleash your Creativity! &DUU\)ODJ&%LW

7KLVIODJLVVHW ZKHQHYHUWKHUHLVDFDUU\RXW RUERUURZRXW IURP


06%' DIWHUDQELWDGGLWLRQRU VXEWUDFWLRQ

([DPSOHV
5 &
/',5[ ; )ODJQRWDIIHFWHGNHHSVWKH
/',5[)) ; YDOXHFRUUHVSRQGLQJWRWKH
$''55 SUHYLRXV DULWKPHWLFDO
RSHUDWLRQ

5 &
/',5[ ;
/',5[ ;
68%55

29

AVR Status Register (SREG)


=HUR)ODJ=%LW
Unleash your Creativity!

7KH]HURIODJUHIOHFWVWKHUHVXOWRIWKHODVWDULWKPHWLFRUORJLFRSHUDWLRQ
,IWKHUHVXOWLV]HURWKHQ=
,IWKHUHVXOWLVQRW]HURWKHQ=

([DPSOH 5 = )ODJQRWDIIHFWHGNHHSVWKH


/',5[ ; YDOXHFRUUHVSRQGLQJWRWKH
'(&5 SUHYLRXVDULWKPHWLFDORSHUDWLRQ
'(&5 UHVXOWQRW
'(&5
'(&5 UHVXOW
'(&5

¾ ,1&'(&DIIHFW1=96
30
AVR Status Register (SREG)
Unleash your Creativity!
1HJDWLYHIODJ1%LW
5HSUHVHQWWKHVLJQ RIWKHODVW DULWKPHWLFDO RUORJLFDO RSHUDWLRQ
,IWKH06% 'ELWRIWKHUHVXOWLV]HUR SRVLWLYHUHVXOWWKHQ1
,IWKH06% 'ELWWKHUHVXOWLVRQH QHJDWLYHUHVXOWWKHQ1

([DPSOHV 5 1 )ODJQRWDIIHFWHGNHHSVWKH


/',5[) ; YDOXHFRUUHVSRQGLQJWRWKH
,1&5 SUHYLRXVDULWKPHWLFDORSHUDWLRQ

7KHSURFHVVRUGRHVQ¶WNQRZVLIWKHUHVXOWLVWREHLQWHUSUHWHG
DV³VLJQHG´RU³XQVLJQHG´1IODJLVDOZD\VJHQHUDWHG,WLV
WKHSURJUDPPHUUHVSRQVLELOLW\WRFKHFNRUQRW1IODJ

31

AVR Status Register (SREG)


2YHUIORZIODJ9%LW
Unleash your Creativity!

7KLVIODJLV VHWZKHQHYHUWKHUHVXOW RIDVLJQHGQXPEHURSHUDWLRQLV


WRRODUJHFDXVLQJWKHKLJKRUGHUELW WRRYHUIORZ LQWRWKHVLJQELW



:URQJ 7KHDQVZHULVLQFRUUHFW
DQGWKHVLJQELWKDVFKDQJHG

,QJHQHUDOWKHFDUU\IODJLVXVHGWRGHWHFWHUURUVLQXQVLJQHGDULWKPHWLF
RSHUDWLRQV ZKLOHWKHRYHUIORZIODJLVXVHG WRGHWHFWHUURUVLQVLJQHG
DULWKPHWLFRSHUDWLRQV
32
AVR Status Register (SREG)
Unleash your Creativity!
6LJQIODJ6%LW

6LJQIODJLVWKHUHVXOWRI([FOXVLYH25LQJ RI1DQG9IODJV



6 19


+DOIFDUU\IODJ+%LW
,I WKHUH LV D FDUU\ IURP ' WR ' GXULQJ DQ $'' RU 68% RSHUDWLRQ
WKLV ELW LV VHW RWKHUZLVH LW LV FOHDUHG 5 +
/',5[) ;
,1&5

7KLVIODJELWLVXVHG E\LQVWUXFWLRQVWKDWSHUIRUP%&'ELQDU\


FRGHGGHFLPDODULWKPHWLF,QVRPHPLFURSURFHVVRUVWKLVLV
FDOOHGWKH$&IODJ$X[LOLDU\&DUU\IODJ

33

AVR Status Register (SREG)


Unleash your Creativity!

([DPSOH6KRZWKHVWDWXVRIWKH&+DQG =IODJVDIWHUWKHDGGLWLRQ
RI[DQG[)LQWKHIROORZLQJLQVWUXFWLRQV
LDI R16, 0x38 ;R16 = 0x38
LDI R17, 0x2F ;R17 = 0x2F
ADD R16, R17 ;add R17 to R16

6ROXWLRQ

)
5 [
& EHFDXVHWKHUHLVQRFDUU\EH\RQGWKH'ELW
+ EHFDXVHWKHUHLVDFDUU\IURPWKH'WRWKH'ELW
= EHFDXVHWKH5WKHUHVXOWKDVDYDOXHRWKHUWKDQDIWHUWKHDGGLWLRQ

34
AVR Status Register (SREG)
Unleash your Creativity!
([DPSOH6KRZWKHVWDWXVRIWKH&+DQG= IODJVDIWHUWKHDGGLWLRQ
RI[&DQG[LQWKHIROORZLQJLQVWUXFWLRQV
LDI R20, 0x9C
LDI R21, 0x64
ADD R20, R21 ;add R21 to R20

6ROXWLRQ
&

5
& EHFDXVHWKHUHLVDFDUU\EH\RQGWKH'ELW
+ EHFDXVHWKHUHLVDFDUU\IURPWKH'WRWKH'ELW
= EHFDXVHWKH5WKHUHVXOWKDVDYDOXHLQLWDIWHUWKHDGGLWLRQ

35

AVR Status Register (SREG)


Unleash your Creativity!

([DPSOH6KRZWKHVWDWXVRIWKH&+DQG= IODJVDIWHUWKH
VXEWUDFWLRQRI[IURP[$LQWKHIROORZLQJLQVWUXFWLRQV
LDI R20, 0xA5
LDI R21, 0x23
SUB R20, R21 ;subtract R21 from R20

6ROXWLRQ
$

5
& EHFDXVH5LVQRWELJJHUWKDQ5DQGWKHUHLVQRERUURZIURP'ELW
= EHFDXVHWKH5KDVDYDOXHRWKHUWKDQDIWHUWKHVXEWUDFWLRQ
+ EHFDXVHWKHUHLVQRERUURZIURP'WR'

36
AVR Status Register (SREG)
Unleash your Creativity! ([DPSOH6KRZWKHVWDWXVRIWKH&+DQG= IODJVDIWHUWKH
VXEWUDFWLRQRI[IURP[LQWKHIROORZLQJLQVWUXFWLRQV
LDI R20, 0x52
LDI R21, 0x73
SUB R20, R21 ;subtract R21 from R20
6ROXWLRQ


') 5 ')
& EHFDXVH5LVELJJHUWKDQ5DQGWKHUHLVDERUURZIURP'ELW
= EHFDXVHWKH5KDVDYDOXHRWKHUWKDQ]HURDIWHUWKHVXEWUDFWLRQ
+ EHFDXVHWKHUHLVDERUURZIURP'WR'

37

AVR Status Register (SREG)


Unleash your Creativity!

([DPSOH6KRZWKHVWDWXVRIWKH&+DQG=IODJVDIWHUWKH
VXEWUDFWLRQRI[&IURP[&LQWKHIROORZLQJLQVWUXFWLRQV
LDI R20, 0x9C
LDI R21, 0x9C
SUB R20, R21 ;subtract R21 from R20

6ROXWLRQ
&
&
5
& EHFDXVH5LVQRWELJJHUWKDQ5DQGWKHUHLVQRERUURZIURP'ELW
= EHFDXVHWKH5LV]HURDIWHUWKHVXEWUDFWLRQ
+ EHFDXVHWKHUHLVQRERUURZIURP'WR'

38
Flag bits and decision making
+RZWKHVHIODJELWVDUHXVHIXOWRPDNHGHFLVLRQ"
Unleash your Creativity!

6RPH LQVWUXFWLRQV LQ $95 PDNH D FRQGLWLRQDO MXPS EUDQFK EDVHG RQ WKH


VWDWXV RI WKH IODJ ELWV
([

68%55
2QHMXPSLQVWUXFWLRQV
%UDQFKLI/RZHU
%UDQFKLI6DPHRU+LJKHU
%UDQFKLI(TXDO
%UDQFKLI1RW(TXDO
%UDQFKLI0LQXV
%UDQFKLI3OXV
%UDQFKLI2YHUIORZ)ODJLV6HW
%UDQFKLI2YHUIORZ)ODJLV&OHDUHG

39

AVR Conditional Jump instructions


,QVWUXFWLRQ $EEUHYLDWLRQRI &RPPHQW
Unleash your Creativity!

%5(4 OEO %UDQFKLI(TXDO -XPSWRORFDWLRQOEO LI=


%51(OEO %UDQFKLI1RW(TXDO -XPSLI= WRORFDWLRQOEO
%5&6 OEO %UDQFKLI&DUU\6HW -XPSWRORFDWLRQOEOLI&
%5/2 OEO %UDQFKLI/RZHU
%5&&OEO %UDQFKLI&DUU\&OHDUHG -XPSWRORFDWLRQOEOLI&
%56+OEO %UDQFKLI6DPHRU+LJKHU
%50,OEO %UDQFKLI0LQXV -XPSWRORFDWLRQOEOLI1
%53/OEO %UDQFKLI3OXV -XPSLI1
%5*(OEO %UDQFKLI*UHDWHURU(TXDO -XPSLI6
%5/7OEO %UDQFKLI/HVV7KDQ -XPSLI6
%5+6OEO %UDQFKLI+DOI&DUU\6HW ,I+ WKHQMXPSWROEO
%5+&OEO %UDQFKLI+DOI&DUU\&OHDUHG LI+ WKHQMXPSWROEO
%576 %UDQFKLI7IODJ6HW ,I7 WKHQMXPSWROEO
%57& %UDQFKLI7IODJ&OHDUHG ,I7 WKHQMXPSWROEO
%5,6 %UDQFKLI,IODJVHW ,I, WKHQMXPSWROEO
%5,& %UDQFKLI,IODJFOHDUHG ,I, WKHQMXPSWROEO

40
Example 1
Unleash your Creativity!
„ :ULWHDSURJUDPWRLQFUHDVHV5LI 5 5

„ 6ROXWLRQ 1R
LI5 5

<HV
68%55 =ZLOOEHVHWLI5 5

%51(1(;7 LI1RW(TXDOMXPSWRQH[W LQFUHPHQW5

,1&5

1(;7

41

Example 2
Unleash your Creativity!

„ :ULWHDSURJUDPWKDWLQFUHDVHV5LI 55

„ 6ROXWLRQ

68%55 &ZLOOEHVHWLI55

& LI5! 5

%5&&/ LI&DUU\FOHDUHGMXPSWR/

,1&5

/

42
Example 3
Unleash your Creativity!
„ :ULWHDSURJUDPWKDWLQFUHDVHV5LI 5! 5

„ 6ROXWLRQ

68%55 &ZLOOEHVHWLI55

& LI5! 5

%5&6/ LI&DUU\VHWMXPSWR/

,1&5

/

43

Example 4
Unleash your Creativity!

¾ :ULWHDSURJUDPWRVWD\LQWKH
ORRSWHVWLQJ3,1%XQWLOLWKDVD
YDOXHRWKHUWKDQ]HUR

„ 6ROXWLRQ

29(5 ,153,1% UHDG3,1%WR5


7675 VHWWKHIODJVDFFRUGLQJWR5
%5(429(5 MXPSLI5LV]HUR=

767LQVWUXFWLRQ([DPLQH DUHJLVWHUDQGVHWWKHIODJV=19 6DFFRUGLQJWR


WKHFRQWHQWVRIWKHUHJLVWHUZLWKRXWSHUIRUPLQJDQ\DULWKPHWLFLQVWUXFWLRQ

44
Example 5
:ULWHDSURJUDPWRGHWHUPLQHLI5$0ORFDWLRQ[FRQWDLQV
Unleash your Creativity!
„

WKHYDOXH,IVRSXW[LQWRLW

„ 6ROXWLRQ

(480</2& [
/'650</2&
7675 VHWWKHIODJV= 1
= LI5KDV]HURYDOXH
%51(1(;7 EUDQFKLI5LVQRW]HUR=
/',5[ SXW[LI5KDV]HURYDOXH
6760</2&5 DQGVWRUHDFRS\WRORF
1(;7

45

Example 6
)LQGWKHVXPRIWKHYDOXHV[[)DQG[(3XWWKHVXPLQWR
Unleash your Creativity!

5ORZE\WHDQG 5KLJKE\WH


6ROXWLRQ
/',5 FOHDUKLJKE\WH5
/',5[ FOHDUORZE\WH5
/',5[)
$''55 5 [[) [(DQG&
%5&& QH[W EUDQFKLI&
,1&5 & LQFUHPHQWQRZKLJKE\WH
QH[W /',5[(
$''55 5 [([( [DQG&
%56+29(5 EUDQFKLI&
,1&5 & LQFUHPHQWQRZKLJKE\WH
29(5 QRZORZE\WH [DQGKLJKE\WH
46
Example 7: IF and ELSE
R17 = 5;
Unleash your Creativity! if (R21 < R20)
R22++;
else
R22--;
R17 ++;

/', 5

68% 55

%5&6 ,)B<(6

'(& 5

-03 1(;7

,)B<(6 ,1& 5


1(;7 ,1& 5

47

Looping in AVR
Unleash your Creativity!

,QWKH$95WKHUHDUHVHYHUDOZD\VWRUHSHDWDQRSHUDWLRQPDQ\WLPHV
2QHZD\LVWRXVHDGHFUHDVLQJFRXQWHUZLWK%51( LQVWUXFWLRQ

/', 5QQXPEHURIUHSHWLWLRQV
%$&. VWDUWRIWKHORRS
ERG\RIWKHORRS
ERG\RIWKHORRS
'(&5Q GHFUHDVHWKHFRXQWHU5Q = ZKHQ5Q
%51(%$&. %UDQFKWR%$&.LI= LH 5HSHDWWKHORRS

3ULRUWRWKHVWDUWRIWKHORRSWKH5Q LVORDGHGE\WKHQHHGHGQXPEHU
RIUHSHWLWLRQV

48
Looping in AVR
Unleash your Creativity!
„ :ULWHDSURJUDPWKDWH[HFXWHVWKHLQVWUXFWLRQ
³$''55´WLPHV

„ 6ROXWLRQ

/',5 5
/
$''55
'(&5 5 5
%51(/ LI= MXPSWR/

1RWHWKDWWKHODVWORRSFDQEHUHSHDWHGD
PD[LPXPRIWLPHVZK\"

49

Looping in AVR
Unleash your Creativity!

([DPSOH:ULWHDSURJUDPWR DFOHDU5
EDGGWR5WHQWLPHV
6ROXWLRQ FVHQGWKHVXPWR3257%

/',5 5 GHFLPDOIRUFRXQWHU


/',5 5
/',5 5
$*$,1 $''55 DGGWR55 VXP
'(&5 GHFUHPHQW5FRXQWHU
%51($*$,1 UHSHDWXQWLO&2817
2873257%5 VHQGVXPWR3257%
««

50
Looping in AVR
Unleash your Creativity! „ :ULWHDSURJUDPWKDWFDOFXODWHVWKHUHVXOWRI«
„ 6ROXWLRQ

/', 5 5

/', 5 5


/ $'' 55 5 55

'(& 5 5 5

%51( / LI=

/ 5-03 / :DLWKHUHIRUHYHU

51

Looping in AVR
Unleash your Creativity!

„ :ULWHDSURJUDPWKDWFDOFXODWHVWKHRGGQXPEHUV«
6ROXWLRQ
LDI R20,0 5
5

LDI R16,1
5 55

L1: ADD R20,R16


5 5

LDI R17,2

ADD R16,R17 ;R16 = R16 + 2 <HV


5

LDI R17,27 ;R17 = 27


1R

SUB R17,R16 (1'

BRCC L1 ;if R16 <= 27 jump L1

52
Looping in AVR
Unleash your Creativity!
/RRSLQVLGHDORRS
([DPSOH:ULWHDSURJUDPWR
DORDGWKH³3257&´UHJLVWHUZLWKWKHYDOXH[
6ROXWLRQ E&RPSOHPHQW³3257&´ WLPHV

/',5[ 5 [


2873257&5 3257& [
/',5 ORDGLQWR5RXWHUORRSFRXQW
/23B /',5 ORDGLQWR5LQQHUORRSFRXQW
/23B &205 FRPSOHPHQW5
2873257&5 ORDG 3257& 6)5ZLWKWKHFRPSOHPHQWHGYDOXH
'(&5 GHF5LQQHUORRS
%51( /23B UHSHDWLWWLPHV
'(&5 GHF5RXWHUORRS
%51( /23B UHSHDWLWWLPHV

53

Calling a Function
Unleash your Creativity!

([DPSOH 7RJJOHDOOWKHELWVRI3RUW%HYHU\VHFE\VHQGLQJWRLWWKH
YDOXHVDQG$$FRQWLQXRXVO\

%$&. /', 5[ ORDG5ZLWK[


287 3257%5 VHQG+WRSRUW%
&$// '(/$<BVHF WLPHGHOD\
/', 5[$$ ORDG5ZLWK[$$
287 3257%5 VHQG[$$WRSRUW%
&$// '(/$<BVHF WLPHGHOD\
5-03 %$&. NHHSGRLQJWKLVLQGHILQLWHO\

'(/$<BVHF

«

5(7 UHWXUQWRFDOOHU
54
Time delay
Unleash your Creativity!

machine cycle
LDI R16, 19 1
LDI R20, 95 1
LDI R21, 5 1
ADD R16, R20 1
ADD R16, R21 1
5

0+=Î LQVWUXFWLRQF\FOH —VHF 'HOD\ [—V


0+=Î LQVWUXFWLRQF\FOH QVHF 'HOD\ [QV
0+=Î LQVWUXFWLRQF\FOH QVHF 'HOD\ [QV

55

Time delay
Unleash your Creativity!

123 1RRSHUDWLRQMXVWZDVWHVFORFNF\FOHV
'HOD\VHF
machine cycle
LDI R17, 200
1
L1: LDI R16, 250
1 [
L2: NOP
1 [ [
NOP 1 [ [
DEC R16 1 [
[
BRNE L2 2 [ [
DEC R17 1 [
BRNE L1 2 [

&U\VWDOIUHTXHQF\ 0+=Î LQVWUXFWLRQF\FOH —VHF

'HOD\ ^>[@[`[—V PVHF

56
Calling a Function
([DPSOH 7RJJOHDOOELWVRI3RUW%E\VHQGLQJWRLWWKHYDOXHVDQG$$
Unleash your Creativity!
FRQWLQXRXVO\3XWDWLPHGHOD\EHWZHHQHDFKWUDQVPLWWLQJRIGDWDWR3RUW%
/', 5+,*+5$0(1' ORDG63+
287 63+5
/', 5/2:5$0(1' ORDG63/
287 63/5
%$&. /', 5[ ORDG5ZLWK[
287 3257%5 VHQG+WRSRUW%
&$// '(/$< WLPHGHOD\
/', 5[$$ ORDG5ZLWK[$$
287 3257%5 VHQG[$$WRSRUW%
&$// '(/$< WLPHGHOD\
5-03 %$&. NHHSGRLQJWKLVLQGHILQLWHO\
'(/$<
/', 5[)) 5 WKHFRXQWHU
$*$,1
123 QRRSHUDWLRQZDVWHVFORFNF\FOHV
123
'(& 5
%51( $*$,1 UHSHDWXQWLO5EHFRPHV 57
5(7 UHWXUQWRFDOOHU

Calling many subroutines from the main program


0$,1 KRZ WKH&38NQRZV
&$// 'HOD\ ZKHUHWRUHVXPHZKHQ
LWUHWXUQVIURPWKHFDOOHG
&$// 68%5B
VXEURXWLQH"
HQGRI0$,1

'HOD\ &38VWRUHWKHQHHGHG



5(7 LQIRUPDWLRQLQ 6WDFN
HQGRI'HOD\VXEURXWLQH
68%5B PHPRU\

5(7
HQGRIVXEURXWLQH

58
Stack memory and Stack Pointer SP in AVR

¾6WDFN PHPRU\LVDVHFWLRQRI5$0XVXDOO\GHILQHGE\WKH


SURJUDPPHUDWHQGRI65$0

¾ ,W¶VPDLQO\XVHGWRVWRUHVRPHQHHGHGLQIRUPDWLRQIRU
FDOOV DQGLQWHUUXSWV

6WDFN
™ 6WDFNORFDWLRQLQ65$0" 63

¾ 63VWDFNSRLQWHUUHJLVWHUZKLFKLVLPSOHPHQWHGLQ


,2PHPRU\ LVXVHGWRSRLQWWKH VWDFNVHFWLRQ

1RWH
7KH6WDFN3RLQWHU63SRLQWVWRWKH7RS2I6WDFN726
7KHVWDFNLV/,)2PHPRU\/DVW,Q)LUVW2XW
59

Initializing the stack pointer


¾ :KHQWKH$95LVSRZHUHGXSWKH63UHJLVWHUFRQWDLQVWKHYDOXHWKHUHIRUH
ZHPXVWLQLWLDOL]HWKH63DWWKHEHJLQQLQJRIWKHSURJUDP
¾ ,WLVFRPPRQWRLQLWLDOL]HWKH63WR³5$0(1'´ ZKLFKUHSUHVHQWVWKHDGGUHVV
RIWKHODVW5$0ORFDWLRQ $GGUHVV &RGH
ORG 0

LDI R16,HIGH(RAMEND)

OUT SPH,R16


5 $10
$00 5 $30
$00
LDI R16,LOW(RAMEND)
5 $00
$20 5 $00 OUT SPL,R16

LDI R20,0x10

LDI R21, 0x20

LDI R22,0x30


63 PUSH
R20

PUSH


R21

PUSH


R22

$ POP R21

% POP R0

& POP R20

' L1: RJMP L1


60
RAMEND(suppose $3FFF)
0HPRU\
PUSH and POP instruction

™+RZVWDFNVDUHDFFHVVHG LQWKH$95"

6WRULQJ LQIRUPDWLRQRQWKHVWDFNLVFDOOHGD386+

6WDFN
386+ 5V 3XVKWKHUHJLVWHU5V RQWRVWDFNPHPRU\ 63

5V FDQEHDQ\RIWKH*35V55


=

1) [SP] = Rs &RQWHQWRIWKHUHJLVWHU5V LVVDYHGLQ


WKHPHPRU\ORFDWLRQZKHUHWKH63SRLQWV
2) SP = SP – 1 (63LVGHFUHPHQWHGE\RQH)

61

PUSH and POP instruction

™+RZVWDFNVDUHDFFHVVHGLQWKH$95"

/RDGLQJ RI VWDFNFRQWHQWEDFN LQWR RQHUHJLVWHU


LVFDOOHGD323RSSRVLWHSURFHVVRISXVKLQJ

6WDFN
3235G UHWULHYHWKHGDWDIURPVWDFNPHPRU\
EDFNLQWR 5G
=

5G FDQEHDQ\RI*35V55

1) Rd = [SP] &RQWHQWRIWKH WRSORFDWLRQLQWKHVWDFNLVFRSLHG


EDFNLQWRWKH5G
2) SP = SP + 1 (63LVLQFUHPHQWHGE\RQH)
62
Calling a Function
„ 7RH[HFXWHDFDOO
$GGUHVV &RGH
$GGUHVVRIWKHQH[WLQVWUXFWLRQLV LDI R16,HIGH(RAMEND)
VDYHGLQWRVWDFN OUT SPH,R16

3&LVORDGHGZLWKWKHDSSURSULDWH LDI R16,LOW(RAMEND)

YDOXH OUT SPL,R16


LDI R20,15
0DFKLQHFRGH LDI R21,5

($
$
CALL FUNC_NAME
RS&RGH RSHUDQG
INC R20
L1: RJMP L1
$ FUNC_NAME:
$ ADD R20,R21
63 % SUBI R20,3
3& &
%




& RET
'
6WDFN

63

CALL, RET instructions and the role of the stack


6WDFN

¾ &DOOLQVWUXFWLRQ

3XVKWKHDGGUHVVRIWKHQH[WLQVWUXFWLRQRQWRWKHVWDFN
63
'HFUHPHQWWKHVWDFNSRLQWHU 0$,1

&$// 'HOD\
7UDQVIHUVFRQWUROWRWKDWVXEURXWLQH
HQGRI0$,1
'HOD\

5(7 HQGRIVXEURXWLQH

¾ 5(7LQVWUXFWLRQ
&RS\EDFNWKHWRSORFDWLRQVRIWKHVWDFNWRWKH3URJUDP&RXQWHU3&

WKH\VKRXOGFRQWDLQWKHDGGUHVVRIWKHLQVWUXFWLRQEHORZWKH&$//

,QFUHPHQWWKHVWDFNSRLQWHU

64
Some Instructions Using a GPR as Operand
Unleash your Creativity!

7KHVHLQVWUXFWLRQVRSHUDWHRQDVLQJOH*35UHJLVWHUDQGSODFHWKHUHVXOW
LQWKHVDPHUHJLVWHU

65

ALU Instructions Using Two GPRs


Unleash your Creativity!

7KHVHLQVWUXFWLRQVRSHUDWHRQWZR*35UHJLVWHUVRIVRXUFH5UDQG
GHVWLQDWLRQUGDQGWKHQSODFHWKHUHVXOWLQWKHGHVWLQDWLRQUHJLVWHU5G

66
5HIHUHQFHV
Unleash your Creativity!

)RUIXUWKHUUHDGLQJVWXGHQWVDUH
UHIHUUHGWR

¾ 7KH $95 0LFURFRQWUROOHU DQG


(PEHGGHG 6\VWHPV 8VLQJ
$VVHPEO\ DQG & 3UHQWLFH +DOO

67

You might also like