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

Giới thiệu về AT89C51

Chia sẻ: Pham Huan | Ngày: | Loại File: PDF | Số trang:24

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

MCS-51™ là một họ IC vi điều khiển do Intel phát triển và sản xuất. Một số nhà sản xuất được phép cung cấp các IC tương thích với các sản phẩm MCS-51™ của Intel là Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel…Ngoài ra, tùy theo số hiệu sản xuất mà chúng có những khác biệt về bộ nhớ và bộ định thời/bộ đếm như trong bảng so sánh dưới đây

Chủ đề:
Lưu

Nội dung Text: Giới thiệu về AT89C51

  1. Nguyenvanbientbd47@gmail.com 1. Giôùi thieäu khaùi quaùt veà hoï IC MCS-51™ MCS-51™ laø moät hoï IC vi ñieàu khieån do Intel phaùt trieån vaø saûn xuaát. Moät soá nhaø saûn xuaát ñöôïc pheùp cung caáp caùc IC töông thích vôùi caùc saûn phaåm MCS-51™ cuûa Intel laø Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel… Caùc IC cuûa hoï MCS-51™ coù caùc ñaëc tröng chung nhö sau: • 4 port I/O 8 bit • Giao tieáp noái tieáp • 64K khoâng gian boä nhôù chöông trình môû roäng • 64K khoâng gian boä nhôù döõ lieäu môû roäng • Moät boä xöû lyù luaän lyù (thao taùc treân caùc bit ñôn) • 210 bit ñöôïc ñòa chæ hoùa • Boä nhaân/chia 4 µs. Ngoaøi ra, tuøy theo soá hieäu saûn xuaát maø chuùng coù nhöõng khaùc bieät veà boä nhôù vaø boä ñònh thôøi/boä ñeám nhö trong baûng so saùnh döôùi ñaây: u saûn xuaát hôù chöông trình treân ôù döõ lieäu treân chip ñònh thôøi ám) byte OM byte ROM byte ASH byte 2 byte 2 OM byte ROM byte ASH byte 2 Giôùi thieäu AT89C51
  2. Nguyenvanbientbd47@gmail.com AT89C51 laø moät Microcomputer 8 bit, loaïi CMOS, coù toác ñoä cao vaø coâng suaát thaáp vôùi boä nhôù Flash coù theå laäp trình ñöôïc. Noù ñöôïc saûn xuaát vôùi coâng ngheä boä nhôù khoâng bay hôi maät ñoä cao cuûa haõng Atmel, vaø töông thích vôùi chuaån coâng nghieäp cuûa 80C51 vaø 80C52 veà chaân ra vaø boä leänh. Vì lyù do ñoù, keå töø ñaây veà sau ta seõ duøng thuaät ngöõ “80C51” (hoaëc "8051") Sô ñoà khoái cuûa AT89C51 2.1 Nhöõng ñaëc tröng cuûa AT89C51. + Töông thích vôùi caùc saûn phaåm MCS-51
  3. Nguyenvanbientbd47@gmail.com + 4KByte boä nhôù Flash coù theå laäp trình laïi vôùi 1000 chu kyø ñoïc/xoaù + Hoaït ñoäng tónh ñaày ñuû: 0Hz ñeán 24MHz + Khoaù boä nhôù chöông trình ba caáp + 128 x 8 bit RAM noäi + 32 ñöôøng xuaát-nhaäp laäp trình ñöôïc (töông öùng 4 port) + Hai timer/counter 16 bit + Moät port noái tieáp song coâng laäp trình ñöôïc + Maïch ñoàng hoà vaø boä dao ñoäng treân chip Caáu hình chaân cuûa AT89C51 nhö sau: Nhö vaäy AT89C51 coù taát caû 40 chaân. Moãi chaân coù chöùc naêng nhö caùc ñöôøng I/O (xuaát/nhaäp), trong ñoù 24 chaân coù coâng duïng keùp: moãi ñöôøng coù theå hoaït ñoäng nhö moät ñöôøng I/O hoaëc nhö moät ñöôøng ñieàu khieån hoaëc nhö thaønh phaàn cuûa bus ñòa chæ vaø bus ñöõ lieäu. Moâ taû chaân • VCC (chaân 40) Chaân caáp nguoàn. • GND (chaân 20) Chaân noái ñaát. • Port 0
  4. Nguyenvanbientbd47@gmail.com Port 0 laø moät port xuaát/nhaäp song höôùng cöïc maùng hôû 8 bit. Neáu ñöôïc söû duïng nhö laø moät ngoõ xuaát thì moãi chaân coù theå keùo 8 ngoõ vaøo TTL. Khi möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 0, caùc chaân naøy coù theå ñöôïc duøng nhö laø caùc ngoõ nhaäp toång trôû cao. Port 0 coù theå ñöôïc ñònh caáu hình ñeå hôïp keânh giöõa bus ñòa chæ vaø bus döõ lieäu (phaàn byte thaáp) khi truy caäp ñeán boä nhôù döõ lieäu vaø boä nhôù chöông trình ngoaøi. ÔÛ cheá ñoä naøy, P0 coù caùc ñieän trôû pullup beân trong. Port 0 cuõng nhaän caùc byte code (byte maõ chöông trình) khi laäp trình Flash, vaø xuaát ra caùc byte code khi kieåm tra chöông trình. Caàn coù caùc ñieän trôû pullup beân ngoaøi khi thöïc hieän vieäc kieåm tra chöông trình. • Port 1 Port 1 laø moät port xuaát/nhaäp song höôùng 8 bit coù caùc ñieän trôû pullup beân trong. Caùc boä ñeäm ngoõ ra cuûa port 1 coù theå keùo hoaëc cung caáp 4 ngoõ nhaäp TTL. Khi möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 1, chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö laø caùc ngoõ nhaäp. Neáu ñoùng vai troø laø caùc ngoõ nhaäp, caùc chaân cuûa port 1 (ñöôïc keùo xuoáng thaáp qua caùc ñieän trôû beân ngoaøi) seõ caáp doøng IIL do caùc ñieän trôû pullup beân trong. • Port 2 Port 2 laø moät port xuaát/nhaäp song höôùng 8 bit coù caùc ñieän trôû pullup beân trong. Caùc boä ñeäm ngoõ ra cuûa port 2 coù theå keùo hoaëc cung caáp 4 ngoõ vaøo TTL. Khi caùc möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 2 thì chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö caùc ngoõ vaøo. Khi ñöôïc duøng nhö caùc ngoõ vaøo, caùc chaân cuûa port 2 (ñöôïc keùo xuoáng qua caùc ñieän trôû beân ngoaøi) seõ caáp doøng IIL do coù caùc ñieän trôû pullup beân trong. Port 2 phaùt ra byte cao cuûa ñòa chæ khi ñoïc töø boä nhôù chöông trình ngoaøi vaø khi truy caäp boä nhôù döõ lieäu ngoaøi duøng caùc ñòa chæ 16 bit (MOVX @DPTR). Trong öùng duïng naøy, noù duøng caùc ñieän trôû pullup noäi "maïnh" khi phaùt ra caùc möùc 1. Khi truy caäp boä nhôù döõ lieäu ngoaøi duøng caùc ñòa chæ 8 bit (MOVX @RI), port 2 phaùt ra caùc noäi dung cuûa thanh ghi chöùc naêng ñaëc bieät P2. Port 2 cuõng nhaän caùc bit cao cuûa ñòa chæ vaø moät vaøi tín hieäu ñieàu khieån khi laäp trình vaø kieåm tra Flash. • Port 3 Port 3 laø moät port xuaát-nhaäp song höôùng 8 bit coù ñieän trôû pullup noäi beân trong. Caùc boä ñeäm ngoõ ra cuûa port 3 coù theå keùo hoaëc cung caáp 4 ngoõ vaøo TTL. Khi caùc möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 3 thì chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö caùc ngoõ vaøo. Khi ñöôïc duøng nhö caùc ngoõ vaøo, caùc chaân cuûa port 3 (ñöôïc keùo xuoáng qua caùc ñieän trôû beân ngoaøi) seõ caáp doøng IIL do coù caùc ñieän trôû pullup beân trong. Port 3 cuõng cung caáp caùc chöùc naêng cuûa caùc ñaëc tröng ñaëc bieät nhö ñöôïc lieät keâ döôùi ñaây:
  5. Nguyenvanbientbd47@gmail.com öùc naêng chuyeån ñoåi haäp noái tieáp uaát noái tieáp 0 beân ngoaøi beân ngoaøi aøo Timer/Counter 0 aøo Timer/Counter 1 ghi boä nhôù döõ lieäu ngoaøi ñoïc boä nhôù döõ lieäu ngoaøi Caùc chöùc naêng chuyeån ñoåi treân Port 3 • RST (chaân 9) Ngoõ vaøo reset. Moät möùc cao treân chaân naøy khoaûng hai chu kyø maùy trong khi boä dao ñoäng ñang chaïy seõ reset thieát bò. • ALE/ PROG ALE laø moät xung ngoõ ra ñeå choát byte thaáp cuûa ñòa chæ trong khi truy caäp boä nhôù ngoaøi. Chaân naøy cuõng laø ngoõ nhaäp xung laäp trình ( PROG ) khi laäp trình Flash. Khi hoaït ñoäng bình thöôøng, ALE ñöôïc phaùt vôùi moät tyû leä khoâng ñoåi laø 1/6 taàn soá boä dao ñoäng vaø coù theå ñöôïc duøng cho caùc muïch ñích timing vaø clocking beân ngoaøi. Tuy nhieân, löu yù raèng moät xung ALE seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi. Neáu muoán, hoaït ñoäng ALE coù theå caám ñöôïc baèng caùch set bit 0 cuûa SFR taïi ñòa chæ 8Eh. Neáu bit naøy ñöôïc set, ALE chæ döôïc hoaït ñoäng khi coù moät leänh MOVX hoaëc MOVC. Ngöôïc laïi, chaân naøy ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup "nheï". Vieäc set bit caám-ALE khoâng coù taùc duïng khi boä vi ñieàu khieån ñang ôû cheá ñoä thi haønh ngoaøi. • PSEN PSEN (Program Store Enable) laø xung ñoïc boä nhôù chöông trình ngoaøi. Khi AT89C52 ñang thi haønh maõ (code) töø boä nhôù chöông trình ngoaøi, PSEN ñöôïc kích hoaït hai laàn moãi chu kyø maùy, nhöng hai hoaït ñoäng PSEN seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi. • EA /Vpp EA (External Access Enable) phaûi ñöôïc noái vôùi GND ñeå cho pheùp thieát bò ñoïc code töø boä nhôù chöông trình ngoaøi coù ñòa chæ töø 0000H ñeán FFFFH. Tuy nhieân, löu yù raèng neáu bit khoaù 1 (lock-bit 1) ñöôïc laäp trình, EA seõ ñöôïc choát beân trong khi reset. EA phaûi ñöôïc noái vôùi Vcc khi thi haønh chöông trình beân trong. Chaân naøy cuõng nhaän ñieän aùp cho pheùp laäp trình Vpp=12V khi laäp trình Flash (khi ñoù aùp laäp trình 12V ñöôïc choïn).
  6. Nguyenvanbientbd47@gmail.com • XTAL1 vaø XTAL2 XTAL1 vaø XTAL2 laø hai ngoõ vaøo vaø ra cuûa moät boä khueách ñaïi dao ñoäng nghòch ñöôïc caáu hình ñeå duøng nhö moät boä dao ñoäng treân chip. Hình. Caùc keát noái cuûa boä dao ñoäng Khoâng coù yeâu caàu naøo veà duty cycle cuûa tín hieäu xung ngoaøi,vì ngoõ nhaäp noái vôùi maïch taïo xung noäi laø moät flip-flop chia ñoâi, nhöng caùc chæ ñònh veà thôøi gian high vaø low, caùc möùc aùp toái ña vaø toái thieåu phaûi ñöôïc tuaân theo. Caùc ñaëc tröng khaùc seõ ñöôïc trình baøy moät caùch chi tieát hôn ôû nhöõng phaàn tieáp theo sau ñaây. 3 Toå chöùc boä nhôù 8051/8031 coù boä nhôù theo caáu truùc Harvard: coù nhöõng vuøng boä nhôù rieâng bieät cho chöông trình vaø döõ lieäu. Nhö ñaõ noùi ôû treân, caû chöông trình vaø döõ lieäu coù theå ôû beân trong; duø vaäy chuùng coù theå ñöôïc môû roäng baèng caùc thaønh phaàn ngoaøi leân ñeán toái ña 64 Kbytes boä nhôù chöông trình vaø 64 Kbytes boä nhôù döõ lieäu. Boä nhôù beân trong bao goàm ROM vaø RAM treân chip, RAM treân chip bao goàm nhieàu phaàn : phaàn löu tröõ ña duïng, phaàn löu tröõ ñòa chæ hoùa töøng bit, caùc bank thanh ghi vaø caùc thanh ghi chöùc naêng ñaëc bieät. Hai ñaëc tính caàn löu yù laø :
  7. Nguyenvanbientbd47@gmail.com • 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 ñòa chæ boä nhôù khaùc. • Ngaên xeáp beân trong RAM noäi nhoû hôn so vôùi RAM ngoaøi nhö trong caùc boä vi xöû lyù khaùc. Chi tieát veà boä nhôù RAM treân chip: Nhö ta thaáy treân hình ( ), RAM beân trong 8051/8031 ñöôïc phaân chia giöõa caùc bank thanh ghi (00H–1FH), RAM ñòa chæ hoùa töøng bit (20H–2FH), RAM ña duïng (30H–7FH) vaø caùc thanh ghi chöùc naêng ñaëc bieät (80H–FFH). 3.1 RAM ña duïng Maëc duø treân hình cho thaáy 80 byte RAM ña duïng chieám caùc ñòa chæ töø 30H–7FH, 32 byte döôùi cuøng töø 00H ñeán 1FH cuõng coù theå ñöôïc duøng vôùi muïc ñích töông töï (maëc duø caùc ñòa chæ naøy ñaõ coù muïc ñích khaùc). Moïi ñòa chæ trong vuøng RAM ña duïng ñeàu coù theå ñöôïc truy xuaát töï do duøng caùch ñaùnh ñòa chæ tröïc tieáp hoaëc 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 duøng caùch ñaùnh ñòa chæ giaùn tieáp qua R0 hay R1. Ví duï, hai leänh sau thi haønh cuøng nhieäm vuï nhö leänh ñôn ôû treân : Toùm taét caùc vuøng boä nhôù cuûa 8031/8051. FFF FFF Boä nhôù Boä nhôù döõ lieäu chöông trình ñöôïc ñöôïc choïn F choïn qua WR qua PSEN vaø RD 0 0000 0000 Boä nhôù treân Boä nhôù môû hi ä
  8. Nguyenvanbientbd47@gmail.com 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. Ñòa Ñòa Ñòa chæ chæ Ñòa chæ chæ 7 F F F F F F F F F F B E E E E E E E E E ACC RAM ña duïng D D D D D D D – D PSW 3 B – – – B B B B9 B8 IP 2 7 7 7D 7C 7B 7A 79 78 2 77 76 75 74 73 72 71 70 B B B B B B B B B P3 2 6 6 6D 6C 6B 6A 69 68 2 67 66 65 64 63 62 61 60 A AF – – A A A A9 A8 IE 2 5 5 5D 5C 5B 5A 59 58 2 57 56 55 54 53 52 51 50 A A A A A A A A A P2 2 4 4 4D 4C 4B 4A 49 48 2 47 46 45 44 43 42 41 40 9 khoâng ñöôïc ñòa chæ SBUF 2 3 3 3D 3C 3B 3A 39 38 9 9 9 9D 9C 9B 9A 99 98 SCON 2 37 36 35 34 33 32 31 30 2 2 2 2D 2C 2B 2A 29 28 9 97 96 95 94 93 92 91 90 P1 2 27 26 25 24 23 22 21 20 2 1 1 1D 1C 1B 1A 19 18 8 khoâng ñöôïc ñòa chæ TH1 2 17 16 15 14 13 12 11 10 8 khoâng ñöôïc ñòa chæ TH0 2 0 0 0D 0C 0B 0A 09 08 8 khoâng ñöôïc ñòa chæ TL1 2 07 06 05 04 03 02 07 00 8 khoâng ñöôïc ñòa chæ TL0 1 Bank 3 8 khoâng ñöôïc ñòa chæ TMOD 1 8 8 8 8D 8C 8B 8A 89 88 TCON 1 Bank 2 8 khoâng ñöôïc ñòa chæ PCON 1 0 Bank 1 8 khoâng ñöôïc ñòa chæ DPH 0 8 khoâng ñöôïc ñòa chæ DPL 0 Bank thanh ghi 0 8 khoâng ñöôïc ñòa chæ SP 0 (maëc ñònh cho R0- 8 87 86 85 84 83 82 81 80 P0 Toùm taét boä nhôù döõ lieäu CAÙCchip. GHI CHÖÙC NAÊNG treân THANH RAM 3.2 RAM ñòa chæ hoùa töøng bit Ñ Ë Ä 8051/8031 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù 128 bit laø ôû caùc ñòa chæ byte 20H ñeán 2FH, vaø phaàn coøn laïi laø trong caùc thanh ghi chöùc naêng ñaëc bieät.
  9. Nguyenvanbientbd47@gmail.com 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 tieä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 20H ñeán 2FH. Caùc ñòa chæ naøy ñöôïc truy xuaát nhö caùc byte hoaëc nhö caùc bit phuï thuoäc vaøo leänh ñöôïc duøng. Ví duï, ñeå ñaët 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 ôû ñòa chæ naøy. Caùc vi xöû lyù seõ 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 caû byte 3.3 Caùc bank thanh ghi : 32 byte thaáp nhaát cuûa boä nhôù noäi laø daønh cho caùc bank thanh ghi. Boä leänh cuûa 8051/8031 hoã trôï 8 thanh ghi (R0 ñeán R7) vaø theo maëc ñònh (sau khi reset heä thoáng) caùc thanh ghi naøy ôû caùc ñò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 caùc thanh ghi R0 ñeán 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 giaù trò 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 (PSW). 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 tích luõy 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ï thuoäc vaøo caùc phaàn khaùc).
  10. Nguyenvanbientbd47@gmail.com 4 Caùc thanh ghi chöùc naêng ñaëc bieät Moät baûn ñoà vuøng boä nhôù treân chip ñöôïc goïi laø khoâng gian thanh ghi chöùc naêng ñaëc bieät (SFR) nhö ñöôïc trình baøy trong baûng. Löu yù raèng khoâng phaûi taát caû caùc ñòa chæ ñeàu ñöôïc söû duïng, vaø caùc ñòa chæ khoâng ñöôïc söû duïng coù theå khoâng ñöôïc cung caáp treân con chip. Caùc haønh ñoäng ñoïc ñeán caùc ñòa chæ naøy noùi chung seõ traû veà caùc döõ lieäu ngaãu nhieân, vaø caùc haønh ñoäng vieát seõ coù moät hieäu öùng khoâng xaùc ñònh. Caùc phaàn meàm ngöôøi duøng khoâng neân vieát caùc möùc 1 ñeán nhöõng vò trí khoâng ñöôïc lieät keâ naøy, vì chuùng coù theå ñöôïc duøng trong caùc saûn phaåm töông lai khi theâm vaøo caùc ñaëc tröng môùi. Trong tröôøng hôïp naøy, caùc giaù trò reset hoaëc khoâng tích cöïc cuûa caùc bit môùi seõ luoân laø 0. Caùc thanh ghi noäi cuûa 8051/8031 ñöôï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 8051/8031 ñöôï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, neân khoâng lôïi loäc gì khi ñaët chuùng vaøo trong RAM treân chip). Ñoù laø lyù do ñeå 8051/8031 coù nhieàu thanh ghi nhö vaäy. Cuõng nhö R0 ñeán R7, coù 21 thanh ghi chöùc naêng ñaëc bieät (SFR : Special Function Register) ôû vuøng treân cuûa RAM noäi, töø ñòa chæ 80H ñeán 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öø tích luõy (A) coù theå ñöôïc truy xuaát ngaàm 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å ñöôïc ñòa chæ hoùa bit hoaëc byte. Ngöôøi thieát keá phaûi thaä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 khaùc khoâng ñoåi. Ta thaáy raèng E0H ñoàng thôøi laø ñòa chæ byte cuûa caû thanh ghi tích luõy vaø laø ñòa chæ bit cuûa bit coù troïng soá nhoû nhaát trong thanh ghi tích luõy. Vì leänh SETB chæ taùc ñoäng treân bit, neân chæ coù ñòa chæ bit laø coù hieäu quaû. 4.1 Töø traïng thaùi chöông trình : Töø traïng thaùi chöông trình (PSW : Program Status Word) ôû ñò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 0 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
  11. Nguyenvanbientbd47@gmail.com * Côø nhôù Côø nhôù (CY) coù coâng duïng keùp. Thoâng thöôøng noù ñöôïc 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 coù 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 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 côø nhôù : ANL C, 25H * 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 0AH ñeán 0FH. Neáu caùc giaù trò ñöôïc coäng laø soá BCD, thì sau leänh coäng 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 vaøo nibble cao. * Côø 0 Côø 0 (F0) laø 1 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 choïn bank thanh ghi (RS0 vaø RS1) xaùc ñònh bank thanh ghi ñöôïc tích cöïc. Chuùng ñöôïc xoùa sau khi reset heä thoáng vaø ñöôïc thay ñoåi baèng phaàn meàm neáu caàn. Ví duï, ba leänh sau cho pheùp bank thanh ghi 3 vaø di chuyeån noäi dung cuûa thanh ghi R7 (ñòa chæ byte 1FH) ñeán 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 ñaïi chæ bit ñuùng ñöôïc thay theá cho caùc kyù hieäu “RS1” vaø “RS0”. Vaäy, leänh SETB RS1 seõ gioáng nhö leänh SETB 0D4H. * 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 ñöôïc 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 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.
  12. Nguyenvanbientbd47@gmail.com Keát quaû laø moät soá coù daáu 8EH ñöôïc xem nhö -116, khoâng phaûi laø keát quaû ñuùng (142), vì vaäy, bit OV ñöôïc set. 4.2 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. Thanh ghi B cuõng coù theå ñöôïc xem nhö thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa töøng bit baèng caùc ñòa chi bit F0H ñeán F7H. 4.3 Con troû ngaên xeáp . Con troû ngaên xeáp (SP) laø moät thanh ghi 8 bit ôû ñòa chæ 81H. Noù chöùa ñòa chæ cuûa byte döõ lieäu hieän haønh treân ñænh cuûa ngaên xeáp. Caùc leänh treân ngaên xeáp bao goàm caùc thao taùc caát döõ lieäu vaøo ngaên xeáp vaø laáy döõ lieäu ra khoûi ngaên xeáp. Leänh caát döõ lieäu vaøo ngaên xeáp seõ laøm taêng SP tröôùc khi ghi döõ lieäu, vaø leänh laáy döõ lieäu ra khoûi ngaên xeáp seõ ñoïc döõ lieäu vaø giaûm SP. Ngaên xeáp cuûa 8051/8031 ñöôïc giöõ trong RAM noäi vaø ñöôïc giôùi haïn caùc ñòa chæ coù theå truy xuaát baèng ñòa chæ giaùn tieáp. Chuùng laø 128 byte ñaàu cuûa 8051/8031. Ñeå khôûi ñoäng laïi SP vôùi ngaên xeáp baét ñaàu taïi 60H,caùc leänh sau ñaây ñöôïc duøng: MOV SP, #5FH Treân 8051/8031 ngaên xeáp bò giôùi haïn 32 byte vì ñòa chæ cao nhaát cuûa RAM treân chip laø 7FH. Sôû dó duøng giaù trò 5FH vì SP seõ taêng leân 60H tröôùc khi caát byte döõ lieäu ñaàu tieân. Ngöôøi thieát keá coù theå choïn khoâng phaûi khôûi ñoäng laïi con troû ngaên xeáp maø ñeå noù laáy giaù trò maëc ñònh khi reset heä thoáng. Giaù trò maëc ñònh ñoù laø 07H vaø keát quaû laø ngaên ñaàu tieân ñeå caát döõ lieäu coù ñòa chæ laø 08H. Neáu phaàn meàm öùng duïng khoâng khôûi ñoäng laïi SP, bank thanh ghi 1 (coù theå caû 2 vaø 3) seõ khoâng duøng ñöôïc vì vuøng RAM naøy ñaõ ñöôïc duøng laøm ngaên xeáp. Ngaên xeáp ñöôïc truy xuaát tröïc tieáp baèng caùc leänh PUSH vaø POP ñeå löu tröõ taïm thôøi vaø laáy laïi döõ lieäu, hoaëc ñöôïc truy xuaát ngaàm baèng caùc leänh goïi chöông trình con (ACALL, LCALL) vaø caùc leänh trôû veà (RET, RETI) ñeå caát vaø laáy laïi boä ñeám chöông trình. 4.4 Con troû döõ lieäu Con troû döõ lieäu (DPTR) ñöôïc duøng ñeå truy xuaát boä nhôù ngoaøi laø moät thanh ghi 16 bit ôû ñòa chæ 82H (DPL : byte thaáp) vaø 83H (DPH : byte cao). Ba leänh sau seõ ghi 55H vaøo RAM ngoaøi ôû ñòa chæ 1000H : MOV A, #55H MOV DPTR, #1000H MOVX @DPTR, A
  13. Nguyenvanbientbd47@gmail.com Leänh ñaàu tieân duøng ñòa chæ töùc thôøi ñeå taûi döõ lieäu 55H vaøo thanh ghi tích luõy. Leänh thöù hai cuõng duøng ñòa chæ töùc thôøi, laàn naøy ñeå taûi döõ lieäu 16 bit 1000H vaøo con troû döõ lieäu. Leänh thöù ba duøng ñòa chæ giaùn tieáp ñeå di chuyeån döõ lieäu trong A (55H) ñeán RAM ngoaøi ôû ñòa chæ ñöôïc chöùa trong DPTR (1000H). 4.5 Caùc thanh ghi port xuaát nhaäp . Caùc port cuûa 8051/8031 bao goàm Port 0 ôû ñòa chæ 80H, Port 1 ôû ñòa chæ 90H, Port 2 ôû ñòa chæ A0H vaø Port 3 ôû ñòa chæ B0H. Taát caû caùc port ñeàu ñöôïc ñòa chæ hoùa töøng bit. Ñieàu ñoù cung caáp moät khaû naêng giao tieáp thuaän lôïi. Ví duï neáu moät motor ñöôïc noái qua moät cuoän daây coù transistor laùi ñeán bit 7 cuûa Port 1, noù coù theå ñöôïc baät vaø taét baèng moät leänh ñôn : SETB P1.7 ; baät motor CLR P1.7 ; taét motor Caùc leänh treân duøng daáu chaám ñeå xaùc ñònh moät bit trong moät byte. Trình hôïp dòch seõ thi haønh söï chuyeån ñoåi caàn thieát, vì vaäy hai leänh sau ñaây laø nhö nhau : CLR P1.7 CLR 97H Trong moät ví duï khaùc, xem xeùt giao tieáp ñeán moät thieát bò vôùi moät bit traïng thaùi goïi laø BUSY, ñöôïc set khi thieát bò ñang baän vaø ñöôïc xoùa khi thieát bò ñaõ saün saøng. Neáu BUSY ñöôïc noái tôùi P1.5, voøng laëp sau seõ ñöôïc duøng ñeå chôø thieát bò trôû laïi traïng thaùi saün saøng : WAIT : JB P1.5, WAIT Leänh naøy coù nghóa laø “neáu bit P1.5 ñöôïc set thì nhaûy tôùi nhaõn WAIT”. Noùi caùch khaùc “nhaûy trôû laïi vaø kieåm tra laàn nöõa”. 4.6 Caùc thanh ghi timer. 8051/8031 chöùa hai boä ñònh thôøi / ñeám 16 bit ñöôïc duøng cho vieäc ñònh thôøi hoaëc ñeám söï kieän. Timer 0 ôû ñòa chæ 8AH (TL0 : byte thaáp) vaø 8CH (TH0 : byte cao). Timer 1 ôû ñòa chæ 8BH (TL1 : byte thaáp) vaø 8DH (TH1 : byte cao). Vieäc vaän haønh timer ñöôïc set bôûi thanh ghi Timer Mode (TMOD) ôû ñòa chæ 89H vaø thanh ghi ñieàu khieån timer (TCON) ôû ñòa chæ 88H. Chæ coù TCON ñöôïc ñòa chæ hoùa töøng bit. 4.7 Caùc thanh ghi port noái tieáp. 8051/8031 chöùa moät port noái tieáp treân chip daønh cho vieäc trao ñoåi thoâng tin vôùi caùc thieát bò noái tieáp nhö maùy tính, modem hoaëc cho vieäc giao tieáp vôùi caùc IC khaùc coù giao tieáp noái tieáp (caùc boä chuyeån ñoåi A/D, caùc thanh ghi dòch...). Moät thanh ghi goïi laø boä ñeäm döõ lieäu noái tieáp (SBUF) ôû ñòa chæ 99H seõ giöõ caû hai döõ lieäu truyeàn vaø nhaän. Khi truyeàn döõ lieäu thì ghi leân SBUF, khi nhaän döõ lieäu thì ñoïc SBUF.
  14. Nguyenvanbientbd47@gmail.com Caùc mode vaän haønh khaùc nhau ñöôïc laäp trình qua thanh ghi ñieàu khieån port noái tieáp (SCON) (ñöôïc ñòa chæ hoùa töøng bit) ôû ñòa chæ 98H. 4.8 Caùc thanh ghi ngaét. 8051/8031 coù caáu truùc 5 nguoàn ngaét, 2 möùc öu tieân. Caùc ngaét bò caám sau khi reset heä thoáng vaø seõ ñöôïc cho pheùp baèng vieäc ghi thanh ghi cho pheùp ngaét (IE) ôû ñòa chæ A8H. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit. 4.9 Thanh ghi ñieàu khieån coâng suaát. Thanh ghi ñieàu khieån coâng suaát (PCON) ôû ñòa chæ 87H chöùa nhieàu bit ñieàu khieån. Chuùng ñöôïc toùm taét trong baûng sau : Bit Kyù hieäu YÙ nghóa 7 SMOD Bit gaáp ñoâi toác ñoï baud, neáu ñöôïc set thì toác ñoä baud seõ taêng gaáp ñoâi trong caùc mode 1,2 vaø 3 cuûa port noái tieáp. 6 4 – – Khoâng ñònh nghóa. Khoâng ñònh nghóa. 5 3 – GF1 Khoâng ñònh nghóa. Bit côø ña duïng 1. 2 GF0 Bit côø ña duïng 0. 1 PD Giaûm coâng suaát, ñöôïc set ñeå kích hoaït mode giaûm coâng suaát, chæ thoaùt khi reset 0 IDL Mode chôø, set ñeå kích hoaït mode chôø, chæ thoaùt khi coù ngaét hoaëc reset heä th á 5 Baûo veä boä nhôù. Caùc bit khoaù boä nhôù chöông trình. Vi ñieàu khieån AT89C51 coù 3 bit khoaù coù theå boû khoâng laäp trình (U) hoaëc ñöôïc laäp trình (P) ñeå nhaän caùc ñaëc tröng theâm vaøo ñöôïc lieät keâ trong baûng döôùi ñaây (vôùi LB1, LB2, LB3 laø caùc bit khoùa töông öùng). oä aûo veä khoaù chöông trình nh MOVC ñöôïc thi haønh töø boä nhôù chöông trình ngoaøi bò hi laáy caùc byte maõ töø boä nhôù noäi, /EA ñöôïc laáy maãu vaø hoát laïi khi reset vaø hôn nöõa, vieäc laäp trình boä nhôù Flash laø . heá ñoä 2 nhöng vieäc kieåm tra cuõng bò caám heá ñoä 3 nhöng vieäc thi haønh ngoaøi cuõng bò caám.
  15. Nguyenvanbientbd47@gmail.com Khi bit khoaù 1 ñöôïc laäp trình, möùc logic taïi chaân EA ñöôïc laáy maãu vaø choát laïi khi reset. Neáu thieát bò ñöôïc baät nguoàn maø khoâng coù reset, vieäc choát seõ ñöôïc khôûi taïo vôùi moät giaù trò ngaãu nhieân cho ñeán khi ñöôïc reset. Giaù trò ñöôïc choát cuûa EA phaûi baèng vôùi möùc logic hieän taïi ôû chaân ñoù ñeå cho thieát bò laøm vieäc moät caùch chính xaùc. 6 Hoaït ñoäng cuûa port noái tieáp. 6.1 Giôùi thieäu. 8051/8031 coù moät port noái tieáp trong chip coù theå hoaït ñoäng ôû nhieàu cheá ñoä treân moät daõi taàn soá roäng. Chöùc naêng chuû yeáu cuûa port noái tieáp laø thöïc hieän chuyeån ñoåi song song sang noái tieáp ñoái vôùi döõ lieäu xuaát, vaø chuyeån ñoåi noái tieáp sang song song vôùi döõ lieäu nhaäp. Truy xuaát phaàn cöùng ñeán port noái tieáp qua caùc chaân TXD vaø RXD. Caùc chaân naøy coù caùc chöùc naêng khaùc vôùi hai bit cuûa Port 3, P3.1 ôû chaân 11 (TXD) vaø P3.0 ôû chaân 10 (RXD). Port noái tieáp cho hoaït ñoäng song coâng (full duplex : thu vaø phaùt ñoàng thôøi), vaø ñeäm luùc thu (receiver buffering) cho pheùp moät kyù töï seõ ñöôïc thu vaø ñöôïc giöõ trong khi kyù töï thöù hai ñöôïc nhaän. Neáu CPU ñoïc kyù töï thöù nhaát tröôùc khi kyù töï thöù hai ñöôïc thu ñöôïc thu ñaày ñuû thì döõ lieäu seõ khoâng bò maát. Hai thanh ghi chöùc naêng ñaëc bieät cho pheùp phaàn meàm truy xuaát ñeán port noái tieáp laø : SBUF vaø SCON. Boä ñeäm port noái tieáp (SBUF) ôû ñòa chæ 99H thaät söï laø hai boä ñeäm. Vieát vaøo SBUF ñeå naïp döõ lieäu seõ ñöôïc phaùt, vaø ñoïc SBUF ñeå truy xuaát döõ lieäu thu ñöôïc. Ñaây laø hai thanh ghi rieâng bieät : thanh ghi chæ ghi ñeå phaùt vaø thanh ghi chæ ñoïc ñeå thu. TXD RXD (P3.1) (P3.0) D CLK SBUF Thanh ghi Q CLK dòch (chæ ghi) Xung nhòp Xung nhòp toác ñoä toác ñoä baud baud SBUF (thu) (chæ ñoïc) (phaùt) Bus noäi 8051/8031 Thanh ghi ñieàu khieån port noái tieáp (SCON) ôû ñòa chæ 98H laø thanh ghi coù ñòa chæ bit chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån. Caùc bit ñieàu khieån ñaët cheá ñoä hoaït ñoäng cho port noái tieáp, vaø caùc bit traïng
  16. Nguyenvanbientbd47@gmail.com thaùi baùo keát thuùc vieäc phaùt hoaëc thu kyù töï. Caùc bit traïnh thaùi coù theå ñöôïc kieåm tra baèng phaàn meàm hoaëc coù theå ñöôïc laäp trình ñeå taïo ngaét. Taàn soá laøm vieäc cuûa port noái tieáp, coøn goïi laø toác ñoä baud coù theå coá ñònh (laáy töø boä dao ñoäng treân chip). Neáu söû duïng toác ñoä baud thay ñoåi, Timer 1 seõ cung caáp xung nhòp toác ñoä baud vaø phaûi ñöôïc laäp trình. 6.2 Thanh ghi ñieàu khieån port noái tieáp Cheá ñoä hoaït ñoäng cuûa port noái tieáp ñöôïc ñaët baèng caùch ghi vaøo thanh ghi cheá ñoä port noái tieáp (SCON) ôû ñòa chæ 98H. Sau ñaây laø caùc baûng toùm taét thanh ghi SCON vaø caùc cheá ñoä cuûa port noái tieáp : Bit Kyù hieäu Ñòa chæ Moâ taû SCON.7 SM0 9FH Bit 0 cuûa cheá ñoä port noái tieáp. SCON.6 SM1 9EH Bit 1 cuûa cheá ñoä port noái tieáp. SCON.5 SM2 9DH Bit 2 cuûa cheá ñoä port noái tieáp. Cho pheùp truyeàn thoâng ña xöû lyù trong caùc cheá ñoï 2 vaø 3; RI seõ khoâng bò taùc ñoäng neáu bit thöù 9 thu ñöôïc laø 0. SCON.4 REN 9CH Cho pheùp boä thu phaûi ñöôïc ñaët leân 1 ñeå thu (nhaän) caùc kyù töï. SCON.3 TB8 9BH Bit 8 phaùt, bit thöù 9 ñöôïc phaùt trong caùc cheá ñoä 2 vaø 3; ñöôïc ñaët vaø xoùa baèng phaàn meàm. SCON.2 RB8 9AH Bit 8 thu, bit thöù 9 thu ñöôïc. SCON.1 TI 99H Côø ngaét phaùt. Ñaët leân 1 khi keát thuùc phaùt kyù töï; ñöôïc xoùa baèng phaàn meàm. SCON.0 RI 98H Côø ngaét thu. Ñaët leân 1 khi keát thuùc thu kyù töï; ñöôïc xoùa baèng phaàn meàm. Toùm taét thanh ghi cheá ñoä port noái tieáp SCON. SM0 SM1 Cheá ñoä Moâ taû Toác ñoä baud 0 0 0 Thanh ghi dòch Coá ñònh (FOSC /12). 0 1 1 UART 8 bit Thay ñoåi (ñaët baèng timer). 1 0 2 UART 9 bit Coá ñònh (FOSC chia cho 12 hoaëc 64). 1 1 3 UART 9 bit Thay ñoåi (ñaët baèng timer).
  17. Nguyenvanbientbd47@gmail.com Caùc cheá ñoä port noái tieáp. Tröôùc khi söû duïng port noái tieáp, phaûi khôûi ñoäng SCON cho ñuùng cheá ñoä. Ví duï, leänh MOV SCON, #01010010B khôûi ñoäng port noái tieáp cho cheá ñoä 1 (SM0/SM1 = 0/1), cho pheùp boä thu (REN = 1) vaø ñaët côø ngaét phaùt (T1 = 1) ñeå chæ boä phaùt saün saøng hoaït ñoäng. 6.3 Caùc cheá ñoä hoaït ñoäng. Port noái tieáp coù 4 cheá ñoä hoat ñoäng, coù theå choïn ñöôïc baèng caùch vieát caùc soá 1 hay 0 vaøo caùc bit SM0 vaø SM1 trong SCON. Coù ba cheá ñoä cho pheùp truyeàn thoâng baát ñoàng boä, vôùi moãi kyù töï ñöôïc thu (nhaän) hoaëc phaùt ñeàu ñöôïc ñoùng khung baèng moät bit start vaø 1 bit stop. ÔÛ cheá ñoä thöù tö, port noái tieáp hoaït ñoäng nhö moät thanh ghi dich ñôn giaûn. 6.3.1 Thanh ghi dòch 8 bit (cheá ñoä 0). Cheá ñoä 0 ñöôïc choïn baèng caùch ghi caùc bit 0 vaøo SM1 vaø SM0 cuûa SCON, ñöa port noái tieáp vaøo cheá ñoä thanh ghi dòch 8 bit. Döõ lieäu noái tieáp vaøo vaø ra qua RXD vaø TXD xuaát xung nhòp dòch. 8 bit ñöôïc phaùt hoaëc thu vôùi bit ñaàu tieân laø LSB. Toác ñoä baud coá ñònh ôû 1/12 taàn soá dao ñoäng treân chip. Vieäc phaùt ñi ñöôïc khôûi ñoäng baèng baát cöù leänh naøo ghi döõ lieäu vaøo SBUF. Döõ lieäu ñöôïc dòch ra ngoaøi treân ñöôøng RXD (P3.0) vôùi caùc xung nhòp ñöôïc göûi ra ñöôøng TXD (P3.1). Moãi bit phaùt ñi hôïp leä (treân RXD) trong moät chu kyø maùy. Trong moãi chu kyø maùy, tín hieäu xung nhaäp xuoáng thaáp ôû S3P1 vaø trôû veà möùc cao ôû S6P1. Moät chu kyø S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 OSC ALE Döõ lieäu Bit döõ lieäu hôïp leä xuaát Clock dòch Phoùng to ALE Döõ lieäu D0 D1 D2 D3 D4 D5 D6 D7 Clock dòch (TXD)
  18. Nguyenvanbientbd47@gmail.com Giaûn ñoà thôøi gian port noái tieáp phaùt ôû cheá ñoä 0. Vieäc thu ñöôïc khôûi ñoäng khi bit cho pheùp boä thu (REN) laø 1 vaø bit ngaét thu (RI) laø 0. Qui taéc toång quaùt laø ñaët REN khi baét ñaàu chöông trình ñeå khôûi ñoäng port noái tieáp, roài xoùa RI ñeå baét ñaàu hoaït ñoäng nhaäp döõ lieäu. Khi RI bò xoùa, caùc xung nhòp ñöôïc ñöa ra ñöôøng TXD, baét ñaàu chu kyø maùy keá tieáp, vaø döõ lieäu theo xung nhòp ôû ñöôøng RXD. Laáy xung nhòp cho döõ lieäu vaøo port noái tieáp xaûy ra ôû caïnh döông cuûa TXD. Moät chu kyø ALE D0 D0 D0 D0 D0 D0 D0 D0 Döõ lieäu nhaäp Clock dòch (TXD) Giaûn ñoà thôøi gian port noái tieáp thu ôû cheá ñoä 0. Moät öùng duïng cuûa cheá ñoä thanh ghi dòch laø môû roäng khaû naêng xuaát cuûa 8051/8031. IC thanh ghi dòch noái tieáp ra song song coù theå ñöôïc noái vaøo caùc ñöôøng TXD vaø RXD cuûa 8051/8031 ñeå cung caáp theâm 8 ñöôøng ra. Coù theå noái xaâu chuoãi theâm caùc thanh ghi dòch ñeå môû roäng theâm. Theâm 8 ngoõ ra TXD (P3.1) Clock Thanh ghi 8051 RXD (P3.0) Döõ lieäu dòch Cheá ñoä thanh ghi dòch cuûa port noái tieáp. 6.3.2 UART 8 bit vôùi toác ñoä baud thay ñoåi ñöôïc (cheá ñoä 1). ÔÛ cheá ñoä 1, port noái tieáp cuûa 8051/8031 laøm vieäc nhö moät UART 8 bit vôùi toác ñoä baud thay ñoåi ñöôïc. Moät UART (Universal Asynchronous Receiver/Transmitter : Boä thu/phaùt baát ñoàng boä vaïn naêng) laø moät duïng cuï thu vaø phaùt döõ lieäu noái tieáp vôùi moãi kyù töï döõ lieäu ñi tröôùc laø bit start ôû möùc thaáp vaø theo sau laø bit stop ôû möùc cao. Ñoâi khi xen theâm bit kieåm tra chaün leû giöõa bit döõ lieäu cuoái cuøng vaø bit stop. Hoaït ñoäng chuû yeáu cuûa UART laø chuyeån ñoåi song song sang noái tieáp vôùi döõ lieäu xuaát vaø chuyeån ñoåi noái tieáp sang song song vôùi döõ lieäu nhaäp. ÔÛ cheá ñoä 1, 10 bit ñöôïc phaùt treân TXD hoaëc thu treân RXD. Nhöõng bit ñoù laø : 1 bit start (luoân luoân
  19. Nguyenvanbientbd47@gmail.com laø 0), 8 bit döõ lieäu (LSB ñaàu tieân) vaø 1 bit stop (luoân luoân laø 1) . Vôùi hoaït ñoäng thu, bit stop ñöôïc ñöa vaøo RB8 trong SCON. Trong 8051/8031 cheá doä baud ñöôïc ñaët baèng toác ñoä baùo traøn cuûa Timer 1. Taïo xung nhòp vaø ñoàng boä hoùa caùc thanh ghi dòch cuûa port noái tieáp trong caùc cheá ñoä 1, 2 vaø 3 ñöôïc thieát laäp baèng boä ñeám 4 bit chia cho 16, ngoõ ra laø xung nhòp toác ñoä baud. Ngoõ vaøo cuûa boä ñeám naøy ñöôïc choïn qua phaàn meàm 16 × toác ñoä ÷ 16 baud Xung nhòp toác ñoä baud Thanh ghi dòch port noái tieáp Taïo xung nhòp port noái tieáp. Truyeàn döõ lieäu (phaùt) ñöôïc khôûi ñoäng baèng caùch ghi vaøo SBUF, nhöng vaãn chöa thaät söï baét ñaàu chaïy cho ñeán khi söï thay theá keá tieáp cuûa boä ñeám chia cho 16 cung caáp toác ñoä baud coång noái tieáp. Döõ lieäu ñöôïc dòch ra ngoaøi treân ñöôøng TXD baét ñaàu baèng bit start, theo sau laø 8 bit döõ lieäu vaø sau cuøng laø bit stop. Ñoä roäng (theo thôøi gian cuûa moãi bit) laø nghòch ñaûo cuûa toác ñoä baud ñöôïc laäp trình trong timer. Côø ngaét phaùt (TI) ñöôïc ñaët leân 1 khi xuaát hieän bit stop treân TXD. 1 toác ñoä bit baud D0 D1 D2 D3 D4 D5 D6 D7 bit TXD start stop TI (SCON.1) Ngaét phaùt (chuaån bò cho döõ lieäu) Ñaët côø TI port noái tieáp. Vieäc thu döõ lieäu ñöôïc khôûi ñoäng baèng moät chuyeån traïng thaùi töø 1 xuoáng 0 treân RXD. Boä ñeám 16 töùc thôøi ñöôïc xoùa ñeå ñoàng boä soá ñeám vôùi luoàng bit ñeán. Luoàng bit ñeán ñöôïc laáy maãu giöõa 16 laàn ñeám. Boä thu seõ phaùt hieän ñöôïc bit start sai baèng caùch yeâu caàu traïng thaùi 0 ôû (bit start) ôû laàn ñeám thöù 8 sau khi coù chuyeån traïng thaùi töø 1 xuoáng 0 ñaàu tieân. Neáu ñieàu naøy khoâng xaûy ra, ngöôøi ta giaû söû laø boä thu ñöôïc kích bôûi nhieãu chöù khoâng phaûi do moät kyù töï hôïp leä. Boä thu ñöôïc reset vaø quay veà traïng thaùi nghæ (idle), tìm kieám (ñôïi) chuyeån traïng thaùi töø 1 xuoáng 0 keá.
  20. Nguyenvanbientbd47@gmail.com Giaû söû ñaõ phaùt hieän ñöôïc bit start hôïp leä, thì tieáp tuïc thu kyù töï. Bit start ñöôïc boû qua vaø 8 bit döõ lieäu ñöôïc ñöa vaøo thanh ghi dòch coång noái tieáp theo xung nhòp. Khi ñaõ coù ñöôïc taát caû 8 bit, ñieàu sau ñaây xaûy ra : 1. Bit thöù 9 (bit stop) ñöôïc choát vaøo RB8 trong SCON. 2. SBUF ñöôïc naïp vôùi 8 bit döõ lieäu. 3. Côø ngaét boä thu (RI) ñöôïc ñaët leân 1. Tuy nhieân, nhöõng ñieàu naøy chæ xaûy ra neáu ñaõ coù nhöõng ñieàu kieän sau : 1. RI = 0 2. SM2 = 1 vaø bit stop thu ñöôïc laø 1, hoaëc SM2 = 0. Ñoøi hoûi RI = 0 ñeå baûo ñaûm laø phaàn meàm ñaõ ñoïc kyù töï tröôùc (vaø RI ñöôïc xoùa). Ñieàu kieän thöù hai hôi phöùc taïpn nhöng chæ aùp duïng trong cheá ñoä truyeàn thoâng ña xöû lyù. Ñieàu ñoù haøm yù laø “khoâng ñaët RI leân 1 trong cheá ñoä truyeàn thoâng ña xöû lyù khi bit döõ lieäu thöù 9 laø 0). 6.3.3 UART 9 bit vôùi toác ñoä baud coá ñònh (cheá ñoä 2). Khi SM1 = 1 vaø SM0 = 0, coång noái tieáp laøm vieäc ôû cheá ñoä 2, nhö moät UART 9 bit coù toác ñoä baud coá ñònh. 11 bit seõ ñöôïc phaùt hoaëc thu : 1 bit start, 8 bit döõ lieäu, bit döõ lieäu thöù 9 coù theå laäp trình ñöôïc vaø 1 bit stop. Khi phaùt, bit thöù 9 laø baát cöù gì ñaõ ñöôïc ñöa vaøo TB8 trong SCON (coù theå laø bit parity). Khi thu, bit thöù 9 thu ñöôïc seõ ôû trong RB8. Toác ñoä baud ôû cheá ñoä 2 laø 1/32 hoaëc 1/16 taàn soá dao ñoäng treân chip. 6.3.4 UART 9 bit vôùi toác ñoä baud thay ñoåi ñöôïc. Cheá ñoä naøy gioáng nhö cheá ñoä 2 ngoaïi tröø toác ñoä baud coù theå laäp trình ñöôïc vaø ñöôïc cung caáp bôûi timer. Thaät ra, caùc cheá ñoä 1,2 vaø 3 raát gioáng nhau. Caùc khaùc bieät laø ôû toác ñoä baud (ccoù ñònh trong cheá ñoä 2, thay ñoåi trong caùc cheá ñoä 1 vaø 3) vaø ôû soá bit döõ lieäu (8 trong cheá ñoä 1, 9 trong caùc cheá ñoä 2 vaø 3). 6.4 Khôûi ñoäng vaø truy xuaát caùc thanh ghi coång noái tieáp. 6.4.1 Cho pheùp thu. Bit cho pheùp boä thu (REN = Receiver Enable) trong SCON phaûi ñöôïc ñaët leân 1 baèng phaàm meàm ñeå cho pheùp thu caùc kyù töï. Thoâng thöôøng thöïc hieän vieäc naøyôû ñaàu chöông trình khi khôûi ñoäng coång noái tieáp, timer, ... Coù theå thöïc hieän vieäc naøy theo hai caùch. Leänh SETB REN seõ ñaët REN leân 1, hoaëc leänh MOV SCON, #xxx1xxxxB seõ ñaët REN leân 1 vaø ñaët hoaëc xoùa caùc bit khaùc trong SCON khi caàn (Caùc x phaûi laø 0 hoaëc 2 ñeå ñaët cheá ñoä laøm vieäc). 6.4.2 Bit döõ lieäu thöù 9.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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