Professional Documents
Culture Documents
HiQPdfEvaluation02/01/2013
CNGHCAVR
tmkim...
Trangch
HcAVR
ngdngAVR
Htrphnmm
Htrphncng
Tholun
Thngtin
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
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
KtqulcZcsetthnh1vlcnyR16=10.
HiQPdfEvaluation02/01/2013
Giihn:pdngchottcccthanhghitrongRF.
Vd:
LDIR1,0B11000011(dngnhphnca195)
LSL R1
KtqulR1=10000110vcC=1vthanhghiR1cdchsangtri1vtr,trckhidchbit7caR1l1
nnsaukhidchbitnycchatrongC,chonnC=1.
- LSR (Logical Shift Right).
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.
- DEC (DECrement).
HiQPdfEvaluation02/01/2013
Cphp:DEC Rd
Chcnng:gimthanhghiRd1nvvktqutlitrongRd.Lnhnycbitthchhpchoccngdng
lp,kthpviBREQhayBRNEcthtothnh1vnglpFOR.
Giihn:pdngchottcccthanhghitrongRF.
Vd:DECR17ktqulR17cgimi1nv.
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.
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.
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
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
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