Giáo trình Vi xử lý - Chương 3: Tập lệnh của 8051 - Phạm Quang Trí

Mã gợi nhớ (Mnemonic): biểu diễn các mã của lệnh hoặc các chỉ dẫn của chương trình dịch hợp
ngữ (Mã gợi nhớ: ADD, SUBB, INC, …; Chỉ dẫn: ORG, EQU, DB, …).
o Toán hạng (Operand): chứa ñịa chỉ hoặc dữ liệu mà lệnh sẽ sử dụng. Số lượng toán hạng trong một
dòng lệnh phụ thuộc vào từng dòng lệnh (RET – không toán hạng, INC A – một
toán hạng, ADD A, R0 – hai toán hạng, CJNE A, #12H, ABC – ba toán hạng).
Lưu ý về toán hạng: trong các lệnh có 2 toán hạng thì toán hạng ñầu tiên còn ñược gọi là
toán hạng ñích (Destination), toán hạng thứ hai còn ñược gọi là toán hạng nguồn (Source).
o Chú thích (Comment): làm cho rõ nghĩa cho chương trình. Các chú thích phải nằm trên cùng một
dòng và bắt ñầu bằng dấu chấm phẩy (;). Các chú thích nếu nằm trên nhiều dòng
thì mỗi dòng cũng phải bắt ñầu bằng dấu chấm phẩy (;). 
pdf 80 trang thamphan 28/12/2022 920
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi xử lý - Chương 3: Tập lệnh của 8051 - Phạm Quang Trí", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfgiao_trinh_vi_xu_ly_chuong_3_tap_lenh_cua_8051_pham_quang_tr.pdf

Nội dung text: Giáo trình Vi xử lý - Chương 3: Tập lệnh của 8051 - Phạm Quang Trí

  1. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. 5.11.CJNE , ,rel • Chcnăng: Sosánhvànhynukhôngbng. • Môt: CJNEsosánhgiátrca2toánhng( srcbyte )và( destbyte )rirnhánhñnña chñưcchratronglnhnucácgiátrca2toánhngnàykhôngbngnhau. CCY=1nugiátrnguyênkhôngduca(destbyte)nhhơngiátrnguyên khôngduca(srcbyte)vàngưcliCY=0. Khôngcótoánhngnàotrong2 toánhngbnhhưng . • Cácdnglnh: CJNEA,direct,rel Sbyte 3 Schukỳ 2 Mãñitưng 10110101aaaaaaaaeeeeeeee Hotñng (PC) ←(PC)+3 IF(A) (direct)THEN (PC) ←(PC)+ñachtươngñi IF(A) #dataTHEN (PC) ←(PC)+ñachtươngñi IF(A) #dataTHEN (PC) ←(PC)+ñachtươngñi IF(Rn)<#dataTHEN (C)←1 ELSE (C) ←0 GiáotrìnhVixlý. 99 Biênson:PhmQuangTrí
  2. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. • Víd3: ngdngchophépsosánhlnhơnhaynhhơn.Gis: o KhitamunnhyñnnhãnBIGnu(A)≥#20H,thìcáclnhsauñưcsdng: CJNE A,#20H,$+3 ;Sosánh(A)vicons20H. JNC BIG ;NhyñnBIGnu(A)≥#20H. o KhitamunnhyñnnhãnSMALLnu(A) , • Chcnăng: Gimvànhynubytekhác0. • Môt: DJNZgimbytechrabitoánhngñutronglnhvàrnhánhñnñachñưc chrabitoánhngthhaitronglnhnuktqusaukhigimkhác0.Nugiá trbanñucabytelà00Htascótrànsang0FFH.Cácckhôngbnhhưng. • Cácdnglnh: DJNZRn,rel Sbyte 2 Schukỳ 2 Mãñitưng 11011rrr eeeeeeee Hotñng (PC) ←(PC)+2 (Rn) ←(Rn)–1 IF(Rn) 0THEN (PC) ←(PC)+byte_2 DJNZdirect,rel Sbyte 3 Schukỳ 2 Mãñitưng 11010101aaaaaaaaeeeeeeee Hotñng (PC) ←(PC)+2 (direct) ←(direct)–1 IF(direct) 0THEN (PC) ←(PC)+byte_2 • Lưuý: Khilnhnàyñưcdùngñlàmthayñigiátrcamtportxutthìgiátrñưc dùnglàmdliubanñucaportñưclytbchtdliuxut,khôngphi ñưclytcácchânnhp. GiáotrìnhVixlý. 101 Biênson:PhmQuangTrí
  3. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. DanhsáchcáclnhlàmnhhưngticáccCY,ACvàOV Ghichú: Xlàctươngngbnhhưng. 0làctươngngbng0. 1làctươngngbng1. IV.CÁCVÍDNGDNGVTPLNH: • Víd1: VitñonlnhñxóathanhghiAvàsauñócng9vàothanhghiA10ln.Saukhi hoànttthìctgiátrtrongthanhghiAvàothanhghiR7. Gii MOV A,#0 ;XoáACC,A=0. MOV R0,#10 ;Npslnlp,R0=10. BACK: ADD A,#9 ;Cngthêm9vàoACC. DJNZ R0,BACK ;Kimtraslnlpli,10ln. MOV R7,A ;CtACCvàothanhghiR7. • Víd2:VitñonlnhñnpvàothanhghiAvigiátrFFHvàsauñólybùthanhghiA500 ln. Gii MOV A,#0FFH ;NpA=FFH. MOV R0,#10 ;Npslnlp1,R0=10. LOOP: MOV R1,#50 ;Npslnlp2,R1=50. BACK: CPL A ;LybùACC. DJNZ R1,BACK ;Kimtraslnlp2(vòngtrong),50ln. DJNZ R0,LOOP ;Kimtraslnlp1(vòngngoài),10ln. GiáotrìnhVixlý. 103 Biênson:PhmQuangTrí
  4. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. • Víd6:Hthngsdng8051cótnsdaoñngcathchanhlà11,0592MHz.Hãyxácñnh thigiancnthitñthchinhoànttñonlnhsau: MOVA,#55H MOVP1,A CPLA END Gii Chukỳmáy: 12 12 TMachine = = = ,1 085()s fOSC 11,0592MHz ðonlnh: Schukỳmáy: MOV A,#55H 1 MOV P1,A 1 CPL A 1 END Tngthigianthchinñonlnhtrênlà: t=(1+1+1)x1,085(s)=3,255(s) • Víd7: Hthngsdng8051cótnsdaoñngcathchanhlà11,0592MHz.Hãyxácñnh thigiancnthitñthchinhoànttñonlnhsau: DELAY: MOVR3,#200 DJNZR3,$ RET Gii Chukỳmáy: 12 12 TMachine = = = ,1 085()s fOSC 11,0592MHz ðonlnh: Schukỳmáy: DELAY: MOVR3,#200 1 DJNZR3,$ 2 RET 1 Tngthigianthchinñonlnhtrênlà: t=[1+(2x200)+1]x1,085(s)=436,17(s) GiáotrìnhVixlý. 105 Biênson:PhmQuangTrí
  5. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. Chññnhñachgiántip(khôngdùngvònglp): MOV A,#55H ;Npgiátr55HvàothanhghiA. MOV R0,#40H ;Npñachbtñu,R0=40H. MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr,R0=41H. MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr,R0=42H. MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr,R0=43H. MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr,R0=44H. MOV @R0,A ;SaonidungAvàoônhdoR0trñn. Chññnhñachgiántip(dùngvònglp): MOV A,#55H ;Npgiátr55HvàothanhghiA. MOV R0,#40H ;Npñachbtñu,R0=40H. MOV R1,#5 ;Npslnlpli,R1=5. LOOP: MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr. DJNZ R1,LOOP ;Kimtraslnlpchoñnkhisln=0. • Víd11: Vitñonlnhñxóa16ônhRAMnicóñachbtñut60H. Gii CLR A ;XoáACC,A=0. MOV R0,#60H ;Npñachbtñu,R0=60H. MOV R1,#16 ;Npslnlpli,R1=16. LOOP: MOV @R0,A ;SaonidungAvàoônhdoR0trñn. INC R0 ;Tăngcontr. DJNZ R1,LOOP ;Kimtraslnlpchoñnkhisln=0. • Víd12: Vitñonlnhñchuynmtkhidliugm10bytetvtríônhRAMnibt ñutiñach35HñncácvtríônhRAMnibtñutiñach60H. Gii MOV R0,#35H ;Npñachbtñu(ngun),R0=35H. MOV R1,#60H ;Npñachbtñu(ñích),R1=60H. MOV R2,#10 ;Npslnlpli,R2=5. LOOP: MOV A,@R0 ;SaonidungônhdoR0trñnvàoA. MOV @R1,A ;SaonidungAvàoônhdoR1trñn. INC R0 ;Tăngcontr(ngun). INC R1 ;Tăngcontr(ñích). DJNZ R2,LOOP ;Kimtraslnlpchoñnkhisln=0. GiáotrìnhVixlý. 107 Biênson:PhmQuangTrí
  6. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. • Víd14: Gisch“TP.HCM”ñưclưutrongROMnitivùngnhcóñachbtñulà 200H.HãyvitchươngtrìnhñchuyncácbytedliunàyvàocácônhRAMnibtñutñach 40H. Gii Phươngphápsdngbñmdliu: ORG 0000H ;ðachlưuchươngtrìnhtrongROM. MOV DPTR,#MYDATA ;Npcontrvùngdliu. MOV R0,#40H ;NpñachbtñuchatrongRAM. MOV R1,#6 ;Npgiátrbñm(slưngkýt). LOOP: CLR A ;XoáACC,A=0 MOVC A,@A+DPTR ;LydliutiônhROMdo ;(A+DPTR)trñnñưavàoA. MOV @R0,A ;CtvàoônhRAMdoR0trñn. INC DPTR ;Tăngcontrdliu. INC R0 ;TăngñachvùngRAM. DJNZ R1,LOOP ;Lplichoñnkhibñm=0. SJMP $ ;Dngchươngtrình. ORG 200H ;ðachlưuchươngtrìnhtrongROM. MYDATA: DB “TP.HCM” ;Khaibáodliu. END ;Ktthúcchươngtrình. PhươngphápsdngkýtNULLñktthúcchui: ORG 0000H ;ðachlưuchươngtrìnhtrongROM. MOV DPTR,#MYDATA ;Npcontrvùngdliu. MOV R0,#40H ;NpñachbtñuchatrongRAM. LOOP: CLR A ;XoáACC,A=0 MOVC A,@A+DPTR ;LydliutiônhROMdo ;(A+DPTR)trñnñưavàoA. JZ EXIT ;ThoátranucókýtNULL. MOV @R0,A ;CtvàoônhRAMdoR0trñn. INC DPTR ;Tăngcontrdliu. INC R0 ;TăngñachvùngRAM. SJMP LOOP ;Lpli. EXIT: SJMP $ ;Dngchươngtrình. ORG 200H ;ðachlưuchươngtrìnhtrongROM. MYDATA: DB “TP.HCM”,0 ;Khaibáodliu,cókýtNULL. END ;Ktthúcchươngtrình. GiáotrìnhVixlý. 109 Biênson:PhmQuangTrí
  7. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. • Víd18: Vitñonlnhtínhtngca5dliuBCDñưclưutrongRAMnitiñachbt ñut40Hnhưsau:(40H)=71H,(41H)=11H,(42H)=65H,(43H)=59H,(44H)=37H.Ktqu ñưclưuvàothanhghiR7(bytecao)vàthanhghiA(bytethp)dưidngsBCD. Gii MOV R0,#40H ;NpñachbtñuchatrongRAM. MOV R1,#5 ;Npgiátrbñm(slưngônh). CLR A ;XoáACC,A=0. MOV R7,A ;XoáthanhghiR7,R7=0 LOOP: ADD A,@R0 ;CngnidungônhdoR0trñnvàoA. DA A ;HiuchnhthànhsBCD. JNC NO_CY ;Nhynukhôngcónh,CY=0. INC R7 ;TăngthanhghiR7nucónh,CY=1. NO_CY: INC R0 ;Tăngcontrñnônhktip. DJNZ R1,LOOP ;Lplichoñnkhibñm=0. • Víd19: VitñonlnhñnhndliudưidngsHEXtrongphmvi00H–FFHtPort1 vàchuynñivdngthpphân.LưucácsvàocácthanhghiR7(LSB),R6vàR5(MSB). Gii MOV P1,#0FFH ;CuhìnhP1làportnhp. MOV A,P1 ;ðcdliutP1. MOV B,#10 ;NpB=10. DIV AB ;Chiacho10,táchlyscao/sthp. MOV R7,B ;LưugiátrhàngñơnvvàoR7. MOV B,#10 ;NpB=10. DIV AB ;Chiacho10,táchlyscao/sthp. MOV R6,B ;LưugiátrhàngchcvàoR6. MOV R5,A ;LưugiátrhàngtrămvàoR5. • Víd20: VitñonlnhñcvàkimtraPort1xemcóchagiátr45Hhaykhông?Nu(P1)= 45Hthìxutgiátr99HraPort2,ngưclithìthoátkhiñonlnh. Gii MOV P2,#00H ;XoáP2,P2=0. MOV P1,#0FFH ;CuhìnhP1làportnhp. MOV R0,#45H ;NpR0=45H,giátrcnkimtra. MOV A,P1 ;ðcdliutP1. XRL A,R0 ;Kimtradliucóbng45H,nubngthì JNZ EXIT ;A=0,khôngbngthìA?0. MOV P2,#99H ;NpP2=99HnuP1=45H(A=0). EXIT: • Víd21: Vitñonlnhñlybù2giátrchatrongthanhghiR0. Gii MOV A,R0 ;NpdliucnlybùvàoA. CPL A ;Lybù1. ADD A,#1 ;Cngthêm1ññưcbù2. GiáotrìnhVixlý. 111 Biênson:PhmQuangTrí
  8. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. • Víd25: GiscácônhtrongRAMnicóñacht40H–44Hchanhitñcacácngày ñưcchradưiñây.Hãyvitñonlnhkimtraxemcógiátrnàobng65không?Nucóthìñtña chcaônhñóvàoR4,ngưclithìñtR4=0. (40H)=76,(41H)=79,(42H)=69,(43H)=65,(44H)=64 Gii MOV R4,#0 ;XoáR4=0. MOV R0,#40H ;NpñachbtñuchatrongRAM. MOV R1,#5 ;Npgiátrbñm(slưngônh). MOV A,#65 ;NpgiátrcntìmvàoA,A=65. BACK: CJNE A,@R0,NEXT ;SosánhdliudoR0trñnvi65. MOV R4,R0 ;NubngthìlưuñachônhñóvàoR4. SJMP EXIT ;Thoátchươngtrình. NEXT: ;TrưnghpdliudoR0trñnkhác65. INC R0 ;Tăngcontrñnônhktip. DJNZ R2,BACK ;Lplichoñnkhibñmbng0. EXIT: • Víd26: Vitñonlnhtìmtngcácchs1trongthanhghiR0. Gii MOV R1,#0 ;XoáR1=0,lưuschs1. MOV R2,#8 ;Npgiátrbñm(sbitkimtra). MOV A,R0 ;NpdliucnkimtratR0vàoA. LOOP: RLC A ;Xoaytrái,ñưabitcnkimtravàocCY. JNC NEXT ;KimtracCY. INC R1 ;TănggiátrcaR1nucCY=1. NEXT: DJNZ R2,LOOP ;Lplichoñnkhibñmbng0. • Víd27: VitñonlnhñchuynñisBCDnénchatrongthanhghiAthànhhaisASCII vàchahaisnàytrongthanhghiR2vàR3. Gii MOV A,#29H ;NpA=29H,mãBCDnéncas29. MOV R2,A ;LưulisBCDcnchynñitrongR2. ANL A,#0FH ;Xoá(che)4bitcaocasBCD(A=09H). ORL A,#30H ;ChuynthànhmãASCII(A=39H). MOV R3,A ;CtvàoR3(R3=39H–mãASCIIca9). MOV A,R2 ;LylisBCDlúcbanñu(A=29H). ANL A,#0F0H ;Xoá(che)4bitthpcasBCD(A=20H). SWAP A ;Hoánchynvtrí4bitcaovpbitthp. ORL A,#30H ;ChuynthànhmãASCII(A=32H). MOV R2,A ;CtvàoR2(R2=32H–mãASCIIca2). GiáotrìnhVixlý. 113 Biênson:PhmQuangTrí
  9. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. Bài6: Vitñonlnhghi( chuyn)giátr40Hvàoônh1230HcaRAMngoài( RAMngoài códunglưng>256byte ). Bài 7: Vitñonlnhxóaônh1231HcaRAMngoài( RAMngoàicódunglưng>256 byte ). Bài8: Vitñonlnhghi( chuyn)nidungônh1232HcaRAMngoàivàothanhghiA (RAMngoàicódunglưng>256byte). Bài9: Vitñonlnhghi( chuyn)nidungthanhghiAvàoônh1233HcaRAMngoài (RAMngoàicódunglưng>256byte ). Bài 10: Vitñonlnhchuyndliuônh1234HcaRAM ngoàivàoônh1235Hca RAMngoài( RAMngoàicódunglưng>256byte). • TruyxutPort: Bài1: Vitñonlnhxut( ghi )giátr0FHraPort1. Bài2: Vitñonlnhxut( ghi )giátrF0HraPort2. Bài3: Vitñonlnhxut( ghi )nidungthanhghiAraPort1. Bài4: Vitñonlnhnhp( ñc)tPort1vàothanhghiA. Bài5: Vitñonlnhnhp( ñc)tPort1vàxutraPort2. Bài6: Vitñonlnhxut( ghi )nidungônh37HcaRAMniraPort3. Bài7: Vitñonlnhnhp( ñc)tPort2vàoônh38HcaRAMni. Bài8: Vitñonlnhxutmc1( mclogiccao )rachânP1.0 Bài9: Vitñonlnhxutmc0( mclogicthp)rachânP1.1 • TruyxutRAMni,RAMngoàivàPort: Bài1: Vitñonlnhchuynônh40H( RAMni)vàoônh2000H( RAMngoài ). Bài2: Vitñonlnhchuynnidungônh2001H( RAMngoài )vàoônh41H( RAMni). Bài3: Vitñonlnhnhp( ñc)tPort1vàoônh42H(RAMni). Bài4: Vitñonlnhnhp( ñc)tPort1vàoônh2002H(RAMngoài). Bài5: Vitñonlnhxut( ghi )nidungônh43H( RAMni)raPort1. Bài6: Vitñonlnhxut(ghi)nidungônh2003H( RAMngoài )raPort1. • Sdngvònglp: Bài1: Vitñonlnhxóa20ônhRAMnicóñachbtñulà30H. Bài2: VitñonlnhxóacácônhRAMnitñach20Hñn7FH. Bài3: Vitñonlnhxóa250ônhRAMngoàicóñachbtñulà4000H. Bài4: Vitñonlnhxóa2500ônhRAMngoàicóñachbtñulà4000H. Bài5: VitñonlnhxóacácônhRAMngoàitñach2000Hñn205FH. Bài6: VitñonlnhxóacácônhRAMngoàitñach2000Hñn3FFFH. Bài7: VitñonlnhxóatoànbRAMngoàicódunglưng8KB,bitrngñachñulà 2000H. GiáotrìnhVixlý. 115 Biênson:PhmQuangTrí
  10. Chương3:Tplnhca8051. TrưngðHCôngnghipTp.HCM. Bài1: Chomtchuis8bitkhôngdutrongRAMnigm10sbtñutônh30H.Hãy vitchươngtrìnhconcngchuisnàyvàghiktquvàoônh2FHtrongRAMni( gisktqu nhhơnhocbng255 ). Bài2: Chomtchuis8bitkhôngdutrongRAMnigm10sbtñutônh30H.Hãy vitchươngtrìnhconcngchuisnàyvàghiktquvàohaiônh2EH:2FHtrongRAMni( ônh 2EHchabytecaocaktquvàônh2FHchabytethpcaktqu). Bài3: Chomtchuis16bitkhôngdutrongRAMnigm10sbtñutônh30Htheo nguyêntcônhcóñachnhhơnchabytecaovàônhcóñachlnhơnchabytethp.( Víd: bytecaocas16bitñutiênñưccttiônh30Hvàbytethpcas16bitñutiênñưcctti ônh31H;bytecaocas16bitthhaiñưccttiônh32Hvàbytethpcas16bitthhai ñưccttiônh33H).Hãyvitchươngtrìnhconcngchuisnàyvàctktquvàohaiônh 2EH:2FHtrongRAMni. Bài4: Tươngtnhưcácbài1,2,3nhưngthchinñiviphéptr. Bài5: Vitchươngtrìnhconlybù2s16bitchatronghaithanhghiR2:R3. • Sosánh: Bài1: Chohais8bit,sthnhtchatrongônh30H,sthhaichatrongônh31H. Vitchươngtrìnhconsosánhhaisnày.NusthnhtlnhơnhocbngsthhaithìsetcF0, nungưclithìxóacF0. Bài2: Chohais16bit,sthnhtchatronghaiônh30H:31H,sthhaichatronghaiô nh32H:33H.Vitchươngtrìnhconsosánhhaisnày.Nusthnhtlnhơnhocbngsthhai thìsetcF0,nungưclithìxóacF0. Bài3: ChomtchuikýtdưidngmãASCIItrongRAMni,dài20byte,btñutñach 50H.VitñonlnhxutcáckýtinhoacótrongchuinàyraPort1.BitrngmãASCIIcakýt inhoalàt65H( chA)ñn90H( chZ). Bài4: VitñonlnhnhpmtchuikýttPort1dưidngmãASCIIvàghivàoRAM ngoài,btñutñach0000H.BitrngchuinàyktthúcbngkýtCR( cómãASCIIlà0DH )và ghickýtnàyvàoRAM. Bài5: VitñonlnhnhpmtchuikýttPort1dưidngmãASCIIvàghivàoRAM ngoài,btñutñach0000H.BitrngchuinàyktthúcbngkýtCR( cómãASCIIlà0DH )và khôngghikýtnàyvàoRAM. Bài6: VitñonlnhnhpmtchuikýttPort1dưidngmãASCIIvàghivàoRAM ngoài,btñutñach0000H.BitrngchuinàyktthúcbngkýtCR( cómãASCIIlà0DH )và khôngghikýtnàyvàoRAMmàthaybngkýtNULL( cómãASCIIlà00H). Bài7: ChomtchuikýtdưidngmãASCIItrongRAMni,dài20byte,btñutñach 50H.Vitñonlnhñicáckýtinhoacótrongchuinàythànhkýtthưng.BitrngmãASCII cakýtthưngbngmãASCIIcakýtinhoacngthêm32H. Bài8: ChomtchuikýtsdưidngmãASCIItrongRAMni,dài20byte,btñutña ch50H.VitñonlnhñicáckýtsnàythànhmãBCD.BitrngmãASCIIcacáckýtslàt 30H( s0 )ñn39H( s9 ). • Sdnglnhnhycóñiukin: Bài1: ChomtchuidliudưidngscódutrongRAMngoài,dài100byte,btñut ñach0100H.VitñonlnhlnlưtxutcácdliutrongchuiraPort1nulàsdương( xems0 làdương )vàxutraPort2nulàsâm. Bài2: ChomtchuidliudưidngscódutrongRAMngoài,btñutñach0100H vàktthúcbngs0.VitñonlnhlnlưtxutcácdliutrongchuiraPort1nulàsdươngvà xutraPort2nulàsâm. GiáotrìnhVixlý. 117 Biênson:PhmQuangTrí