intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình Assembly: Chương 7 - Nguyễn Văn Thọ

Chia sẻ: Cvcxbv Cvcxbv | Ngày: | Loại File: PDF | Số trang:14

152
lượt xem
18
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Nội dung trình bày trong chương 7 Assembly cho vi điều khiển nằm trong bộ bài giảng Lập trình Assembly trình bày về vi điều khiển 8051, sơ đồ khối 8051...Bài giảng được trình bày khoa học, súc tích giúp các bạn sinh viên tiếp thu bài học nhanh.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình Assembly: Chương 7 - Nguyễn Văn Thọ

  1. DuyTan University Assembly Language Programming I H C DUY TÂN KHOA CÔNG NGH THÔNG TIN CH NG 7 ASSEMBLY CHO VI I U KHI N Nguy n V n Th B môn i n t vi n thông Khoa Công ngh thông tin, i h c Duy Tân – 2007 Nguyen Van Tho – Duy Tan University GI I THI U Các vi b% &i'u khi+n và các b% vi x/ lý có ba &i+m khác nhau chính sau: Ki8n trúc ph=n c>ng PhAm vi >ng dCng Dc &i+m tEp lFnh Các hG vi &i'u khi+n phH bi8n Intel 8051 PIC16C5x Motorola MC68xxx AVR PSoC 5-2 Nguyen Van Tho – Duy Tan University VI I U KHI N 8051 HiFn nay có hRn 40 công ty sUn xuVt các loAi vi &i'u khi+n khác nhau cWa hG 8051. M%t sY công ty có trên 40 version 8051. Các CORE 8051 có th+ &[\c tH h\p trong các FPGA hay ASIC. Trên 100 triFu vi &i'u khi+n 8051 &[\c bán ra m^i n_m. HG 8051 gDt hái &[\c rVt nhi'u thành công và nó c`ng trac ti8p Unh h[bng &8n cVu trúc cWa các hG vi &i'u khi+n hiFn nay. 5-3
  2. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University VI I U KHI N 8051 8051 thu%c hG vi &i'u khi+n MCS-51. MCS-51 &[\c phát tri+n bbi Intel và các nhà sUn xuVt khác (nh[ Siemens, Philips) là các nhà cung cVp &>ng th> hai cWa hG này. Tóm tgt m%t sY &Dc &i+m chính cWa hG 8051: • 4K bytes ROM trong • 128 bytes RAM trong • 4 cHng I/O 8-bit • 2 b% &jnh thki 16 bit • Giao diFn nYi ti8p • QuUn lý &[\c 64K b% nhm code bên ngoài • QuUn lý &[\c 64K b% nhm dn liFu bên ngoài 5-4 Nguyen Van Tho – Duy Tan University S o KHpI 8051 External interrupts On-chip Timer/Counter Interrupt ROM for On-chip Timer 1 Counter Control program RAM Timer 0 Inputs code CPU Bus Serial 4 I/O Ports OSC Control Port P0 P1 P2 P3 TxD RxD Address/Data 5-5 Nguyen Van Tho – Duy Tan University CÁC CHÂN CrA 8051 P1.0 1 40 Vcc P1.1 2 39 P0.0(AD0) P1.2 3 38 P0.1(AD1) P1.3 P1.4 4 5 8051 37 36 P0.2(AD2) P0.3(AD3) P1.5 6 35 P0.4(AD4) P1.6 7 34 P0.5(AD5) P1.7 8 33 P0.6(AD6) RST 9 32 P0.7(AD7) (RXD)P3.0 10 31 EA/VPP (TXD)P3.1 11 30 ALE/PROG (INT0)P3.2 12 29 PSEN (INT1)P3.3 13 28 P2.7(A15) (T0)P3.4 14 27 P2.6(A14) (T1)P3.5 15 26 P2.5(A13) (WR)P3.6 16 25 P2.4(A12) (RD)P3.7 17 24 P2.3(A11) XTAL2 18 23 P2.2(A10) XTAL1 19 22 P2.1(A9) GND 20 21 P2.0(A8) 5-6
  3. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University CÁC CsNG I/O 4 c ng I/O Port 0 (chân 32-39) P0 (P0.0 … P0.7) Port 1 (chân 1-8) P1 (P1.0 … P1.7) Port 2 (chân 21-28) P2 (P2.0 … P2.7) Port 3 (chân 10-17) P3 (P3.0 … P3.7) MAi cBng có 8 chân ánh tên P0.X (X=0,1,...,7), P1.X, P2.X, P3.X Ex:P0.0 là bit 0 (LSB) c a P0 Ex:P0.7 là bit 7 (MSB) c a P0 8 bits này c%u thành 1 byte MAi cBng có thD EFGc dùng nhF input hay output 5-7 Nguyen Van Tho – Duy Tan University KHÔNG GIAN Bt NH RAM NtI 7F 7E 7D 7C 7B 7A 79 78 2F Byte address … 7FH 2E RAM a m#c ích 30H 2FH RAM Knh Ka chL bit 20H 1FH 18H Bank 3 17H … 10H Bank 2 1F 1E 1D 1C 1B 1A 19 18 0FH 17 16 15 14 13 12 11 10 08H Bank 1 (Stack) 0F 0E 0D 0C 0B 0A 09 08 07H R7 Default Register R6 07 06 05 04 03 02 01 00 20 00H Bank for R0-R7 R5 R4 Bit address R3 R2 R1 5-8 R0 Nguyen Van Tho – Duy Tan University CÁC CHx t yA CHz Các ki9u :nh :a ch; cho phép xác :nh ngu?n và ích cBa dC liDu theo nhiEu cách khác nhau tùy tình huHng lIp trình jnh &ja ch{ t>c thki : MOV A, #65H ; &[a giá trj 65h vào thanh ghi A A=65h jnh &ja ch{ thanh ghi MOV R1, A ; &[a dn liFu trong thanh ghi A vào thanh ghi R1 R1=A jnh &ja ch{ trac ti8p MOV R0, 40H ; lVy dn liFu tAi &ja ch{ 40h &[a vào thanh ghi R0 jnh &ja ch{ gián ti8p MOV A, @R1 ; lVy dn liFu tAi &ja ch{ &[\c ch>a trong thanh ghi R1 &[a vào thanh ghi A 5-9
  4. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University CÁC THANH GHI 5-10 Nguyen Van Tho – Duy Tan University THANH GHI PSW C AC F0 RS1 RS0 OV -- P • C PSW.7 Ck nhm • AC PSW.6 Ck nhm phC • -- PSW.5 Available to user for general purpose • RS1 PSW.4 Bit ch n dãy thanh ghi 1 • RS0 PSW.3 Bit ch n dãy thanh ghi 0 • OV PSW.2 Ck tràn • -- PSW.1 Da trn - User define bit • P PSW.0 Ck ch•n l‚ RS1 RS0 Register Bank Byte Address of R0-R7 0 0 0 00H-07H 0 1 1 08H-0FH 1 0 2 10H-17H 1 1 3 18H-1FH 5-11 Nguyen Van Tho – Duy Tan University THANH GHI A & B • THANH GHI A • [\c s/ dCng &+ ch>a dn liFu • Có th8 truy cEp &8n t„ng bit cWa A ( Acc.0, Acc.1 … Acc.7) • THANH GHI B • [\c s/ dCng &+ ch>a dn liFu nh[ thanh ghi nháp • Cùng vmi thanh ghi A ch>a dn liFu trong các phép tính nhân, chia • B &[\c &jnh &ja ch{ bit F7 F6 F5 F4 F3 F2 F1 F0 5-12
  5. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University CON TRˆ D‰ LI U & CON TRˆ NGŠN XxP • CON TRˆ D‰ LI U DPTR • Dùng &+ truy xuVt ch[Rng trình ngoài hoDc dn liFu ngoài • DPTR có th+ &[\c xem nh[ 2 thanh ghi 8 bit DPH và DPL 83H DPH 82H DPL • CON TRˆ NGŠN XxP SP • SP ch>a &ja ch{ &{nh ng_n x8p • MDc &jnh SP=07h 5-13 Nguyen Van Tho – Duy Tan University CÁC THANH GHI KHÁC • THANH GHI NG•T • Thanh ghi cho phép nggt IE • Thanh ghi th> ta nggt IP • THANH GHI yNH THŽI • G•m 2 thanh ghi TMOD và TCON • Dùng &+ thi8t lEp cWa b% &jnh thki/b% &8m cWa 8051 • THANH GHI CsNG NpI TIxP • G•m 2 thanh ghi SBUF và SCON • Dùng &+ lEp trình thi8t lEp ch8 &% và &i'u khi+n giao ti8p qua cHng nYi ti8p cWa 8051 5-14 Nguyen Van Tho – Duy Tan University THANH GHI CsNG I/O 8051 có 4 thanh ghi cHng I/O : P0, P1, P2, P3 TVt cU port &'u &[\c &jnh &ja ch{ bit + truy cEp &8n các bit ta dùng cú pháp sau : . Ví dC &+ xóa bit 4 cWa cHng P0 CLR P0.4 5-15
  6. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University T“P L NH L nh chuyDn dM li u MOV dest, source ; dest = source Ví dR : MOV A, #72H ;A=72H MOV A, R4 ;A=62H MOV B, 7EH MOV P1, A ;mov A to port 1 Chú ý : MOV A,#72 ” MOV A,72 MOV DPTR, A MOV #30,A dest và source không &[\c &•ng thki là Rn MOV R1,R2 5-16 Nguyen Van Tho – Duy Tan University T“P L NH Truy cEp b% nhm ROM ngoài MOVC A, @A + DPTR MOVC A, @A + PC Truy cEp b% nhm RAM ngoài MOVX A, @Ri MOVX A, @DPTR MOVX @Ri, A MOVX @DPTR, A Tráo &Hi dn liFu XCH A, Rn XCH A, mem XCH A, @Ri Thao tác ng_n x8p PUSH mem POP mem 5-17 Nguyen Van Tho – Duy Tan University T“P L NH Nhóm lFnh sY hGc L nh c ng : A= A+ Source ADD A,Rn ADD A,mem ADD A,@Ri ADD A,#data L nh c ng có cV nhW : A=A+Source +CY ADDC A,Rn ADDC A,mem ADDC A,@Ri ADDC A,#data L nh tr : A=A-Rn SUBB A,Rn SUBB A,mem SUBB A,@Ri SUBB A,#data L nh t ng: Dest= Dest +1 INC A INC Rn INC mem INC @Ri INC DPTR L nh gi m : Dest= Dest-1 DEC A DEC Rn DEC mem DEC @Ri L nh nhân MUL AB ; LVy giá trj trong thanh ghi A nhân vmi giá trj trong thanh ghi B ; byte thVp cWa k8t quU ch>a trong A, byte cao ch>a trong B L nh chia DIV AB ; LVy A chia B ; k8t quU th[Rng A ; sY d[ B 5-18
  7. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University T“P L NH Nhóm lFnh logic ANL A,Rn ANL A,mem ANL A,@Ri ANL A,#data ANL mem,A ANL mem,#data ORL A,Rn ORL A,mem ORL A,@Ri ORL A,#data ORL mem,A ORL mem,#data XRL A,Rn XRL A,mem XRL A,@Ri XRL A,#data XRL mem,A XRL mem,#data CLR A CPL A RL A RLC A RR A RRC A 5-19 Nguyen Van Tho – Duy Tan University T“P L NH Nhóm lFnh x/ lý bit SETB bit ; bit=1 CLR bit ; bit=0 Vi dR : SETB C ; CY=1 SETB P0.0 ;bit 0 c\a port 0 =1 SETB ACC.2 ;bit 2 c\a Accumulator =1 CLRB P3.7 ;bit 7 c\a port 3 = 0 ANL C,bit ; AND cV C vWi bit ORL C, bit ; OR cV C vWi bit 5-20 Nguyen Van Tho – Duy Tan University T“P L NH LFnh nhUy không &i'u kiFn SJMP rel ; AJMP Addr11 ; LJMP Addr16 ; LFnh gGi ch[Rng trình con ACALL addr11 ; LCALL adde16 ; LFnh trb v' t„ ch[Rng trình con RET LFnh trb v' t„ nggt RETI 5-21
  8. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University T“P L NH LFnh nhUy có &i'u kiFn JZ rel NhLy nMu A=0 JNZ rel NhLy nMu A 0 DJNZ byte, rel GiLm byte 1 E]n v: và nhLy nMu byte 0 CJNE dest, source, rel NhLy n_u dest source C=1 n_u dest < source C=0 n_u dest > source JC rel NhLy nMu CY=1 JNC rel NhLy nMu CY=0 JB bit, rel NhLy nMu bit=1 JNB bit, rel NhLy nMu bit=0 JBC bit, rel NhLy nMu bit=1 & xóa bit 5-22 Nguyen Van Tho – Duy Tan University T“P L NH VD: N8u R1>R2 thì c%ng A cho 1 , ng[\c lAi thì tr„ A 1 CJNE R1,R2,khac ; nhUy n8u R1#R2 SJMP Nho_bang ; Khac: JC Nho_bang ; nhUy n8u R1R1 A=A+1 SJMP KT Nho_bang: DEC A ; A=A-1 KT: 5-23 Nguyen Van Tho – Duy Tan University KHUÔN D NG CH NG TRÌNH DAng ch[Rng trình không có nggt và không khai báo dn liFu ORG 00H ; Bdt Eeu vùng nhW chF]ng trình ; các mã l nh c\a chF]ng trình END ; k_t thúc chF]ng trình DAng ch[Rng trình không nggt và có khai báo dn liFu ORG 00H LJMP Main ORG 20h ; khai báo các hlng sm ORG 30h ; khai báo các ô nhW E m (bi_n) ORG 100h Main ; Bdt Eeu vùng nhW chF]ng trình ; các mã l nh c\a chF]ng trình END ; k_t thúc chF]ng trình 5-24
  9. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University KHUÔN D NG CH NG TRÌNH DAng ch[Rng trình s/ dCng nggt ORG 0H MAIN: LJMP MAIN ; nhUy tmi Main EXINTER0 ORG 03H ; external interrupt 0 ; ch[Rng trình phCc vC nggt 0 JMP EXINTER0 RETI ORG 0BH ; timer 0 interrupt EXINTER1 JMP COUNTER0 ; ch[Rng trình phCc vC nggt 1 ORG 13H ; external interrupt 0 RETI JMP EXINTER1 COUNTER0 ORG 1BH ;timer 1 interrupt ; ch[Rng trình phCc vC b% &8m 0 JMP COUNTER1 RETI COUNTER1 ; ch[Rng trình phCc vC b% &8m 1 RETI END 5-25 Nguyen Van Tho – Duy Tan University L“P TRÌNH I/O XuVt dn liFu ra cHng : XuVt dn liFu ra thanh ghi cHng t[Rng >ng Ví dC : MOV P1,#54H ; xuVt giá trj 54h ra cHng P1 LVy dn liFu t„ cHng : Gc thanh ghi cHng t[Rng >ng Ví dC : MOV A, P2 ; lVy dn liFu t„ cHng P2 l[u vào A Chú ý : M%t chân là Input thì phUi &[a giá trj 1 ra chân &ó tr[mc khi thao tác vmi nó. 5-26 Nguyen Van Tho – Duy Tan University L“P TRÌNH I/O Ví dC 1 : Vi_t chF]ng trình E c dM li u tn cBng P2 vào A, sau Eó c ng 3 vào A mFVi len? GIšI : ORG 00H MOV P2,#FFH MOV A, P2 MOV R2, #10 AGAIN: ADD A, #03 DJNZ R2, AGAIN ;repeat until R2=0 (10 len) MOV R5, A END 5-27
  10. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University L“P TRÌNH I/O Ví dC 2 : Vi_t 1 chF]ng trình so sánh R0, R1: N_u R0>R1: g i 1 ra port 2 Else if R0R1 R0_NHO_HON: … ;R0
  11. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University T O TR› (DELAY) o n chF]ng trình t o tr 500ms MOV R1, #250 D1: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D1 MOV R1, #250 D2: MOV R0, #250 DJNZ R0, $ MOV R0, #250 DJNZ R0, $ DJNZ R1, D2 5-31 Nguyen Van Tho – Duy Tan University OUTPUT Ví dC 7.1 : GiU s/ có 1 hF thYng g•m 8 &èn led ghép nYi vmi port 1 cWa 8051 nh[ sR &• d[mi &ây.. Hãy lEp trình sáng l=n l[\t t„ng Led 1 trong thki gian 0.5 giây +5V P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 5-32 Nguyen Van Tho – Duy Tan University ORG 0000 DELAY500: Lap: MOV P2,#11111111b ; tgt tVt cU các led LCALL DELAY500 ; chk 0.5 giây PUSH 00H MOV P2,#11111110b ; sáng led 1 PUSH 01H LCALL DELAY500 ; chk 0.5 giây MOV R1, #250 MOV P2,#11111101b ; sáng led 2 D1: MOV R0, #250 LCALL DELAY500 ; chk 0.5 giây DJNZ R0, $ MOV P2,#11111011b ; sáng led 3 MOV R0, #250 LCALL DELAY500 ; chk 0.5 giây DJNZ R0, $ MOV P2,#11110111b ; sáng led 4 DJNZ R1, D1 LCALL DELAY500 ; chk 0.5 giây MOV R1, #250 MOV P2,#11101111b ; sáng led 5 D2: MOV R0, #250 LCALL DELAY500 ; chk 0.5 giây DJNZ R0, $ MOV P2,#11011111b ; sáng led 6 MOV R0, #250 LCALL DELAY500 ; chk 0.5 giây DJNZ R0, $ MOV P2,#10111111b ; sáng led 7 DJNZ R1, D2 LCALL DELAY500 ; chk 0.5 giây MOV P2,#01111111b ; sáng led 8 POP 01H LCALL DELAY500 ; chk 0.5 giây POP 00H SJMP Lap ; trb lAi t„ &=u RET END 5-33
  12. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University Dùng lFnh quay ch[Rng trình s¥ gGn hRn ThuEt toán : A=11111110b XuVt A ra Port2 Quay trái A Delay Lap lai tu dau 5-34 Nguyen Van Tho – Duy Tan University Dùng lFnh quay ch[Rng trình s¥ gGn hRn ORG 0000 MOV A,#11111110b MOV R1, #250 L1: MOV P2,A D2: MOV R0, #250 LCALL DELAY500 DJNZ R0, $ RR A MOV R0, #250 SJMP L1 DJNZ R0, $ DELAY500: DJNZ R1, D2 PUSH 00H PUSH 01H POP 01H POP 00H MOV R1, #250 RET D1: MOV R0, #250 DJNZ R0, $ END MOV R0, #250 DJNZ R0, $ DJNZ R1, D1 5-35 Nguyen Van Tho – Duy Tan University Ví dC 7.2 : 16 led nYi vmi P1 & P2 nh[ hình sau. LEp trình sáng l=n l[\t t„ng led trong thki gian 0.5s • ThuEt toán A=11111110b For 8 l=n XuVt A ra port 1 Quay trái A Delay 0.5s EndFor For 8 l=n XuVt A ra port 2 Quay trái A Delay 0.5s EndFor LDp lAi t„ &=u 5-36
  13. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University Ví dC 7.3 : Sáng d=n t„ng Led • ThuEt toán A=11111110b For 8 l=n XuVt A ra port 1 Quay trái A ACC.0=0 Delay 0.5s EndFor A=11111110b For 8 l=n XuVt A ra port 2 Quay trái A ACC.0=0 Delay 0.5s EndFor LDp lAi t„ &=u 5-37 Nguyen Van Tho – Duy Tan University Ví dC 7.4 : 2 led t„ 2 bên vào • ThuEt toán R1=11111110b Chú ý : R2=01111111B Không thD trtc ti_p quay thanh ghi R blng l nh RL R1 For 8 l=n D givi quy_t ta s dung A làm thanh ghi XuVt R1 ra port 1 trung gian Quay trái R1 MOV A,R1 ; chuyDn R1 vào A XuVt R2 ra port 2 RL A ; quay A Quay trái R2 MOV R1,A ; chuyDn A (sau khi quay Delay 0.5s ; vào R1 EndFor LDp lAi t„ &=u 5-38 Nguyen Van Tho – Duy Tan University INPUT • + thi8t lEp port cWa 8051 là cHng vào (Input), &=u tiên phUi ghi giá trj ‘1’ ra các chân cWa port &ó • Ví dC : MOV P1,#0FFh ; Thi8t lEp P1 là input • Ví dC : Theo dõi P0.1 , n8u P0.1 = 1 thì &[a giá trj 99h ra port3 và &[a giá trj ‘0’ ra P0.2 SETB P0.1 ; P0.1 là Input LAP: JNB LAP ; LDp lAi &8n khi P0.1=1 MOV P3,#99h ; P0.1=1, &[a 99h ra P3 CLR P0.2 ; và &[a ‘0’ ra P0.2 5-39
  14. DuyTan University Assembly Language Programming Nguyen Van Tho – Duy Tan University Ví dC 7.5 : Sáng 4 led bên trái n8u phím 1 &[\c nhVn và gin, sáng 4 led phUi n8u phím 2 &[\c nhVn và gin, không có phím nào nhVn thì chmp nháy 8 led • Khi có phím Vn và gin chân t[Rng >ng vmi phím &[\c nYi mass (0) 5-40 Nguyen Van Tho – Duy Tan University ORG 00 MOV P0, #0FFh MAIN: JNB P0.0, KEY1 ; Phím 1 nhVn, nhUy &8n KEY1 JNB P0.1, KEY2 ;Không, phím 2 nhVn, nhUy &8n KEY2 MOV P1, #00h ;Không, sáng 8 led LCALL DELAY ; chk MOV P1,#0FFh ; tgt 8 led LCALL DELAY ; chk KEY1: MOV P1,#0Fh ; sáng 4 led trái SJMP MAIN ; v' t„ &=u KEY2: MOV P1,#F0h ; sang 4 led phUi SJMP MAIN ; v' t„ &=u DELAY … RET END 5-41 Nguyen Van Tho – Duy Tan University Ví dC 7.6 : MAch nh[ VD7.5 , vi8t ch[Rng trình nh[ sau: Tgt tVt cU các led khi khbi &%ng - Phím 1 nhVn, chAy led t„ trái sang phUi - Phím 2 nhVn, chAy led t„ phUi sang trái - Phím 3 nhVn, chAy led sáng d=n t„ trái sang Chú ý : Khi &ã nhU phím ra, các led v©n chAy theo ch8 &% hiFn hành cho &8n khi có phím khác &[\c nhVn H[mng d©n : S/ dCng 1 bi8n &+ l[u trn ch8 &% chAy, khi có phím nhVn thì gán cho bi8n &ó giá trj t[Rng >ng. Khi không có phím nhVn thì xem bi8n &ó bŸng bao nhiêu &+ cho chAy b ch8 &% t[Rng >ng 5-42
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
6=>0