Bài giảng Vi Điều Khiển-Giới thiệu vi điều khiển AT89C51 - Lê Hoàng Anh

Giới thiệu vi điều khiển AT89C51 Chương 1: GIỚI THIỆU AT89C51 I - TÓM TẮT PHẦN CỨNG: 1) Giới thiệu họ MCS51: MSC-51 là một họ IC vi điều khiển (microcontroller), được phát triển chế tạo và bán ở thị trường bởi hãng INTEL của Mỹ. Các nhà chế tạo IC khác như SIEMENS của Đức, ADVANCED MICRO DEVICES, FUJITSU của Nhật và PHILIPS của Hà Lan là các nhà cung cấp thiết bị trong họ MSC-51 được cấp giấy bản quyền thứ hai, hãng ALMEL cũn

pdf52 trang | Chia sẻ: huongnhu95 | Lượt xem: 267 | Lượt tải: 0download
Tóm tắt tài liệu Bài giảng Vi Điều Khiển-Giới thiệu vi điều khiển AT89C51 - Lê Hoàng Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g laø moät haõng ñöôïc caáp baûng quyeàn vaø saûn phaåm 8951, 8952 laø hai IC tieâu bieåu trong thieát keá cuûa hoï. Chuùng coù caùc ñaët ñieåm chung nhö sau: - 4Kbyte ROM (ñöïôc laäp trình bôûi nhaø saûn xuaát, chæ coù ôû 8051 ). - 4Kbyte EPROM ( cho ta coù theå laäp trình ñöôïc nhieàu laàn ”khoaûng 1000 laàn”, chæ coù ôû 8951 ). - 128 byte RAM . - 4 port I/O 8 bit. - 2 boä ñònh thôøi 16 bit. - 64 K khoâng gian boä nhôù chöông trình môû roäng. - 64 K khoâng gian boä nhôù döõ lieäu môû roäng. - Moät boä xöû lyù luaän lyù (hoaït ñoäng treân bít ñôn). - 210 bit ñöôïc ñòa chæ hoaù. - Boä nhaân / chia 4 µs. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 2 Sô doà khoái hoï MCS51. Interrupt Control Other Register 128 byte RAM 128 byte RAM 8052 ROM 0K:8031 8032 4K:8051 8951 8K:8952 Timer 0 Timer 1 Timer 2 8952 CPU Oscilator BUS Coltrol I/O Port Serial Port TXD RXD Address/Data EA RS T INT1 INT0 Timer 2 (8952) Timer 1 Timer 0 Serial port P0 P2 P1 P3 PSEN ALE RXD RXD T0 T1 Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 3 2) Sô löôïc veà caùc chaân cuûa 8951 : 8951 coù taát caû 40 chaân coù chöùc naêng nhö caùc ñöôøng xuaát nhaäp. Trong ñoù coù 24 chaân coù coâng duïng keùp, moãi ñöôøng coù theå hoaït ñoäng nhö ñöôøng xuaát nhaäp hoaëc nhö ñöôøng ñieàu khieån hoaëc laø thaønh phaàn cuûa bus döõ lieäu vaø bus ñòa chæ. 32 33 34 35 36 37 38 39P0.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 28 27 26 25 24 23 22 21 17 16 15 14 13 12 11 10 8 7 6 5 4 3 2 1P1.0 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P2.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P3.0 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 29 30 31 9 PSEN ALE RST EA 20 40 VCC VSS 8951 Sô ñoà chaân 8951 Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 4 a) PORT 0 : Port 0 laø moät port hai chöùc naêng treân caùc chaân 32 ÷ 39. Trong thieát keá côû nhoû ( khoâng duøng boä nhôù môû roäng ) noù coù chöùc naêng nhö ñöôøng I/O. Ñoái vôùi thieát bò lôùn vôùi boä nhôù môû roäng, noù ñöôïc hôïp keânh giöõa bus ñiaï chæ vaø bus döõ lieäu. b) PORT 1 : Port 1 laø port I/O treân caùc chaân 1 ÷ 8. Caùc chaân ñöôïc kyù hieäu P1.0, P1.2, P1.3, ,P1.7 coù theå duøng cho giao tieáp vôùi caùc thieát bò ngoaøi neáu caàn. Port 1 khoâng coù chöùc naêng khaùc, vì vaäy chuùng chæ duøng cho giao tieáp vôùi thieát bò ngoaøi. c) PORT 2 : Port 2 laø moät port coù coâng duïng keùp treân caùc chaân 21 ÷ 28 ñöôïc duøng nhö caùc ñöôøng xuaát nhaäp hoaëc laø byte cao cuûa bus ñòa chæ ñoái vôùi caùc thieát keá duøng boä nhôù môû roäng. d) PORT 3: Port 3 laø moät port coù coâng duïng keùp treân caùc chaân 10 ÷ 17. Caùc chaân cuûa port naøy coù nhieàu cöùc naêng. Caùc coâng duïng chuyeån ñoåi coù lieân heä vôùi caùc ñaëc tính ñaëc bieät cuûa 8951 nhö ôû baûng sau: Bit Teân Cöùc naêng chuyeån ñoåi P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD TXD INT0 INT1 T0 T1 WR RD Döõ lieäu nhaän cho port noái tieáp Döõ lieäu phaùt cho port noái tieáp Ngaét 0 beân ngoaøi Ngaét 1 töø ngoaøi Ngoõ vaøo Timer / Counter 0 Ngoõ vaøo Timer / Counter 1 Xung ghi boä nhôù döõ lieäu ngoaøi Xung ñoïc boä nhôù döõ lieäu ngoaøi Ta caàn löu yù raèng khi duøng nhöõng pin naøy vaøo nhöõng muïc ñích caù bieät thì caû port 3 khoâng coøn khaû naêng duøng laøm I/O port nöõa. e) XTAL 1 vaø XTAL 2: Treân chaân 18 vaø 19 cuûa vi maïch, ñöôïc noái vôùi boä dao ñoäng thaïch anh 12 MHz ñeå taïo dao ñoäng treân Chip. Hai tuï 30pF ñöôïc theâm vaøo ñeå oån ñònh dao ñoäng. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 5 f) PSEN (Program Store Enable ): Coù 4 tín hieäu ñieàu khieån. PSEN laø tín hieäu ra treân chaân 29. Noù laø tín hieäu ñieàu khieån ñeå cho pheùp boä nhôù chöông trình môû roäng vaø thöôøng ñöôïc noái ñeán chaân OE ( Output Enable ) cuûa moät EPROM ñeå cho pheùp ñoïc caùc byte maõ leänh. PSEN seõ ôû möùc thaáp trong thôøi gian laáy leänh. Caùc maõ nhò phaân cuûa chöông trình ñöôïc ñoïc töø EPROM qua bus döõ lieäu vaø ñöôïc choát vaøo thanh ghi leänh ñeå giaûi maõ leänh. Khi thi haønh chöônh trình trong ROM noäi PSEN ôû möùc thuï ñoäng (möùc cao). g) ALE (Address Latch Enable ): Tín hieäura ALE treân chaân 30 töông hôïp vôùi caùc thieát bò laøm vieäc vôùi caùc vi xöû lyù 8085, 8088, 8086, 8051, 8951 duøng ALE moät caùch töông töï cho vieäc giaûi keânh caùc bus ñiaï chæ vaø döõ lieäu.Khi Port 0 ñöôïc duøng trong cheá ñoä chuyeån doåi cuûa noù: vöøa laø bus döõ lieäu vöøa laø bus thaáp cuûa bus ñiaï chæ, ALE laø tín hieäu ñeå choát ñòa chæ vaøo moät thanh ghi ngoaøi trong suoát nöûa chu kyø nhôù ñaàu, trong nöûa chu kyø sau noù ôû möùc thaáp cho pheùp xuaát hoaëc nhaäp döõ lieäu khi döõ lieäu ñaõ di chuyeån bus. Caùc xung tín hieäu ALE coù toác ñoä baèng 1/6 laàn taàn soá dao ñoäng treân chip vaø coù theå ñöôïc duøng laøm nguoàn xung nhòp cho caùc phaàn khaùc cuûa heä thoáng. Neáu xung nhòp treân 8951 laø 12MHz thì ALE coù taàn soá 2MHz. Chæ ngoaïi tröø khi thi haønh leänh MOVX, moät xung ALE bò maát. Xung naøy cuõng ñöôïc laøm ngoõ vaøo cho xung laäp trình cho EPROM trong 8951. h) EA ( Eternal Acess): Tín hieäu vaøo EA treân chaân 31 thöôøng ñöôïc maéc leân möùc cao (+5V) hoaëc möùc thaáp (GND) . Neáu ôû möùc cao 8951 thi haønh chöông trình töø ROM noäi trong khoaûng ñòa chæ thaáp (4K). Neáu ôû möùc thaáp chöông trình chæ ñöôïc thi haønh töø boä nhôù môû roäng. Ngöôøi ta coøn duøng EA laøm chaân caáp ñieän aùp 21V khi laäp trình 8951. i) RST (Reset) : Ngoõ vaøo RST treân chaân 9 laø ngoõ Reset cuûa 8951. Khi tín hieäu naøy ñöôïc ñöa leân möùc cao ( trong ít nhaát 2 chu kyø maùy) , caùc thanh ghi beân trong 8951 ñöôïc taûi nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng. j) Caùc chaân nguoàn: 8951 vaän haønh vôùi nguoàn ñôn +5V. VCC ñöôïc noái vaøo chaân 40 vaø VSS (GND) ñöôïc noái vaøo chaân 20. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 6 3) Caáu truùc boä nhôù cuûa 8951 : 8951 coù caáu truùc nhôù theo kieåu HARWARD : coù vuøng nhôù rieâng cho chöông trình vaø döõ lieäu. Boä nhôù ngoaøi coù theå môû roäng ñeán 64KB code memory vaø 64KB data memory. RAM treân chip goàm 128 Byte öùng duïng cho caùc boä löu tröõ muïc ñích chung, boä löu tröõ coù theå ñònh vò bit, caùc daõy thanh ghi vaø thanh ghi chöùc naêng ñaëc bieät. Hai ñaëc tính caàn löu yù laø: + Caùc thanh ghi vaø caùc port xuaát nhaäp ñaõ ñöôïc xeáp trong boä nhôù vaø coù theå ñöôïc truy xuaát tröïc tieáp gioáng nhö caùc ñiaï chæ boä nhôù khaùc. + Ngaên xeáp trong RAM noäi nhoû hôn so vôùi RAM ngoaøi nhö trong caùc boä vi xöû lyù khaùc. Baûng toùm taét vuøng nhôù 8951 : 30 General Purpose RAM 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 27 3F 3E 3D 3C 3B 3A 39 38 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 21 17 16 15 14 13 12 11 10 20 0F 0E 0D 0C 0B 0A 09 08 1F 07 06 05 04 03 02 01 00 1817 BANK 3 100F BANK 2 0807 BANK 1 00 Default Register Bank for R0 ÷ R7 Baûng toùm taét baûn ñoà vuøng nhôù RAM treân chip Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 7 CAÙC THANH GHI CHÖÙC NAÊNG ÑAËT BIEÄT Vuøng nhôù coù hai ñaëc ñieåm ñaùng chuù yù laø : Nhöõng thanh ghi laøm port I/O ñöôïc boä nhôù saép ñaët vaø coù theå ñöôïc truy xuaát nhö baát cöù vò trí nhôù naøo khaùc.Vuøng Stack ôû beân trong RAM noäi boä vaø gioáng nhö caùc con vi xöû lyù. a. RAM ña duïng : Trong baûn ñoà boä nhôù treân, 80 byte töø ñòa chæ 30H ÷ 7FH laø RAM muïc ñích chung. Keå caû 32 byte phaàn döôùi töø 00H ÷ 2FH cuõng coù theå söû duïng nhö 80 byte treân, tuy nhieân 32 byte naøy coøn coù muïc ñích khaùc seõ ñeà caäp sau.Baát cöù vò trí naøo FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 - D0 PSW B8 - - - BC BB BA B9 B8 IP B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 A8 AF - - AC AB AA A9 A8 IE A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 99 Not bit Addressable SBUF 98 9F 9E 9D 9C 9B 9A 99 98 SCON 90 97 96 95 94 93 92 91 90 P1 8D Not bit Addressable TH1 8C Not bit Addressable TH0 8B Not bit Addressable TL1 8A Not bit Addressable TL0 89 Not bit Addressable TMOD 88 8F 8E 8D 8C 8B 8A 89 88 TCON 87 Not bit Addressable PCON 83 Not bit Addressable DPH 82 Not bit Addressable DPL 81 Not bit Addressable SP 80 87 86 85 84 83 82 81 80 P0 aùc thanh ghi chöùc naêng ñaëc bieät Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 8 trong RAM cuõng ñeàu coù theå ñöôïc truy xuaát tuøy yù gioáng nhö vieäc söû duïng caùc mode ñeå ñònh ñòa chæ tröïc tieáp hay giaùn tieáp. Ví duï, ñeå ñoïc noäi dung ôû ñòa chæ 5FH cuûa RAM noäi vaøo thanh ghi tích luõy, leänh sau seõ ñöôïc duøng : MOV A,5FH Leänh naøy di chuyeån 1 byte döõ lieäu duøng caùch ñaùnh ñòa chæ tröïc tieáp ñeå xaùc ñònh “ñòa chæ nguoàn” (5FH). Ñích nhaän döõ lieäu ñöôïc ngaàm xaùc ñònh trong maõ leänh laø thanh ghi tích luõy A. RAM beân trong cuõng coù theå ñöôïc truy xuaát baèng caùch ñaùnh ñòa chæ giaùn tieáp qua Ri. Ví duï, hai leänh sau thi haønh cuøng nhieäm vuï nhö leänh ñôn ôû treân : MOV R0,#5FH MOV A,R0 Leänh ñaàu duøng ñòa chæ töùc thôøi ñeå di chuyeån giaù trò 5FH vaøo thanh ghi R0, vaø leänh thöù hai duøng ñòa chæ tröïc tieáp ñeå di chuyeån döõ lieäu “ñöôïc troû bôûi R0” vaøo thanh ghi tích luõy. b. RAM ñòa chæ hoùa töøng bit : 8951 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù 128 bit laø caùc ñòa chæ byte töø 20H ÷ 2FH, vaø phaàn coøn laïi laø trong caùc thanh ghi chöùc naêng ñaëc bieät. YÙ töôûng truy xuaát töøng bit rieâng reõ baèng phaàn meàm laø moät ñaëc tính thuaän lôïi cuûa vi ñieàu khieån noùi chung. Caùc bit coù theå ñöôïc ñaët, xoùa, AND, OR vôùi moät leänh ñôn. Ña soá caùc vi xöû lyù ñoøi hoûi moät chuoãi leänh ñoïc-söûa-ghi ñeå ñaït ñöôïc hieäu quaû töông töï. Hôn nöõa, caùc port I/O cuõng ñöôïc ñòa chæ hoùa töøøng bit laøm ñôn giaûn phaàn meàm xuaát nhaäp töøng bit. Coù 128 bit ñöôïc ñòa chæ hoùa ña duïng ôû caùc byte töø 20H ÷ 2FH. Caùc ñòa chæ naøy ñöôïc truy xuaát nhö caùc byte hoaëc caùc bit tuøy thuoäc vaøo leänh ñöôïc duøng. Ví duï, ñeå ñaët laïi bit 67H, ta duøng leänh sau : SETB 67H Chuù yù raèng “ñòa chæ bit 67H” laø bit coù troïng soá lôùn nhaát (MSB) ôû “ñòa chæ byte 2CH”. Leänh treân seõ khoâng taùc ñoäng ñeán caùc bit khaùc ôû cuøng ñòa chæ byte naøy. Caùc vi xöû lyù phaûi thi haønh nhieäm vuï töông töï nhö sau : MOV A,2CH ;ñoïc caû byte ORL A,#10000000B ;set MSB MOV 2CH,A ;ghi laïi byte Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 9 c. Caùc bank thanh ghi : 32 byte thaáp nhaát cuûa boä nhôù noäi daønh cho caùc bank thanh ghi. Boä leänh cuûa 8951 hoã trôï 8 thanh ghi (R0 ÷ R7) vaø theo maëc ñònh (sau khi RESET heä thoáng) caùc thanh ghi naøy ôû ñòa chæ 00H ÷ 07H. Leänh sau ñaây seõ ñoïc noäi dung ôû ñòa chæ 05H vaøo thanh ghi tích luõy : MOV A,R5 Ñaây laø leänh 1 byte duøng ñòa chæ thanh ghi. Taát nhieân, thao taùc töông töï coù theå ñöôïc thi haønh baèng leänh 2 byte duøng ñòa chæ tröïc tieáp naèm trong byte thöù hai : MOV A,05H Caùc leänh duøng thanh ghi töø R0 ÷ R7 thì seõ ngaén hôn vaø nhanh hôn caùc leänh töông öùng nhöng duøng ñòa chæ tröïc tieáp. Caùc thanh ghi döõ lieäu ñöôïc duøng thöôøng xuyeân neân duøng moät trong caùc thanh ghi naøy . Bank thanh ghi tích cöïc coù theå chuyeån ñoåi baèng caùch thay ñoåi caùc bit choïn bank thanh ghi trong töø traïng thaùi chöông trình (Program Status Word). Giaû söû raèng bank thanh ghi 3 ñöôïc tích cöïc, leänh sau seõ ghi noäi dung cuûa thanh ghi A vaøo ñòa chæ 18H : MOV R0,A YÙ töôûng duøng caùc “bank thanh ghi “ cho pheùp “chuyeån höôùng” chöông trình nhanh vaø hieäu quaû (töøng phaàn rieâng reõ cuûa phaàn meàm seõ coù moät boä thanh ghi rieâng khoâng phuï thoäc vaøo caùc phaàn khaùc). 4) Caùc thanh ghi chöùc naêng ñaëc bieät : Caùc thanh ghi noäi cuûa 8951 ñöôïc truy xuaát ngaàm ñònh bôûi boä leänh. Ví duï leänh “INC A” seõ taêng noäi dung cuûa thanh ghi tích luõy A leân 1. Taùc ñoäng naøy ñöôïc ngaàm ñònh trong maõ leänh. Caùc thanh ghi trong 8951 ñöôïc ñònh daïng nhö moät phaàn cuûa RAM treân chip. Vì vaäy, moãi thanh ghi seõ coù moät ñòa chæ (ngoaïi tröø thanh ghi ñeám chöông trình vaø thanh ghi leänh vì caùc thanh ghi naøy hieám khi bò taùc ñoäng tröïc tieáp). Ñoù laø lyù do taïi sao treân 8951 coù nhieàu thanh ghi nhö vaäy. Cuõng nhö R0 ÷ R7, coù 21 thanh ghi chöùc naêng ñaëc bieät SFR (Special Function Register) ôû vuøng treân cuûa ñòa chæ RAM treân chip, töø ñòa chæ 80H ÷ FFH. Chuù yù raèng haàu heát 128 ñòa chæ töø 80H ñeán FFH khoâng ñöôïc ñònh nghóa. Chæ coù 21 ñòa chæ SFR laø ñöôïc ñònh nghóa. Ngoaïi tröø thanh ghi tích luõy A coù theå truy xuaát ngaàm ñònh nhö ñaõ noùi, ña soá caùc SFR ñöôïc truy xuaát duøng ñòa chæ tröïc tieáp. Chuù yù raèng moät vaøi SFR coù theå Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 10 ñöôïc ñòa chæ hoùa bit hoaëc byte. Ngöôøi thieát keá phaûi caån troïng khi truy xuaát bit vaø byte. Ví duï leänh sau: SETB 0E0H Seõ set bit 0 trong thanh ghi tích luõy, caùc bit coøn laïi khoâng ñoåi. Ta thaáy raèng 0E0H laø ñòa chæ byte cuõng ñoàng thôøi laø ñòa chæ bit coù troïng soá nhoû nhaát trong thanh ghi tích luõy. Vì leänh set bit chæ taùc ñoäng leân bit neân chæ coù ñòa chæ bit laø coù hieäu quaû. a) Töø traïng thaùi chöông trình (Program Status Word) : Naèm ôû ñòa chæ D0H chöùa caùc bit traïng thaùi nhö baûng toùm taét sau : Bit Kyù hieäu Ñòa chæ YÙ nghóa PSW.7 CY D7H Côø nhôù PSW.6 AC D6H Côø nhôù phuï PSW.5 F0 D5H Côø 0 PSW.4 RS1 D4H Bit 1 choïn Bank thanh ghi PSW.3 RS0 D3H Bit 1 choïn Bank thanh ghi 00 = bank 0 : ñòa chæ 00H÷07H 01 = bank 1 : ñòa chæ 08H÷0FH 10 = bank 2 : ñòa chæ 10H÷17H 11 = bank 3 : ñòa chæ 18H÷1FH PSW.2 OV D2H Côø traøn PSW.1 - D1H Döï tröõ PSW.0 P D0H Côø parity chaün * Côø nhôù : Côø nhôù CY coù coâng duïng keùp. Thoâng thöôøng noù duøng cho caùc leänh toaùn hoïc : noù seõ ñöôïc set neáu coù moät soá nhôù sinh ra bôûi pheùp coäng hoaëc moät soá möôïn bôûi pheùp tröø. Ví duï, neáu thanh ghi tích luõy chöùa FFH, thì leänh sau : ADD A,#1 Seõ traû veà thanh ghi tích luõy keát quaû 00H vaø set côø nhôù trong PSW. Côø nhôù cuõng coù theå xem nhö moät thanh ghi 1 bit cho caùc leänh luaän lyù thi haønh treân bit. Ví duï, leänh sau seõ AND bit 25H vôùi côø nhôù vaø ñaët keát quaû trôû vaøo trong côø nhôù ALN C,25H Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 11 * Côø nhôù phuï : Khi coäng caùc soá BCD, côø nhôù phuï (AC) ñöôïc set neáu keát quaû cuûa 4 bit thaáp trong khoaûng töø 0AH ñeán 0FH. Neáu caùc giaù trò coäng ñöôïc laø soá BCD, thì sau leänh caàn coù DA A (hieäu chænh thaäp phaân thanh ghi tích luõy ) ñeå mang keát quaû lôùn hôn 9 veà taàm töø 0÷9. * Côø 0 : Côø 0 (F0) laø moät bit côø ña duïng daønh cho caùc öùng duïng cuûa ngöôøi duøng. * Caùc bit choïn bank thanh ghi : Caùc bit chon bank thanh ghi (RS) vaø RS1) ñöôïc xoùa sau khi reset heä thoáng (choïn maëc ñònh thanh ghi R0÷R7 cuûa bank 0), coù theå thay ñoåi baèng phaàn meàm neáu caàn. Ví duï, ba leänh sau cho pheùp choïn bank thanh ghi 3 vaø chuyeån noäi dung cuûa thanh ghi R7 vaøo thanh ghi tích luõy : SETB RS1 SETB RS0 MOV A,R7 Khi chöông trình ñöôïc hôïp dòch, caùc bit ñòa chæ ñuùng seõ ñöôïc thay theá cho caùc kyù hieäu RS0 vaø RS1. * Côø traøn : Côø traøn (OV) ñöôïc set sau moät leänh coäng hoaëc tröø neáu coù moät pheùp toaùn bò traøn. Khi caùc soá coù daáu coäng hoaëc tröø vôùi nhau, phaàn meàm coù theå kieåm tra bit naøy ñeå xaùc ñònh xem keát quaû coù naèm trong taàm xaùc ñònh hay khoâng. Khi caùc soá khoâng daáu ñöôïc coäng, bit OV coù theå ñöôïc boû qua. Caùc keát quaû lôùn hôn +127 hoaëc nhoû hôn –128 seõ set bit OV. Ví duï, pheùp coäng sau bò traøn vaø bit OV ñöôïc set: MOV A,#FFH ADD A,#01H Keát quaû trong thanh ghi A laø 00H khoâng phaûi laø keát quaû ñuùng, vì vaäy côø OV ñöôïc set. b) Thanh ghi B : Thanh ghi B ôû ñòa chæ F0H ñöôïc duøng cuøng vôùi thanh ghi tích luõy A cho caùc pheùp toaùn nhaân vaø chia. Leänh MUL AB seõ nhaân caùc giaù trò khoâng daáu 8 bit trong A vaø B roài traû veà keát quaû 16 bit trong A (byte thaáp) vaø B (byte cao). Leänh DIV AB seõ chia A cho B roài traû veà keát quaû nguyeân trong A vaø phaàn dö trong B. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 12 Thanh ghi B cuõng coù theå xem nhö thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa töøng bit baèng caùc ñòa chæ bit F0H ñeán F7H. c) Con troû ngaên xeáp (Stack Pointer) : Stack Pointer laø moät thanh ghi 8 bit ôû ñòa chæ 81H. Noù chöùa ñòa chæ cuûa döõ lieäu ñang hieän haønh treân ñænh Stack. Caùc hoaït ñoäng cuûa Stack bao goàm vieäc ñaåy döõ lieäu vaøo stack (PUSH) vaø vieäc laáy döõ lieäu ra khoûi Stack (POP). Vieäc PUSH vaøo Stack seõ taêng SP leân 1 tröôùc khi döõ lieäu vaøo. Vieäc POP töø Stack seõ laáy döõ lieäu ra roài giaûm SP ñi 1. Vuøng Stack cuûa 8951 ñöôïc caát trong RAM noäi vaø ñöôïc giôùi haïn ñeán nhöõng ñòa chæ truy xuaát bôûi söï ñònh vò giaùn tieáp. Ta coù theå khôûi gaùn Stack hoaëc khoâng khiôû gaùn Stack. Neáu ta khoâng khôûi gaùn Stack thì maëc ñònh vuøng Stack seõ laø 07H vaø döõ lieäu ñaàu tieân ñöôïc ñöa vaøo vuøng nhôù 08H. Caùc thanh ghi Bank 1 (coù theå laø bank 2 hoaëc 3) seõ khoâng duøng ñöôïc nöõa vì vuøng RAM noäi naøy thaønh vuøng Stack. Ta chæ coù theå duøng caùc thanh ghi cuûa Bank 0. Neáu ta khôûi gaùn bank ghi taïi vuøng khaùc(ví duï 60H), thì caùc thanh ghi cuûa bank 0, 1, 2 vaø 3 vaãn coøn duøng ñöôïc. Ñeå khôûi gaùn SP vôùi söï baét ñaàu cuûa vuøng Stack taïi ñòa chæ 60H, ta laøm nhö sau : MOV SP,#5F. Ta ñöa vaøo SP soá 5F vì SP taêng leân 1 thaønh 60H tröôùc khi döõ lieäu ñaàu tieân vaøo Stack ñöôïc truy xuaát tröïc tieáp baèng leänh PUSH, POP ñeå caát döõ lieäu taïm thôøi vaø laáy laïi data, hoaëc tröïc tieáp baèng leänh goïi ACALL, LCALL vaø leänh quay laïi RET, RETI ñeå caát giöõ vaø laáy ra boä ñeám chöông trình. d) Con troû döõ lieäu (Data Pointer) : Data Pointer ñöôïc duøng ñeå truy xuaát boä nhôù maõ ngoaøi hoaëc boä nhôù döõ lieäu ngoaøi, noù laø moät thanh ghi 16 bit maø byte thaáp laø DPL ôû ñòa chæ 82H coøn byte cao laø DPH ôû ñòa chæ 83H. Ñeå ñöa noäi dung 55H vaøo RAM ngoaïi coù ñòa chæ 1000H ta duøng 3 leänh nhö sau: MOV A,#55H MOV DPTR,#1000H MOV @DPTR,A Leänh thöù nhaát duøng söï ñònh vò tröïc tieáp ñeå ñöa haèng soá döõ lieäu 55H vaøo A. Leänh thöù hai cuõng töông töï nhö leänh thöù nhaát ñöa haèng soá döõ lieäu 1000H vaøo DPTR. Leänh cuoái cuøng duøng söï ñònh vò giaùn tieáp ñeå dòch chuyeån giaù trò 55H trong A vaøo vuøng nhôù RAM ngoaïi 1000H naèm trong DPTR. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 13 c) Caùc Thanh ghi PORT xuaát nhaäp : Caùc port 0, 1, 2 vaø 3 coù caùc ñòa chæ töông öùng 80H, 90H, A0H, B0H. Caùc port 0,2,3 khoâng coøn taùc duïng I/O nöõa neáu boä nhôù ngoaøi ñöôïc duøng vaøo moät soá chöùc naêng ñaëc bieät. Do ñoù chæ coøn port 1 coù taùc duïng xuaát nhaäp I/O. Taát caû caùc port ñeàu ñöôïc ñòa chæ hoùa bit, do ñoù coù theå giao tieáp vôùi beân ngoaøi maïnh meõ. Giaû söû nhö coù moät ñoäng cô ñöôïc noái ñeán bit 7 cuûa port 1 thì ta coù theå cho chaïy hoaëc taét noù chæ baèng moät leänh duy nhaát : SETB P1.7 hoaëc CLR P1.7. f) Caùc thanh ghi Timer (Timer Register) : 8951 coù 2 boä : moät boä Timer 16 bit vaø moät boä Counter 16 bit, hai boä naøy duøng ñeå ñònh giôø luùc nghæ cuûa chöông trình hoaëc ñeám caùc söï kieän quan troïng. Timer 0 coù bit thaáp TL0 ôû ñòa chæ 8AH vaø coù bit cao TH0 ôû ñòa chæ 8CH. Timer 1 coù bit thaáp TL1 ôû ñòa chæ 8BH vaø bit cao TH1 ôû ñòa chæ 8DH. Hoaït ñoäng ñònh thôøi ñöôïc cho pheùp bôûi thanh ghi TMOD (Timer Mode Register) ôû ñòa chæ 89H vaø thanh ghi ñieàu khieån ñònh thôøi TCON (Timer Control Register) ôû ñòa chæ 88H. Chæ coù TCON coù ñònh ñòa chæ bit. g) Thanh ghi port noái tieáp (Serial Port Register) : 8951 chöùa moät port noái tieáp treân chip cho vieäc truyeàn thoâng tin vôùi nhöõng thieát bò noái tieáp khaùc nhö nhöõng thieát bò ñaàu cuoái, modem hoaëc ñeå giao tieáp IC khaùc (nhö boä bieán ñoåi AD, nhöõng thanh ghi di chuyeån, RAM ). Thanh ghi ñeäm döõ lieäu noái tieáp SBUF ôû ñòa chæ 99H giöõ caû vieäc phaùt döõ lieäu laãn thu döõ lieäu. Vieäc ghi leân SBUF ñeå LOAD döõ lieäu cho vieäc truyeàn vaø ñoïc SBUF ñeå truy xuaát döõ lieäu cho vieäc nhaän, nhöng mode hoaït ñoäng khaùc nhau ñöôïc laäp trình thoâng qua thanh ghi ñieàu khieån port noái tieáp SCON. i) Caùc thanh ghi ngaét (Interrup Register) : 8951 coù hai caáu truùc ngaét öu tieân, 5 boä nguoàn. Nhöõng Interrup bò maát taùc duïng sau khi heä thoáng Reset (bò caám) vaø sau ñoù ñöôïc cho pheùp bôûi vieäc ghi leân thanh ghi cho pheùp ngaét IE (Interrup Enable Register) ôû ñòa chæ A8H. Möùc öu tieân ñöôïc ñaët vaøo thanh ghi öu tieân ngaét IP (Interrup Priolity Level) taïi ñòa chæ B8H. Caû hai thanh ghi treân ñeàu coù bit ñòa chæ. h) Thanh ghi ñieàu khieån nguoàn PCON (Power Control Regiester) : Thanh ghi PCON khoâng coù bit ñònh vò, noù ôû ñòa chæ 87H bao goàm caùc bit ñòa chæ toång hôïp. Caùc bit PCON ñöôïc toùm taét nhö sau : Bit 7 (SMOD) : Bit coù toác ñoä Baud ôû mode 1,2,3 ôû port noái tieáp khi set. Bit 6,5,4 : khoâng coù ñòa chæ. Bit 3 (GF1) : Bit 1 cuûa côø ña naêng. Bit 2 (GF2) : Bit 2 cuûa côø ña naêng. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 14 Bit 1 (PD) : set ñeå khôûi ñoäng mode Power Down vaø thoaùt ra ñeå reset. Bit 0 (IDL) : set ñeå khôûi ñoäng mode Idle vaø thoaùt ra khi ngaét hoaëc reset. Caùc bit ñieàu khieån Power laø Power Down vaø Idle coù taùc duïng chính trong taát caû caùc IC hoï MSC-51 nhöng chæ ñöôïc thi haønh trong söï bieân dòch cuûa CMOS. Mode Idle : khi coù leänh set bit IDL thì noù ñöôïc thi haønh tröôùc khi vaøo mode Idle. Trong mode Idle, tín hieäu clock ñöôïc ñoùng coång bôûi CPU, nhöng khoâng ñöôïc ñoùng coång bôûi boä ngaét, timer, port noái tieáp. Caùc traïng thaùi cuûa CPU ñöôïc baûo quaûn, noäi dung cuûa taát caû caùc thanh ghi ñöôïc duy trì, caùc chaân port giöõ nguyeân möùc logic, hai tín hieäu ALE vaø PSEN ñöôïc giöõ möùc cao. Ñeå keát thuùc Idle, ta xoùa bit IDL (hoaëc reset heä thoáng). Mode Power Down : coù moät leänh set bit PD thì leänh naøy thi haønh tröôùc khi vaøo Mode PD. Trong mode Power Down, giao ñoäng treân chip ngöøng, taát caû caùc leänh ngöøng hoaït ñoäng, noäi dung RAM treân chip ñöôïc giöõ laïi, caùc chaân port giöõ nguyeân möùc logic, hai tín hieäu ALE vaø PSEN ñöôïc giöõ möùc thaáp. Thoaùt khoûi möùc naøy khi reset heä thoáng. Trong suoát quaù trình hoaït ñoäng cuûa Mode PD, Vcc coù theå xuoáng thaáp 2V. Chuù yù Vcc seõ ñöôïc giöõ khoâng cho haï thaáp cho ñeán sau khi mode PD ñöôïc vaøo, vaø ñeå khoâi phuïc Vcc ñeán 5V toái thieåu 10 chu kyø dao ñoäng tröôùc khi chaân RST xuoáng thaáp trôû laïi. 5) Boä nhôù ngoaøi (External Memory) : Boä nhôù ngoaøi cuûa caùc vi ñieàu khieån raát quan trong ñeå môû roäng taàm hoaït ñoäng lôùn hôn Resources treân chip ñeå traùnh söï thieáu huït cuûa thieát bò ñöôïc nhaø saûn xuaát quy ñònh. Hoï MCS-51 cho pheùp môû roäng vuøng nhôù maõ ngoaøi 64KB vaø vuøng nhôù döõ lieäu ngoaøi 64KB. Nhöõng ngoaïi vi cuõng ñöôïc theâm vaøo ñeå môû roäng theâm khaû naêng xuaát nhaäp I/O vaø chuùng trôû thaønh vuøng nhôù döõ lieäu ngoaøi söû duïng nhö baûn ñoà nhôù I/O. Khi duøng boä nhôù ngoaøi thì port trôû thaønh ñòa chæ ña keânh (A0 ÷ A7) vaø bus döõ lieäu (D0 ÷ D7) maø tín hieäu ALE seõ choát byte cuûa ñòa chæ luùc baét ñaàu cuûa moãi chu kyø nhôù ngoaøi. Port 2 thöôøng ñöôïc duøng laøm byte cao cuûa bus ñòa chæ. Port 0 ñöôïc gheùp chung ñeå tieát kieäm chaân ra. Phöông phaùp chung ñöôïc saép ñaët ñeå laøm vieäc laø : trong suoát nöõa ñaàu chu kyø nhôù, byte thaáp cuûa ñòa chæ ñöôïc cung caáp bôûi port 0 vaø ñöôïc choát bôûi vieäc duøng tín hieäu ALE. Moät con choát 74HC373 (hoaëc töông ñöông) seõ giöõ byte thaáp cuûa ñòa chæ chæ choát laïi trong khoaûng thôøi gian cuûa chu kyø nhôù. Trong nöõa chu kyø nhôù thöù hai, port 0 ñöôïc söû duïng nhö bus döõ lieäu vaø döõ lieäu ñöôïc ñoïc hoaëc ghi tuøy thuoäc hoaït ñoäng ñoïc hay ghi. Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 15 Vieäc phaân keânh BUS döõ lieäu vaø BUS ñòa chæ ñöôïc theå hieän treân hình veõ sau : A0 ÷ A15 D0 ÷ D7 Address Data Memory cycle Memory cycle Address AD0 ÷ AD7 A0 ÷ A15 Nomultiplexed (24 pins) Multiplexed (16 pins) Address Data Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 16 a) Boä nhôù ngoaøi : Ngoaøi boä nhôù trong cuûa 8051 ta coù theå môû roäng boä nhôù cho 8051 cuï theå laø coù theå theâm 64 Kb ROM vaø 64 Kb RAM. Khi duøng theâm boä nhôù ngoaøi, nhaø saûn xuaát khuyeán khích duøng Port 0 laøm Bus döõ lieäu (D0 - D7) ñoàng thôøi laø bus ñòa chæ cuûa byte thaáp (A0 - A7) baèng tín hieäu choát ALE ñeå choát byte thaáp cuûa ñòa chæ khi baét ñaàu moãi chu kyø boä nhôù ngoaøi. Coøn Port 2 duøng cho byte cao cuûa bus ñòa chæ. Caùch toå chöùc ñeå Port 0 vöøa mang döõ lieäu vöøa mang ñòa chæ, trong nöûa ñaàu chu kyø boä nhôù byte ñòa chæ thaáp ñöôïc xuaát ra töø Port 0 vaø ñöôïc choát laïi baèng tín hieäu ALE. IC choát 74HC373 hoaëc töông ñöông seõ giöõ byte thaáp cuûa ñòa chæ naøy ñeán heát chu kyø boä nhôù. Trong nöûa chu kyø thöù hai cuûa chu kyø boä nhôù, Port 0 ñöôïc duøng nhö bus döõ lieäu, vaø döõ lieäu naøy ñöôïc ñoïc hay laø vieát tuøy thuoäc vaøo thao taùc cuûa leänh. A0–A15 D0–D7 A8–A15 AD0–AD7 Chu kyø maùy Chu kyø maùy Ñòa chæ Ñòa chæ Ñòa chæ Döõ lieäu Döõ lieäu a.Khoâng Multiplexed b.Coù Multiplexed PORT 0 EA ALE PORT 2 D0 – D7 A0 – A7 A8 – A15 Q D G . 74373 . 8951 Boä nhôù ngoaøi Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 17 b) Truy xuaát ROM: ROM laø boä nhôù chæ ñoïc vaø ñöôïc cho pheùp truy xuaát baèng tín hieäu PSEN. Caùch keát noái phaàn cöùng giöõa 8051 vôùi ROM nhö hình veõ. Moãi chu kyø maùy keùo daøi khoaûng 12 xung clock. Neáu 8051 hoaït ñoäng vôùi nguoàn dao ñoäng laø 12Mh thì thôøi gian cuûa moät chu kyø maùy laø 1s. Giaûn ñoà thôøi gian cuûa hoaït ñoäng ñoïc boä nhôù ñöôïc chæ ra ôû hình. Ta thaáy trong moät chu kyø maùy, xung ALE xuaát hieän hai laàn vaø hai byte ñöôïc ñoïc töø ROM (töø leänh hieän haønh laø leänh moät byte thì byte thöù hai seõ ñöôïc boû qua). c) Truy xuaát RAM : RAM ngoaøi ñöôïc truy xuaát baèng caùc tín hieäu Read (RD) vaø Write (WR) ôû caùc chaân P3.7 vaø P3.6 töông öùng. Leänh duy nhaát truy xuaát RAM laø leänh MOVX söû duïng moät trong caùc thanh ghi data pointer (DPTR), R0, R1 nhö thanh ghi ñòa chæ. RAM giao tieáp vôùi 8051 gioáng nhö caùch thöùc cuûa EPROM chæ khaùc nhau ôû ñöôøng RD noái vôùi chaân Output Enable (OE) cuûa RAM vaø WR noái vôùi chaân W cuûa RAM. PORT 0 EA ALE PORT 2 PSEN D0 – D7 A0 – A7 A8 – A15 OE Q D G . 74373 . 8951 EPROM o o PORT 0 EA ALE PORT 2 RD WR PSEN D0 – D7 A0 – A7 A8 – A15 OE WR CS Q D G . 74373 . 8951 RAM o o o o o o . NC Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 18 d) Giaûi maõ ñòa chæ cho 8951: Neáu coù nhieàu chip ROM hoaëc RAM cuøng giao tieáp vôùi 8051, vaán ñeà ñöôïc ñaët ra laø phaûi giaûi maõ ñòa chæ cho chuùng. Vaán ñeà giaûi maõ cuõng töông töï nhö caùc vi xöû lyù. Thoâng thöôøng ngöôøi ta duøng IC giaûi maõ nhö 74HC138, noái caùc chaân ra cuûa noù vôùi caùc ñaàu choïn chip (Chip Select CS) cuûa ROM hoaëc RAM. Ñieàu naøy ñöôïc minh hoïa trong hình treân ñeå giaûi maõ cho heä thoáng duøng nhieàu IC EPROM 8Kx8bit (2764) vaø caùc IC RAM 8K (6264) e) Xeáp choàng caùc vuøng nhôù chöông trình vaø döõ lieäu beân ngoaøi: Vì boä nhôù chöông trình laø ROM, neân naøy sinh moät vaán ñeà baát tieän khi phaùt trieån phaàn meàm cho 8951. Ñoù laø laøm caùch naøo phaàn meàm coù theå söûa ñoåi chöông trình vaø ghi trôû laïi khi noù ñöôïc chöùa trong boä nhôù “chæ ñoïc”. Caùch giaûi quyeát laø xeáp choàng caùc vuøng nhôù chöông trình vaø döõ lieäu. Moät IC RAM coù theå chöùa caû chöông trình vaø döõ lieäu baèng caùch noái ñöôøng OE cuûa RAM vaøo moät maïch logic AND cuûa PSEN vaø RD. Maïch treân hình sau cho pheùp moät IC RAM ñöôïc duøng laøm boä nhôù chöông trình vaø döõ lieäu: Vaäy moät chöông trình coù theå ñöôïc taûi vaøo RAM (baèng caùch ghi noù nhö boä nhôù döõ lieäu) vaø thi haønh (baèng caùch truy xuaát noù nhö boä nhôù chöông trình). 6. Leänh Reset: 8951 ñöôïc reset baèng caùch giöõ chaân RST ôû möùc cao ít nhaát trong hai chu kyø maùyvaø traû noù veà möùc thaáp.RST coù theå ñöôïc kích baèng tay duøng moät nuùt baám hoaëc coù theå kích khi ngaét ñieän duøng moät maïch RC. Traïng thaùi cuûa taát caû caùc thanh ghi cuûa 8951 sau khi reset heä thoáng ñöôïc toùm taét trong baûng sau: RAM WR OE o o WR RD PSEN Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com 19 Thanh ghi Noäi dung Ñeám chöông trình Tích luõy B PSW SP DPTR Port 0 ÷ 3 IP IE Caùc thanh ghi ñònh thôøi SCON SBUF PCON (HMOS) PCON (CMOS) 0000 H 00 H 00 H 00 H 07 H 0000 H FF H XXX00000 B 0XX00000 B 00 H 00 H 00 H 0XXXXXXX B 0XXX0000 B Quan troïng nhaát trong caùc thanh ghi treân laø thanh ghi ñeám chöông trình, noù ñöôïc ñaët laïi 0000H. Khi SRT trôû laïi möùc thaáp, vieäc thi haønh chöông trình luoân luoân baét ña

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_vi_dieu_khien_gioi_thieu_vi_dieu_khien_at89c51_le.pdf
Tài liệu liên quan