Xem mẫu

  1. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  CHƯƠNG III: H VI I U KHI N 8 BIT H 8051 3.1. C U TRÚC PH N C NG H VI I U KHI N 8051 3.1.1. GI I THI U CHUNG các chương 1 và 2 ã gi i thi u v c u trúc bên trong và ch c năng c a các kh i bên trong cũng như trình t ho t ng x lý d li u c a vi x lý và i nghiên c u c th m t lo i vi x lý 8086. Khi s d ng vi x lý c n ph i thi t k m t h th ng g m có: - B vi x lý. - B b nh . - Các IC ngo i vi (các m ch c ng giao ti p). B nh dùng ch a chương trình cho vi x lý th c hi n và ch a d li u x lý, các IC ngo i vi dùng xu t nh p d li u t bên ngoài vào x lý và i u khi n tr l i. Các kh i này liên k t v i nhau t o thành m t h th ng vi x lý. Yêu c u i u khi n càng cao thì h th ng càng ph c t p và n u yêu c u i u khi n có ơn gi n ví d ch c n óng m 1 èn led theo m t th i gian yêu c u nào ó thì h th ng vi x lý cũng ph i có y các kh i trên. k t n i các kh i trên t o thành m t h th ng vi x lý òi h i ngư i thi t k ph i r t hi u bi t v t t c các thành ph n vi x lý, b nh , các thi t b ngo i vi. H th ng t o ra khá ph c t p, chi m nhi u không gian, m ch in, và v n chính là òi h i ngư i thi t k , ngư i s d ng hi u th t rõ v h th ng. M t lý do chính n a là vi x lý th ơng x lý d li u theo byte ho c word trong khi ó các i tư ng i u khi n trong công nghi p thư ng i u khi n theo bit. Chính vì s ph c t p nên các nhà ch t o ã tích h p m t ít b nh và m t s các thi t b ngo i vi cùng v i vi x lý t o thành m t IC g i là vi i u khi n (Microcontroller). Hình 3.1.1 so sánh h th ng vi x lý v i h th ng vi i u khi n Khi vi i u khi n ra i ã mang l i s ti n l i là d dàng s d ng trong i u khi n công nghi p, vi c s d ng vi i u khi n không òi h i ngư i s d ng ph i hi u bi t m t lư ng ki n th c quá nhi u như ngư i s d ng vi x lý – dĩ nhiên ngư i s d ng hi u bi t càng nhi u thì càng t t nhưng i v i ngư i b t u thì vi c s d ng vi x lý là i u r t khó. Có r t nhi u hãng ch t o ư c vi i u khi n, hãng s n xu t n i ti ng là ATMEL. Hãng Intel là nhà thi t k . Có nhi u h vi i u khi n mang các mã s khác nhau, m t trong h n i ti ng là h MCS-51. Trong h MCS-51 thì vi i u khi n u tiên là 80C31 không có b nh bên trong là do không tích h p ư c. - 107 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  2. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Vi i u khi n 8051 tích h p ư c 4 kbyte b nh Prom. Ch l p trìnnh 1 l n không th xóa l p trình l i ư c. Vi i u khi n 8751 tích h p ư c 4 kbyte b nh Eprom. Cho phép l p trình nhi u l n và xóa b ng tia c c tím. Vi i u khi n 8951 tích h p ư c 4 kbyte b nh flash rom n p và xóa b ng i n m t cách ti n l i và nhanh chóng. Có th cho phép n p xóa hàng ngàn l n. Data bus CPU CPU ROM RAM General- Serial RAM ROM Timer I/O Purpose COM Port Port Micro- processor Serial COM I/O Timer Port Address bus (a) General-Purpose Microcessor System (b) Microcontroller Hình 3.1.1 so sánh h th ng vi x lý v i h th ng vi i u khi n Song song v i h MCS-51 là h MCS-52 có 3 timer nhi u hơn h MCS-51 m t timer và dung lư ng b nh n i l n g p ôi t c là 8 Kbyte. Hi n nay có r t nhi u vi i u khi n th h sau có nhi u c tính hay hơn, nhi u thanh ghi hơn, dung lư ng b nh l n hơn. ng d ng c a vi i u khi n r t nhi u trong các h th ng i u khi n công nghi p, các dây chuy n s n xu t, các b i u khi n l p trình, máy gi t, máy i u hòa nhi t , máy bơm xăng t ng, … Vi m ch t ng quát c a h MCS-51 là chip 8051 ư c s n xu t vào năm 1981 v i các thông s k thu t như sau: - 4 KB ROM. - 128 byte RAM. - 4 port xu t nh p (I/O port) 8 bit. - 2b nh th i 16 bit. - M t c ng n i ti p. - Không gian nh chương trình ngoài 64 K. - B x lý bit (thao tác trên các bit riêng r ). - 210 v trí nh ưc nh a ch , m i v trí m t bit. Nhân/chia trong 4 µs. - Và sau ây là b ng các c tính k thu t c a h MCS-51 và MCS-52: - 108 - Biên So n: Dương Qu c Hưng Giáo Trình H vi i u khi n
  3. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Ký hi u ROM RAM Chân I/O Timer Ng t Vcc óng v AT89C51 4K 128 32 2 6 5V 40 AT89LV51 4K 128 32 2 6 3V 40 AT89C1051 1K 64 15 1 3 3V 20 AT89C2051 2K 128 15 2 6 3V 20 AT89C52 8K 128 32 3 8 5V 40 AT89LV52 8K 128 32 3 8 3V 40 3.1.2. SƠ C U TRÚC C A H VI I U KHI N 8051 Hình 3.1.2 mô t sơ c u trúc bên trong vi i u khi n 8051 - Kh i ALU i kèm v i các thanh ghi temp1, temp2 và thanh ghi tr ng thái PSW. - B i u khi n logic (timing and control). - Vùng nh RAM n i và vùng nh Flash Rom lưu tr chương trình. - M ch t o dao ng n i k t h p v i t th ch anh bên ngoài t o dao ng. - Kh i x lý ng t, truy n d li u, kh i timer/counmter. - Thanh ghi A, B, dptr và 4 port0, port1, port2, port3 có ch t và m. - Thanh ghi b m chương trình PC (program counter). - Con tr d li u dptr (data pointer). - Thanh ghi con tr ngăn x p SP (stack pointer). - Thanh ghi l nh IR (instruction register). - Ngoài ra còn có 1 s các thanh ghi h tr qu n lý a ch b nh ram n i bên trong cũng như các thanh ghi qu n lý a ch truy xu t b nh bên ngoài. Các kh i bên trong c a vi i u khi n có các thành ph n gi ng như ã trình bày ph n chương 1 như kh i ALU, thanh ghi temp1, thanh ghi temp2, thanh ghi b m chương trình PC, thanh con tr ngăn x p, thanh ghi tr ng thái PSW, thanh ghi l nh IR, kh i gi i mã l nh, kh i i u khi n logic. - 109 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  4. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  P0.0 - P0.7 P2.0 - P2.7 Vcc PORT 0 DRIVES PORT 2 DRIVES GND PORT 2 RAM ADDR PORT 0 FLASH RAM LATCH REGISTER LATCH PROGRAM B STACK A CC ADDRESS REGISTER POITER REGISTER REGISTER TEM 1 TEMP 2 BUFFER PC INCREMENTER ALU INTERRUPT, SERIAL PORT AND TIMER BLOCK PROGRAM PSW COUNTER PSEN ALE/PROG TIMMING AND INSTRUCTION EA/Vpp DPTR CONTROL REGISTER RST PORT 3 PORT 1 LATCH LATCH OSB PORT 1 DRIVES PORT 3 DRIVES P1.0 - P1.7 P3.0 - P3.7 Hình 3.1.2. Sơ c u trúc c a h vi i u khi n 8051 3.1.3. MÔ T CH C NĂNG CÁC CHÂN C A 8051 Sơ chân c a vi i u khi n 8051 ư c trình bày hình 3.1.a. Vi i u khi n 8051 có t t c 40 chân. Trong ó có 32 chân dành cho 4 c ng (Port) là P0, P1, P2, P3. M i c ng có 8 bit (chân – pin). 3.1.3.1. Các Port Port 0 Port 0 là port có 2 ch c năng v i s th t chân 32 – 39. Trong các h th ng i u khi n ơn gi n s d ng b nh bên trong không dùng b nh m r ng bên ngoài thì port 0 ư c dùng làm các ư ng i u khi n IO (Input- Output). Trong các h th ng i u khi n có quy mô l n s d ng b nh m r ng bên ngoài thì port 0 có ch c năng d n kênh bus a ch và bus d li u AD7 - AD0. Port 1 Port 1 v i s th t chân 1- 8. Port1 ch có 1 ch c năng dùng làm các ư ng i u khi n xu t nh p IO, port 1 không có ch c năng khác. Port 2 - 110 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  5. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Port 2 là port có 2 ch c năng v i s th t chân 21 – 28. Trong các h th ng i u khi n ơn gi n s d ng b nh bên trong không dùng b nh m r ng bên ngoài thì port 2 ư c dùng làm các ư ng i u khi n IO (Input- Output). Trong các h th ng i u khi n có quy mô l n s d ng b nh m r ng bên ngoài thì port 2 có ch c năng là bus a ch cao A8 - A15. Hình 3.1.a. Sơ chân c a vi i u khi n 8051 Port 3 Port 3 là port có 2 ch c năng v i s th t chân 10 -17. Khi không ho t ng xu t nh p, các chân c a port này có nhi u ch c năng (b ng 1.3.1) B ng 1.3.1 Bit Tên a ch Ch c năng P3.0 RxD B0H Ngõ vào nh n d li u n i ti p. P3.1 TxD B1H Ngõ xu t d li u n i ti p. P3.2 INT0\ B2H Ngõ vào ng t c ng th 0. - 111 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  6. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  P3.3 INT1\ B3H Ngõ vào ng t c ng th 1. P3.4 T0 B4H Ngõ vào c a timer/counter th 0. P3.5 T1 B5H Ngõ vào c a timer/counter th 1. P3.6 WR\ B6H Tín hi u i u khi n ghi d li u lên b nh ngoài. P3.7 RD\ B7H Tín hi u i u khi n c d li u t b nh ngoài. 3.1.3.2. Các ngõ tín hi u i u khi n Ngõ tín hi u PSEN (Program Store ENable) PSEN là tín hi u ngõ ra chân 29 có tác d ng cho phép c b nh chương trình m r ng thư ng n i n chân OE (output enable ho c RD) c a Eprom cho phép c các byte mã l nh. Khi có giao ti p v i b nh chương trình bên ngoài thì m i dùng n PSEN, n u không có giao ti p thì chân PSEN b tr ng. PSEN m c th p trong th i gian vi i u khi n 8051 l y l nh. Các mã l nh c a chương trình c t Eprom qua bus d li u và ư c ch t vào thanh ghi l nh IR bên trong 8051 gi i mã l nh. Khi 8051 thi hành chương trình trong EPROM n i thì PSEN m c logic 1. Ngõ tín hi u i u khi n ALE (Address Latch Enable) Khi vi i u khi n 8051 truy xu t b nh bên ngoài, port 0 có ch c năng là bus t i a ch và bus d li u [AD7 – AD0] do ó ph i tách các ư ng d li u và a ch . Tín hi u ra ALE chân th 30 dùng làm tín hi u i u khi n gi i a h p các ư ng a ch và d li u khi k t n i chúng v i IC ch t. Xem hình 3.1.3b Hình 3.1.3b. Ghép n i vi i u khi n 8951 v i IC ch t, m ch Reset, t th ch anh - 112 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  7. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Tín hi u ra chân ALE là m t xung trong kho ng th i gian port 0 óng vai trò là a ch th p nên vi c ch t a ch ư c th c hi n 1 cách hoàn toàn t ng. Các xung tín hi u ALE có t c b ng 1/6 l n t n s dao ng c a t th ch anh g n vào vi i u khi n và có th dùng tín hi u xung ngõ ra ALE làm xung clock cung c p cho các ph n khác c a h th ng. Trong ch l p trình cho b nh n i c a vi i u khi n thì chân ALE ư c dùng làm ngõ vào nh n xung l p trình t bên ngoài l p trình cho b nh flash rom trong 8051. Ngõ tín hi u EA (External Access) Tín hi u vào EA chân 31 thư ng n i lên m c 1 ho c m c 0. N u n i EA lên m c logic 1 (+5v) thì vi i u khi n s thi hành chương trình t b nh n i. N u n i EA v i m c logic 0 (0V) thì vi i u khi n s thi hành chương trình t b nh ngo i. Các phiên b n c a 8051 còn s d ng EA làm chân nh n i n áp c p i n 21V (Vpp) cho vi c l p trình EPROM n i (n p EPROM). Ngõ tín hi u RST (Reset) Ngõ vào RST chân 9 là ngõ vào Reset c a 8051. Sơ k t n i m ch reset như hình v 3.1.3b. Khi c p i n cho h th ng ho c khi nh n nút reset thì m ch s reset vi i u khi n. Khi reset thì tín hi u reset ph i m c cao ít nh t là 2 chu kỳ máy, khi ó các thanh ghi bên trong ư c n p nh ng giá tr thích h p kh i ng h th ng. 3.1.3.3. Các chân ngu n và ng h Các ngõ vào b dao ng XTAL1, XTAL2 B dao ng ư c ư c tích h p bên trong 8051, khi s d ng 8051 ngư i thi t k ch c n k t n i thêm t th ch anh và các t như hình v trong sơ hình 3.1.3b. T n s t th ch anh thư ng s d ng cho 8051 là 12Mhz n 24Mhz. Chân 40 (Vcc) ư c n i lên ngu n 5V Chân 20 GND n i mass 3.1.4. T CH C B NH C A 8051 Vi i u khi n 8051 có b nh n i bên trong và có thêm kh năng giao ti p v i b nh bên ngoài n u b nh bên trong không kh năng lưu tr chương trình. B nh n i bên trong g m có 2 lo i b nh : b nh d li u và b chương trình. B nh d li u có 256 byte, b nh chương trình có dung lư ng 4kbyte. B nh m r ng bên ngoài cũng ư c chia ra làm 2 lo i b nh : b nh d li u và b nh chương trình. Kh năng giao ti p là 64kbyte cho m i lo i. Hình 3.1.4.a minh h a kh năng giao ti p b nh c a vi i u khi n 8051. B nh m r ng bên ngoài và b nh chương trình bên trong không có gì c bi t – ch có ch c năng lưu tr - 113 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  8. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  d li u và mã chương trình nên không c n ph i kh o sát. B nh ram n i bên trong là m t b nh c bi t ngư i s d ng vi i u khi n c n ph i n m rõ các t ch c và các ch c năng c bi t c a b nh này. Sơ c u trúc bên trong c a b nh này ư c trình bày như b ng 3.1.4b. FFFFH FFFFH 0FFFH Bé nhí Bé nhí FFH ch¦¬ng tr×nh d÷ liÖu cho phÐp cho phÐp Bé nhí theo ®¦êng theo ®¦êng Bé nhí ch¦¬ng tr×nh PSEN RD, WR d÷ liÖu 0000H 0000H 00H 0000H Hình 3.1.4a: B ng tóm t t các vùng nh 8051. RAM bên trong 8051 ư c phân chia như sau: - Các bank thanh ghi có a ch t 00H n 1FH. - RAM a ch hóa t ng bit có a ch t 20H n 2FH. - RAM a d ng t 30H n 7FH. - Các thanh ghi ch c năng c bi t t 80H n FFH. a a ch a ch bit ch a ch bit byte byte 7F FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC RAM a d ng D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW 30 B8 - - - BC BB BA B9 B8 IP 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF AC AB AA A9 A8 IE - 114 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  9. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D TH1 22 17 16 15 14 13 12 11 10 8C TH0 21 0F 0E 0D 0C 0B 0A 09 08 8B TL1 20 07 06 05 04 03 02 01 00 8A TL0 1F 89 TMOD Bank 3 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 87 PCON Bank 2 10 0F 83 DPH Bank 1 08 82 DPL 07 Bank thanh ghi 0 81 SP (m c nh cho gán cho R0 -R7) 00 80 87 86 85 84 83 82 81 80 P0 RAM n i Các thanh ghi có ch c năng c bi t B ng 3.1.4b: C u trúc b nh d li u bên trong vi i u khi n 8051 3.1.4.1. Các bank thanh ghi có a ch t 00H – 1FH 32 byte th p c a b nh n i ư c dành cho 4 bank thanh ghi. B l nh 8051 h tr thêm 8 thanh ghi có tên là R0 n R7 và theo m c nh sau khi reset h th ng thì các thanh ghi R0 n R7 ư c gán cho 8 ô nh có a ch t 00H n 07H. Các d li u ư c dùng thư ng xuyên nên lưu tr m t trong các thanh ghi này. Do có 4 bank thanh ghi nên t i m t th i i m ch có m t bank thanh ghi ư c truy xu t b i các thanh ghi R0 n R7, chuy n i vi c truy xu t các bank thanh ghi ta ph i thay i các bit ch n bank trong thanh ghi tr ng thái. Ngư i l p trình dùng vùng nh 4 bank thanh ghi lưu tr d li u ph c v cho vi c x lý d li u khi vi t chương trình. Ch c năng chính c a 4 bank thanh ghi này là n u trong h th ng có s d ng nhi u chương trình thì chương trình th nh t có th s d ng h t các thanh - 115 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  10. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  ghi R0 n R7 c a bank0, khi b n chuy n sang chương trình th 2 x lý m t công vi c gì ó và v n s d ng các thanh ghi R0 n R7 lưu tr cho vi c x lý d li u mà không làm nh hư ng n các d li u R0 n R7 trư c ây và không c n ph i th c hi n công vi c c t d li u thì cách nhanh nh t là b n gán nhóm thanh ghi R0 n R7 cho bank1 là xong. Tương t b n có th m thêm hai chương trình n a và gán cho các bank 3 và 4. 3.1.4.2. RAM a ch hóa t ng bit có a ch t 20H n 2FH RAM có th truy xu t t ng bit. Vi i u khi n 8051 có 210 ô nh có th truy xu t t ng bit, trong ó có 128 bit n m các các ô nh byte có a ch t 20H n 2FH và các bit còn l i ch a trong nhóm thanh ghi có ch c năng c bi t. Các ô nh cho phép truy xu t t ng bit và các l nh x lý bit là m t th m nh c a vi i u khi n. Các bit có th ư c t, xóa, AND, OR b ng 1 l nh ơn trong khi ó x lý các bit thì vi x lý v n x lý ư c nhưng ph i s d ng r t nhi u l nh t ư c cùng m t k t qu . Các port cũng có th truy xu t ư c t ng bit. 128 ô nh bit cho phép truy xu t t ng bit và cũng có th truy xu t byte ph thu c vào l nh ư c dùng là l nh x bit hay l nh x lý byte. Chú ý a ch c a ô nh byte và bit trùng nhau. Ví d : t bit 67H lên 1 ta có th s d ng m t trong 2 l nh sau: MOV 2Ch, #10000000b ;ho c SETB 67h Ngư i l p trình dùng vùng nh này lưu tr d li u ph c v cho vi c x lý d li u byte ho c bit. Các d li u x lý bit nên lưu vào vùng nh này. 3.1.4.3. RAM a d ng có a ch t 30H – 7FH Vùng nh ram a d ng g m có 80 byte có a ch t 30H n 7FH – vùng nh này không có gì c bi t so v i 2 vùng nh trên. Vùng nh bank thanh ghi 32 byte t 00H n 1FH cũng có th dùng làm vùng nh ram a d ng m c dù các các ô nh này ã có ch c năng như ã trình bày. M i a ch trong vùng RAM a d ng u có th truy xu t t do dùng ki u a ch tr c ti p ho c gián ti p. 3.1.4.4. Các thanh ghi có ch c năng c bi t Các thanh ghi n i c a 8051 ư c truy xu t ng m nh b i b l nh. Các thanh ghi trong 8051 ư c nh d ng như m t ph n c a RAM trên chip vì v y m i thanh ghi s có m t a ch (ngo i tr thanh ghi b m chương trình và thanh ghi lưu tr mã l nh vì các thanh ghi này ã có ch c năng c - 116 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  11. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  nh). Cũng như các thanh ghi R0 n R7, vi i u khi n 8051 có 21 thanh ghi có ch c năng c bi t n m vùng trên c a RAM n i có a ch t 80H n FFH. Trong 128 ô nh có a ch t 80H n FFH thì ch có 21 thanh ghi có ch c năng c bi t ư c xác nh các a ch – còn các ô nh còn l i thì chưa thi t l p và trong tương lai s ư c các nhà thi t k vi i u khi n thi t l p thêm khi ó s có các vi i u khi n th h m i hơn. Các Port (tương ng các ô nh có a ch 80H, 90H, A0h, B0h) Là các Port c a 8051 bao g m Port0 có a ch 80H, Port1 có a ch 90H, Port2 có a ch A0H và Port3 có a ch B0H. T t c các Port này u có th truy xu t t ng bit nên r t thu n ti n trong i u khi n IO. a ch c a các bit ư c t tên v i ô b t u chính là a ch c a port tương ng ví d như bit u tiên c a port 0 là 80h cũng chính là a ch b t u c a port 0. Ngư i l p trình không c n nh a ch các bit trong các port vì ph n m m l p trình cho phép truy xu t b ng tên t ng bit d nh như sau: p0.0 chính là bit có a ch 80h c a port0. Ngo i tr thanh ghi A có th ư c truy xu t ng m, a s các thanh ghi có ch c năng c bi t SFR có th a ch hóa t ng bit ho c byte. Thanh ghi con tr ngăn x p SP (ô nh có a ch 81h) Là thanh ghi con tr ngăn x p SP (stack pointer) - có ch c năng qu n lý a ch c a b nh ngăn x p. B nh ngăn x p dùng lưu tr t m th i các d li u trong quá trình th c hi n chương trình c a vi i u khi n. Các l nh liên quan n ngăn x p bao g m các l nh c t d li u vào ngăn x p (l nh push) và l y d li u ra kh i ngăn x p (l nh pop). L nh c t d li u vào ngăn x p s làm tăng SP trư c khi ghi d li u vào. Sau l nh l y ra kh i ngăn x p s làm gi m SP. B nh ngăn x p c a 8051 n m trong RAM n i và b gi i h n v cách truy xu t a ch - ch cho phép truy xu t a ch gián ti p. Dung lư ng b nh ngăn x p l n nh t là 128 byte ram n i c a 8051. Khi Reset 8051 thì thanh ghi SP s mang giá tr m c nh là 07H và d li u u tiên s ư c c t vào ô nh ngăn x p có a ch 08H. Ngăn x p ư c truy xu t tr c ti p b ng các l nh PUSH và POP lưu tr t m th i và l y l i d li u, ho c truy xu t ng m b ng l nh g i chương trình con (ACALL, LCALL) và các l nh tr v (RET, RETI) lưu tr a ch c a - 117 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  12. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  b m chương trình khi b t u th c hi n chương trình con và l y l i a ch khi k t thúc chương trình con. Thanh ghi con tr d li u DPTR (ô nh có a ch 82h và 83h) Là 2 thanh ghi DPL (byte th p) có a ch là 82H và DPH (byte cao) có a ch 83H. Hai thanh ghi này có th s d ng c l p lưu tr d li u và có th k t h p l i t o thành 1 thanh ghi 16 bit có tên là DPTR và g i là con tr d li u - ư c dùng lưu a ch 16 bit khi truy xu t d li u c a b nh d li u bên ngoài. Thanh ghi PCON (ô nh có a ch 87h) Là thanh ghi PCON (power control) có ch c năng i u khi n công su t khi vi i u khi n làm vi c hay ch ch . Khi vi i u khi n không còn x lý gì n a thì ngư i l p trình có th l p trình cho vi i u khi n chuy n sang ch ch gi m b t công su t tiêu th nh t là khi ngu n cung c p cho vi i u khi n là pin. Các thanh ghi ph c v cho Timer/Counter (các ô nh có a ch t 88h n 8dh) Là các thanh ghi ph c v cho 2 timer/ counter T1, T0. Thanh ghi TCON(timer control): thanh ghi i u khi n timer / counter. Thanh ghi TMOD (timer mode): thanh ghi l a ch n ch (mode) ho t ng cho timer/counter. Thanh ghi TH0 và TL0 k t h p l i t o thành 1 thanh ghi 16 bit có ch c năng lưu tr xung m cho timer/counter T0. Tương t cho 2 thanh ghi TH1 và TL1 k t h p l i lưu tr xung m cho timer/counter T1. Kh năng lưu tr s lư ng xung m ư c là 65536 xung. Các thanh ghi ph c v truy n thông n i ti p (các ô nh có a ch t 98h n 99h) Là 2 thanh ghi SCON và SBUF: SCON (series control): thanh ghi i u khi n truy n d li u n i ti p. SBUF (series buffer): thanh ghi m d li u truy n n i ti p. D li u mu n truy n i thì ph i lưu vào thanh ghi SBUF và d li u nh n v n i ti p cũng lưu thanh ghi này. Khi có s d ng truy n d li u thì ph i s d ng 2 thanh ghi này. Các thanh ghi ph c v ng t (các ô nh có a ch t A8h n B8h) Là 2 thanh ghi IE và IP – thanh ghi IE (interrupt enable): thanh ghi i u khi n cho phép / không cho phép ng t. IP (interrupt priority): thanh ghi i u - 118 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  13. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  khi n ưu tiên ng t. Khi có s d ng n ng t thì ph i dùng n 2 thanh ghi này. M c nhiên các thanh ghi này ư c kh i t o ch c m ng t. Thanh ghi tr ng thái chương trình (PSW: Program Status Word) Thanh ghi tr ng thái chương trình a ch D0H ư c tóm t t như sau: BIT KÝ HI U A CH MÔ T PSW.7 C ho c CY D7H Cary Flag: C nh PSW.6 AC D6H Auxiliary Cary Flag: C nh ph PSW.5 F0 D5H Flag 0 còn g i là c Zero kí hi u là Z PSW4 RS1 D4H Register Bank Select 1: bit l a ch n bank thanh ghi. PSW.3 RS0 D3H Register Bank Select 0: bit l a ch n bank thanh ghi. 00 = Bank 0; ô nh có address 00H÷07H gán cho R0-R7 01 = Bank 1; ô nh có address 08H÷0FH gán cho R0-R7 10 = Bank 2; ô nh có address 10H÷17H gán cho R0-R7 11 = Bank 3; ô nh có address 18H÷1FH gán cho R0-R7 PSW.2 OV D2H Overflow Flag: c tràn s nh phân có d u. PSW.1 - D1H Reserved: chưa thi t k nên chưa s d ng ư c. PSW.0 P D0H Even Parity Flag: c ch n l . Ch c năng t ng bit tr ng thái: - C Carry CY (Carry Flag): C nh có tác d ng kép. C C ư c s d ng cho các l nh toán h c: C = 1 n u phép toán c ng có tràn ho c phép tr có mư n, C = 0 n u phép toán c ng không tràn và phép tr không có mư n. - C Carry ph AC (Auxiliary Carry Flag): Khi c ng nh ng giá tr BCD (Binary Code Decimal), c nh ph AC ư c set [AC=1] n u k t qu 4 bit l n hơn 09H, ngư c l i AC= 0. C AC ư c dùng ch nh s BCD khi th c hi n l nh c ng 2 s BCD. - C 0 (Flag 0): C 0 (F0) còn g i là c zero, c zero =1 khi k t q a x lý b ng 0 và c zero = 0 khi k t qu x lý khác 0. - Các bit ch n bank thanh ghi truy xu t: Hai bit RS1 và RS0 dùng thay i cách gán 8 thanh ghi R7 – R0 cho 1 trong 4 bank thanh ghi. Hai bit này s b xóa sau khi reset vi i u khi n và ư c thay i b i chương - 119 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  14. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  trình c a ngư i l p trình. Hai bit RS1, RS0 = 00, 01, 10, 11 s ư c ch n Bank thanh ghi tích c c tương ng là Bank 0, Bank1, Bank2, Bank3. RS1 RS0 Bank thanh ghi ư c l a ch n 0 0 Bank 0 0 1 Bank 1 1 0 Bank 2 1 1 Bank 3 - C tràn OV (Over Flag): Khi các s có d u ư c c ng ho c tr v i nhau, ph n m m có th ki m tra bit này xác nh xem k t qu có n m trong vùng giá tr xác nh hay không. V i s nh phân 8 bit có d u thì s dương t 0 n +127, s âm t -128 n – 1. N u k t qu c ng 2 s dương l n hơn +127 ho c c ng 2 s âm k t qu nh hơn –128 thì k t qu ã vư t ra ngoài vùng giá tr cho phép thì kh i ALU trong vi i u khi n s làm bit OV = 1. Khi c ng các s nh phân không d u thì không c n quan tâm n bit OV. - Bit Parity (P): Bit P t ng ư c Set hay Clear m i chu kỳ máy l p Parity ch n v i thanh ghi A. m các bit 1 trong thanh ghi A c ng v i bit Parity luôn luôn là s ch n. Ví d thanh ghi A ch a nh phân 10101101B thì bit P set lên m t cho bi t t ng s bit 1 trong thanh ghi A và c bit P t o thành s ch n. Bit Parity thư ng ư c dùng k t h p v i nh ng th t c truy n d li u n i ti p t o ra bit Parity cho d li u trư c khi truy n i ho c ki m tra bit Parity sau khi nh n d li u. Thanh ghi t ng A (ô nh có a ch E0h) Thanh ghi A là m t thanh ghi quan tr ng c a vi x lý có ch c năng lưu tr d li u khi tính toán. H u h t các phép toán s h c và các phép toán logic u x y ra gi a ALU và Accumulator. M t ch c năng quan tr ng khác c a thanh ghi Accumulator là truy n d li u t b nh ho c t các thanh ghi bên trong c a vi x lý ra các thi t b i u khi n bên ngoài thì d li u ó ph i ch a trong thanh ghi Accumulator. Thanh ghi B (ô nh có a ch F0h) Thanh ghi B a ch F0H ư c dùng cùng v i thanh ghi A th c hi n các phép toán nhân chia. L nh MUL A B: s nhân nh ng giá tr không d u 8 bit v i 8 bit trong hai thanh ghi A và B, r i tr v k t qu 16 bit trong A (byte cao) và B(byte th p). L nh DIV A B: l y giá tr trong thanh ghi A chia cho giá tr - 120 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  15. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  trong thanh ghi B, k t qu nguyên lưu trong A, s dư lưu trong B. Thanh ghi B có th ư c dùng như m t thanh ghi m trung gian nhi u ch c năng. 3.1.5. HO T NG RESET Khi reset thì tín hi u reset ph i m c cao ít nh t là 2 chu kỳ máy, khi ó các thanh ghi bên trong ư c n p nh ng giá tr thích h p kh i ng h th ng. Tr ng thái c a t t c các thanh ghi trong 89C51 sau khi reset h th ng ư c tóm t t như sau: Thanh ghi N i dung B m chương trình PC 0000H Thanh ghi tích lũyA 00H Thanh ghi B 00H Thanh ghi tr ng thái PSW 00H Thanh ghi con tr SP 07H DPTR 0000H Port 0 n port 3 FFH IP xxx0 0000 B IE 0xx0 0000 B Các thanh ghi nh th i 00H SCON 00H SBUF 00H PCON (HMOS) 0xxx xxxxB PCON (CMOS) 0xxx 0000B Thanh ghi quan tr ng nh t là thanh ghi b m chương trình PC = 0000H sau khi reset. Sau khi reset xong vi i u khi n luôn b t u th c hi n chương trình t i a ch 0000H c a b nh chương trình nên các chương trình cho vi i u khi n luôn b t u t i a ch 0000H. N i dung c a RAM trên chip không b thay i b i tác ng c a ngõ vào reset (có nghĩa là vi i u khi n ang s d ng các thanh ghi lưu tr d li u nhưng n u vi i u khi n b reset thì d li u trong các thanh ghi v n không i). 3.2. CÁC CH A CH C A 8051 Các ki u nh a ch cho phép nh rõ nơi l y d li u ho c nơi nh n d li u tùy thu c vào cách th c s d ng l nh c a ngư i l p trình. Vi i u khi n 8051 có 8 ki u nh a ch như sau: - Ki u nh a ch dùng thanh ghi. - Ki u nh a ch tr c ti p. - 121 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  16. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  - Ki u nh a ch gián ti p. - Ki u nh a ch t c th i. - Ki u nh a ch tương i. - Ki u nh a ch tuy t i. - Ki u nh a ch dài. - Ki u nh a ch ch s . 3.2.1. Ki u nh a ch dùng thanh ghi (Register Addressing) Ki u này thư ng ư c dùng cho các l nh x lý d li u mà d li u luôn lưu trong các thanh ghi. i v i vi i u khi n thì mã l nh thu c ki u này ch có 1 byte. Ví d : MOV A, R1 ;copy noi dung thanh ghi R1 vao ;thanh ghi A 3.2.2. Ki u nh a ch tr c ti p (Direct Addressing) Ki u này thư ng ư c dùng truy xu t d li u c a b t kỳ ô nh nào trong 256 byte b nh d li u n i c a vi i u khi n 8051. Các l nh thu c ki u này thư ng có mã l nh 2 byte: byte th nh t là mã l nh, byte th 2 là a ch c a ô nh Ví d : MOV A, 05H ;copy noi dung o nho co dia chi 05H ;vao thanh ghi A 3.2.3. nh a ch gián ti p (Indirect Addressing) Ki u nh a ch gián ti p ư c tư ng trưng b i ký hi u @ và ư c t trư c các thanh ghi R0, R1 (không s d ng các thanh ghi R2 – R7 trong ch a ch này) hay DPTR. R0 và R1 có th ho t ng như m t thanh ghi con tr , n i dung c a nó cho bi t a ch c a m t ô nh trong RAM n i mà d li u s ghi ho c s c. Còn DPTR dùng truy xu t ô nh ngo i. Các l nh thu c d ng này ch có 1 byte. Ví d : MOV A, @R1 ;copy noi dung o nho co dia chi dat ;trong thanh ghi R1 vao thanh ghi A 3.2.4. nh a ch t c th i (Immediate Addressing) Ki u nh a ch t c th i ư c tư ng trưng b i ký hi u # và ư c t trư c m t h ng s . L nh này thư ng dùng n p 1 giá tr là 1 h ng s byte th 2 (ho c byte th 3) vào thanh ghi ho c ô nh . Ví d : - 122 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  17. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  MOV A, #30H ;nap du lieu 30H vao thanh ghi A 3.2.5. nh a ch tương i Ki u nh a ch tương i ch s d ng v i nh ng l nh nh y. Nơi nh y n có a ch b ng a ch ang lưu trong thanh ghi PC c ng v i 1 giá tr 8 bit [còn g i là giá tr l ch tương i: relative offset] có giá tr t – 128 n +127 nên vi i u khi n có th nh y lùi [n u s c ng v i s âm] và nh y t i [ n u s c ng v i s dương]. L nh này có mã l nh 2 byte, byte th 2 chính là giá tr l ch tương i: Nơi nh y n thư ng ư c xác nh b i nhãn (label) và trình biên d ch s tính toán giá tr l ch. nh v tương i có ưu i m là mã l nh c nh, nhưng khuy t i m là ch nh y ng n trong ph m vi -128÷127 byte [256byte], n u nơi nh y n xa hơn thì l nh này không áp ng ư c – s có l i. Ví d : SJMP X1 ;nhay den nhan co ten X1 nam trong ;tam vuc 256 byte 3.2.6. nh a ch tuy t i Ki u nh a ch tuy t i ư c dùng v i các l nh ACALL và AJMP. Các l nh này có mã l nh 2 byte. nh a ch tuy t i có ưu i m là mã l nh ng n (2 byte), nhưng khuy t i m là mã l nh thay i và gi i h n ph m vi nơi nh y n, g i n không quá 2 kbyte. Ví d : AJMP X1 ;nhay den nhan co ten X1 nam trong ;tam vuc 2Kbyte 3.2.7. nh a ch dài (Long Addressing) Ki u nh a ch dài ư c dùng v i l nh LCALL và LJMP. Các l nh này có mã l nh 3 byte – trong ó có 2 byte (16bit) là a ch c a nơi n. C u trúc mã l nh là 3 byte. nh a ch dài là có th g i 1 chương trình con ho c có th nh y n b t kỳ vùng nh nào vùng nh 64K. Ví d : LJMP X1 ;nhay den nhan co ten X1 nam trong ;tam vuc 64Kbyte 3.2.8. nh a ch ch s (Index Addressing) Ki u nh a ch ch s “dùng m t thanh ghi cơ b n: là b m chương trình PC ho c b m d li u DPTR” k t h p v i “m t giá tr l ch (offset) còn g i - 123 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  18. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  là giá tr tương i [thư ng lưu trong thanh ghi]” t o ra 1 a ch c a ô nh c n truy xu t ho c là a ch c a nơi nh y n. Vi c k t h p ư c minh h a như sau: Base Register Offset Effective Address PC (or PDTR) + A = Ví d : MOVC A, @A + DPTR ;lay du lieu trong o nho ;DPTR+A de nap vao thanh ghi A 3.3. T P L NH C A 8051 kh o sát t p l nh thì ph i th ng nh t m t s qui nh v các t ng kí hi u trong t p l nh thư ng ư c s d ng: - Direct tư ng trưng cho ô nh n i có a ch Direct. - Rn tư ng trưng cho các thanh ghi t thanh ghi R0 n thanh ghi R7. - @Ri tư ng trưng cho ô nh có a ch lưu trong thanh ghi Ri và Ri ch có 2 thanh ghi là R0 và R1. - Các l nh thư ng x y ra gi a các i tư ng sau: + Thanh ghi A. + Thanh ghi Rn. + Ô nh có a ch direct. + Ô nh có a ch lưu trong thanh ghi @Ri. + D li u 8 bit #data. + Addr11 là a ch 11 bit t A11 – A0: a ch này ph c v cho l nh nh y ho c l nh g i chương trình con trong ph m vi 2 kbyte. + Addr16 là a ch 16 bit t A15 – A0: a ch này ph c v cho l nh nh y và l nh g i chương trình con xa trong ph m vi 64 kbyte – ó chính là a ch nh y n, ho c a ch c a chương trình con. 3.3.1. NHÓM L NH S HC 1. L nh c ng không nh ADD A, Rn ;C ng n i dung thanh ghi A v i n i dung ;thanh ghi Rn, k t qu lưu trong thanh ghi A. Ví d : ADD A, R0 ;A=91h, (C)=1. ADD A, direct ;C ng n i dung c a ô nh có a ch direct v i n i ;dung thanh ghi A, k t qu ch a thanh ghi A. - 124 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  19. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Ví d : Gi s A có n i dung 0D9h và ô nh có a ch 30h lưu n i dung 0B8h, l nh: ADD A, 30h ;A=91h, (C)=1. ADD A, @Ri ;C ng n i dung c a ô nh có a ch ch a trong thanh ;ghi Ri v i thanh ghi A, k t q a lưu tr trong thanh ghi A. Ví d : Gi s A có n i dung 0D9h, ô nh có a ch 30h có n i dung là 0B8h, R0 có a ch t là 30H, l nh: ADD A, @R0 ;A=91h, (C)=1. ADD A, #data ;C ng d li u data 8 bit (d0 n d7) v i n i dung ;thanh ghi A, k t qu lưu tr trong A. Ví d : Gi s A có n i dung D9h, d li u tr c ti p là B8h, l nh: ADD A, #0B8h ;A=91h, (C)=1. 2. L nh c ng có nh ADDC A, Rn ;C ng n i dung thanh ghi A v i n i dung thanh ghi ;Rn v i bit C, k t qu lưu trong thanh ghi A. Ví d : Gi s A có n i dung 0D9h, R0 có n i dung là 0B8h, (C) =1, l nh: ADDC A, R0 ;A=92h, (C)=1. ADDC A, direct ;C ng n i dung c a ô nh có a direct n i dung ;thanh ghi A và bit C, k t qu ch a thanh ghi A. Ví d : Gi s A có n i dung 47h, ô nh 30h có n i dung 32h và c (C) = 0, l nh: ADDC A, 30h ;A=79h, (C)=0. ADDC A, @Ri ;C ng n i dung c a ô nh có a ch ch a trong thanh ;ghi Ri v i thanh ghi A v i bit C, k t qu lưu tr trong thanh ghi A. Ví d : Gi s A có n i dung 0D9h, ô nh 30h có n i dung là 0B8h, R0 có n i dung 30h và (C) =1, l nh: ADDC A, @R0 ;A=92h, (C)=1. ADDC A, #data ;C ng d li u data 8 bit (d0 n d7) v i n i dung ;thanh ghi A và bit C, k t qu lưu tr trong A. Ví d : Gi s thanh ghi A có n i dung 37h, d li u tr c ti p 24h, c nh (C) = 1, l nh: ADDC A, 24h ;A=5Ch, (C)=0. 3. L nh tr có nh SUBB A, Rn ;Tr n i dung thanh ghi A cho n i dung thanh ghi Rn ;và tr cho c Carry, k t qu lưu trong thanh ghi A. - 125 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
  20. BM k thu t Vi i u Khi n H K thu t công Nghi pThái Nguyên  Ví d : Gi s A có n i dung 0B9h, thanh ghi R0 có n i dung là 5Ah và (C)=1, l nh: SUBB A, R0 ;A=5Eh, (C)=0. SUBB A, direct ;Tr n i dung thanh ghi A cho n i dung c a ô nh có ; a ch direct và tr cho c Carry, k t qu ch a thanh ghi A. SUBB A, @Ri ;Tr n i dung c a thanh ghi A cho d li u c a ô nh ;có a ch ch a trong thanh ghi Ri và tr cho c ;carry, k t qu lưu tr trong thanh ghi A. SUBB A, #data ;Tr n i dung thanh ghi A cho d li u 8 bit d0 n d7 ;và tr cho c carry, k t q a lưu tr trong A. 4. L nh tăng: (increment: tăng lên 1 ơn v ) INC A ;Tăng n i dung thanh ghi A lên 1. Ví d : Gi s A có n i dung FFh, l nh: INC A ;A=00h. INC Rn ;Tăng n i dung thanh ghi Rn lên 1. INC direct ;Tăng n i dung c a ô nh có a ch tr c ti p lên 1. INC @Ri ;Tăng n i dung c a ô nh có a ch ch a trong ;thanh ghi Ri lên 1. INC dptr ;Tăng n i dung c a thanh ghi con tr d li u dptr lên 1. 5. L nh gi m: (Decrement: gi m xu ng 1 ơn v ) DEC A ;Gi m n i dung thanh ghi A xu ng 1. DEC Rn ;Gi m n i dung thanh ghi Rn xu ng 1. DEC direct ;Gi m n i dung c a ô nh có a ch direct byte th ;2 xu ng 1. DEC @Ri ;Gi m n i dung c a ô nh có a ch ch a trong thanh ;ghi Ri xu ng 1. 6. L nh nhân thanh ghi A v i thanh ghi B MUL AB ;N i dung c a thanh ghi A nhân v i n i dung c a ;thanh ghi B, k t q a là m t d li u 16 bit, 8 bit th p ;lưu tr trong thanh ghi A, 8 bit cao lưu tr trong thanh ghi B. Ví d : Gi s thanh ghi A có n i dung là 50h, thanh ghi B có n i dung 0A0h , l nh: MUL AB ;50h*A0h= 3200h,(A) = 00,(B) = 32h. 7. L nh chia thanh ghi A cho thanh ghi B - 126 - Giáo Trình H vi i u khi n Biên So n: Dương Qu c Hưng
nguon tai.lieu . vn