You are on page 1of 9

Quickly Create High Quality PDFs with HiQPdf

HiQPdfEvaluation02/01/2013

CNGHCAVR

tmkim...

...to become the AVR Master

Trangch

HcAVR

ngdngAVR

Htrphnmm

Htrphncng

Tholun

Thngtin

Assembly cho AVR


( 17 Votes )

Nidung
1. InstructionchdngchoRegisterFiles.
2. InstructionchoccthanhghiI/O.
3. CccontrX,Y,Zvcchtruycptonbkhnggianbnh.
4. Rnhnhvvnglp.

Ccbicnthamkhotrc

LmquenAVR.
CutrcAVR.
WinAVR.

PhnnytigiithiumtsinstructionmchngtarthaysdngkhilptrnhchoAVR.Tischiacc
instructionnyrathnhnhiunhmdatheophmvitcngvchcnngcachng.
Trchtchngtathngnhtmtscchsdngkhiutrongcchvitcphpcaccinstructionnhsau:
Rd:thanhghingunvcnglchthucRegisterFile.
Rr:thanhghingunthucRegisterFile.
Khinimngun(Source),ch(Destination)lchcctonhngvktqutrongccphptonisvLogic,
vdADDR1,R2llnhcng2gitrchatrong2thanhghiR1,R2,trongtrnghpnycR1vR2u
cgilngunvchagitrtrckhithchinphpcng.Saukhiphpcngcthchin,ktquc
chalitrongR1vvthR1cgilchtrongtrnghpny.R1valngun,valchtrongkhiR2
chlngun,nuvitvdnydidngtngqutsl:ADDRd,Rr.
R:ktqusaukhilnhcthcthi.
K:hngs.
k:hngschachtuyticathanhghi.
b:(0n7)sthtbittrongccthanhghicaRegisterFilevvngnhI/O.
s:(0n7)sthtbittrongthanhghitrngthiSREG.
X,Y,X:ccthanhghiachtngi(X=R27:R26,X=R29:R28,X=R31:R30).
A:achI/O.
q:dchchuyncaachtuyti.
I.InstructionchdngchoRegisterFiles.
- LDI (LoaD Immediate).
Cphp:LDI Rd,K
Chcnng:LoadhngsKvothanhghiRd.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:LDIR16,99ktqulthanhghiR1manggitr99.
- MOV (MOVE).
Cphp:MOV Rd, Rr
Chcnng:CopygitrtrongthanhghiRrvothanhghiRd.
Giihn:pdngchottcccthanhghitrongRF.
Vd:MOVR15,R16ktqulR15ccnggitrviR16(R15=R16=99).
- CLR (CLEAR Register).
Cphp:CLR Rd

Quickly Create High Quality PDFs with HiQPdf

Chcnng:CopygitrtrongthanhghiRrvothanhghiRd.

HiQPdfEvaluation02/01/2013

Giihn:pdngchottcccthanhghitrongRF.
Vd:pdngchottcccthanhghitrongRF.
- SER (SET Register).
Cphp:SER Rd

Chcnng:setttcccbittronhthanhghiRdln1,saulnhnythanhghiRd=0xFF.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:SERR16ktqulR16=0xFF.
- CBR (CLEAR Bit in Register).
Cphp:CBR Rd, K
Chcnng:xaccbittrongthanhghiRdvimtnK,nuBitnotrongKl1thBittngngtrongRdsb
xa.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:CBRR16,0xF0ktqul4bitcaonhtcaR16bxavK=11110000(B).
- SBR (SET Bit in Register).
Cphp:SBR Rd, K
Chcnng:setccbittrongthanhghiRdvimtnK,nuBitnotrongKl1thBittngngtrongRds
csetln1.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:SBRR16,0xF0ktqul4bitcaonhtcaR16csetln1vK=11110000(B).
- BLD (Bit LoaD from T Flag).
Cphp:BLD Rd,b
Chcnng:LoadgitrtrongcTcathanhghiSREGvobitthbtrongthanhghiRd.ycngchnhlchc
nngchnhcacT.
Giihn:pdngchottcccthanhghitrongRF.
Vd:
SETsetbitTln1
BLD R16, 4
Ktqulbit4cathanhghiR16csetln1vgitrcabitTl1.
- BST (Bit Storage from T Flag).
Cphp:BST Rd,b
Chcnng:CopybitthbtrongthanhghiRdvotrongcTcathanhghiSREG.ycngchnhlchcnng
chnhcacT.
Giihn:pdngchottcccthanhghitrongRF.
Vd:BSTR16,4ktqulcTchagitrcabit4cathanhghiR16.
- CPI (COMPARE with Immediate).
Cphp:CPI Rd, K
Chcnng:sosnhthanhghiRdvihngsK,lnhnylmthayinhiubittrongthanhghiSREGtrongs
thayicacZerolquantrngnht,nuRd=KcZ=1,ngcliZ=0,sdngcimthayicacZkt
hpvilnhBRNEhocBREQchngtacthtothnhmtlnhrnhnh.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:
LDI R16, 10
CPI R16, 10

Quickly Create High Quality PDFs with HiQPdf

KtqulcZcsetthnh1vlcnyR16=10.

HiQPdfEvaluation02/01/2013

- ANDI (AND with Immediate).


Cphp:ANDI Rd, K
Chcnng:thchinphpLogicANDgiathanhghiRdvihngsKvktqutlitrongRd.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:ANDIR17,0x00ktqulR17c0x00.
- AND (Logical AND).
Cphp:AND Rd, Rr
Chcnng:thchinphpLogicANDgia2thanhghiRdvRr,ktqutlitrongRd.
Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDI R1, 0xFF ;(11111111)
LDI R17, 0xAA; (10101010)
AND R1, R17
KtqulR1=0xAAv11111111&10101010=10101010.
- ORI (Logical OR with Immediate).
Cphp:ORI Rd, K
Chcnng:thchinphpLogicORgiathanhghiRdvihngsKvktqutlitrongRd.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:ORIR17,0xFFktqulR17c0xFF.
- OR (Logical OR).
Cphp:OR Rd, Rr
Chcnng:thchinphpLogicORgia2thanhghiRdvRr,ktqutlitrongRd.
Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDI R1, 0xFF ;(11111111)
LDI R17, 0xAA; (10101010)
OR R1, R17
KtqulR1=0xFFv11111111or10101010=11111111.
- LSL (Logical Shift Left).
Cphp:LSL Rd
Chcnng:dchttthanhghiRdsangtri1vtr,Bit7(bitlnnht)caRdscchatrongcnhC,bit0ca
Rdbxathnh0.ThcchtLSLtngngviphpnhnthanhghiRdvi2.Bnxemhnhminhhabndi.

Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDIR1,0B11000011(dngnhphnca195)
LSL R1
KtqulR1=10000110vcC=1vthanhghiR1cdchsangtri1vtr,trckhidchbit7caR1l1
nnsaukhidchbitnycchatrongC,chonnC=1.
- LSR (Logical Shift Right).

Quickly Create High Quality PDFs with HiQPdf

Cphp:LSR Rd

HiQPdfEvaluation02/01/2013

Chcnng:dchttthanhghiRdsangphi1vtr,Bit0(bitnhnht)caRdscchatrongcnhC,bit7
caRdbxathnh0.ThcchtLSRtngngviphpchiathanhghiRdcho2.Bnxemhnhminhhabn
di.

Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDIR1,0B11000110(dngnhphnca195)
LSR R1
KtqulR1=01100001vcC=1vthanhghiR1cdchsangphi1vtr,trckhidchbit0caR1l1
nnsaukhidchbitnycchatrongC,chonnC=1.
- ADD (ADD without Carry).
Cphp:ADD Rd, Rr
Chcnng:thchinphpcng2thanhghiRdvRr,ktqutlitrongRd.CnhCkhngcsdng.
Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDI R16, 30
LDI R17, 25
ADD R16, R17
KtqulR16=55.
- INC (INCrement).
Cphp:INC Rd
Chcnng:tngthanhghiRd1nvvktqutlitrongRd.Lnhnycbitthchhpchoccngdnglp,
kthpviBREQhayBRNEcthtothnh1vnglpFOR.
Giihn:pdngchottcccthanhghitrongRF.
Vd:INCR17ktqulR17ctngthm1nv.
- SUB (SUBtract without Carry).
Cphp: SUB Rd, Rr
Chcnng:thchinphptr2thanhghiRdRr,ktqutlitrongRd.CnhCkhngcsdng.
Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDI R16, 30
LDI R17, 25
SUB R16, R17
KtqulR16=5.
- SUBI (SUBtract Immediate).
Cphp: SUBI Rd, K
Chcnng:thchinphptrthanhghiRdvihngsK,ktqutlitrongRd.
Giihn:chpdngchoccthanhghitR16nR31.
Vd:
LDI R16, 30
SUBI R16, 20
KtqulR16=10.

Quickly Create High Quality PDFs with HiQPdf

- DEC (DECrement).

HiQPdfEvaluation02/01/2013

Cphp:DEC Rd
Chcnng:gimthanhghiRd1nvvktqutlitrongRd.Lnhnycbitthchhpchoccngdng
lp,kthpviBREQhayBRNEcthtothnh1vnglpFOR.
Giihn:pdngchottcccthanhghitrongRF.
Vd:DECR17ktqulR17cgimi1nv.

- MUL (MULtiply unsigned).


Cphp:MUL Rd, Rr
Chcnng:thchinphpnhnkhngdu2thanhghi8bitRd,Rr,ktqul1s16bitttrong2thanhghi
R1:R0.ChnuRdvRrlccthanhghiR1vR0thktqusaukhitnhcscvitln.Xemhnh
minhhainstructionMULbndi.

Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDI R16, 30
LDI R17, 25
MUL R16, R17
KtqulR1=0x2,R0=0xEE,v30x25=750=0x02EE.
II.InstructionchoccthanhghiI/O.
BninstructionsauycthitkringtruycpvngnhI/O,ccinstructionnysdngachI/Ocacc
thanhghitrongvngnhny.VlthitkringchovngnhI/O,bnkhngthsdngccthanhghinytruycp
RFhaySRAM.Trongcccphpcainstructionny,khinimachAlachI/O,0A63,nutrongvd
A=0x00thlthanhghiutincavngI/O,khngphilthanhghiR0.
- OUT (OUTPUT Data).
Cphp:OUT A, Rr
Chcnng:xutgitrtthanhghiRrrathanhghicachAtrongvngnhI/O.ylcchphbinnht
xutgitrravngI/O.
Giihn:RrlthanhghiRFbtk,Abgiihnt0n63.
Vd:
LDI R16, 0xFF
OUT 0x11, R16
Ktqulthanhghicach0x11trongvngI/O,tcthanhghiDDRD,cgitrbng0xFF.
- IN (INPUT Data).
Cphp:IN Rr, A
Chcnng:LoadgitrtthanhghicachAtrongvngnhI/OvothanhghiRr.ylcchphbinnht
nhngitrtvngI/O.
Giihn:RrlthanhghiRFbtk,Abgiihnt0n63.
Vd:
IN R16, 0x10
KtqulthanhghiR16nhncgitrcathanhghicach0x11trongvngI/O,tcthanhghiPIND,y
chnhlvdcgitrccchncaPORTDvoR16.

Quickly Create High Quality PDFs with HiQPdf

- SBI (Set Bit in I/O Register).

HiQPdfEvaluation02/01/2013

Cphp:SBI A, b
Chcnng:SetbitthbtrongthanhghicachAtrongvngnhI/O.Tuynhinlnhnykhngctcdngtrn
tonbvngI/Omchctcivi32thanhghiu(acht0n31).
Giihn:blsthccbittrongthanhghi,0b7Abgiihnt0n31.
Vd:
SBI 0x12, 2
Ktqulbit2cathanhghicach0x12trongvngI/O,tcthanhghiPORTD,csetln1.ychnhlv
dsetchnPD2caPORTD.
- CBI (Clear Bit in I/O Register).
Cphp:CBI A, b
Chcnng:xabitthbtrongthanhghicachAtrongvngnhI/O.Tuynhinlnhnykhngctcdngtrn
tonbvngI/Omchctcivi32thanhghiu(acht0n31).
Giihn:blsthccbittrongthanhghi,0b7Abgiihnt0n31.
Vd:
CBI 0x12, 2
Ktqulbit2cathanhghicach0x12trongvngI/O,tcthanhghiPORTD,bxathnh0.ychnhlv
dxachnPB2caPORTD.
III.CccontrX,Y,Zvcchtruycptonbkhnggianbnh.
TrongRegisterFilecaAVR,ccthanhghitR26nR31ngoichanngthanhghithngthngcncchc
nnglcontr(Pointer)trongvictruycpbnh(cbnhdatavbnhProgram).Nucsdngnhcc
Pointer,ccthanhghitrncbitnvitngiX,Y,Z.nhnghanhsau:X=R27:R26,Y=R29:R28,Z=R31:R30.
Chngl3thanhghi16bitcnhnghatrcchottcccAVR.Ngoiratrongccfilenhnghachochipchng
tacthm6nhnghakhclXL,XH,YL,YH,ZL,ZHcngchnhltngicaR26>R31.Phnnychngtakho
stmtsinstructiondngtruycptonbkhinhcaAVRbngcchsdngachtrctipvbngcchs
dngPointer.
- LDS (LoaD direct from data Space).
Cphp:LDS Rd, k
Chcnng:loadgitr1bytetthanhghicachktrongSRAMvothanhghiRd,kldngachtuytic
giihnt0n65535(2^161).
Giihn:RdlthanhghibtktrongRFnhnggitrlnnhtcakl65535,vthvilnhnytakhngthtruy
cpvtqukhongkhnggian64KB.Numuntruycpvngkhnggianlnhn64KBchngtacnmtsh
tr,tuynhinytigisbnhcachip(thnglbnhdata)khngvtqu64KB(thctchacchip
AVRnocSRAMhayEEPROMvtqu64KB).
Vd:
LDS R2, 0x0060
KtqulthanhghiR2chagitrcathanhghicach0x0060,ylthanhghiutintrongkhongSRAM
(sauRFvvngI/O)caAVR.
- STS (STorage direc to data Space).
Cphp:STS k, Rr
Chcnng:instructionnyhontongingLDSnhngdngxutdliutthanhghiRrraRAM,ngicc
ththamkhophngiithchchoLDS.
Sdngachtrctipthculnhsnginnhngrtkhnhphnach,thngthngSRAMlvngchngta
haysdngchabintmthi,trongccngnngcpcaotachcnnhtnbinnhngviASMchngtaphinh
achcachng.Mtcchtttrnhvicnyldngchth(DIRECTIVE,bnxemlibi1).EQUgntnbin
cho1ach,vd.EQUbientam=0x0060vsausdngbientamthaycho0x0060.

Quickly Create High Quality PDFs with HiQPdf

Mtcchkhccdngtruycpbnhmkhngdngachtuytilsdngsdngcontr.C2
HiQPdfEvaluation02/01/2013
instructionhtrcontrlLD(LoaDindirecfromdataSpace),vST(STorageindirectodataSpace),LDcdliu
tSRAMvothanhghicnSTludliutthanhghivoSRAM.C3contrX,YvZucthcdngnhng
cmtsimlu:c3udngctrongtrnghptruyxutthngthngnhngvicchtruycpcoffset,
contrXkhngsdngc.truyxutbnhchngtrnhbngcontrthZlgiiphpduynhtDiyl
1scchsdngLD,STkthpvicontr,chngtaxtthngquaccvd.
Vd1:
CLR R27 xaR27,tcxabytecaocapointerX
LDI R26, 0x60 loadgitr0x60voR26,tcbytethpcapointerX
sau2dngtrn,gipointerXl0x0060,snsngtrnvtrutintrongSRAM.
LD R1, X+ Loadgitrnh0x0060voR1(vXtrn0x0060),saotnggitrXln1,nhthsau
lnhnyX=0x0061
LD R2, X+ Loadgitrnh0x0061voR2,saotnggitrXln1,nhthsaulnhnyX=0x0062
LD R3, X Loadgitrnh0x0062voR3vkhngthayiX
LDR4,XGimgitrcaXtrc(X=0x0061),sauloadgitrnh0x0061voR4
Tvdnychngtathyc3cchcbnloaddliutSRAMbngcontr,cchLoadtrctiptrongtrng
hpLDR3,X,cchloadpostincrement(hocpostdecrement)nhtrongtrnghpLDR1,X+vcchloadpre
decrement(hocpreincrement)trongtrnghpLDR4,X.
ChngtacthvitlivdtrnnhngsdngcontrYhocZthaychoX.VdvitchoinstructionSTcnghon
tontngt.
Tuynhincchtruycptheocchprehaypostulmthayigitrcacontr,iunyc1btlilnuchngta
munquaylivtrnhno,chngtaphitiptcthayicontr.trnhviclmny,1cchtruycpkhc
chtrltruycpOffset.Xtvdsau:
LD R1, Y+1
ychnhlcchtruycpOffsetdngcontrY,cchvittrnltngngvicchvit
LD R1, Y+
NhngimkhcbitylcchvitOffsetkhnglmthayigitrcacontrY.SdngOffsetcuimnh
sdngmng(array)trongccngnnglptrnhcpcao.Cnchlgitroffsetkhngvtqu63vphngphp
nychdngcho2thanhghiYvZ.
IV.Rnhnhvvnglp.
Khnggingnhccngnngcpcao,khilptrnhbngASMbnkhngchtrcccutrciukhinnhIf,
For,WhilengilptrnhASMphitxydngchomnhcccutrcnytnhnginstructioncbn.Nubnc
trongtaytiliutracuinstructionchoAVRbnsthycrtnhiuinstructioncdngBRxx,viBRlvitttcat
Branch(rnhnh).ylccinstructioncbngipbnxydngcccutrciukhintngngIf,For,While
choringmnh.
TrchttaskhostinstructionBRNEbngcchxemlivdtrongbi"LmquenAVR",ylonchngtrnh
con DELAY:
DELAY:
LDI R20, 0xFF
DELAY0:
LDI R21, 0xFF
DELAY1:
DEC R21
BRNE DELAY1

Quickly Create High Quality PDFs with HiQPdf

DEC R20
BRNE DELAY0
RET

HiQPdfEvaluation02/01/2013

Bnhych4dnglnhnmgiaonchngtrnhtrn(btutdng4),dngutinthbnbitloadgi
tr255vothanhghiR21,sautit1labelDELAY1xemnhl1ctmc,dng3,instructionDECbnmic
hchmnaygimgitrthanhghiR21i1nv,vcuicngBRNEDELAY1,BRNElvitttcaBRanchifNot
Equalrnhnhnukhngbng,thcrabnchtcalnhnylrnhnhnucZerokhngbng1.Nhthculnh
BRNEDELAY1cachngtacAVRthchinnhsau:kimtracZ,nuZ=1tiptcthchindngtiptheosau
mkhngquantmnnhnDELAY1,nhngnuZ=0thnhynnhnDELAY1.BnthyrngbanuR21=255,
saukhigim1biDEC,thanhghiR21=2540,cZ=0,rnhnhxyra,bmchngtrnhnhyvnhnDELAY1.
Qutrnhnylplikhong255lntrckhiR21=0dnnZ=1.
BaobnngoivnglpcanhnDELAY1lvnglpcanhnDELAY0,cchhiuhontontngtnhngtrckhi
lnhDECR20cthcthithphichchovnglpDELAY1ktthc.BnthnDELAY0cngl1vnglp255ln.
ktqucuicngltathuc1vnglpkhong255x255lnmkhnglmgc,chnhlnghavcchhot
ngcaonchngtrnhconDELAY.
BncnhBRNEchngtac1sinstructionphcvrnhnhkhcnh:
- BREQ (BRanch if EQual).
Cphp:BREQ LABEL
Chcnng:NhynnhnLABELnucZ=1.CZchutcngcartnhiuinstructionnhCP,CPI,SUB,
SUBIvthBREQthngcsdngsauccinstructionny.
Vd:
LDI R16, 0xFF
LDI R17, 0xFF
CP R16, R17 ; so sanh 2 thanh ghi R16, R17
BREQ RENHANH
..
RENHANH:
thchinnhngvickhirnhnh.

KtqulvicrnhnhxyravkhisosnhbngCP,R17=R16nncZtngcsetbng1,lnhBREQ
cthcthivnhynnhnRENHANH.Vdnytngngcutrcif(R16=R17){thchinnhngvickhi
rnhnh}.
- BRLO (BRanch if LOwer).
Cphp:BRLO LABEL
Chcnng:bnchtcaculnhlnhynnhnLABELnucC=1.Tuynhin,thngthnglnhnysdng
theosauccinstructionnhCP,CPI,SUB,SUBIkhivicrnhnhsxyranuthanhghiRd
Vd:
EORR16,R16XORR16vichnhn,tngngCLRR16
VONG LAP:
INCR16tngR16thm1nv
CPIR16,$10sosnhR16vishexadecimal$10
BRLOVONGLAPnhyvVONGLAPnuR16<$10
NOPculnhnyscthcthinuiukinrnhnhtrnkhngtha,
NOPl1instruction,chcnnglkhnglmgc.
KtqulphnlnhbntrongVONGLAPscthchinkhong16ln($10=16)trckhithchinlnhNOP.
- BRSH (BRanch if Same or Higher).
Cphp:BRSH LABEL

Quickly Create High Quality PDFs with HiQPdf

Cphp:BRSH LABEL

HiQPdfEvaluation02/01/2013

Chcnng:bnchtcaculnhlnhynnhnLABELnucC=0.Tuynhin,thngthnglnhnysdng
theosauccinstructionnhCP,CPI,SUB,SUBIkhivicrnhnhsxyranuthanhghiRdRr.
Vd:
SUBIR16,4trR16i4nv
BRSHRENHANHnhynRENHANHnuR164
.
RENHANH:
NOP

Cnrtnhiuinstructionrnhnhbncthsdngtocutrciukhin,chlccinstructionnyuhot
ngdatrntrngthica1cno,dobncnlachn1lnhphhpthcthitrcccinstructionr
nhnhny,lmcnhvybncnxemktiliuhngdnINSTRUCITONchoAVR.

[Top]

Copyright2013BnquynthucvCnghcAVR(AVRtutorial)TiliuhclptrnhAVRbngtingVit.
AVR is a registered trademark of Atmel Corporation
This site is founded by Thanhtam Ho

You might also like