Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% found this document useful (1 vote)
219 views

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
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
219 views

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
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 *35V LQ$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$95 5±5 DUHORFDWHGLQWKHORZHVW 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 GHVWLQDWLRQ LV5WR5 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&5G 5G 5G


5
$/8 5
([DPSOH 5

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

&38
5
5
5
3&

«
5
,QVWUXFWLRQGHFRGHU
5
„ '(&5G 5G 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\GDWDZHZDQWDVORQJDVLWLVELW 8VLQJ
/'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&38WRORDG FRS\ RQHE\WHIURPDQDGGUHVV


LQWKHGDWD PHPRU\ WRWKH*35V
¾ 7KHORFDWLRQN LQWKHGDWDPHPRU\FRXOGEHDQ\SDUWRIWKHGDWDVSDFH
LWFDQEHRQHRIWKH,2UHJLVWHUVDORFDWLRQLQWKHLQWHUQDO65$0RUD*35
¾ )RUH[DPSOH
/'65[ZLOOFRS\WKHFRQWHQWVRIORFDWLRQ
 ZKLFKLVWKHDGGUHVVRI5 LQWR5
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!


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

([DPSOH .LVDQDGGUHVVEHWZHHQWR))))

676[5 >[@ 5

¾7KH676LQVWUXFWLRQWHOOVWKH&38WRVWRUH FRS\ 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\ VWRUH DQLPPHGLDWHYDOXHGLUHFWO\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[ ORDG5ZLWKWKHFRQWHQWVRIORFDWLRQ 5 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 LQYHUWV WKHFRQWHQWVRI5GDQGSODFHVWKH
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)


¾ 7KHVWDWXVUHJLVWHU 65(* 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[ ; )ODJQRWDIIHFWHG NHHSVWKH
/',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 = )ODJQRWDIIHFWHG NHHSVWKH


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

¾ ,1&'(&DIIHFW1=96
30
AVR Status Register (SREG)
Unleash your Creativity!
1HJDWLYHIODJ 1 %LW
5HSUHVHQWWKHVLJQ RIWKHODVW DULWKPHWLFDO RUORJLFDO RSHUDWLRQ
,IWKH06% 'ELW RIWKHUHVXOWLV]HUR SRVLWLYHUHVXOW WKHQ1 
,IWKH06% 'ELW WKHUHVXOWLVRQH QHJDWLYHUHVXOW WKHQ1 

([DPSOHV 5 1 )ODJQRWDIIHFWHG NHHSVWKH


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

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

31

AVR Status Register (SREG)


2YHUIORZIODJ 9 %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!
6LJQIODJ 6 %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\


FRGHGGHFLPDO DULWKPHWLF,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
= EHFDXVHWKH5 WKHUHVXOW KDVDYDOXHRWKHUWKDQDIWHUWKHDGGLWLRQ

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
= EHFDXVHWKH5 WKHUHVXOW KDVDYDOXHLQLWDIWHUWKHDGGLWLRQ

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
LI 5 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 6 DFFRUGLQJWR


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!

5 ORZE\WH DQG 5 KLJKE\WH 


6ROXWLRQ
/',5 FOHDUKLJKE\WH 5 
/',5[ FOHDUORZE\WH 5 
/',5[)
$''55 5 [[) [(DQG& 
%5&& QH[W EUDQFKLI& 
,1&5 & LQFUHPHQW QRZKLJKE\WH 
QH[W  /',5[(
$''55 5 [([( [DQG& 
%56+29(5 EUDQFKLI& 
,1&5 & LQFUHPHQW QRZKLJKE\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[LPXPRIWLPHV ZK\"

49

Looping in AVR
Unleash your Creativity!

([DPSOH:ULWHDSURJUDPWR  D FOHDU5
 E DGGWR5WHQWLPHV
6ROXWLRQ  F VHQGWKHVXPWR3257%

/',5 5  GHFLPDO IRUFRXQWHU


/',5 5 
/',5 5 
$*$,1 $''55 DGGWR5 5 VXP
'(&5 GHFUHPHQW5 FRXQWHU
%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
 D ORDGWKH³3257&´UHJLVWHUZLWKWKHYDOXH[
6ROXWLRQ  E &RPSOHPHQW³3257&´ WLPHV

/',5[ 5 [


2873257&5 3257& [
/',5 ORDGLQWR5 RXWHUORRSFRXQW
/23B /',5 ORDGLQWR5 LQQHUORRSFRXQW
/23B &205 FRPSOHPHQW5
2873257&5 ORDG 3257& 6)5ZLWKWKHFRPSOHPHQWHGYDOXH
'(&5 GHF5 LQQHUORRS
%51( /23B UHSHDWLWWLPHV
'(&5 GHF5 RXWHUORRS
%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$0 XVXDOO\GHILQHGE\WKH


SURJUDPPHUDWHQGRI65$0 

¾ ,W¶VPDLQO\XVHGWRVWRUHVRPHQHHGHGLQIRUPDWLRQIRU
FDOOV DQGLQWHUUXSWV

6WDFN
™ 6WDFNORFDWLRQLQ65$0" 63

¾ 63 VWDFNSRLQWHU UHJLVWHUZKLFKLVLPSOHPHQWHGLQ


,2PHPRU\ LVXVHGWRSRLQWWKH VWDFNVHFWLRQ

1RWH
 7KH6WDFN3RLQWHU 63 SRLQWVWRWKH7RS2I6WDFN 726 
 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*35V 55 


=

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


LVFDOOHGD323 RSSRVLWHSURFHVVRISXVKLQJ 

6WDFN
3235G UHWULHYHWKHGDWDIURPVWDFNPHPRU\
EDFNLQWR 5G
=

5G FDQEHDQ\RI*35V 55 

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*35UHJLVWHUVRIVRXUFH 5U DQG
GHVWLQDWLRQ UG DQGWKHQSODFHWKHUHVXOWLQWKHGHVWLQDWLRQUHJLVWHU 5G

66
5HIHUHQFHV
Unleash your Creativity!

)RUIXUWKHUUHDGLQJVWXGHQWVDUH
UHIHUUHGWR

¾ 7KH $95 0LFURFRQWUROOHU DQG


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


67

You might also like