Vous êtes sur la page 1sur 71
CHUONG 3: TAP LENH AVR 3.1. GIO] THIEU CHUNG Chuong nay gidi thigu tap Iénh (instruction set) cla ho AVR néi chung thong qua viée trinh bay cée phutong phap dinh dia chi (addressing mode) va cae hoat dong thuc hign cho ting Ignh cu thé. Voi méi chip vi diéu khién khac nhau thuc ho AVR sé c6 mét chut khdc biét c6 thé la vé phan cig ciing nhu tap lénh di kém, do dé khi str dung mét chip cy thé ndo ching ta cin phai tham khdo datasheet trong tng. Trong gido trinh nay sé dé cap dén chip ATmega324P, ngudi doc c6 thé tham khao nhanh trong cac phan Phy lye 2 va 3. Phan phu Ine 2 trinh bay bang tom tit tap Iénh ATmega324P. Phu lue 3 sé gidi mé ta hoat dong cia lénh, ett phap, s6 byte Iénh, swt anh huéng dén cae c@ va sé chu ky may can thiét dé thye thi Iénh. Cac Iénh cla vi diéu khién AVR duge truy xudt’theo tir (word){ hau\hét 6 ma may dai 2byte lénh, mét sé Iénh dai 4byte. Thai giatthwe thi cho sff6i Wenlda s6 1a 1, 2 chu ky may va mot so Iénh 3, 4 chu ky may. Mét tir (2 byte) ma may (opcode) dude.ct Yrong bésnlté chong trinh (Flash ROM) theo kiéu little endian, byte cao dja’Chi Gao, byte thap diajchi thap. Trong chwong nay ¢6 str dung mot SOKY higutheo guy dinh cua trinh bién dich hop ngit (Assembler) cho ho AVR dé minh hoa,céc ¥idu cho hoan chinh va dé hiéu hon, Trong Chwong 4 s@ trinh bay ehistiét cae ky higu quy dinh cho trinh hop ngit. 3.2. CAC PHUONG PHAPDINH VI DIA CHI Cae kiéu dinh dia‘elff 18phan caf*thiéfeho toan b6 tap Iénh cua moi bd vi xir ly, vi digu khign, No¢cho\phép ta xe dith 16 ngudn va dich eiia di Tigu theo nhiew phuong phap khée thay phy thudcWaditinh hudng lap trinh. Tap lénh cia AVR hé tg rt manh cho viée truy xuat dit ligu tir b6 nhé chong trinh (Flash) eiing nhw bo ahé fe ligu bao g6m RAM ngi (SRAM), cae thanh ghi da dung (GPRs), cdc thanh ghi giao tiép ngoai vi hay thanh ghi 1/0 (ORs). Téng céng €6 15 phittong phap dinh dia chi khac nhau. Co thé chia thanh 8 nhom nhu sau: - Thanh ghi don (tire thoi). - Thanh ghi. - Dit ligu tre tiép. - Dir ligu gidn tiép. - FLASH tnyc tiép. - FLASH gin tiép. - Dinh vj trong déi. - Dinh vi BIT. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 1 3.2.1. Dinh dia chi thanh ghi don (tie thoi) Phuong phap nay gdm cé 2 kiéu tly theo cdc toan hang duoc str dung trong lénh: hod toén hang chi la m6t thanh ghi don, hay | thanh ghi v6i 1 gid tri tire thoi. Oi véi phuong phap c6 ton hang chi 1a mét thanh ghi don sé ding 11bit cho OPCODE va 5 bit dé ma héa cho vj tri cla Rd (0 OP-CODE Rr Rd | 0 DS dr 31 Hissh 3.30. Phaton®phap dinh dja chi thanh ghi MA may ctia lénh dufge xa dinh nhw Hinh 3.3b, ky higu Rri va Rdi Lin lurot 1a cae bit trong sé i cia Rr va Rd, r4 |d4 | d3 | a2 far | do fr3 | x2 |r [xo OP-CODE Rai Rdi Ri Ra[d:0 +31], Rr[r:0 +31] Hinh 3.3b. Ma may cho phuong phap dinh dia chi thanh ghi Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 4 Quan sit 2 Ignh ¢6 phwong phap dinh dia chi thanh ghi sau: MOV _R2.R3 ADD RLRI6 Lénh MOV Rd, Rr vi ma may tong quat la: 16-bit Opcode: 0010 [tra dddd mr Cu thé trong Ienh MOV R2,R3: c6 OP-CODE li 001011B, ddddd=00010(R2), rrrrr=00011(R3). Ma may: 0x2C23 [0b0010 1100 0010 0011] Lénh ADD Rd,Rr: 16-bit Opcode: 0000 11rd aga \\ N\in © Mét céch turong ter, ta co ma may Ids Ox0E10 [0b0000 1119 0001 0000] Co thé kiém chimg trényphah mémh m6 phong Abu 6 Hinh 3.4. bing cach quan sat bé nhé Code (Flash). ene feast prog Oxod8e 7 ff ff fF prog exoore fF ff HF prog ex0020 fff HF prog exe0s0 $F fF prog exo0s0 $f ff HF prog exo0se #f ff HF prog exc060 prog exo070 prog oxgoso FREESE FF fF #F FF FF FF FF FF FF FF FF FF FF Sa ee EY Memory Hinh 3.4. Ma may cua cde lénh MOV RO,R2 va ADD R1,RI6 3.2.3. Dinh dia chi truc tiép Kiéu dinh dia chi trac tiép ding dé truy xudt dén cac toan hang cé dia chi thudc ving IO (ORs) va cae todin hang ¢é dia chi thude ving dtt ligu (MEM). Ky higu P trong tap Iénh thye hién trén cde todin hang I cae IORs (theo dia chi IO), k la cdc 6 nhé cé dia chi thudc ving dit ligu (theo dia chi MEM). Trong do: 0 = 63 va0 Li f: - Khi sit dung ton, Hang Bing cich diingMtén ciia cée thanh ghi IO co ban thi trinh bién dich,sé Ii6n‘étth xa thanh dia chi IO tuong img cia thanh ghi. Do dé trong Iénh this fdi cud vi du f8ipbaP bude phai ding ding dia chi MEM cua thanh ghiPINB chér khong)diige sir dung tén ciia thanh ghi, vi khi do lénh khéng bj badléi ma sé the thi'sai ¥ d& cua ngwdi lép trinh mong muén. - Véi ho AVR nhu_ A’fmega324P c6 cdc thanh ghi I/O mé réng (ExIORs) 66 dia chi dit ligu (SRAM) tir 0X60 tro Ién chi sir dung kiéu dinh vi tre tiép theo dia chi dir ligu! (xem phan tap Iénh) Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 1 11 bit Sbit DATA a +4 OP-CODE RW/Rd 0x0000 DATA ADDRESS —- RAMEND: dia chi két thic ciia ving DATA, RAMEND Hinh 3.6a. Phuong phap dinh dia chi truc tiép vimg data (dia chi MEM) 15 9 |s 43 0 OPCODE Rai. ‘OPCODE DATAMADDRESS, Rd.tfd:0 +31) Hinh 3.66, Ma méy cho plittong phip dinh diachi true tiép vimg data (dja chi MEM) 3.2.4. Dinh dia chi gian'fiép qua thanh Bhi Phitong phap “dinh)dia chisgian Yigp qua thanh ghi thure hign trén cdc lénh ding 6 tray suit dir ligu ving SRAM Wi cdc thanh ghi GPRs gidn tiép qua cdc thanh ghi con trd X, ¥ hoje Z. Phuong phap nay dge-chia ra lam 4 kiéu khéc nhau: dit ligu gidn tiép, dit ligu gidn tiép voi tién 16 tri(-), dit ligu gin tiép voi hau t6 cong (+) va dit ligu gidn tiép v6i mot dé chuydindai., 3.2.41. Dit ligu gidn tiép Hinh 3.7a mé ta cho phuong phap dinh dia chi dit ligu gidn tiép. Céc thanh ghi X, Y va Z 6 thé hoat dong nhu cae con tr6 (pointer) va néi dung cia céc thanh ghi nay a dia chi ciia céc 6 nhé nim trong ving SRAM, noi ma dit ligu sé due doc hode la ghi. Ma may cla phuong phap nay duoc trinh bay & Hinh 3.7b. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 8 15 0 DATA Thanh ghi X, Y hoje Z 0x0000 RAMEND: dia chi két thic cia ving DATA. RAMEND Hinh 3.7a. Phong php dinh dia chi dit lieu gién tiép Dé thy hién vige ghi gid tri OxCC vao dia chi 0x0800 cing véi fige Shon thanh ghi Y lam con tré trong phwong phap dinh dia chi naynta thive hiégnyete TenbAau: LDI R16,0xCC sluu dit ligu canlghiyae R16 LDI R28,0x00 sluu dia chi Saheivao Y LDI R29,0X08 —-; Y=R29:RBB st Y, R16 sehi da fieu Va dé doe lai dit ligu nay,rdi lti*vao thanb/ghi, R7 trong trong hgp chon thanh ghi X Lim con ré, ta can thife 8h thot 6 1éith sau: LDI R26,0x00, slau dja.chié nhé vao thanh ghi X LDI R27,0x08 ;XSR27-R26 LD R7,X 15 9 |s 4 |3 0 OP-CODE(X.Y, Z) RAR OPCODE(X.Y.Z) Rds [41:0 +31] Hinh 3.76. Ma may cho phwong phap dinh dia chi dit liéu gidn tiép Cac lénh ST Y.R16 va LD R7. X lan lugt ¢ OP-CODE turong img 1a: 0b1000 001 rrrr 1000 — (rrrrr=10000: biéu dién cho chi s6 cua thanh ghi R16) Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM ° 0b1001 000d dddd 1100 (ddddd=00111: biéu dién cho chi s6 cia thanh ghi R7) Vi vay ma may ciia 2 lénh trén sé la: 0x8308 — [0b1000 0011 0000 1000] 0x907C — [0b1001 0000 0111 1100] 3.2.4.2. Dit lieu gitn tiép vdi tién 16 trie (-). Phuong phap dinh dia chi kiéu dit ligu gian tiép voi 1 tién té tri (-) the hién trong cu lénh ¢6 cde toén hang 1A cde thanh ghi con tr voi ky higu dau trir phia trude (-X, -Y, -Z). 15 0 DATA, — Thanh ghi X,Y hoge Z ‘9x0000 RAMEND: dia chi két thic cua ving DATA Hinh 3.8, Phuong phap dinkhdi@ehi dit ligu gidn tiép v6i tién 16 (-) Dia chi cia cdcan hang dtigye xac dinh bing cach lay ndi dung ciia cdc con tro tnt di 1 truée khi thye hign lénh, va két qua nay sé git nguyén trong con trd sau khi thye hign xong Iénh, Hinl\3.8 ttinh bay cde xdc dinh dia chi cia toan hang. Vige xée dinh ma may tuong ty nhtsplitfong phap dit ligu gidn tiép. Bang sau ligt ké niamay cia énh LD theo phuong phap gian tiép voi tién td (-) tuong tmg véi cac thawh ghi X, Y va Z. LENH MA MAY, LD Rd,-X 1001 000d4 d3dzdido 1110 LD Rd-Y 1001 000d, dsdzdido 1010 LDRd-Z, 1001 000d, dsdzdido 0010 Voi di la gid tri nhi phan twong img voi chi sé d ctia thanh ghi duoc sie dung trong lénh. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 10 ‘Vi dy lénh LD R20,-X sé cé ma may 1a 1001 0001 0100 1110. 3.2.4.3. Div ligu gidn tidp voi hau té cong (+) Phuong phap nay thye hign xong Iénh rdi ting ndi dung con tr6 én 1. Ky higu duge ding trong tap ignh 1a X+, Y+ hose Z+, Ma may cling twong ty nhw phuong phap dit ligu gidn 15 0 DATA —| Thanh ghi X,Y hoe Z 0x0000 10 RAMEND: dia chi két thiic cua ving DATA RAMEND. Hinh 3.9. Plucong php dinh dja oi die Hittin MOt cach tong ty, ching Ya CiHE c6 ma macho Iénh ST khi sir dung phuong phap nay véi cée thanh ghi XYeZ thw sau: LDNTL MA MAY ST)\X*, Rr 1001 001rs rsrorato 1101 $1 Y+.Rr 1001 00114 rsrzriro 1001 ST Z+Re, 1001 001rs rsr2raty 0001 Voi ri la gid tri nhi\phan twong img voi chi sd r cia thanh ghi cueoe sit dung trong lénh. ‘Vi du lénh ST'WA,R5 sé cd ma may 1a 1001 0010 0101 1001. 3.2.44 Div. u gidn tiép voi mét dé doi Vige xe dinh dia chi toan hang trong phutong phap nay bing each cOng ndi dung ciia con trd véi mét do doi q cé gid tri nguyén 6 bit (0 < q < 63) ri méi thire hién Iénh. Con tré trong phuong phap nay chi doe diing véi 2 thanh ghi Y va Z. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM n 1s 0 DATA Thanh ghi Y hodc Z 0x0000 OPCODE | RrRd q Sbit Sbit obit AMEND RAMEND:dja chi két thiic vimg data Hinh 3.10a. Phong phdp dinh dia chi dit liéu gidn tiép voi dé dei q Vige xae dinh ma may duge mé ta trong Hiphs3.10b, Trong-do\OP Ja ma lénh tong img. Rd/Rr la dia chi dich/nguén cita céc thénh ghi GPRs. 1s] 14] 13] 12] 11] 10] 9 |“ af | 2 0 op | q|or| a| a jor Rd/Rr op} al} ala dx[0™ 31], af0.63) Hinh 3.10b. Ma may choyghuéng phap ditt tia chi dit lieu gidn tiép voi do doi q Vi du lénh S1D°Z*S,R2, Iénh hay € OP-CODE 1a 10010 tuong img voi ma may sau: 16-bit Opcode : 1090 aa [rr fogaa V6i qqqqqq=000101, rrrrr=00010 => Ma may: 0x8225 [0b1000 0010 0010 0101] 3.2.5. Dinh dia chi truy xudt truc tiép ving bd nhé chuong trinh - FLASH Duge ding trong cac cau lénh JMP va CALL. Chwong trinh sé thye hién lénh tai m6t dia chi tire thoi dat trong Iénh. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 12 obit bit PROGRAM MEMORY OP.CODE oMSB 0x0000 16LSB PC |__| —— Rit FLASHEND Hinh 3.11a. Phuong phap truy xudt true tiép dia chi thye thi chuong trinh OP-CODE kK op-CODE | k kK k[0 +21) Hinh 3.11b. Ma may cho)phitong phap tiuy xudt true tiép dia chi thue thi chuong trinh Vi dy Igah JMP LABEL, gia sit nhin LABEL dit tai dia chi 2000H va OP- CODE tuong ting ciia fnHMP 1a 1001 0101 10 thi ma may cita Ignh sé 1a 4 byte tuong tmg: 1001 0100 6090 1400 0010 0000 0000 0000 3.2.6. Dinh dia chi truy xudt gian tiép ving FLASH 3.2.6.1. Truy xudt dit liéu gidn tiép tie b6 nh chuong trink M6t dia chi trong b6 nhé chong trinh (FLASH) can durge truy xuat sé dit tryre tiép vao thanh ghi Z, tai cae vi tri MSBs. Vi t6 chite cua bd nhé chong trinh 1a mot tir 16 bit, nén noi dung can tray xudt sé chon dif ligu la byte thdp hoie byte cao cia dia chi can truy xuat, viée nay durge xde dinh béi bit LSB cia thanh ghi Z. Phwong phap nay duge sir dung trong cae cau 1énh: LPM; LPM Rd,Z; LPM Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 13 Rd,Z+ hay SPM. Tuy nhién, lénh SPM khéng hoan toan 6 sin trong tit ¢4 cde chip ctia ho AVR. Khi lénh LPM khéng cé toan hang thi RO la thanh ghi dich duge hiéu ngam trong lénh. 31 16 PROGRAM MEMORY 0x0000 a2 0 FLASHEND Hinh 3.12. Phuong phap truy xudt dit liu Ridin tip dia chYFLASH v6i Iénk EYP LSB=0/1: chon byte thap/cao Lénh LPM c6 ma may c6 dinh Ja: 0x95C8. Hai lénh con Iai 06 cé¢h Yintna may*hop ton nh phong phép dinh dia chi gidn tiép qua thanh ghi tudngtng. 3.2.6.2. Truy xttit gidn tiép dia chibOnhé chwong trinh __ Trong phwong\phap dinh diaehinay thanh ghi PC duge nap dia chi thye thi gin tiép qua thanh ghi Z, Phuong phap dinhedf&chi Bian tigp qua thanh ghi Z, sir dung trong cdc lénh TIMP va ICALL, khong 06 toaihatig va ma may 1a 1 gid tri e6 dinh, Dinh vi dia chi ndy con goi la dinh vj dia chi tivétddi (Absolute Adressing ), ma may 2 byte-3MC Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM “4 PROGRAM MEMORY 0x0000 FLASHEND Hinh 3.13. Phuong php tray xudt gidn tiép dja chi tec thi chwong trinh 3.2.7. Dinh vi dia chi twong déi 3.2.7.1. Dia chi twong déi khong diéu kién Phuong phap nay duge sit dung trongscéc\ nh RIMP Va RCALL. Toan hang trong Iénh 1a mét nhan hodc mét dia chi,nanMrong phanf vi MoPd6 doi trong déi k, voi k li 1 sé 12 bit so véi PC citi enlt gidttri tir -2048 dén 2047. Ma may cia Iénh trén durge trinh bay 6 Hinh 3.14bSRiéng véielénhRCALL tity thuge vao chip sit dung tuong tmg véi dé réng cha thanh ghi PC (16i22bit), ma may s® Id 2 howe 3 byte lénh. ‘PROGRAM MEMORY 0x0000 t Abit Yapit <>< > OP-CODR, i FLASHEND Hinh 3.14a. Phuong phap truy xudt gidn tiép dia chi thec thi churong trinh véi dé doi k Trong moi trong hop ngwai lap trinh xae dinh dia chi dich cho trinh dich hop ngit theo cach théng thuéng nhw 1a 1 nhan hoae 1 hing sé. Trinh dich hgp ngit sé dat dia chi dich theo ding dinh dang cia timg lénh. Néu dinh dang yéu cau boi lénh vuot ra ngoai khoang cach ding dé xe dinh dia chi dich, mt théng bao “dia chi dich ngoai Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 1s tm” sé duge dura ra. Lenh OP-CODE OFFSET RJMP K 1100 iE RCALL K 1101 k WORD 15 . 12/11 0 K: nhan dia chi dich k{-2048 +2047] K=PC++k Hinh 3.14% Ma may cho phuong phap tray xudit gin tiép dia chi thee thi chuong trinh voi dé doi k Vi du tinh ma may cho lénh RCALL DELAY? Bia sit ringd@ih REALL dat tai dia chi 2000H va nhan DELAY dat tai 200BH.{roag trong hop Way; K-200BH suy +10 (offset). Ta c6 ma may twong tg gia Teth [4 11010000 0000 1010. 3.2.7.2. Dia chi twong doi co diéuhign Phuong phip nay ap dung cho cé¢ Iéhh nhay\eS Wibu kién xét theo cde bit co trang thai thanh ghi SREG hode so. sinh gitta 2 thanh ghi. D6 léch k (offset) la s6 06 dau 7 bit nén k=-64+63, dodo dia chi dich Bidf han trong ving tir ~64 dén +63 dia chi so véi dia pactaléih hign hanh(PC+1). Hinh 3.15 1a ma may cla cde Ignh nhay c6 diéu kién, 15 lo | 9 OFFSET 3 1 jo OP-CODE' k6 cotta k0 | OP_CODE Hinth 3.15 Ma may cho cdc lénh nhay co diéu kién Vi dy Iénh BRVS LOOP, lénh nay sé ré nhanh dén nhan LOOP khi c6 tran V trong thanh ghi SREG bing 1. Gia sit Iénh duge dat tai dia chi SOH va nhan LOOP dat tai 40H, lénh nay co OP-CODE 1a 111100. Twong tr vi cach tinh offset 6 trén, ta cd k=-17 (1101111), c& V 6 vi tri 6 bit 3 ca thanh ghi SREG nén ta sé cd ma may tuong (mg ctta Lénh 1: 1111 0011 0111 1011. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 16 3.2.8. Dinh vi dia chi bit 3.2.8.1. Dinh dia chi BIT theo BYTE Phuong php dinh dia chi nay duroe sir dung trong cae lénh xit ly bit déi v6i cde bit c6 dia chi bit thudc cae thanh ghi IO c6 dia chi tir 00+IFH, hoae bit ciia nhom thanh ghi GPRs. Dia chi cla toan hang dirge xée dinh chinh 1a dia chi bit va dia chi thanh ghi tog tng trong toan hang ciia lénh. Phuong phap nay duge sir dung cho 2 nhém Iénh: nhém Ignh chi tae déng trén cae bit cua cae thanh ghi IO la cae lénh SBI va CBI, nhém con lai la 2 lénh BST va BLD, lign quan dén bit T ca thanh ghi SREG va cde bit eta cde thanh ghi GPRs, trong trréng hgp nay dia chi cia bit T drge hiéu ngam trong ma lénh. Phuong phap dinh dia chi va ma may ciia cdc nhém lénh nay durge trinh bay & Hinh 3.16a va 3.16b. 8 bit 5 bit 3 bit TO / GPRS) <> ge > OP-CODE P/Rd.r bi 0 P/Rdr 31 Hinh 3.16a.Phwong phap dinh dia chi BIT theo BYTE Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 7 oP-CODE P bi P[0+31] Ma may cho nhom Ia va CBI 15 9 |s 3 |2 | 1 Jo OP-CODE Rd op bi Raz [0 +31] Ma may cho nhom Iénh BST vivBLD Hinh 3.16b. Ma may cho phwong phapdink dia chi BIT Yeo BYTE Vi dy lénh SBI PORTAG sé dit bit6(MiO)eua thath ghi PORTA lén 1 (dia chi IO tyong img cia PORTA 1a 00010). ‘Laycd)ma mayyctia lgnh 1a: 1001 1010 0001 0110. Hoiic lénh BLD R3,7 thug hign lay néi ding ci bit T trong thanh ghi SREG lu vao bit 7 (111) eda thanyghi R3. Ta dwar may twong tg cua 1énh 1a; 1111 1000 0011 0111. 3.2.8.2. Dinh dia chi BIT theo BIT) Phuong php Winh tia chi BIT/theo BIT chi durgc thye hign trén cdc bit ciia thanh ghi SREG, thyc higiMrén céc 18hh dit/xda c¥ BSET/BCLR hoke SE/CL. Phuong phap dinh dia chi va ma may duge trinh bay 6 Hinh 3.17a va 3.17b. 13 bit 3 bit 4 >< 15 7/6 4] 3 0 OP-CODE Sifi: 0+7] SREG 7 |6 |s |4 |3 |2 J 1 Jo Hinh 3.17a. Phuong phap dinh dia chi BIT theo BIT (dinh vj BIT) Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 1s 9 bit 3 bit 4 bit + > > 15 7\6 4|3 0 OP-CODE Sifi: 0+7] ‘OP-CODE Hinh 3.17b. Ma may cho phuong phap dinh dia chi BIT theo BIT (dinh vi BIT) Vi du lénh BCLR 0 ho&ic CLC ca 2 lénh déu thye hign vige x6a c& Carry trong thanh ghi SREG, c6 ma may la 1001 0100 1000 1000. * Cau hdi on tap 1. Nguoi lap trinh c6 thé ty ¥ tao ra cée phutong phap dinh dia chi-méi cho mot chip AVRs khéng? 2. Ching ta cé thé truy xudt cae thanh ghi HO m& rng bifig plitong phap dinh dia chi ving I/O khong? 3. C6 bao nhiéu phuong phap dinhydja ehi'de truy xtat Sho'edc thanh ghi 1/0? 4, Cé bao nhigu thanh ghi duodGir/dung nh\cdn4tre trong tap lénh cia ATmega324P? 5. Ligt ké tén cae thanh Bhi"eon tré cia Aimega324P va kich thude cita méi thanh ghi? 3.4. CACNHOM LENA GUA AVR: Cac lénh ctiaA VR)durge chia fim 6 nhom Iénh: - Nhom lénh chttyén dai. - Nhém lénh sé hoc. Nhém Iénh logie, Nh6m Iénh ré.nhanh, Nhém lénh xtry.bit. - Nhom lénhdigw khién MCU. Phin phu luc 2”giip ta tham chiéu nhanh tat ca cac lénh cia ATmega324P da dug phan nhom. 3.4.1. Nhom lénh chuyén doi Cée Iénh di chuyén di ligu cia AVR sit dung nhém cée thanh ghi GPRs lam trung gian dé luu gid cdc dit ligu tam thdi, tly theo viée tray xuat dit Ligu gitta cdc khéng gian nao véi GPRs ma sé sit dung nhitng Iénh tong tg cho viée doc hode ghi. Sau day ching ta sé khao sat cu thé tig ving cita cdc b6 nhé dit liéu cing nhw bé nho chwong trinh cia AVR. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 19 Ving GPRs C6 thé di chuyén cdc byte/word dit ligu gitta cé nhau. thanh ghi/cdp thanh ghi véi Cu phap cia lénh nhu sau: - Chuyén doi byte) MOV —-Rd,Rr Rr: chita dit ligu nguon,Rad: chita dit ligu dich 31 Chuyén n@i dung Rr vao Rd - Chuyén doi word: MOVW)-Rd+1:Rd,Rr+1:Rr hay = MOVW_ RdRr 1=0,2.4,....30; d 6.2.4....,30 Chuyén ndi dungRrWRr vio Rd *LRe Holic cé thé nap mot hing s6 vio mét thathyghitheo phyong phép thanh ghi tire théi béi lénh: LDI Rdsk, > Luu §: \énh trén chi droge phépthite hién d6LVOPcac thanh ghi tir R16+R31, va K 1a mot hing sé nguyén khang dau 8 bit: 0 Lin y = Cae dia chi tir $20 (0x20) dén $5F (OxSF) trongywing MEM chiding dé dinh nghia 64 thanh ghi I/O chuan trong tat ca cac¢hip AVR cé dia chi trong tng trong ving I/O la tir $00+$3F. - Mot sé chip AVR cé sé thanh ghi 1/O nko hon 64 thi nhim&vi fri cdn lai trong ving 1/0 sé ding vio muc dich khég_ va iguri lap tinh khdng thé can thiép dén nhitng dia chi nay. ~ Che chip AVR 06 ving 1/O mé rofig (EXIORs) tir $604 phai tray xuat cdc ExIORs trong viing nay nhiPttuy Ignh LD hoac STS), xem Bang 3.2. - Déi véi cde chip AVR) khae nhau, thiW6i cling | dia chi 6 thé gan cho cae thanh ghi 1/O khaenhau,Vi du nhusdiachi $2 dirge gan cho thanh ghi TWAR ciia chip ATmega32a, frong khi_déwdia chi nay lai digc gan cho thanh ghi DDRE ciiachip ATmegal28. \Vi Vay, nhimg Iénh giéng nhau voi cing 1 dia chi trong ving I/O sé cé thé\khac ¥ nghia trong nhiing chip AVR khac nhau. Do d6, mét Slfirong,trinkGduge chip AVR nay sé cd thé chay khéng ding trén chip\AVR'khae va cach tt nhat 1A nén sir dung tén cita cde thanh ghi /O déJaptrinh thay cho viée sit dung dia chi cita ching. FF nh ATmega324P at ving MEM (bing Bing 3.1. Diddchi VORs va da chi b6 nho dit liu (MEM) tuong img ADDRESS’ ADDRESS MEM vo NAME MEM vo NAME $20 $00 PINA $42, $22 EEARH $21 $01 DDRA $43 $23 GTCCR $22 $02 PORTA $44 $24 TCCROA $23 $03 PINB $45 $25 TCCROB $24 $04 DDRB $46 $26 TCNTO $25 $05 PORTB $47 $27 PORCOA $26 $06 PINC $48 $28 OCROB Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 25 $27 $07 DDRC S4A $24 GPIORI $28 $08 PORTC $4B $2B GPIOR2 $29 $09 PIND $4 $2 SPCR. $2A SOA DDRD. $4D $2D SPSR $2B SOB PORTD. SME $2E SPDR. $35 $15 TIFRO $50 $30 ACSR $36 $16 TIFRI $51 $31 OCDR, $37 $17 TIFR2 $53 $33 SMCR $3B SIB PCIFR $54 $34 MCUSR. $3C sic EIFR $55 $35 MCUCR $3D $1D EIMSK $57 $37 SPMCSR $3E SIE GPIOR $5B $8B RAMPZ $3E SIF EECR, $5D $3D SP $40 $20 EEDR, SSE $3E SPH S41 $21 EEARL $5R 33F SREG Vi du 3.6, Cho nhén xét vé két qua bién dich Ya hue thiedo’m lénh sau, voi MCU ATmega324P. LDI R16,$02 ;R163802 OUT TCCRIA,RI6 ;TCCRIA=$02, LDI R16,$06 sR16=$06 OUT TCCRIB RIG ;TCCRIB=$06 LDI R17,$00 sRAZ=$00 STS TC@ROASR17 4ICCROA=$00 LDI RIFSOP gRAT=$09 STS TCCROB,RIZ sT'CCROB=$09 Doan [énh trén the hign Khdi dng Timer! va Timer0 lam vigc theo mode dat. Gi: Khi bién dichsébao 16i dong 2 va dong 4, vi cae IORs TCCRIA, TCCRIB 1a cac ExIORs. Khi thy thi chuong trinh sé chay khong ding y twéng, cdc thanh ghi TCCROA, TCCROB khéng diroe nap cae gid tri trong img, vi sit dung cde Iénh tray xuat ving MEM, khéng phai truy xudt IORs. Cac 6 nhé ving MEM tyong img ky higu TCCROA=0x24 va ky higu TCCROB-0x25 sé duoc nap cae gia tri $00 va $09. Neu quy chiéu vé dia chi ving V/OGORs) 0x24(MEM)=DDRB va 0x25(MEM)=PORTB! Doan Iénh trén phai sta lai nhw sau: Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 26 LDI R16, $02 3R16=$02 STs TCCRIA,RIG —_; TCCRIA=$02 LDI R16, $06 5R16=$06 sTs TCCR1B,R16 3 TCCR1B=$06 LDI R17, $00 5R17=$00 OUT —-TCCROA,R17 5; TCCROA=$00 LOI R17, $09 3R17= OUT TCCROB,R17__; TCCROB=$09 Bang 3.2. Dia chi MEM cdc IORs c6 dia chi 2 $60 MEM NAME MEM NAME MEM NAME $60 WDTCSR. S7E DIDRO. SB4 OCR2B S61 CLKPR. STE. DIDRL $B6 ASSR $64 PRR $80 TCCRIA SBS TWBR, $66 OSCCAL S81 TCCRIB SB9 TWSsR $68 PCICR, $84 TCNTIL SBAy TWAR $69 EICRA, $85 TCNELM SBB' TWDR S$oB PCMSKO $86 ICRIL) SBC TWCR $eC PCMSK1 $87 4cRUT SBD TWAMR $6D PCMSK2 $88. OCRIAL SCO UCSROA, $6E___| TIMSKO $s9__ J OCRIAH $Ci__| UCSROB SOF TIMSK1 $sA__ [| OCRIBL $c2__ | UCSROC $70 TIMSK2 $sB~ | OCRIBH $C4__| UBRROL $73. PCMSK3 SBO TCERIA $C5 UBRROH $78 ADCL SBL TCCR2B $c6 UDRO $79 ADCHy $B2 PCNT2 $cs UCSRIA S7A ADCSRA $B3, OCR2A $co UCSRIB $7B ADCSRB* $84 TCNTIL SCA UCRRIC $7C ADMUX $85__ | TCNTIH gcc [| UDRI ‘Vung FLASH FLASH 1a khéngagian b6 nhé danh cho chuong trinh co thé lén dén 8MB tiy ao chip AVR. Ching ta o6 thé str dung phan khéng gian nay dé lu mét mang inh bingChi dan .DB va dinh dang cia cdc dit ligu nay c6 thé biéu dién theo dang nhj phan, thap phan, HEX hay ma ASCII déu durgc. TO chite bo nhé chyong trinh trong AVR la 2 byte dit ligu due Iuu tai mét dia chi. Vé nguyén tie MCU sé thy hién liu byte dau tién vao vi tri byte thap ctia dia chi dau tién can luu, byte thir hai luu vao vj tri byte cao dia chi dau tién, byte thir ba Iuu vao byte thdp ctia dia chi tiép theo va ctr nhu thé dén hét mang dit ligu muén tao trong, b6 nhé FLASH. __ > Lutu f: Tring hop mang dit ligu c6 sé byte Ig, trinh bign dich sé lu byte 1é cudi cing vao byte thap dia chi 6 nhé cudi, bé qua byte cao va dura ra déng canh bao: Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM n .eseg .db misalignment-padding zero byte” ‘Vi du sau minh hoa cho vige tao mét s6 mang dit ligu c6 dinh trong ving FLASH v6i dit ligu duge dinh dang trong cae hé thong s6 nhj phan, thap phan, HEX, hoae ma ASCII, luu y 1a sit dung dau nhay don (*) cho cdc ky tr don va dau nhay kép (“) cho chudi ky ty. Vi du 3.7. Viét cdc lénh khai bao dit ligu 1a cdc hing sé dang thap phan, nhi phan, HEX, ASCII dit trong b6 nhé chuong trinh. ORG @ sd ligu sé dugc luu tit dia chi 0x0000 DB 1,5,3,7 DECIMAL DB @B11001100, 0801010101 ;BINARY, DB @xAA, OxBB 3HEX DB O'M','N 3ASEII «DB “DH BACH KHOA TPHCM" _ ;ASGI Sau khi thye hign doan chyong tfinh’tfény ta cowthé quan sat két qua 6 cha sé FLASH trong chuong trinh mé phong nhy Hith 3.18: prog. dxéece Yor 05 0 efog Bxobes 44\As 20 42 PReg 9xo010 Meas af a1 progvéxooig 43 ad 4f ££ prog @x0020 FF ff FF ff FF prog @xd@28 Ff ff ff ff fF prog OR@03%, Ff ff FF FF FF prom oxod3s FF ff FF FFF FE Ff FF OFF TF Ff ff Ff ff fF prdg/exo0se ff ff Ff FF FF Hinth 3.18. Méng dit liu dtege tao ra trong ving FLASH > Luu ¥: Hinh 3.18 minh hoa dia chi truy xuat ving Flash theo byte (theo trinh mé phéng ATmel Studio 7), thurc té dir ligu byte truy xuat theo dia chi word nhur vi du trén nhw Hinh 3.19. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 28 LOW HIGH ADDRESS $0000 $0001 $0000 $0002 $0003 $0001 $0006 $0007 $0003 $0008 $0009 $0004 $000A, $000B $0005 SFFFC SFFFD ‘STEFE SFFFE $FFFF ‘S9FFF Hinh 3.19. Gid 7 cha’Z dé truy xuat ving FLASH Quy ude mie dinh dja chirdy xulat dit ligu trong, vang Flash dat trong thanh ghi Z. Cae Iénh doc dit liguttrdiig ving Flashed\ditth dang nhu sau: LPM ShGp dit ligu_vinDPlash dia chi tro béi Z vao RO LPM Rd,Z_ :nap dit liu Yang Flash dia chi tro bdi Z vao Rd,d=(0+31) LPM Rd,Z+ “snap dit ligiviing Flash dia chi tro boi Z vao Rd,d=(0+31), ting dia chiNthém | Voi mang dit ligu da\tao duge mé phong trén Hinh 3.18, vi du nhu ta muén lay dit ligu 1a byte thap tai ‘dia’ chi 0x0002 trong ving FLASH thi gid tri can nap cho Z la 0x0004 bing cae 1éhh séu: LDI R30,0x04 LDI R31,0x00 LPM Hinh 3.20 minh hoa cho gia tri cua Z khi ving FLASH. Hinh 3.21 cho thay két qua quan sat khi chay mé phéng doan chuong trinh cing v6i mang dit ligu da tao 6 trén. Ctra s6 FLASH 1a néi dung ciia phin CODE chong dir ligu ti cae dja chi trong ing cia Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 2» trinh, bat dau tt dja chi 0x0000, sau khi thc hién lénh LPM ta cé ndi dung byte thdp cla 6 nhé ¢6 dia chi 0x0002 (tuong tng gid tr 0x0004 nap vao thanh ghi Z) 1 OxCC duge luu trong thanh ghi RO. He HO HT EE Hinh 3.20. Két qua mé phong cia lénh LPM Khi can truy xuat dén cc dif ligu trong ving FLASH theo phwong’phap true tiép, thi bit LSB ctia thanh ghi Z sé xde dinh cho vige ldy.byt@thap hay,cao.ciia’d nhé do, cac bit MSB cén lai la gia tri dia chi trong ving FKASH) can truy mud? Trinh bién dich cho phép sir dung cac him HIGM() va LOW( dé lay byte cao va byte thap ctia mét gia tri 16 bit nhu sau: LDI ZH,HIGH(Ox2010) LDI ZL,.LOW(0x2010) Vige truy cap byte thip cil nT6r nhé tronB\ving FLASH déng nghia vdi vige dich trai dia chi cin truy xuAtFbitrrdi dat Wio'thanh ghi Z, dé ly ndi dung ciia byte cao thi chi vige dat bit LSB Sia/Z cé didtGhinda durge dich tréi 1én 1. Ching han nhur mun doe dit ligu a byterthapyciia 6 rih6s¢6 ‘dia chi 0b00000101 ta dit vao Z noi dung 1a 0b00001010 va muonydoc byte cao thi dit LSB lén 1 thanh 0b00001011. Co thé ding ky ‘bicu <<1 ché toah ti dich trai mt bit va the hién cac lénh sau dé doc byte thap cua 6 nhé cdvdia chi $100: LD ZH.HIGH@100<1) —_:nap byte cao ciia dia chi vao ZH. LDI — ZL,LOW$100<<1) snap byte thdp ciia dia chi vao ZL. LPM R162 :doc néi dung cia dia chi 6 nhé vao R16. ‘M6t cach trong tir, 06 thé str dung ky hiéu | danh cho toan tit OR véi bit 1 dé doc byte cao: LDI — ZH.HIGH($100<<1)j1)_:nap byte cao ciia dia chi voi LSB=1 vao ZH. LDI— ZL,LOW (($100<<1)|1)_:nap byte thap cia dia chi véi SB=1 vao ZL. LPM RI16.Z :doc néi dung cia dia chi 6 nhé vao R16. Lénh LMP Rd,Z* 1a 1 cai tién trong viée truy xuat cae dir ligu 6 dia chi lién tiép nhau trong ving Flash ma khéng can phai sir dung thém Ignh INC dé tré dén dia Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 30 chi ké tiép can truy xuat. Ta cé thé truy xuat 2 byte lién tiép tir 6 nhé Flash dia chi $100 nhw sau: LDI ZH,HIGH($100<<1) snap byte cao ctia dia chi vao ZH. LDI —_ZL,LOW ($100<<1) _:nap byte thép cita dja chi vao ZL. LPM RI6,Z.+ sd LPM RI7.Z sdoc ndi dung byte cao ela dia chi 6 nhé vao RIT. ¢ ndi dung byte thép cita dia chi 6 nhé vao R16. Vi dy 3.8. Gia sir chudi ky ty “WORLD PEACE” durge dit trong bé nhé chong trinh tai dia chi $100. Viét chong trinh giti chudi ky ty nay ra PortB sit dung mét trong céc phuong phap sau: a, Bién dém. b. Ky tu null (0) dé nhan biét vide két thtic chudi. FLASH véiehau ty. ¢. Phuong phdp truy xuat tryc ti Gia, a. Sir dung bién dém. SINCLUDE "M324PDEF.INC" { ;khai bdoastt dung file dinh nghia cdc ky higu MCU. 324P - ORG ° LDI R16,11 5RLOCT@%bién dém chia sé ky ty cua chudi LDI R20f0xFF OUT DDRB)R20 jdt PortB 1a ngd xudt LDI ZH,HIGH(DATAx<1) ZH = byte cao ctia dia chi. LDI ZL,LOW(DATA<<1) ZL = byte thap cla dia chi. La: LPM R20,Z slay ky ty dat vao R20 OUT PORTB, R20 sgiti ra Port B INC ZL stré dén byte ké DEC R16 sgidm bién dém BRNE L1 j14p vong vé L1 néu R16%0 HERE: RIMP HERE sdimg tai chd - ORG 0x100 jtao chudi tai dia chi $100 DATA: .DB "WORLD PEACE" b. Sir dung ky ty null dé nhan biét két thie chudi. ~ INCLUDE “"M324PDEF. INC" Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM a - ORG e LDI R20, OxFF OUT —_DDRB, R20 3dat PortB 1a ngd xudt LDI ZH, HIGH(DATA<<1) ZH = byte cao cla dja chi. LDI ZL, LON(DATA<<1) 3ZL = byte thdp cla dja chi. Ld: LPM R20,Z slay ky ty dat vao R20 CPL —-R20,0 380 sdnh R20 voi 0 BREQ HERE gnhay dén nhan HERE néu bang OUT —- PORTB, R20 jgui ra Port B INC | ZL 3tré dén byte ké RIMP LL 3 lap lai HERE: ROMP HERE - ORG ex1e0 stao chudi taipdia chi $100. DATA: .DB "WORLD PEACE", c. Sir dung phuong phap truy xuat truc tiép'BLASH woiehdu,t6 + INCLUDE “M324PDEF . ING" - ORG ° LDI R20, 0xFF OUT —_DDRB, R20 LDI —- ZHGHIGH(DATAc<1)y ;ZH = byte cao cia dia chi. LOI ZL, RoW (DATAC 0 | oxdder ) SFE PUSHRRO SP __| esp PUSHRO2 ~— SFD_| wir2 of | 0 | 0 | 0 |oxosrD| SFE “oF SD | POP R22 0 | ox6s | 0 |oxosre| SFE [0x66 | -sP oF [oat -SFD_| POPRIL © | 0x66 | ox2t | oxosee | “SFE ‘FF SP Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM Hinh 3.21. Minh hoa hoat déng cita ving STACK trong vi du 3.9 Phuong phap bing tra (Look-Up Table) Phuong phap bang tra I m6t khdi niém durge sir dung rong rai trong lap trinh vi diéu khién, NO cho phép truy xuat cde phan tir ctia bing khi duge sit dung thing xuyén trong cac tinh toan ti thiéu. Vi du chung ta can tinh gia tri ctia biéu thite 4+x?, trong dé x la 1 s6 6 gia tri tir 0+9. Ching ta c6 thé sit dung mét bang tra thay cho v ax. Dé ly durgc cde phan tinh toan gia tri cla biéu thie nhiéu lan véi cing 1 gid tri tir ciia bang tra trong AVR, ching ta can cng thém chi sé trong ting véi gid tri cla Vi du 3.10. Gia str 3 bit thap ctia portC duge két ndi dén 3 céng tic. Viét chuong trinh giti cac ky tw ASCII dén portD tuong tg véi cac gia tri nhdn duge tit cde céng tie nhw sau: PC2-PCO | Ma ASCII 000 001 010 ou 100 101 110 LL Giai. - ORG ®. LDI R1630x0 OUT DDRC,R16 SDDRC = 0x00 (port C: input) LDI R16, 0xFF, OUT — PORTC, RAE sPort C c6 dién tré kéo lén OUT DDRD R16 5DDRD = OxFF (port D : output) LDI ZH,@ 3ZH = byte cao cla dja chi. BEGIN: IN R16)PINC sdoc trang thai cla cdc céng tac vao Ril ANDI R16,0b0@000111 ;che 3 bit thdp LDI ZL, LOW(ASCII_TABLE<<1);ZL = byte thdp clia dia chi. ADD ZL,R16 3céng chi s6 tuong tng gia tri cla céng ta LPM R17,Z 3ldy m& ASCII tuong tng tir bang tra OUT PORTD,R17 5xudt ra portD RIMP BEGIN 3 - ORG $20 ASCIT_TABLE: Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 35 BO) 2s a SS OT * Ontap 1. Thye hign cde cau lénh dé nap gid tr 0b1 1001010 vao thanh ghi SPL? 2. Viét doan chong trinh thye hign xudt gid tri $55 ra PORTD bing cach sit dung toan hang trong cau Iénh déi vi PORTD theo cde phwong phap dinh dia chi sau: - Tén thanh ghi. - Diachi 1/0. - Dia chi MEM. 3. Viét | chong trinh thie hign x6a 16 6 nhé trong ving SRAM bit dau tir dia chi $100, sit dung cde phwong phap sau: - Sit dung Iénh INC cho viée ting dia chi lén 1. - Dia chi ty déng ting trong lénh. 4. Sir dung phuong php bang tra thye hign fh Bid4ri ctiaigu thie Y = x?+ 2x + 3 va xuat ra PortC, biét ring x 1a s6 BCDenhan duoc tirhbitthdp cia PortB 3.4.2. Nhom Iénh sé hoc Cac phép toan sé hoc cing nhw logic trong.ho AVR déu phai duge thyc hign trén cac thanh ghi GPRs. Phan nay s@trintebay cae thadtac lénh trén cac todn hang hang 1a cdc sé khéng déu cing nhu€6 Bau va su tidddiig (néu c6) dén cdc ed trong thanh ghi trang thdi SREG sau khi Iénhtduge thyre thi Khai niém vé806 ddu trongmaytinh Trong doi sénhang ngaySedc dit ligu duge sit dung 1a cdc s6 duong va Am. Vi dy khi ndi vé nhiét dé thi nhigt d6‘am hoe duong 1a mét gi tri so sanh véi nguéng 0°C (zero d6), dutéi zero"ld nhigt dé am va nguge Iai nhigt dO duong 1a 6 trén mite zero. Vi vay, trong may tinlPeting phai o6 kha nang xir Ly nhiing con sé nhw vay. Bit MSB cia dit ligu due ding dé dinh nghia cho s6 c6 dau, vi s6 dong MSB drge quy ude bing 0 Vanguge lai. Khi di dau, ngudi str dung cn quan tim dén vige biéu din Vavtam gid tri 66 1 duge tuong ting véi sé bit biéu dién (xem chi tiét 6 Churong 0). biéu di Lénh cong Trong AVR, phép cng chi durge thye hign trén cae toan hang durge dinh dia chi kiéu thanh ghi. Mét trong ede cau Iénh ciia phép cng nhu sau: ADD RdRr :Rd-RdiRr, -(0+31), d-(0#31) Lénh trén thye hién cong cée dir ligu dit trong 2 todn hang Rd va Rr, két qua Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 36 duge cdt vao Rd. Phép cOng c6 thé tac dong dén cac co Z, C, N,V, H hole S ciia thanh ghi SREG phu thude vao gid tri ctia céc toan hang tham gia vao. Vi du 3.11. Xéc dinh sy tac dong dén cde ev trong thanh ghi SREG sau khi thyte hién cac lénh sau: LDI— R21,0xF5 :R21=FSH LDI R22,0x0B ——-:R22-0BH ADD R21,R22 :R21-R21+R22 Gia. ‘hi pin a Hex D7 | D6] DS [D4 3 | D2] Bi | Do SONHG © TINO wa R21 FSH T/L | oi Pola R22 BH ofololofipolifa R22 100H 0fO7 0 lave] oyolo Két qua: R22=00, cde c& lta thanh ghi SREG@bi tac dong nhw sau: C=1 vi c6 86 nhe tit yi eH/D?. Z=1 vi két qua tréngR22 La zerog H-1 vi cé s6fhé fir vi tri D3 sang’ D4. Tran bit déu xy ra tréng phép todn (OverFlow) Quan sat doan lénhysdu dé hiéu thao tac thye hign Iénh ctia vi diéu khién va cac tac dong dén cae cd trong thanh ghi SREG khi cé hién tong tran bit dau xay ra. LDI —_R20,0X60» —_:R20=0110 0000 (+96) LDI_— R21,0x46 ——_:R21=0100 0110 (+70) ADD R20.R21 $R20-(+-96)+(+70)=1010 0110 ;R20=A6H=-90 (két qua sai!!!) Giai thich Sau khi thy hién lénh cOng, két qua trong thanh ghi R20 = 10100110B (-90) 1a mot sé am, D7=I nén sé tac déng dén c& N=1. Day 1a 1 két qua sai, do d6 CPU sé dat co tran V Ién 1 dé chi ra phép toan vugt qua pham vi biéu dign. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM a hign cac phép toan trén sé cd dau, ngudi lip trinh can quan sat Vi vay khi tinh huéng cho phi hp. gid tri ciia cd V de hr > Liu ¥ Phép céng trong AVR khéng hé tre cho phuong phap dinh dja chi true tiép trong ving SRAM. Vi i vay dé thye hign phép cdng cae 6 nhé trong ving SRAM true het phai chuyén cae gia tri edn cOng vao cdc thanh ghi GPRs. Vi dy 3.12. Viét doan chong trinh thire hign céng gia tri 0x55 1a ndi dung cua 6 nh $200 trong ving SRAM véi gia tr} 0x33, két qua lu vao R20. Giai. LDS R2,0x200 ;R2 = SSH LDI R20,0x33 | ;R20 = 33H ADD R20,R2 3R20 = R20 + R2 = 33H + SSH*= 88H, C = @ Lénh céng ¢6 nho Khi thye hién phép c6ng trén sé khong d4u6 bit, chiffg.ttcdn quan tim dén cd nhé durge tgo ra tir byte thdp sang byte odo gia Phép toan | Lénh) ADC sé duge sir dung trong truéng hgp nay theo dinh dang sau: ADC —RdRr sRI-Rd+Rr+C, RO#3Y), d-0231) Quan sat phép cong véi2toanhang la eée6 16 bit 3CE7H va 3B8DH. Bai ton sé tuan tur thite Jnigmede burdersau? 1 - Dau tién thye hign cdng2 byte tip: E7+8D=-74 va C=1. 3COET - Tiép theo céng 2 byte cao va 86 nh tao ra tir két qua cia + 3B 8D phép c6ng 2 byte thap. Vidu 3.13 minh hoa cho bai toan —— nay. 78 74 Vi du 3.13. Viét chuong’trinh cdng 2 s6 16 bit: Ox3CE7 va 0x3B8D. Gia sir ring RI-8D, R2-3B, R3=E7 vaR4=3C. Ket qua luu vao 2 thanh ghi R3 va R4, voi R3 1a byte thap cia téng. Giai. ADD R3,R1 = 3R3 = R3 + RL = E7 + BD = 74 &C=1 ADC R4,R2 9 5R4 = R4 + R24 C = 3C + 3B 4 1 = 78H Lénh ADIW thyc hién phép cOng mot gid tri ti bit (hing s6) véi noi dung cia mét cp thanh ghi. Lénh nay chi duge thyre hign déi véi 4 c&p thanh ghi cao nhat ctia GPRs (R24+R31) va phit hgp cho cdc thao téc trén nhing thanh ghi con tré. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 38 Lénh trir Doi v6i AVR ching ta cé tat ca 5 1énh cho phép trit nh sau: SUB Rd.Rr SBC Rd.Rr SUBI Rd,K ? SBCI Rd,K sR SBIW Rd+1:Rd,K 3Rd+1:Rd=Rd+1:Rd-K Da s6 cdc ho vi diéu khién throng c6 2 Iénh khac nhau danh cho phép trit a SUB va SUBB (phép trir véi s6 mugn - SUBtract with Borrow). Tap Iénh AVR sit dung eb nhé (Carry) thay cho ky higu s6 mugn, vi vay 2 lénh SBC va SBCI duge thyc hién cho phép trir véi sé muon. Lénh SUB Rd,Rr trong AVR thyc hién bing céclf chuyén thanhy/PHép cong voi sé bil 2. Phan cing cia CPU sé thie hién Iénh nay theo cae bude sau; - Lay bi 2 ciia sé tri (toan hang bén tay phai: Rr). = Céng véi sé bi trir (toan hang bén tayetrai\- Rd) va luu Rét qua 6 Rd. - Dao bit cd nhé Vi dy 3.14. Trinh bay cae bude thye hién cua doan 1énh sau: LDI R20, 0x23 =R20-23H LDI R21, 0x3 :R21=3FH. SUB R21, R20 :R2=R21-R20 R21 = 3F 0011 411 ool 1111 - R20 = 23 OOLOOODL > + 1101 1101 (Lay bit 2 sé trix) Ic 1 0001 1100 (Céng véi sé tr) C=0, D7=N=0 (ao bit co nhé:C=0, két qua lA s6 durong) Cac e& bi tac dong sau lénh SUB 1a C va N, néu N=0 (hoaic C=0) két qua 1a sé duong va nguge lai. Néu 1a sé 4m thi can thye hién thém bude lay bi 2 bing lénh NEG dé c6 durge gid tri cia phép toan. Cac 1énh SUBI va SBIW thyc hién phép trit vi mot gid tri tite thoi voi mot thanh ghi hoe mét e&p thanh ghi. Gid tri tie thdi trong Iénh SUBI la mot hing sé khong dau 8 bit, cdn Iénh SBIW chi la 6 bit. Cting gidng nh phép c6ng, cde cp thanh ghi trong Ignh SBIW chi duge ding véi 4 cp thanh ghi c6 chi sé cao nhit. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 9 Vi dy 3.15. Viét chong trinh thy hién phép toan 29H-18H va hru két qua vao thanh ghi R21 bing hai cach: a. Khong ding lénh SUBI. b, Ding Iénh SUBI Giai. a, Khong ding Iénh SUBI. LDI R21,0x29 5R21 = 29H LDI R22,0x18 5R22 = 18H SUB R21,R22 jR21 = R21 - R22 = 29 - 18 = 11 H b. Ding lénh SUBI LDI —-R21,0x29 3R21 = 29H SUBI R21,0x18 3R21 = R21 - 18 = 29 - Ig = 11 Hi Vi du 3.16. Viét chuong trinh thuc hién phépttoah 2917H-'8H Va luu két qua vao cac thanh ghi R25 va R24. Giai. LDI —_R25,0x29 jluu\byte=cao vao R25 (R25 = 29H) LDI —-R24,0x17 jAudabyte thapv80 R24 (R24 = 17H) SBIW R25:R24,0x18 “GR259R24 = RZ5R24 - Ox18 = 2917 - 18 = 28FF Lénh tang, giam't don vi Cc lénh INC CDEC dinBGé ting hode gidm ngi dung ctia thanh ghi di 1. INC Rd sRd-Rg+1(d-0731) DEC Rd °Rd=RA-1(d=0231) Lénh nhan tac sé.nguyén Tap lénh AVR cho phép thyc hién phép nhan trén cdc sé nguyén cé dau va/hodc khong dau 8 bit. Két qua 1a 1 s6 16 bit duge edt vao 2 thanh ghi R1 (byte cao) va RO (byte thap). Tuy theo lénh cu thé ma cac toan hang trong lénh chi durge phép sir dung y6i mét s6 thanh ghi duoc gidi han. Lénh MUL Rd,Rr (0 < dr < 31) va MULS Rd, Rr (0 2530 jluu'$FD vo di chi @x315 $86 chia =to Laps lai néu c = 0 jluu két qua vao hang don vi jluu vao hang chuc jluu vao hang tram jing tai_chd Gio Trinh Vi Xi Ly Charomg 3 Bp Mon Dign Ti DEBKTPHCM ow 8. %, On tip Cho biét lénh ADD R20,R21 luu két qua vao dau? Giai thich vi sao lénh ADD R1,0x04 bj bao 1di? Hay viét Iai cho ding véi myc dich the hign ma khéng bj 18i. Cho biét lénh SUB R1,R2 luu két qua vao dau? Xac dinh gia tri cua co C sau méi doan [énh sau: (a) LDI R21 0x4F LDI R22 0xB1 ADD R21,R22 (b) LDI R21,0x9C LDI R22,0x63 ADD R21,R22 Trinh bay hoat dong ctia CPU khi thef@hién phép todin 43A] OSH? Gia sit co C=1, RI=95H, va R2=4FHytruéc khi.thue hign lénh “SBC R1,R2”, hay xdc dinh ngi dung cia RI va C sau lénh trén® Phép nhan cdc ton hang-khéng dau sé dat kétqua vao cdc thanh ghi nao? Cho biét enh MUL R20xJ0 1a 1énh:e6.hop'lé khéng? Giai thich? Gia trj lon nh4tcu 2 tozin hang dGeuitre hién trong phép nhan 1a bao nhiéu? 10. Co phai lénh MUL chi dugg thao,tac trén 2 thanh ghi RO va R1? Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 4 3.4.3. Nhom Iénh logic Nhom lénh logic ca AVR thye hién cac phép toan logic AND, OR, XOR, NOT (bit 1) trén cdc byte dit ligu dat trong 2 toan hang 1a cdc thanh ghi Rd va Rr. Phép toan duge thye hign trén tig bit c6 cing gid tr vi tri trong s6. Két qua eat vao Rd. ___ Riéng phép AND va OR c6 thé ding véi toan hang la mét gid tri tite thoi (hing sé 8 bit). Doan lénh sau minh hoa cho mét sé phép toan logic: LDI R16,0xAA —:R16 1010 1010B LDI RI7,0x0F sRI7 = OFH = 00001111B AND — RI16,R17 sR16= AA & FF = OAH = 0000 1010B OR R16,R17 sR16 = 0A Vv OF = OFH = 0000 1111B ORI R16,0xFO ;R16 = OF v FO = FFH = @TTM1111B ANDI R16,0xFF sR16- FF & FF = EFH » WIV1IIIB EOR R16,RI7 sR16 = FF @ 08 =) FOH ‘“@ 2111 0000B COM RI7 sRI7= (OF) = FOAW =~ 1111 0000B Lénh lay bd 2 ctia mét thanh ghi: NEG Rd 3d=0+31 Ngoai ra, c6 thé dit (set)sho’e x6a (clear), m6thoic nhiéu bit trong mét thanh ghi béi cde 1énh sau: SBR RdK 4 W6Sd SOS KS255 CBR RAK ; Voi K 1a 1 hing’ 8 bit. bit an dit/x6a thi vi tri bit trong tng trong k bang 1. Hoe c6 thé x6a hoe dattoan bé cac bit trong mét thanh ghi bing enh CLR hode SER. Vi dy cin dit vi trhebit 0 va 2 trong thanh ghi R16 lén 1 va xéa cdc bit & vi tri 5 va 7 trong thanh ghi R20 ye 0, ta ding cdc lénh tong tng sau: SBR R16,0B00000101 CBR R20,0B 10100000 Lénh TST ding kiém noi dung eta thanh ghi bing 0 hay am, tée dong lén ede bit ey Z (zero) va N (80 am). Sau lénh nay e& Z=1 néu noi dung eta thanh ghi can kiém tra bing 0 va ngugc lai. C& N=1 néu bit MSB cia thanh ghi bing 1 va nguge lai. % On tap Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM “ Xéc dinh néi dung ciia thanh ghi RO sau khi thie hign cdc dogn Iénh sau: a) LDI R20,0x65 (b) LDIR20,0x70 LDI R21,0x76 LDIR21,0x6B AND R20,R21 OR R20,R21 (©) LDI R20,0x95 @_ LDIR20,0x5D LDI R21,0xAA LDI R21,0x75 EOR R20,R21 AND R20,R21 (e) LDI R20,0x005 (f) LDIR20,0x6A LDI R21,0x12 LDI R21,0x6E OR R20,R21 EOR R20,R21 (g) LDI R20,0x37 LDI R21,0x26 OR R20,R21 3.4.4, Nhom Iénh ré nhanh Tap Iénh AVR cé nhiéu Iénh dé diéu Kkhién IuGn&.chtong trinh, bao gém cae Iénh goi va quay vé tir mot chong trintf con, lénh r&nhanh c6 diéu kién hode khong c6 diéu kign. Lénh nhay khong didwkign Co 3 bién thé cid\gih hay khdg.diéy kién la JMP, RIMP va LIMP sir dung kiéu dinh dia chi tafe fiép hou gidfti¢p/ving FLASH. Lénh JMP c6 Wich dén 1a WiGt dia chi bat ky trong khéng gian bG nhé chuong trinh ti da la 4M (word), thy“thude Vao vi dieu khién duge sit dung. Cau Iénh sau thyc hién viée nhay tai ché néu'thwe thi xong doan chuong trinh, HERE: JMP HERE Lénh RJMP Pniét lénh nhay trong déi. Mét dia chi trong déi (hay cén goi 1a offset) 1a 1 gid tri 12bit c6 dau. Gid tri nay due cOng véi bo dém chong trinh (PC hién hanh) dé tao ra dia chi tiép theo can dugc thye thi. Tam nhay duge gidi han 1a tir - 2048 byte dén 2047 byte so véi dia chi PC hign hanh. Théng thug cde dia chi nhay dén duge xac dinh boi cic nhan va trinh dich hop ngi sé xac dinh offset trong doi tuong img. So vGi 1énh JMP cé 4 byte Iénh thi 1énh nay chi 1a Iénh 2 byte nhung nguge lai thi dich nhay dén bj gidi han trong tam cho phép nhu da noi 6 trén. LABELI: Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 45 RJMP LABEL1 snhay dén nhan vee snhain c6 thé dat sau (LABEL2) hoiic tude (LABEL!) lénh RIMP LABEL2: snhung khéng qua pham vi 2K so v6i PC hign hanh. skhéng lim gi Lénh IJMP nhay dén mét dia chi gian tiép durge dit trong thanh ghi Z. Khi Iénh nay duoc thy thi, gia tri cla PC sé duge nap 1a ni dung thanh ghi Z. Vi Z 1a mot thanh ghi 2 byte nén dia chi ma Iénh IJMP cé thé nhay dén trong pham vi khong gian bé nhé chong trinh tdi da 1a 64Kword. Chuong trinh con va ngit Cac lénh goi chwong trinh con hoat dong mot cdch twong tyr véi cdc lénh nhay khong diéu kign, gm 6 3 Iénh la CALL, RCALL va IGALL. Khi mét chong trinh con duge goi boi Iénh CALL, trude tién (CPU $é luu dia chi ctia Iénh tiép theo sau lénh CALL vao ving staék Wa sali dé chttyén 80 khién dén chuong trinh con. Day chinh 1d cach dé CPU biét Gia chi tiép thedcan thye hign 1a & dau sau khi tro vé tir chong trinh con. Déi véi cde ho AVR c6 dé dai ciidPEsRhéng qua L6bit (ATmegal28/32/324P) thi gid tri cia PC duge chia thinh 2 byte\ byte cao sB ditge*eht vao ving Stack tnrée, sau dé dén byte thap. Cén nhing ho AVR 6 PONG Kon 16 bit nkimg khong qua 24 bit thi gid tri cia PC duge chia thanh 3 bytebytercdd nhat s&difgc cat truéc, dén byte tiép theo va sau cing 1a byte thap. Trong ca 2 trudng hgp trén thi cae bYte cao hon durge cat vao stack tude tién. Cac lénh RCALLWa ICALL/Cing co cac han ché trén dia chi dich nhur cac lénh RJMP va IJMP. Céc chuong trinh edhigdn Wirge két thie boi 1énh RET, lénh nay trd viée thye thi chuong trinh tré vé Ignh theo"Sau Ignh CALL. Lénh RET s@ lay lai 2 byte sau cling ra Khoi viing stack va naptchting cho b6 dém chuong trinh. Lénh RETI tradiéu khién vé chuong trinh goi tir mét trinh phuc vu ngat (ISR: Interrupt Service Routine). Diém khac nhau gitta RET va RETI la RETI bao higu cho hé théng diéu khién ngat biét ring qua trinh xit ly ngit da xong, phyc hdi lai cde trang thdi cia chong trinh trade khi phyc vu ngat, bao gom ca cdng viée gidng nh Iénh RET. Cac ngat va lénh RETI sé durge trinh bay chi tiét trong Chong 10. Vi du 3.18. Viet chuong trinh thre hién xuat lién tuc_céc dit ligu $55 va SAA ra PORTR, gitta méi lin xudt tao mét khoang thoi gian tré bang céch goi chuong trinh con DELAY. Quan sat su tac déng dén ving Stack khi thie hién lénh goi churong trinh con. Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 46 Giai. -ORG 0 e000 LOI R16,HIGH(RAMEND) ;khdi tao ving stack 0001 OUT SPH, R16 0002 LOI R16,LOW(RAMEND) 5 0003 OUT SPL, R16 0004 LOI R16, 0xFF 0005 OUT DDRB, R16 jdat PORTB: xudt BACK: 0006 LDI R16,0x55 jRL6= 0x55 0007 OUT PORTB, R16 355H > port B 0008 CALL DELAY jtao tré 00a LOI R16,@xAA jRL6= OxAA e00b OUT PORTB, R16 5AAH > port/® @00c DELAY slam tré e00e RIMP BACK 5 lap laklién tuc -ORG 0x300 jdat\ehyong trinhy con DELAY tai dia chi, $300 DELAY: 0300 LDI R20, 0xFF 5R20 =\255 AGAIN: 0301 NoP skhéng lam gi nhung tén 1 chu ky may 0302 Nop 0303 DEC _ Rag jgtam R20 0304 BRNE AGAIN Phan tich tac dong déhying Stack khi thuc hién lénh Call trwée Ignlt\, \sait Ignk h saulgah saw Ign CALL ‘CALL ‘CALL T Hin f Hint Hin 2 SFC src SFC sec| BFC sFD sFD <2 sr0| sep|__|<® sep] SFE. sre [00 SFE sre] 00 SFE SF =< srr [OX ‘SFF J<© srr [oe OFF i SP=0x8FF SP=0x8FD SP=0x8FF —SP=0x8FD —SP=0x8FF Lénh nhay c6 diéu Kier trong. at han o Tene wach hay tir -64 dén +63 byte ké tit lénh theo saw ten nhay c6 digu ign. Ngodi ra digu kign duge xét eting 66 the 18 cde bit trong tap cde thanh ehi Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM ” bang cach bé qua lénh theo ngay sau Iénh nhay cé diéu kign. Cae lénh ré nhanh c6 diéu kién khéc lién quan dén bit duge trinh bay trong phan nhom lénh xir ly bit. Mét so Iénh do tac d6ng ctia cde co trong thanh ghi trang thai (SREG) cé dinh dang nhw sau: Co Zero *BREQ k sé nhanh néu cd zero=1 Vidu. cp RLRO ;so sinh 2 thanh ghi RI va RO BREQ EQUAL :ténhanh dén nhan EQUAL néu R1=RO(Z=1) EQUAL... sthure hién lénh gi 46... *BRNE k snguge véi lénh trén, Vi du. EOR — R27.R27 sR27-0 LOOP: INC R27 sting RIF CPI R27,5 86 sanh R27 voi.5 BRNE LOOP ‘eHilinh démLOOP néu R27#5 (Z=0) NOP 5 Co nhé C (carry) *BRCS k sré.nhanh néu co C=1 Vi du. CPL R26,856, {so sinh R26 v6i $56 BRCS. CARRY nhanh néu cd C=1 CARRY:... *BRCC k jr nhanh néu co C=0 Vidu. ADD —_R22.R23 sR22—R22+R23 BRCC NOCARRY nhanh néu C=0 NOCARRY:... : “BRSH k :rénhanh néu Ién hon hay bing Gio Trinh Vi Xi Ly Charomg 3 (Bp Mon Dign Tir DHBK TPHCM 48 Vidu. SUBI R194 BRSH — LOOP LOOP: ... *BRLO k Vidu. EOR RI9,R19 LOOP: INC RIO CPI R19,$10 BRLO LOOP Co am N (negative) “BRM k Vidu. SUB RI84 BRMI SO_AM SO_AM:... *BROL k Vidu. SUBI — R26,850 BRPL SO_DUONG SO_DUONG:’&, Cé tran bit 2 V (Over) *BRVS k Vidu. ADD R3.R4 BRVS TRAN TRAN: Gio Trinh Vi Xi Ly Charomg 3 ;RI9—R19-4 ur nhénh néu R19 >= 4 (s6 khong dau) yr nhanh néu nhé hon sRI9-0 ting R19 380 sinh R19 v6i $10 :rénhanh néu R19 <$10%s6 khéng déu) :ré nhanh néwlisé am(N=1) sRISCRIS-4 at@nhdnh néu REt qua la sé am :r@ Bhanh néu 1a sé dong (N=0) ;R26—R26-850 :ré nhanh néu 1a sé duong «WD sR3CR3+R4 nhanh néu phép toan bi tran Bp Mon Dign Ti DEBKTPHCM 9

Vous aimerez peut-être aussi