Thiết bị báo cháy và điều khiển tự động

Tài liệu Thiết bị báo cháy và điều khiển tự động: ... Ebook Thiết bị báo cháy và điều khiển tự động

doc136 trang | Chia sẻ: huyen82 | Lượt xem: 1339 | Lượt tải: 1download
Tóm tắt tài liệu Thiết bị báo cháy và điều khiển tự động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
PHAÀN I: GIÔÙI THIEÄU CHUNG CHÖÔNG I: SÔ LÖÔÏC VEÀ HEÄ THOÁNG BAÙO CHAÙY VAØ ÑIEÀU KHIEÅN A. HEÄ THOÁNG BAÙO CHAÙY: I. CAÙCH NHAÄN BIEÁT VAØ BAÙO CHAÙY: Khi moät ñaùm chaùy xaûy ra, ôû nhöõng vuøng chaùy thöôøng coù nhöõng daáu hieäu sau: Löûa, khoùi, vaät lieäu choã chaùy bò phaù huûy. Nhieät ñoä vuøng chaùy taêng leân cao. Khoâng khí bò Oxy hoùa maïnh. Coù muøi chaùy, muøi kheùt. Ñeå ñeà phoøng chaùy chuùng ta coù theå döïa vaøo nhöõng daáu hieäu treân ñeå ñaët caùc heä thoáng caûm bieán laøm caùc thieát bò baùo chaùy. Kòp thôøi khoáng cheá ñaùm chaùy ôû giai ñoaïn ñaàu. Thieát bò baùo chaùy ñieän töû giuùp chuùng ta lieân tuïc theo doõi ñeå haïn cheá caùc vuï chaùy tai haïi, taêng cöôøng ñoä an toaøn, bình yeân cho moïi ngöôøi. II. CAÙC BOÄ PHAÄN CHÍNH: 1. Caûm bieán: Caûm bieán laø boä phaän heát söùc quan troïng, noù quyeát ñònh ñoä nhaïy vaø söï chính xaùc cuûa heä thoáng. Caûm bieán hoaït ñoäng döïa vaøo caùc ñaët tính vaät lyù cuûa vaät lieäu caáu taïo neân chuùng. Caûm bieán ñöôïc duøng ñeå chuyeån ñoåi caùc tín hieäu vaäy lyù sang tín hieäu ñieän. Caùc ñaëc tính cuûa caûm bieán: ñoä nhaïy, ñoä oån ñònh, ñoä tuyeán tính. a. Caûm bieán nhieät: Laø loaïi caûm bieán duøng ñeå chuyeån tín hieäu vaät lyù (nhieät ñoä) thaønh tín hieäu ñieän, ñaây laø loaïi caûm bieán coù ñoä nhaïy töông ñoái cao vaø tuyeán tính. Nguyeân taéc laøm vieäc cuûa noù laø doøng ñieän hay ñieän aùp thay ñoåi khi nhieät ñoä taïi nôi ñaët noù thay ñoåi. Tuy nhieân noù cuõng deã baùo ñoäng nhaàm khi nguoàn ñieän beân ngoaøi taùc ñoäng khoâng theo yù muoán. Caùc loaïi caûm bieán nhieät: IC caûm bieán: Laø loaïi caûm bieán baùn daãn ñöôïc cheá taïo thaønh caùc IC chuyeân duïng vôùi ñoä nhaïy cao, ñieän aùp ra thay ñoåi tæ leä thuaän vôùi nhieät ñoä, moät soá loaïi IC ñöôïc baùn beân ngoaøi thò tröôøng laø: LM355, LM334,… Thermistor: Thermistor laø loaïi ñieän trôû coù ñoä nhaïy nhieät raát cao nhöng khoâng tuyeán tính vaø vôùi heä soá nhieät aâm. Ñieän trôû giaûm phi tuyeán vôùi söï taêng cuûa nhieät ñoä. Vì baûn thaân laø ñieän trôû neân trong quaù trình hoaït ñoäng Thermistor taïo ra nhieät ñoä vì vaäy gaây sai soá lôùn. Thermo Couples: Thermo Couple bieán ñoåi ñaïi löôïng nhieät ñoä thaønh doøng ñieän hay ñieän aùp DC nhoû. Noù goàm hai daây kim loaïi khaùc nhau noái vôùi nhau taïi hai moái noái. Khi caùc daây noái ñaëc ôû caùc vò trí khaùc nhau, trong daây xuaát hieän suaát ñieän ñoäng. Suaát ñieän ñoäng tæ leä thuaän vôùi söï cheânh leänh nhieät ñoä giöõa hai moái noái. Thermo couple coù heä soá nhieät döông. b. Caûm bieán löûa: Khi löûa chaùy thì phaùt ra aùnh saùng hoàng ngoaïi, do ñoù ta söû duïng caùc linh kieän phaùt hieän tia hoàng ngoaïi ñeå phaùt hieän löûa. Nguyeân lyù hoaït ñoäng laø ñieän trôû cuûa caùc linh kieän thu soùng hoàng ngoaïi taêng, noù chuyeån tín hieäu aùnh saùng thu ñöôïc thaønh tín hieäu ñieän ñeå baùo ñoäng. Loaïi naøy raát nhaïy ñoái vôùi löûa. Tuy nhieân cuõng deã baùo ñoäng nhaàm neáu ta ñeå caûm bieán ngoaøi trôøi hoaëc gaàn aùnh saùng boùng ñeøn troøn. c. Caûm bieán khoùi: Thöôøng caûm bieán khoùi laø boä phaân rieâng bieät chaïy baèng PIN ñöôïc thieát keá ñeå laép ñaët treân traàn nhaø, treân töôøng. Ngoaøi yeâu caàu kyõ thuaät (chính xaùc, an toaøn) coøn ñoøi hoûi phaûi ñaûm baûo veà maët thaåm myõ. Coù hai caùch cô baûn ñeå thieát keá boä caûm bieán khoùi. Caùch thöù nhaát söû duïng nguyeân taéc Ion hoùa. Ngöôøi ta söû duïng moät löôïng nhoû chaát phoùng xaï ñeå Ion hoùa trong boä caûm bieán. Khoâng khí bò Ion hoùa seõ daãn ñieän vaø taïo thaønh moät doøng ñieän chaïy giöõa chaïy giöõa hai cöïc ñaõ ñôïc naïp ñieään. Khi caùc phaàn töû khoùi loït vaøo khu vöïc caûm nhaän ñöôïc Ion hoùa seõ laøm taêng ñieän trôû trong buoàng caûm nhaän vaø laøm giaûm luoàng ñieän giöõa hai cöïc. Khi luoàng ñieän giaûm xuoáng tôùi moät giaù trò naøo ñoù thì boä caûm bieán seõ phaùt hieän vaø phaùt tín hieäu baùo ñoäng. Caùch thöù hai söû duïng caùc linh kieän thu phaùt quang. Ngöôøi ta duøng linh kieän phaùt quang (Led, Led hoàng ngoaïi…) chieáu moät tia aùnh saùng qua vuøng baûo veä vaøo moät linh kieän thu quang (photo diode, photo transistor, quang trôû…). Khi coù chaùy, khoùi ñi ngang qua vuøng baûo veä seõ che chaén hoaëc laøm giaûm cöôøng ñoä aùnh saùng chieáu vaøo linh kieän thu. Khi cöôøng ñoä giaûm xuoáng tôùi moät giaù trò naøo ñoù thì boä caûm bieán seõ phaùt hieän vaø phaùt tín hieäu baùo ñoäng. Trong hai caùch naøy thì phöông phaùp thöù nhaát nhaïy hôn vaø hieäu quaû hôn phöông phaùp thöù hai, nhöng khoù thöïc thi, khoù laép ñaët. Coøn caùch thöù hai tuy ít nhaïy hôn nhöng linh kieän deã kieám vaø deã thöïc thi cuõng nhö deã laép ñaët. Moät nhöôïc ñieåm cuûa caùc loaïi caûm bieán naøy laø: maïch baùo ñoäng coù theå sai neáu vuøng baûo veä bò xaâm nhaäp bôûi caùc lôùp buïi… d. Moät soá loaïi caûm bieán quang: Caûm bieán quang coù theå hoaït ñoäng vôùi aùnh saùng thaáy ñöôïc hoaëc aùnh saùng hoàng ngoaïi, töû ngoaïi… - Quang trôû: Quang trôû coøn coù teân goïi khaùc laø vaät daãn quang (photo con) laø linh kieän thuï ñoäng ñöôïc taïo ra töø vaät lieäu baùn daãn maø beà maët cuûa noù ñöôïc phôi saùng vaø ñieän trôû cuûa noù giaõm khi taêng cöôøng ñoä aùnh saùng. Trong quang trôû caùc ñieän töû töï do ñöôïc taïo baèng naêng löôïng aùnh saùng, cöôøng ñoä aùnh saùng caøng lôùn thì soá löôïng ñieän töû töï do caøng lôùn. Loaïi caûm bieán naøy phi tuyeán vaø coù ñoä treå, do ñoù ít ñöôïc duøng. Ñaëc tuyeán cuûa moät loaïi quang trôû thoâng duïng: R 1M 10M 1000 1 1 10 100 1000 Cöôøng ñoä aùnh saùng 1m/m2 - Caûm bieán quang baùn daãn: Ñaây laø loaïi caûm bieán duøng caùc linh kieän baùn daãn quang nhö: diode, photo diode, phototransistor, …Khi coù aùnh saùng ñaäp vaøo maët baùn daãn laøm giaûi phoùng caùc ñieän töû töï do vaø caùc ñeän töû naøy seõ chuyeãn ñoäng taïo thaønh doøng ñieän. - Caûm bieán quang nhieät: Caûm bieán naøy chuyeån quang naêng thaønh nhieät naêng vaø nhieät naêng naøy seõ ñöôïc nhaän bieán baèng boä caûm bieán nhieät, nhieät ñoä tæ leä vôùi cöôøng ñoä aùnh saùng chieáu vaøo. Loaïi caûm bieán naøy coù ñoä nhaïy thaáp, thôøi gian ñaùp öùng chaäm. v Nhö vaäy moãi loaïi caûm bieán coù tính öu vieäc rieâng cuûa noù. Tuy nhieân neáu maïnh ôû maët naøy thì noù seõ bò haïn cheá ôû maët khaùc, chaúng haïn boä caûm bieán nhieät chæ phaùt hieän chaùy ôû vuøng gaàn caûm bieán caûm bieán vaø toû ra khoâng hieäu quaû ôû vuøng coù nhieàu nguoàn nhieät khoâng phaûi phaùt sinh ra chaùy. Coøn caùc boä caûm bieán khaùc coù theå phaùt hieän chaùy trong moät phaïm vi roäng nhöng coù ñaùm chaùy coù ít khoùi hoaëc do caùc taùc ñoäng khoâng phaûi do chaùy ôû taïi nôi ñaët caûm bieán thì seõ bò phaùt hieän nhaàm. Vì vaäy tuøy theo töøng vuøng, töøng nôi maø ta thieát keá nhöõng boä caûm bieán thích hôïp. 2.Thieát bò baùo ñoäng: Thieát bò baùo ñoäng goàm coù hai loaïi: Baùo ñoäng taïi choã. Baùo ñoäng qua ñieän thoaïi. Baùo ñoäng taïi choã ta coù theå söû duïng caùc chuoâng ñieän, maïch taïo coøi huï hay phaùt ra tieáng noùi ñeå caûnh baùo. Trong caùc heä thoáng baùo chaùy, boä caûm bieán thöôøng ñaët ôû nhöõng nôi deã chaùy vaø noái vôùi caùc thieát bò baùo ñoäng baèng daây daãn ñieän, do ñoù trong moät soá tröôøng hôïp coù theå laøm daây bò ñöùt. Vì vaäy moät heä thoáng baùo chaùy seõ trôû neân hieäu quaû khi söû duïng caùc boä phaùt voâ tuyeán. Trong ñoù boä phaän thu gaén vôùi maïch baùo ñoäng, coøn maïch phaùt gaén vôùi boä caûm bieán. Tuy nhieân vieäc laép ñaët gaëp nhieàu khoù khaên vaø giaù thaønh cao. Baùo ñoäng qua ñieän thoaïi giuùp ta ñaùp öùng nhanh caùc thoâng tin veà söï coá ñeán caùc cô quan chöùc naêng. Khi coù tín hieäu baùo ñoäng seõ töï ñoäng quay soá ñeán caùc cô quan nhö: nhaø rieâng, coâng an, phoøng chaùy chöõa chaùy… B. SÔ LÖÔÏC VEÀ HEÄ THOÁNG ÑIEÀU KHIEÅN: I. GIÔÙI THIEÄU CAÙC DAÏNG MAÏCH TOÀN TAÏI: 1. Maïch ñieåu khieån xa duøng hoàng ngoaïi: Maïch naøy thieát keá vaø thi coâng khoâng phöù c taïp, chi phí toån hao thaáp nhöng thuoäc loaïi ñieàu khieån giôùi haïn ôû khoaûng caùch. Khoaûng caùch ñieáu khieån caøng xa thì coâng suaát böùc xaï tia hoàng ngoaïi seõ giaûm ñi laøm cho maïch thu tia hoàng ngoaïi khoâng nhaän daïng ñöôïc tín hieäu ñieàu khieån. 2. Maïch ñieàu khieån xa duøng kyõ thuaät soá: Maïch naøy ñieàu khieån raát thích hôïp cho caùc thí nghieäm coù quy moâ nhoû, toán keùm, thieát keá vaø thi coâng raát phöùc taïp hôn caùc maïch ñieàu khieån khaùc vaø giôùi haïn veà chöùc naêng vì maïch ñieän do duøng quaù nhieàu IC soá neân maïch ñieän khaù phöùc taïp raát nhieàu. Khi muoán môû roäng caùc chöùc naêng ñieåu khieån theâm thì phaûi laøm laïi töø ñaàu neân khaû naêng thöïc thi raát nhoû. 3. Maïch ñieàu khieån baèng Vi xöû lyù: Maïch naøy raát thích hôïp trong caùc heä thoáng ñieàu khieån coù quy moâ lôùn, phöùc taïp vaø söû duïng nhieàu chöùc naêng. Maïch naøy khoâng phöùc taïp ôû phaàn cöùng nhöng ñoøi hoûi kyõ thuaät vieát chöông trình vi xöû lyù thaät toát. Maïch naøy thi coâng khaù phöùc taïp nhöng tình hieäu quaû cuûa noù raát cao so vôùi caùc maïch ñieàu khieån khaùc. Ñoái vôùi caùc maïch söû duïng nhieàu chöùc naêng thì ta neân duøng daïng maïch naøy vì noù seõ laøm ñôn giaûn raát nhieàu maïch phaàn cöùng buø laïi chöông trình phaàn meàm trôû neân raát phöùc taïp. II. HÖÔÙNG CHOÏN CUÛA ÑEÀ TAØI: Trong ñoà aùn naøy, chuùng em trình baøy hai phaàn “ baùo chaùy qua ñieän thoaïi vaø ñieàu khieån thieát bò baèng ñieän thoaïi” neân trong phaàn ñieàu khieån thieát bò chuùng em choïn maïch ñieåu khieån baèng vi xöû lyù. Söû duïng toaøn boä phaàn maïch chính vaø phaùt trieån theâm caùc phaøn boå sung thì chuùng em coù phaàn maïch ñieàu khieån neân phaàn maïch khoâng coù phöùc taïp maø laïi coøn raát ñôn giaûn. CHÖÔNG II: GIÔÙI THIEÄU VI ÑIEÀU KHIEÅN 8031 A. TOÙM TAÉC PHAÀN CÖÙNG: I. GIÔÙI THIEÄU MCS-51: (MCS-51: Family Overview) MCS-51 laø moät hoï IC ñieàu khieån (micro controller), ñöôïc cheá taïo vaø baùn treân thò tröôøng bôûi haõng Intel cuûa Myõ. Hoï IC naøy ñöôïc cung caáp caùc thieát bò bôûi nhieàu haõng saûn xuaát IC khaùc treân theá giôùi chaúng haïn: nhaø saûn xuaát IC SIEMENS cuûa Ñöùc, FUJITSU cuûa Nhaät vaø PHILIPS cuûa Haø Lan. Moãi IC trong hoï ñeàu coù söï hoaøn thieän rieâng vaø coù söï haõnh dieän rieâng cuûa noù, phuø hôïp vôùi nhu caàu cuûa ngöôøi söû duïng vaø yeâu caàu ñaët ra cuûa nhaø saûn xuaát. OTHER REGISTER 128 byte RAM 128 byte RAM 8032\8052 ROM 0K: 8031\8032 4K: 8031 8K:8052 INTERRUPT CONTROL INT1\ INT0\ SERIAL PORT TEMER0 TEMER1 TEMER2 8032\8052 CPU OSCILATOR BUS CONTROL I/O PORT SERIAL PORT EA\ RST ALE\ PSEN\ P0 P1 P2 P3 Address\Data TXD RXD TEMER2 8032\8052 TEMER1 TEMER1 IC 8031 laø IC tieâu bieåu trong hoï MCS-51 ñöôïc baùn treân thò tröôøng. Taát caû caùc IC trong hoï ñeàu coù söï töông thích vôùi nhau vaø coù söï khaùc bieät laø saûn xuaát sau coù caùi môùi maø caùi saûn xuaát tröôùc khoâng coù, ñeå taêng theâm khaû naêng öùng duïng cuûa IC ñoù. Chuùng coù ñaëc ñieåm nhö sau: 4k byte ROM (ñöôïc laäp trình bôûi nhaø saûn xuaát, chæ coù 8051) 128 byte RAM 4 Port I/O 8 bit 2 boä ñònh thôøi 16 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 bit 1. Boä nhôù baùn daãn ROM vaØ RAM: Boä nhôù laø moät phaàn cuûa caáu truùc vi ñieàu khieån, caùc chöông trình vaø döõ lieäu ñöôïc löu tröõ trong boä nhôù, boä nhôù baùn daãn goàm ROM vaø RAM. RAM: Laø boä nhôù baùn daãn ñoïc ñöôïc hoaët ghi ñöôïc nhöng khoâng kieân ñònh (khoâng kieân ñònh coù nghóa laø : noäi dung cuûa döõ lieäu seõ bò maát ñi khi maát ñieän). ROM: Laø boä nhôù baùn daãn chæ ñoïc vaø kieân ñònh (kieân ñònh coù nghóa laø : noäi dung döõ lieäu seõ khoâng bò maát ñi khi maát ñieän). Haàu heát caùc heä thoáng duøng RAM ñeå löu tröõ chöông trình thi haønh khi maø caàn giöõ laïi ñeå löu tröõ thì ghi vaøo ñóa ñeå caát, coøn ROM duøng ñeå löu tröõ thoâng tin heä thoáng ñeå khi caáp ñieän laø noù coù theå hoaït ñoäng heä thoáng. 2. Caùc BUS: Bus laø taäp hôïp nhieàu ñöôøng daãn, moãi bus coù moät hoaëc nhieàu muïc ñích khaùc nhau tuøy thuoäc vaøo caùch caøi ñaët cuûa ngöôøi söû duïng vaø caùch thieát keá cuûa nhaø saûn xuaát. CPU thöôøng coù 3 bus: bus ñieàu khieån, bus ñòa chæ, vaø bus döõ lieäu. Ñoái vôùi moãi hoaït ñoäng cuûa mình thì CPU laáy döõ lieäu treân bus döõ lieäu theo ñòa chæ ñöôïc cung caáp bôûi bus ñòa chæ vaø hoaït ñoäng ñoù laø hoaït ñoäng gì thì CPU thi haønh theo leänh ñöôïc caáp töø bus ñieàu khieån. Bus ñòa chæ cung caáp ñòa chæ cho CPU bieát ñòa chæ ñeå ñoïc hoaëc ghi döõ lieäu. Neáu CPU coù n ñöôøng ñòa chæ thì coù theå truy xuaát ñöôïc 2n oâ nhôù ñòa chæ. Bus ñieàu khieån laø hoãn hôïp caùc tín hieäu ñieàu khieån ñeå ñieàu khieån söï hoaït ñoäng cuûa CPU (trong CPU hoaëc CPU vôùi caùc thieát bò beân ngoaøi) ñeå ñoàng boä hoaït ñoäng treân caùc bus ñòa chæ, döõ lieäu. Bus döõ lieäu mang thoâng tin giöõa CPU vaø boä nhôù, hoaëc giöõa CPU vôùi caùc thanh ghi hoaëc giöõa CPU vôùi caùc thieát bò beân ngoaøi thoâng qua caùc thieát bò I/O. II. SÔ LÖÔÏC VEÀ CAÙC CHAÂN CUÛA mC 8031: 8031 laø IC vi ñieàu khieån (Microcontroller) do haõng intel saûn xuaát. mC 8031 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ù taùc duïng keùp, moãi ñöôøng coù theå hoaït ñoäng nhö caùc ñöôøng xuaát nhaäp hoaëc nhö caùc ñöôøng ñieàu khieån hoaëc laø thaønh phaàn cuûa bus döõ lieäu. P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL1 XTAL2 GDN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 3938 37 36 35 34 33 3231 30 29 28 27 26 25 24 23 22 21 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA\ ALE PSEN\ P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 8 0 5 1 Sô Ñoà Chaân Cuûa 8031 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 PSEN\ ALE EA\ RST RXD TXD INT0\ INT1\ T0 T1 WR\ RD\ Sô ñoà logic cuûa 8031 Chöùc naêng caùc chaân cuûa 8031: Port 0: Port 0 laø port coù hai chöùc naêng ôû caùc chaân töø 32¸39 cuûa 8031. Trong caùc thieát keá côõ nhoû khoâng duøng boä nhôù môû roäng noù coù chöùc naêng nhö caùc ñöôøng vaøo ra. Port 1: Port 1 laø port I\O ôû caùc chaân töø 1-8. Caùc chaân ñöôïc kyù hieäu laø P0.0, P0.1, P0.2,…P1.7, coù theå duøng cho giao tieáp vôùicaùc thieát bò beân ngoaøi neáu caàn. Port 1 khoâng coù chöùc naêng khaùc vì vaäy noù chæ duøng cho giao tieáp vôùi caùc thieát bò beân ngoaøi(chaúng haïn ROM, RAM,8255,8279,…). Port 2: Port2 laø moät port coù taùc duïng keùp ôû caùc chaân töø 21-28 ñöôïc duøng nhö caùc ñöôøng xuaát nhaäp hoaëc laø caùc byte cao cuûa Bus ñòa chæ ñoái vôùi caùc thieát keá côõ lôùn. Port3: Port3 laø moät port coù taùc duïng keùp töø chaân 10 –17. Caùc chaân cuûa port naøy coù nhieàu chöùc naêng, caùc coâng duïng chuyeån ñoåi coù lieân heä vôùi ñaëc tính ñaëc bieät cuûa 8031 nhö baûng sau: Bit Teân Chöù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\ Ngoõ vaøo döõ lieäu noái tieáp Ngoõ ra döõ lieäu noái tieáp Ngoõ vaøo ngaét cöùng thöù 0 Ngoõ vaøo ngaét cöùng thöù 1 Ngoõ vaøo cuûa temer\counter thöù 0 Ngoõ vaøo cuûa temer\counter thöù 1 Tín hieäu ghi döõ lieäu leân boä nhôù ngoaøi Tín hieäu ñoïc boä nhôù döõ lieäu ngoaøi Baûng: Chöùc naêng cuûa caùc chaân port 3 Ngoõ tín hieäu PSEN\ (Progam store enable): PSEN\ laø tín hieäu ngoõ ra ôû chaân 29 coù taùc duïng cho pheùp ñoïc boä nhôù chöông trình môû roäng vaø thöôøng ñöôïc noái vôùi chaân EO\ (output enable) cuûa EPROM cho pheùp ñoïc caùc byte maõ leänh. PSEN ôû 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 beân trong 8031 ñeå giaûi maõ leänh. Khi thi haønh chöông trình trong ROM noäi(mC 8051) PSEN\ seõ ôû möùc 1. Ngoõ tín hieäu ñieàu khieån ALE (Address latch enable): Khi 8031 truy xuaát boä nhôù beân ngoaøi, port0 coù chöùc naêng laø ñòa chæ vaø döõ lieäu do ñoù phaûi taùch ñöôøng ñòa chæ vaø döõ lieäu. Tín hieäu ra ALE ôû chaân thöù 30 duøng laøm tín hieäu ñieàu khieån ñeå giaûi ña hôïp caùc ñöôøng ñòa chæ vaø döõ lieäu khi keát noái vôùi IC choát. Tín hieäu ra ôû ALE laø moät xung trong khoaûng thôøi gian port 0 ñoùng vai troø laø ñòa chæ thaáp neân neân choát ñòa chæ hoaøn toaøn töï ñoäng. Caùc xung tín hieäu ALE coù toác ñoä baèng 1\6 taàn soá dao ñoäng treân vi ñieàu kkieån vaø coù theå ñöôïc duøng laøm tín hieäu clock cho caùc phaàn khaùc cuûa heä thoáng. Chaân ALE ñöôïc duøng laøm ngoõ vaøo xung laäp trình cho FEROM trong 8051. Ngoõ tín hieäu EA\ (External Access: truy xuaát döõ lieäu beân ngoaøi): Tín hieäu vaøo EA\ ôû chaân 31 thöôøng ñöôïc maéc leân möùc 1 hoaëc möùc 0. Neáu ôû möùc 1 thì mC8051 thi haønh chöông trình trong ROM noäi trong khoaûng ñòa chæ thaáp 4k. Neáu ôû möùc 0 thì 8031 thi haønh chöông trình töø boä nhôù môû roäng (vì mC8031 khoâng coù boä nhôù chöông trình treân chip). Chaân EA\ ñöôïc laáy laøm chaân caáp nguoàn 21v laäp trình cho FROM trong 8051. Ngoõ tín hieäu RST (Reset): Ngoõ tín hieäu RST ôû chaân 9 vaø ngoõ vaøo Reset cuûa 8031. Khi ngoõ vaøo tín hieäu ñöa leân möùc cao ít nhaát laø 2 chu kyø maùy, caùc thanh ghi beân trong ñöôïc naïp nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng. Khi caáp ñieän maïch töï ñoäng Reset. Ngoõ vaøo boä dao ñoäng X1, X2: Boä taïo dao ñoäng ñöôïc tích hôïp beân trong 8031, khi söû duïng 8031 ngöôøi thieát keá caàn gheùp noái theâm tuï, thaïch anh. Taàn soá thaïch anh ñöôïc söû duïng cho 8031 laø 12MHz. Nguoàn cho 8031: Nguoàn cho 8031 ñöôïc cung caáp ôû 2 chaân laø 20 vaø 40 caáp GND vaø Vcc. Nguoàn cung caáp ôû ñaây laø +5v. Khaû naêng cuûa taûi port 0 laø LS –TTL cuûa port 1,2,3 laø 4LS –TTL. Caáu truùc cuûa port ñöôïc xaây döïng töø FET laøm cho port coù theå xuaát nhaäp deã daøng. Khi FET taét thì port deã daøng duøng chöùc naêng xuaát. Khi FET hoïat ñoäng thì port laøm chöùc naêng nhaäp thì khi ñoù ngoõ nhaäp möùc cao seõ laøm hoûng port. III. KHAÛO SAÙT CAÙC KHOÁI BEÂN TRONG 8031 - TOÅ CHÖÙC BOÄ NHÔÙ: Boä nhôù trong 8031 ba goàm ROM vaø RAM. RAM trong 8031 bao goàm nhieàu thaønh 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. 8031 coù caáu truùc boä nhôù theo kieåu Harvard: coù nhöõng vuøng nhôù rieâng bieät cho chöông trình vaø döõ lieäu. Chöông trình vaø döõ lieäu coù theå chöùa beân trong 8051, nhöng 8051 vaãn coù theå keát noái vôùi 64k byte chöông trình vaø 64k byte döõ lieäu. Hai ñaëc tính caàn chuù yù khi duøng mC8031/8051 laø: Caùc thanh ghi vaø caùc port xuaát nhaäp ñaõ ñöôïc ñònh vò (ñöôïc ñònh vò coù nghóa laø xaùc ñònh) trong boä nhôù vaø coù theå truy xuaát tröïc tieáp gioáng nhö caùc boä nhôù ñòa chæ khaùc. Ngaên xeáp beân trong RAM noäi nhoû hôn so vôùi ROM ngoaïi nhö caùc boä vi xöû lyù khaùc. RAM beân trong 8031 ñöôïc phaân chia nhö sau: Caùc Bank thanh ghi coù ñòa chæ 00H ¸ 1FH. RAM ñòa chæ hoùa töøng bit coù ñòa chæ 20H ¸ 2FH. RAM ña duïng coù ñòa chæ 30H ¸ 7FH. Caùc thanh ghi coù chöùc naêng ñaëc bieät 80H ¸ FFH. GENERAL PURPOSE RAM 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 Bank 3 Bank 2 Bank 1 Bank 0 (Cho R0 ¸ R7) 7F 30 2F 3E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 18 17 10 0F 08 07 00 Byte address Bit address F7 F6 F5 F4 F3 F2 F1 F0 E7 E6 E5 E4 E3 E2 E1 E0 D7 D6 D5 D4 D3 D2 D1 D0 - - - BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 AF - - AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Not bit addressable 9f 9e 9d 9c 9b 9a 99 98 97 96 95 94 93 92 91 90 Not bit addressable Not bit addressable Not bit addressable Not bit addressable Not bit addressable 8F 8E 8D 8C 8B 8A 89 88 Not bit addressable Not bit addressable Not bit addressable Not bit addressable 87 86 85 84 83 82 81 80 Byte address Bit address FF F0 E0 D0 B8 B0 A8 A0 99 98 90 8D 8C 8B 8A 89 88 87 83 82 81 80 FF B ACC PSW IP P3 IE P2 SBUF SCON P1 TH1 TH0 TL1 TL0 TMOD TCON PCON DPH DPL SP P0 Hình II.2.1: Sô ñoà toå chöùc boä nhôù a.RAM ña duïng: Maëc duø treân hình veõ cho thaáy 80 byte ñaduïng chieám caùc ñòa chæ töø 30H¸7FH, 32 ñòa chæ döôùi töø 00H¸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 cuõng ñaõ ñònh vôùi muïc ñích khaùc). Moïi ñòa chæ trong vuøng RAM ña duïng ñeàu coù theå truy xuaát töï do duøng kieåu ñòa chæ giaùn tieáp hoaëc tröïc tieáp. Ví duï: ñeå ñoïc noäi dung ôû ñòc chæ 5FH cuûa RAM noäi vaøo thanh ghi tích luõy A, coù theå duøng moät trong hai caùch sau: - Caùch 1: MOV A, 5FH - Caùch 2: Ngoaøi caùch treân RAM beân trong cuõng coù theå ñöôïc truy xuaát baèng caùch duøng ñòa chæ giaùn tieáp hoaëc tröïc tieáp qua R0 hay R1: MOV R0, #%FH MOV A, @R0 Leänh ñaàu tieân duøng ñeå naïp ñòa chæ töùc thôøi #5FH vaøo thanh ghi R0, leänh thöù 2 duøng ñeå chuyeån noäi dung cuûa oâ nhôù coù ñòa chæ maø R0 ñang chæ tôùi vaøo thanh ghi tích luõy A. b. RAM ñòa chæ hoùa töøng bit: 8031 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù coù 128bit chöùa caùc byte coù ñòa chæ töø 20H¸2FH vaø caùc bit coøn laïi chöùc trong nhoùm thanh ghi coù chöùa naêng ñaëc bieät. YÙ töôûng truy xuaát töøng bit baèng phaàn meàm laø moät ñaëc tính maïnh 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. Maø ñieàu naøy ñoái vôùi vi xöû lyù ñoøi hoûi phaûi coù moät chuoãi leänh ñoïc - söûa - ghi ñeå ñaït ñöôïc muïc ñích töông töï nhö vi ñieàu khieån. Ngoaøi ra caùc port cuõng coù theå truy xuaát ñöôïc töøng bit laøm ñôn giaûn ñi phaàn meàm xuaát nhaäp töøng bit. 128 bit truy xuaát töøng bit naøy cuõng coù theå truy xuaát nhö caùc byte hoaëc caùc bit phuï thuoäc vaøo leänh ñöôïc duøng. Ví duï: ñeå ñaët bit thöù 57 ta duøng leänh sau: SETB 67H c.Caùc Bank thanh ghi: 32 byte thaáp cuûa boä nhôù RAM noäi ñöôïc duøng cho caùc bank thanh ghi. Boä leänh 8031 hoã trôï 8 thanh ghi noùi treân coù teân laø R0 ¸ R7 vaø theo maëc ñònh khi reset heä thoáng, caùc thanh ghi naøy coù ñòa chæ töø 00H ¸ 07H. Ví duï: leänh sau ñaây seõ ñoïc noäi dung cuûa oâ nhôù coù ñòa chæ 05H vaøo thanh ghi A. MOV A, R5 Ñaây laø leänh 1 byte duøng ñòachæ thanh ghi. Tuy nhieân yeâu caàu treân coù theå 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 ¸ R7 seõ ngaén hôn vaø nhanh hôn so vôùi caùc leänh coù chöùc naêng töông töï duøng kieåu ñòa chæ tröïc tieáp. Caùc döõ lieäu ñöôïc duøng thöôøng xuyeân neân duøng moät trong caùc thanh ghi naøy. Do coù 4 bank thanh ghi neân taïi moät thôøi ñieåm chæ coù moät bank thanh ghi ñöôïc truy xuaát bôûi caùc thanh ghi R0 ¸ R7. Ñeå chuyeån ñoåi vieäc truy xuaát caùc bank thanh ghi ta phaûi thay ñoåi caùc bit choïn bank trong thanh ghi trong thanh ghi traïng thaùi. Giaû söû bank thanh ghi thöù 3 ñang ñöôïc truy xuaát leänh sau ñaây seõ chuyeån noäi dung cuûa thanh ghi A vaøo oâ nhôù RAM coù ñòa chæ 18H: MOV R0, A Toùm laïi yù töôûng duøng caùc bank thanh ghi cho pheùp ta chuyeån höôùng chöông trình nhanh vaø hieäu quaû hôn. IV. CAÙC THANH GHI COÙ CHÖÙC NAÊNG ÑAËC BIEÄT: Caùc thanh ghi cuûa mC8031/8051 ñöôïc truy xuaát ngaàm ñònh bôûi boä leänh. Ví duï “INC A” seõ taêng noäi dung thanh ghi A leân moät ñôn vò. Taùc ñoäng naøy ñöôïc ngaàm ñònh trong maõ leänh. Caùc thanh ghi trong mC8031/8051 ñöôï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 boä nhôù 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). Cuõng nhö R0 ¸ R7, 8031 coù 21 thanh ghi coù chöùc naêng ñaëc bieät ôû vuøng treân cuûa RAM noäi coù ñòa chæ töø 80H¸FFH. Chuù yù: taát caû 128 ñòa chæ töø 80H ¸ FFH khoâng ñöôïc ñònh nghóa chæ coù 21 thanh ghi coù chöùc naêng ñaëc bieät ñöôïc ñònh nghóa saún caùc ñòa chæ. Ngoaïi tröø thanh ghi A coù theå ñöôïc truy xuaát ngaàm nhö ñaõ noùi, ña soá caùc thanh ghi coù chöùc naêng ñaëc bieät SFR coù ñòa chæ hoùa töøng bit hoaëc byte. Chuù yù: moät vaøi thanh ghi SFR coù theå ñòa chæ hoùa töøng bit hoaëc byte neân ngöôøi laäp trình phaûi thaän troïng khi truy xuaát bit hoaëc byte. 1. Töø traïng thaùi chöông trình: (PSW: Program Status Word) Thanh ghi traïng thaùi chöông trình PSW (Program Status Word) ôû ñòa chæ D0H chöùa caùc bit traïng thaùi ñöôïc toùm taét nhö 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 0V D2H Côø traøn PSW.1 0V D1H Döï tröõ PSW.0 PORT D0H Côø parity chaún leû Baûng : Caùc bit cuûa thanh ghi PSW Côø nhôù (CY): Côø nhôù Carry coù taùc duïng keùp. Thoâng thöôøng noù ñöôïc duøng cho caùc leänh toaùn hoïc: C = 1 neáu pheùp toaùn coäng coù traøn hoaëc pheùp tröø coù möôïn vaø ngöôïc laïi C = 0 neáu pheùp toaùn coäng khoâng traøn vaø pheùp tröø khoâng coù möôïn. Ví duï: leänh sau seõ traû veà thanh ghi tích luõy keát quaû 00H vaø set côø nhôù trong PSW neáu thanh ghi tích luõy A chöùa FFH. ADD C,25H Côø nhôù phuï AC: (AC: Auxillary Carry Flag) Khi coäng caùc soá BCD, côø nhôù phuï AC = 1 neáu keát quaû 4 bit thaáp trong khoaûng 0A¸0F vaø ngöôïc laïi côø nhôù phuï AC = 0. Côø 0 (F0): Côø 0 laø moät bit côø ña duïng duøng cho caùc öùng duïng cho ngöôøi duøng. Caùc bit choïn bank thanh ghi truy xuaát (RS0 vaø RS1): Caùc bit choïn bank thanh ghi nhaèm ñeå xaùc ñònh bank thanhghi ñöôïc truy xuaát. Chuùng ñöôïc xoaù sau khi Reset heä thoáng vaø ñöôïc thay ñoåi baèng phaàn meàm neáu caàn. Ví duï: 3 leänh sau ñaây cho pheùp bank thanh ghi 3 ñöôïc choïn vaø di chuyeån noäi dung thanh ghi R7 (coù ñòa chæ byte 1FH) vaøo thanh ghi A. SETB RS1 SETB RS0 MOV A, R7 Khi chöông trình ñöôïc dòch sang maõ maùy cho 8031 thi haønh, caùc ñòa chæ bit ñöôïc thay theá baèng caùc kyù töï RS1 vaø RS0. Vaäy leänh SETB RS1 laø SETB 0DH. Côø traøn 0V: (Overlow Flag) Côø traøn coù taùc duïng nhö sau: 0V = 1 sau moät leänh coäng hoaëc tröø neáu coù pheùp toaùn bò traøn. Khi caùc soá coù daáu ñöôïc coäng hay tröø vôùi nhau, phaàn meàm coù theå kieåm tra bit naøy ñeå kieåm tra xem keát quaû coù trong taàm xaùc ñònh hay khoâng. Khi coù soá khoâng daáu ñöôïc coäng, bit 0V coù theå ñöôïc boû qua. Caùc keát quaû lôùn hôn +127 hoaëc nhoû hôn –128 thì bit 0V=1. Ví duï: pheùp coäng sau bò traøn vaø bit 0V seõ ñöôïc set: 0FH + 7FH = 8EH. Keát quaû laø moät soá coù daáu 8E ñöôïc xem nhö –116, khoâng phaûi laø keát quaû ñuùng 142 vì vaäy bit 0V = 1. 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 A (byte thaáp) vaø B (byte cao). Leänh DIV AB seõ chia A cho B vaø traû keát quaû phaàn nguyeân trong A vaø phaàn dö trong B. Thanh ghi coù theå ñöôïc xem laø moät thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa töøng bit vôùi caùc ñòa chæ töø F0H ¸ F7H. 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 ngaên xeáp. Caùc leänh treân ngaên xeáp bao goàm caùc leänh 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õ laøm giaûm SP. Ngaên xeáp cuûa 8031 ñöôïc giöõ trong RAM ngoaïi vaø 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 8031. Ví duï: Ñeå khôûi ñoäng SP vôùi ngaên xeáp baét ñaàu tai ñòa chæ 60H, thì duøng leänh sau ñaây: MOV SP, #5F Vôùi leänh treân thì ngaên xeáp cuûa 8031 chæ coù 32 byte vì ñòa chæ cao nhaát cuûa RAM treân vi ñieàu khieån laø 7F. Sôû dó giaù trò 5F ñöôïc naïp vaøo SP vì SP seõ taêng leân 60H tröôùc khi caát byte döõ lieäu ñaàu tieân. Khi Reset 8031, SP seõ mang giaù trò maëc ñònh laø 07H vaø döõ lieäu ñaàu tieân seõ ñöôïc naïp vaøo oâ nhôù ngaên xeáp coù ñòa chæ 08H. Neáu phaàn meàm öùng duïng khoâng khôûi ñoäng SP moät giaù trò môùi thì bank thanh ghi l coù theå caû 2 vaø 3 seõ khoâng duøng ñöôïc vì duø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 leänh PUSH vaø leänh POP ñeå löu tröõ taïm thôøi vaø laáy döõ lieäu, hoaëc truy xuaát ngaàm baèng leänh goïi chöông trình con (ACALL vaø LCALL) vaø leänh trôû veà (RET, RETL) ñeå löu giaù trò cuûa boä ñeám chöông trình khi baét ñaàu thöïc hieän chöông trình con vaø laáy laïi khi keát thuùc chöông trình con. 4. Con troû döõ lieäu: (DPTR: Data Poiter) 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) 3 leänh sau ñaây seõ ghi ñòa chæ 55H vaøo RAM ngoaïi ôû ñòa chæ 1000H: MOV A,#55H MOV DPRT, ##1000H MOVX@ DPTR,A Leänh ñaàu tieân duøng ñeå naïp döõ lieäu 55H vaøo thanh ghi tích luõy. Leänh thöù 2 ñöôïc duøng ñeå naïp döõ lieäu 1000H vaøo con troû döõ lieäu DPTR. Leänh thöù 3 seõ di chuyeån noäi dung trong thanh ghi A (55H) vaøo oâ nhôù RAM ngoaøi coù ñòa chæ chöùa trong DPTR (laø 1000H). 5. Caùc thanh ghi port xuaát nhaäp: Caùc Port cuûa 8031 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 naøy coù theå truy xuaát töøng bit neân raát thuaän tieän trong chöùc naêng giao tieáp. Ví duï: Neáu moät motor ñöôïc noái vôùi cuoän daây coù transitor laù._.i ñeán bit 7 cuûa port 1, 8031 coù baät vaø taét baèng moät leänh ñôn: SETB P1.7 CLR P1.7 Vaø coù theå thöïc hieän töông töï baèng hai leänh sau: SETB P1.7 CLR 97H 6. Caùc thanh ghi Timer: 8031 coù 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 (TLO: byte thaáp) vaø 8CH (THO: byte cao). Timer 1 ôû ñòachæ 8BH (TL1: byte thaáp)vaø 8DH (TH1: byte cao) vieäc khôûi ñoäng Timer ñöôïc set bôûi Timer mode (TMOD) ôû ñòa chæ 89 vaø thanh ghi ñieàu khieån Timer (TCON) ôû ñòa chæ 88H. Chæ coù TCON ñöôïc ñòa chæ hoùa töøng bit. 7. Caùc thanh ghi port noái tieáp: 8031 chöùa 1 port noái tieáp duøng 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 moderm hoaëc giao tieáp vôùi caùc IC khaùc (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 phaùt vaø döõ lieäu nhaän. Khi truyeàn döõ lieäu thì ghi leân SUBF, khi nhaän döõ lieäu thì ñoïc SUBF. 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). 8. Caùc thanh ghi ngaét: 8031 coù caáu truùc 5 nguoàn ngaét vaø 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 thanh ghi cho pheùp ngaét (LE) ôû ñòa chæ A8H. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit. 9. Thanh ghi ñieàu khieån coâng suaát: Thanh ghi ñieàu khieån coâng suaát (PCON) ôû ñòa chæ 97H chöùa nhieàu bit ñieàu khieån chuùng ñöôïc toùm taét ôû baûng sau: Bit Kí hieäu YÙ nghóa 7 6 5 4 3 2 1 0 SMOD - - - GF1 GF0 PD IDL Bit gaáp ñoâi toác ñoä band, 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 Khoâng yù nghóa Khoâng yù nghóa Khoâng yù nghóa Bit côø ña duïng 1 Bit côø ña duïng 2 Giaûm coâng suaát, ñöôïc set hoaït mode giaûm coâng suaát, chæ thoaùt khi reset. Mode chôø, set ñeå kích hoaït mode chôø, chæ thoaùt khi coù ngaét hoaëc reset heä thoáng. V. BOÄ NHÔÙ NGOAØI: 8031 coù khaû naêng môû roäng boä nhôù leân ñeán 64 kB boä nhôù chöông trình vaø 64 KB boä nhôù döõ lieäu beân ngoaøi. Do ñoù coù theå duøng ROM vaø RAM neáu caàn. Khi duøng boä nhôù ngoaøi port 0 cuõng laø moät port I/O thuaàn tuyù. Noù ñöôïc keát hôïp vôùi Bus ñòa chæ A0 ñeán A7 vaø Bus döõ lieäu D0 ñeán D7 vôùi tín hieäu ALE ñeå choát byte thaáp cuûa Bus ñòa chæ khi baét ñaàu moãi chu kyø nhôù. Port 2 ñöôïc cho pheùp byte cao cuûa ñòa chæ. 1. Truy xuaát boä nhôù chöông trình ngoaøi: Boä nhôù chöông trình beân ngoaøi laø moät boä nhôù ROM ñöôïc cho pheùp bôûi tín hieäu PSEN\. Hình veõ sau ñaây seõ moâ taû caùch keát noái 1 boä nhôù EPROM vôùi mC8031/8051. OSC ALE PSEN\ PORT2 PORT1 PCL Maõ leänh PCL Byte 2 PC PCH (byte cuûa PC) P1 P1 P1 P2 P2 P1 P2 P1 P1 P2 P2 P2 P1 P2 P1 S1 S2 S3 S4 S5 S6 S1 Moät chu kyø maùy Giaûn ñoà thôøi gian ñoïc boä nhôù chöông trình ngoaøi Port 0 EA\ ALE Port 2 PSEN\ D7-D0 A7-A0 EPROM A15-A8 OE\ D Q 74373 E Moät chu kyø cuûa mC8031/8051 coù 12 xung nhòp. Neáu moät dao ñoäng treân chip ñöôïc laùi baèng thaïch anh 12 Mhz thì moät chu kyø maùy keùo daøi 1ms. Trong moät chu kyø maùy seõ coù 2 xung ALE vaø 2 byte ñöôïc ñoïc töø boä nhôù chöông trình (neáu leänh hieän haønh laø leänh 2 byte thì byte ñöôïc loaïi boû). Giaûn ñoà thôøi gian cuûa moät laàn laáy leänh ñöôïc veõ ôû hình treân: 2. Truy xuaát boä nhôù döõ lieäu ngoaøi: Boä nhôù döõ lieäu ngoaøi laø moät boä nhôù RAM ñöôïc cho pheùp ghi /ñoïc baèng caùc tín hieäu ñieàu khieån WR\ vaø RD\. mC8031/8051 coù moät leänh duy nhaát truy xuaát döõ lieäu cuûa boä nhôù döõ lieäu ngoaøi laø MOVX duøng con troû 16 bit (PDRT) hoaëc R0 vaø R1 xem nhö thanh ghi ñòa chæ. 3. Giaûi maõ ñòa chæ: Neáu nhieàu EPROM hoaëc nhieàu RAM ñöôïc giao tieáp vôùi 8031 thì caàn coù maïch giaûi maõ ñòa chæ. Maïch giaûi maõ cuõng ñöôïc thöïc hieän nhö caùc vi xöû lyù khaùc, söû duïng IC 74138 ñeå giaûi maõ. 4. Xeáp choàng caùc vuøng boä 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 8031 laø toå chöùc boä nhôù nhö theá naøo ñeå coù theå söûa ñoåi chöông trình vaø coù theå ghi trôû laïi noù ñöôïc chöùa trong boä nhôù ROM. 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 boä nhôù 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 vôùi moät coång AND coù hai ngoõ vaøo PSEN\ vaø RD\. Sô ñoà maïch nhö hình sau cho pheùp boä nhôù RAM coù hai chöùc naêng vöøa laø boä nhôù chöông trình vöøa laø boä nhôù döõ lieäu: WR\ RAM OE\ WR\ RD\ PSEN\ Vaäy moät chöông trình coù theå ñöôïc taûi vaøo RAM baèng caùch xem noù nhö moät boä nhôù döõ lieäu vaø thi haønh baèng caùch xem noù nhö moät boä nhôù chöông trình. VI. NGOÕ VAØO TÍN HIEÄU RESET: mC8031/8051 coù ngoõ vaøo Reset RST taùc ñoäng ôû möùc cao trong khoaûng thôøi gian hai chu kyø xung maùy, sau ñoù xuoáng möùc thaáp ñeå 8031 baét ñaàu laøm vieäc RST coù theå kích baèng tay baèng moät phím thöôøng hôû, sô ñoà maïch Reset nhö sau: +5v 10mf 10kW 100kW Traïng thaùi cuûa taát caû thanh ghi trong mC8031/8051 sau khi Reset heä thoáng ñöôïc toùm taét nhö sau: Thanh ghi Noäi dung Ñeám chöông trình PC Thanh ghi tích luõy A Thanh ghi B Thanh ghi traïng thaùi PSW SP DPRT Port 0 ñeán port 3 IP IE Caùc thanh ghi ñònh thôøi SCON SBUF PCON(HMOS) PCON(CMOS) 0000H 00H 00H 00H 07H 0000H FFH XXX0 0000B 0XX0 0000B 00H 00H 00H 0XXX XXXXB 0XXX 0000B 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 taïi 0000H. Khi Reset trôû laïi möùc thaáp, vieäc thi haønh chöông trình luoân baét ñaàu ôû ñòa chæ ñaàu tieân trong boä nhôù chöông trình: ñòa chæ 0000H. Noäi dung cuûa RAM treân chip khoâng bò thay ñoåi bôûi leänh Reset. B. HOAÏT ÑOÄNG CUÛA BOÄ ÑÒNH THÌ TIMER: I. GIÔÙI THIEÄU: Moät ñònh nghóa ñôn giaûn cuûa timer laø moät chuoãi caùc flip-flop chia ñoâi taàn soà noái tieáp vôùi nhau, chuùng nhaän tín hieäu vaøo laøm nguoàn xung nhòp. Ngoõ ra cuûa taàng cuoái laøm xung nhòp cho flip - flop baùo traøn cuûa timer (flip - flop côø). Giaù trò nhò phaân trong caùc flip - flop cuûa timer coù teå xem nhö ñeám soá xung nhòp (hoaëc caùc söï kieän) töø khôûi ñoäng timer. Ví duï timer 16 bit seõ ñeám töø 0000H ñeán FFFFH. Côø baùo traøn seõ leân 1 khi soá ñeám traøn töø FFFFH ñeán 0000H. mC8031/8051 coù hai timer 16 bit, moãi timer coù 4 caùch laøm vieäc. Ngöôøi ta söû duïng caùc timer ñeå: Ñònh khoaûng thôøi gian. Ñeám söï kieän. Taïo toác ñoä baud cho port noái tieáp trong mC8051/8031. Trong caùc öùng duïng ñònh nghóa khoaûng thôøi gian, ngöôøi ta söû duïng laäp trình timer ôû moät khoaûng ñeàu ñaën vaø ñaët côø traøn timer. Côø ñöôïc söû duïng ñeå ñoàng boä hoùa chöông trình ñeå thöïc hieän moät taùc ñoäng nhö kieåm tra traïng thaùi cuûa caùc ngoõ vaøo hoaëc gôûi söï kieän ra caùc ngoõ ra. Caùc öùng duïng khaùc coù theå söû duïng vieäc taïo xung nhòp ñeàu ñaën cuûa timer ñeå ño thôøi gian troâi qua giöõa hai söï kieän (Ví duï: ño ñoä roäng xung). Ñeám söï kieän duøng ñeå xaùc ñònh soá laàn xaûy ra cuûa moät soá söï kieän. Moät “söï kieän” laø baát cöù taùc ñoäng ngoaøi naøo coù theå cung caáp moät chuyeån traïng thaùi treân moät chaân cuûa 8051/8031. Truy xuaát caùc timer cuûa 8051/8031 duøng 6 thanh ghi chöùc naêng ñaëc bieät trong baûng sau: SFR MUÏC ÑÍCH Ñòa chæ Ñòa chæ hoùa töøng bit TCON Ñieàu khieån timer 88H Coù TMOD Cheá ñoä timer 89H Khoâng TLO Byte thaáp cuûa timer 0 8AH Khoâng TL1 Byte thaáp cuûa timer 1 8BH Khoâng TH0 Byte cao cuûa timer 0 8CH Khoâng TH1 Byte cao cuûa timer 1 8DH Khoâng II. THANH GHI CHEÁ ÑOÄ TIMER (TMOD): Thanh ghi TMOD chöùa hai nhoùm 4 bit duøng ñeå ñaët cheá ñoä laøm vieäc cho timer 0 vaø timer1. Bit Teân Timer Moâ taû 7 GATE 1 Bit (môû coång), khi leân, timer chæ chaïy khi INT1 ôû möùc cao 6 C/ 1 Bit choïn cheá ñoä counter/ timer 1 = Boä ñeám söï kieän 0 = Boä ñònh khoaûng thôøi gian 5 M1 1 Bit1 cuûa cheá ñoä ( mode) 4 M0 1 Bit 0 cuûa cheá ñoä 00: Cheá ñoä 0: timer 13 bit 01: Cheá ñoä 1: timer 16 bit 10: Cheá ñoä 2: töï ñoäng naïp laïi 8 bit 11: Cheá ñoä 3: taùch timer 3 GATE 0 Bit (môû) coång 2 C/ 0 Bit choïn counter/ timer 1 M1 0 Bit 1 cuûa cheá ñoä 0 M0 0 Bit 0 cuûa cheá ñoä Toùm taét thanh ghi TMOD. III. THANH GHI ÑIEÀU KHIEÅN TIMER (TCON) Thanh ghi TCON chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån cho timer0 vaø timer1. Bit Kyù hieäu Ñòa chæ Moâ taû TCON.7 TF1 8FH Côø baùo traøn timer. Ñaët bôûi phaàn cöùng khi traøn, ñöôïc xoùa bôûi phaàn meàm hoaëc phaàn cöùng khi boä xöû lí chæ ñeán chöông trình phuïc vuï ngaét. TCON.6 TR1 8EH Bit ñieàu khieån timer1 chaïy. Ñaët/ xoùa baèng timer ñeå cho phaàn meàm chaïy/ ngöng. TCON.5 TF0 8DH Côø baùo traøn timer 0. TCON.4 TR0 8CH Bit ñieàu khieån timer chaïy. TCON.3 IE1 8BH Côø caïnh ngaét caïnh beân ngoaøi. Ñaët bôûi phaàn cöùng khi phaùt hieän moät caïnh xuoáng ôû INT1:xoùa baèng phaàn meàm hoaëc phaàn cöùng khi CPU chæ ñeán chöông trình phuïc vuï ngaét. TCON.2 IT1 8AH Côø kieåu ngaét moät beân ngoaøi. Ñaët/xoùa baèng phaàn meàm ñeå ngaét ngoaøi tích cöïc caïnh xuoáng/möùc thaáp. TCON.1 IE0 89H Côø caïnh ngaét 0 beân ngoaøi TCON.0 ITO 88H Côø kieåu ngaét 0 beân ngoaøi Toùm taét thanh ghi TCON. IV. CHEÁ ÑOÄ TIMER: 1. Cheá ñoä 0 – Cheá ñoä TIMER 13 BIT: Ñeå töông thích vôùi 804 (coù tröôùc 8051). 3 bit cao cuûa TLx (TL0 vaø hoaëc TL1) khoâng duøng. TLx (5 bit) THx (8 bit) TFx Xung nhòp timer Côø baùo traøn 2. Cheá ñoä 1 – Cheá ñoä TIMER 16 BIT: Hoaït ñoäng nhö timer 16 bit ñaày ñuû. Côø baùo traøn laø bit TFx trong TCON coù theå ñoïc hoaëc ghi baèng phaàn meàm. MSB cuûa giaù trò trong thanh ghi timer laø bit 7 cuûa THx vaø LSB laø bit 0 cuûa TLx. Caùc thanh ghi timer (TLx/THx) coù theå ñoïc hoaëc ghi baát cöù luùc naøo baèng phaàn meàm. TLx (8 bit) THx (8 bit) TFx Xung nhòp timer Côø baùo traøn 3. Cheá ñoä 2 – Cheá ñoä töï ñoäng naïp laïi 8 bit: TLx hoaït ñoäng nhö 1 timer 8 bit, trong ñoù THx vaãn giöõ nguyeân giaù trò khi naïp. Khi soá ñeám traøn töø FFH ñeán 00H, khoâng nhöõng côø timer ñöôïc xeùt maø giaù trò trong THx ñoàng thôøi ñöôïc naïp vaøo TLx, vieäc ñeám tieáp tuïc töø giaù trò naøy leân ñeán FFH xuoáng 00H vaø naïp laïi .v.v…Cheá ñoä naøy raát thoâng duïng vì söï traøn timer xaûy ra trong nhöõng khoaûng thôøi gian nhaát ñònh vaø tuaàn hoaøn moät khi khôûi ñoäng TMOD vaø THx. TLx (8 bit) THx (8 bit) TFx Xung nhòp timer Côø baùo traøn 4. Cheá ñoä 3 – Cheá ñoä taùch timer: Timer 0 taùch thaønh 2 timer 8 bit (TL0 vaø TH0), TL0 coù côø baùo traøn laø TF0 vaø TH0 coù côø baùo traøn laø TF1. Timer 1 ngöng cheá ñoä 3, nhöng coù theå khôûi ñoäng baèng caùch chuyeån sang cheá ñoä khaùc. Giôùi haïn duy nhaát laø côø baùo traøn TF1 khoâng coøn bò taùc ñoäng khi timer 1 bò traøn vì noù ñöôïc noái vôùi tôùi TH0. Khi timer 1 ôû cheá ñoä 3, coù theå coù theå cho timer 1 chaïy vaø ngöng baéng caùch chuyeån noù ra ngoaøi vaø vaøo cheá ñoä 3. Noù vaãn coù theå ñöôïc söû duïng bôûi port noái tieáp nhö boä taïo toác ñoä baud hoaëc noù coù theå söû duïng baèng baát cöù caùch naøo maø khoâng caàn ngaét (vì noù khoâng coøn ñöôïc noái vôùi TF1). TL1 TH1 TH0 TH0 TF1 TF0 Xung nhòp timer Xung nhòp timer 1/12 Fose Côø baùo traøn 5. Nguoàn taïo xung nhòp: Coù hai nguoàn taïo xung nhòp coù theå coù, ñöôïc choïn baèng caùch ghi vaøo C/T (counter/timer) trong TMOD khi khôûi ñoäng timer. Moät nguoàn taïo xung nhòp duøng cho ñònh khoaûng thôøi gian, caùi khaùc cho ñeám söï kieän. ¸ 12 Boä dao ñoäng trong C/T Thaïch anh Chaân T0 hoaëc T1 Xung nhòp timer 0: (leân) ñònh khoaûng thôøi gian Ñònh khoaûng thôøi gian (interval timing): Neáu C/T=0 hoaït ñoäng timer lieân tuïc ñöôïc choïn vaøo timer ñöôïc duøng cho vieäc ñònh khoaûng thôøi gian. Luùc ñoù, timer laáy xung nhòp töø boä dao ñoäng treân chip. Boä chia 12 ñöôïc theâm vaøo ñeå giaûm taàn soá xung nhòp ñeán giaù trò thích hôïp cho caùc öùng duïng. Nhö vaäy, thaïch anh 12 MHz seõ cho toác ñoä xung nhòp timer 1 MHz. Baùo traøn timer xaûy ra sau moät soá (coá ñònh) xung nhòp, phuï thuoäc vaøo giaù trò ban ñaàu ñöôïc naïp vaøo caùc thanh ghi timer TLx/THx. Ñeám söï kieän (Event Couting): Neáu C/T=1, timer laáy nguoàn xung nhòp töø beân ngoaøi.Trong haàu heát caùc öùng duïng, nguoàn beân ngoaøi naøy cung caáp cho timer moät xung khi xaûy ra moät söï kieän – timer duøng ñeám söï kieän. Soá söï kieän ñöôïc xaùc ñònh baèng phaàn meàm baèng caùch ñoïc caùc thanh ghi TLx/THx vì giaù trò 16 bit trong thanh ghi naøy taêng theâm moät cho moãi söï kieän. Nguoàn xung nhòp ngoaøi coù töø thay ñoåi chöùc naêng cuûa caùc port 3, bit 4 cuûa port 3 (P3.4) duøng laøm ngoõ vaøo taïo xung nhòp beân ngoaøi cho timer 0 vaø ñöôïc goïi laø “T0”. Vaø P3.5 hay “T1” laø ngoõ vaøo taïo xung nhòp cho timer 1. Trong caùc öùng duïng boä ñeám, caùc thanh ghi Timer ñöôïc taêng theâm 1 töông öùng vôùi chuyeån töø 1 xuoáng 0 ôû ngoõ vaøo beân ngoaøi: Tx, ngoõ vaøo beân ngoaøi ñöôïc laáy maãu trong S5P2 cuûa moïi chu kyø maùy. Nhö vaäy, khi ngoõ vaøo cao trong moät chu kyø vaø thaáp trong moät chu kyø keá thì soá ñeám ñöôïc taêng theâm moät. Giaù trò môùi ñöôïc xuaát hieän trong caùc thanh ghi trong S3P1 cuûa chu kyø theo sau chu kyø trong ñoù phaùt hieän söï chuyeån tieáp. Do ñoù, maát 2 chu kyø maùy (2ms) ñeå ghi nhaän söï chuyeån 1 sang 0, taàn soá ngoaøi toái ña laø 500KHz (giaû söû hoaït ñoäng ôû 12 MHz). 6. Baét ñaàu, döøng vaø ñieàu khieån caùc Timer: Phöông phaùp ñôn giaûn nhaát ñeå baét ñaàu (cho chaïy) vaø döøng caùc timer laø duøng caùc bit ñieàu khieån chaïy: TRx trong TCON. TRx bò xoùa sau khi Reset heä thoáng. Nhö vaäy, caùc timer theo maëc nhieân laø bò caám (bò döøng). TRx ñöôïc ñaët leân 1 baèng phaàn meàm ñeå cho caùc timer chaïy. TRx Xung nhòp timer 0 = leân: timer döøng 1 = xuoáng: timer chaïy Caùc thanh ghi timer Vì TRx ôû trong thanh ghi TCON coù ñòa chæ bit, neân deã daøng cho vieäc ñieàu khieån caùc timer trong chöông trình. Ví duï, cho timer 0 chaïy baèng leänh: SETB TR0 Vaø döøng baèng leänh: CLR TRO Trình bieân dòch seõ thöïc hieän vieäc chuyeån ñoåi kyù hieäu caàn thieát töø “TR0” sang ñòa chæ bit ñuùng. SETB TR0 chính xaùc gioáng nhö SETB 8CH. Moät phöông phaùp khaùc ñeå ñieàu khieån caùc timer laø duøng bit GATE trong TMOD vaø ngoõ vaøo beân ngoaøi INTx. Ñaët GATE = 1 cho pheùp timer seõ ñöôïc ñieàu khieån baèng INTx. Vieäc naøy raát hieäu duïng cho vieäc ño ñoä roäng xung nhö sau: Giaû söû INT0 ôû möùc thaáp nhöng caùc xung ôû möùc cao trong khoaûng thôøi gian ño. Khôûi ñoäng timer 0 ôû cheá ñoä 2 (cheá ñoä timer 16 bit), vôùi TL0/TH0=0000H, Gate=1 vaø TR0 = 1. Khi INT0 ôû möùc cao, timer ñöôïc môû coång vaø ñöôïc caáp xung nhòp 1 MHz (neáu mC8031/8051 hoaït ñoäng ôû taàn soá 12 MHz). Khi INT0 xuoáng thaáp, timer bò ‘ñoùng coång’ vaø thôøi khoaûng cuûa xung tính baèng ms laø soá ñeám trong TL0/TH0. (Coù theå laäp trình INT0 ñeå taïo ra moät ngaét khi noù xuoáng thaáp). Hình sau minh hoïa Timer 1 hoaït ñoäng ôû cheá ñoä 1 nhö moät timer 16 bit. Caùc thanh ghi timer TL1/TH1 vaø côø baùo traøn TF1 trong sô ñoà chæ caùc khaû naêng coù theå coù cuûa nguoàn taïo xung nhòp vaø deã cho chaïy, döøng vaø ñieàu khieån timer. ¸ 12 Boä dao ñoäng trong 0: leân 1: xuoáng TL1 TH1 TF1 T1 TR1 GAT INT1 0: leân 1: xuoáng C/T 7. Khôûi ñoäng vaø truy xuaát caùc thanh ghi: Thoâng thöôøng caùc thanh ghi ñöôïc khôûi ñoäng moät laàn ôû ñaàu chöông trình ñeå ñaït cheá ñoä laøm vieäc ñuùng. Sau ñoù, trong thaân chöông trình, caùc timer ñöôïc cho chaïy, döøng, caùc bit côù ñöôïc kieåm tra vaø xoùa, caùc thanh ghi timer ñöôïc ñoïc vaø caäp nhaät v,v… theo ñoøi hoûi cuûa caùc öùng duïng. TMOD laø thanh ghi thöù nhaát ñöôïc khôûi ñoäng vì noù ñaët cheá ñoâï hoaït ñoäng. Ví duï caùc leänh sau khôûi ñoäng time1 nhö timer16 bit(cheá ñoä 1) coù xung nhòp töø boä dao ñoäng treân chip cho veäc ñònh khoaûng thôøi gian: MOV TMOD = 00010000B Neáu caàn soá ñeám ban ñaàu, caùc thanh ghi timer TL1/TH1 cuõng phaûi ñöôïc khôûi ñoäng. Nhôù laïi caùc timer ñeám leân vaø ñaët côø baùo traøn khi coù söï chuyeån tieáp FFFFH sang 0000H. moät khoaûng 100ms coù theå ñöôïc ñònh thôøi baèng caùch khôûi ñoäng trò cho TL1/TH1 laø FF9c: MOV TL1, # 9CH MOV TH1, # OFFH Roài timer ñöôïc cho chaïy baèng caùch ñieàu khieån bit nhö sau: SETB TR1 Côø baùo traøn ñöôïc töï ñoäng ñaït leân sau 100m s. Phaàn meàm coù theå ñôïi trong 100m s baèng caùch duøng leänh reõ nhaùnh coù ñieàu kieän nhaûy ñeán chính noù trong khi côø baùo traøn chöa ñöôïc ñaët leân 1: WAIT: JMB TF1, WAIT Khi timer traøn, caàn döøng timer vaø xoùa côø baùo traøn trong phaàn meàm: CLR TR1 CLR TF1 * Ñoïc timer ñang chaïy: Trong moät soá öùng duïng caàn ñoïc giaù trò trong caùc thanh ghi timer ñang chaïy. Vì phaûi ñoïc 2 thanh ghi timer, “sai pha” neáu byte thaáp traøn vaøo byte cao giöõa hai laàn ñoïc. Giaù trò coù theå ñoïc ñöôïc khoâng ñuùng. Giaûi phaùp laø ñoïc byte cao tröôùc, keá ñoù ñoïc byte thaáp roài ñoïc byte cao moät laàn nöõa. Neáu byte cao ñaõ thay ñoåi thì laëp laïi caùc hoaït ñoäng ñoïc. Caùc leänh döôùi ñaây ñoïc caùc leänh thanh ghi timer TL1/TH1 vaøo caùc thanh ghi R6/R7: AGAIN: MOV A,TH1 MOV R6, TL1 CJNE R7, A 8. Caùc khoaûng ngaén vaø caùc khoaûng daøi: Daûy caùc khoaûng thôøi gian coù theå ñònh thôøi laø bao nhieâu? vaán ñeà naøy ñöôïc khaûo saùt vôùi 8051/8031 hoaït doäng vôùi taàn soá 12 Mhz. Nhö vaäy xung nhòp cuûa caùc timer coù taàn soá laø 1MHz. Khoaûng thôøi gian ngaénnhaát coù theå bò giôùi haïn khoâng chæ bôûi taàn soá xung nhòp cuûa timer maø coøn bôûi phaàn meàm. Do aûnh höôûng cuûa thôøi khoaûng thôøi gian thöïc hieän moät leänh, leänh ngaén nhaát cuûa mC8031/8051 laø moät chu kyø maùy hay 1 ms. Sau ñaây laø baûng toùm taét caùc kyõ thuaät ñeå taïo nhöõng khoaûng thôøi gian coù chieàu daøi khaùc nhau (vôùi giaû söû xung nhòp cho mC8031/8051 coù taàn soá 12MHz). Khoaûng thôøi gian toái ña (ms ) Kyõ thuaät 10 256 65535 Khoâng giôùi haïn Baèng phaàn meàm Timer 8 bit vôùi töï ñoäng naïp laïi Timer 16 bit Timer 16 bit coäng vôùi caùc voøng laëp phaàn meàm Caùc kyõ thuaät ñeå laäp trình caùc khoaûng thôøi gian (Fosc = 12 MHz) C. HOAÏT ÑOÄNG CUÛA BOÄ NGAÉT (INTERRUPT): I. GIÔÙI THIEÄU: Moät interrupt (ngaét) laø söï xaûy ra moät ñieàu kieän – moät söï kieän, maø noù gaây treo taïm thôøi chöông trình trong ñieàu kieän coù ñöôïc phuïc vuï bôûi moät chöông trình khaùc. Caùc Interrupt ñoùng vai troø quan troïng trong vieäc thieát keá vaø caøi ñaët caùc öùng duïng vi ñieàu khieån. Chuùng cho pheùp heä thoáng baát ñoàng boä vôùi moät söï kieän vaø giaûi quyeát moät söï kieän trong khi ñoù moät chöông trình khaùc ñang thöïc thi. Moät heä thoáng ñöôïc ñieàu khieån baèng interrupt cho ta aûo giaùc laø laøm nhieàu vieäc ñoàng thôøi. Dó nhieân laø CPU ñoàng thôøi khoâng theå thöïc thi hôn moät leänh. Nhöng noù coù theå taïm treo vieäc thöïc thi moät chöông trình ñeå thöïc thi moät chöông trình khaùc, roài quay veà chöông trình thöù nhaát. Theo caùch naøy, interrupt gioáng nhö moät chöông trình con, nhöng coù moät khaùc bieät trong heä thoáng ñöôïc ñieàu khieån laø söï ngaét quaûng khoâng xaûy ra nhö keát quaû cuûa moät leänh, maø ñaùp öùng moät söï kieän xaûy ra baát ñoàng boä vôùi chöông trình chính. Ngöôøi ta khoâng bieát luùc naøo vaø ôû ñaâu chöông trình chính bò ngaét quaûng. Chöông trình giaûi quyeát ngaét goïi laø chöông trình phuïc vuï ngaét (ISR: Iterrupt Service Routine) hoaëc boä xöû lyù ngaét. ISR thöïc thi ñaùp öùng ngaét vaø thoâng thöôøng thöïc hieän taùc vuï nhaäp hay xuaát vôùi moät thieát bò. Khi ngaét xaûy ra, chöông trình chính taïm thôøi bò treo vaø reõ nhaùnh ñeán ISR: ISR thi haønh vaø keát thuùc baèng leänh trôû veà ngaét. Chöông trình tieáp tuïc thöïc thi taïi choã maø noù taïm döøng. Thöôøng ngöôøi ta xem chöông trình chính thöïc thi ôû möùc neàn (cô sôû) vaø caùc ISR thöïc thi ngaét (Interrupt Level). Ngöôøi ta duøng thuaät ngöõ Foreground (phía tröôùc) (Base – Level) chæ möùc neàn vaø Background (phía sau)(Interrupt – level) chæ möùc ngaét. Hình aûnh caùc ngaét ñöôïc moâ taû trong hình sau: CHÖÔNG TRÌNH CHÍNH Thöïc thi chöông trình khoâng coù ngaét C/tr chính C/tr chính C/tr chính C/tr chính ISR ISR ISR * * * * * * * * * Thöïc thi chöông trình coù ngaét * : goïi ngaét ** : quay veà töø ngaét II. TOÅ CHÖÙC NGAÉT CUÛA mC8031/8051: Thaät söï taát caû caùc nguoàn ngaét ôû mC8031/8051: 2 ngaét ngoaøi, 2 töø timer vaø moät ngaét Port noái tieáp. Taát caû caùc ngaét theo maëc nhieân ñeàu bò caám sau khi Reset heä thoáng vaø ñöôïc cho pheùp baèng phaàn meàm. Khi coù 2 hoaëc nhieàu ngaét ñoàng thôøi, 1 ngaét xaûy ra trong khi 1 ngaét khaùc ñang ñöôïc phuïc vuï, coù caû 2 söï tuaàn töï hoûi voøng vaø sô ñoà öu tieân 2 möùc duøng ñeå xaùc ñònh thöïc hieän ngaét. Vieäc hoûi voøng tuaàn töï thì coá ñònh nhöng öu tieân ngaét thì coù theå laäp trình ñöôïc. 1. Cho pheùp vaø caám caùc ngaét: (Enabling and Daibling Interrupt) Moãi nguoàn Interrup ñöôïc cho pheùp hoaëc caám töøng ngaét qua moät thanh ghi chöùc naêng ñaët bieät coù ñòa chæ bit IE (Interrupt Enable) ôû ñòa chæ A8H. Cuõng nhö xaùc ñònh bit cho pheùp rieâng bieät cho moãi nguoàn ngaét, coù moät bit cho pheùp/caám toaøn boä ñöôïc xoùa ñeå caám hoaøn toaøn caùc ngaét ñöôïc xeùt (ñaët leân 1) ñeå cho pheùp taát caû caùc ngaét. Bit Kyù hieäu Ñòa chæ bit Moâ taû (1 = cho pheùp, 0=caám) IE.7 EA AFH Cho pheùp / caám toaøn boä IE.6 _ AEH Khoâng ñöôïc ñònh nghóa IE.5 ET2 ADH Cho pheùp ngaét töø timer 2(8052) IE.4 ES ACH Cho pheùp ngaét Port noái tieáp IE.3 ET1 ABH Cho pheùp ngaét töø timer 1 IE.2 EX1 AAH Cho pheùp ngaét ngoaøi IE.1 ET0 A8H Cho pheùp ngaét töø timer 0 IE.0 EX0 A8H Cho pheùp ngaét ngoaøi 0 Baûng: Toùm taét thanh ghi IE Hai bit phaûi ñöôïc ñaët leân moät ñeå cho pheùp baát kyø ngaét naøo: bit cho pheùp rieâng vaø bit cho pheùp toaøn boä.Ví duï caùc ngaét töø timer ñöôïc cho pheùp nhö sau: SETB ET1 ; Cho pheùp ngaét töø timer 1. SETB EA ; Ñaët bit cho pheùp toaøn boä. Hoaëc : MOV IE, #10001000B. Maëc duø hai caùch naøy coù cuøng moät hieäu quaû sau khi reset heä thoáng nhöng hieäu quaû seõ khaùc neáu IE ñöôïc ghi giöõa chöông trình. Caùch thöù nhaát khoâng aûnh höôûng tôùi 5 bit trong thanh ghi IE, traùi laïi caùch thöù hai seõ xoùa caùc bit khaùc. Neân khôûi trò IE theo caùch thöù hai ôû ñaàu chöông trình (nghóa laø sau khi môû maùy hoaëc reset heä thoáng), nhöng cho pheùp vaø caám caùc ngaét ngay trong chöông trình neân duøng caùch thöù nhaát ñeå traùnh aûnh höôûng ñeán caùc bit khaùc trong thanh ghi IE. 2. Öu tieân ngaét (IP: Interrupt Priority) Moãi nguoàn ngaét ñöôïc laäp trình rieâng vaøo moät trong hai möùc öu tieân qua thanh ghi chöùc naêng ñaëc bieät ñöôïc ñòa chæ bit IP ôû ñòa chæ B8H. Bit Kyù hieäu Ñòa chæ bit Moâ taû (1= möùc cao hôn, 0 = möùc thaáp hôn) IP.7 BFH Khoâng ñöôïc ñònh nghóa IP.6 _ BEH Khoâng ñöôïc ñònh nghóa IP.5 PT2 BDH Öu tieân cho ngaét töø timer 2 (8052) IP.4 PS BCH Öu tieân cho ngaét töø port noái tieáp IP.3 PT1 BAH Öu tieân cho ngaét töø timer1 IP.2 PX1 BAH Öu tieân cho ngaét ngoaøi IP.1 PT0 B9H Öu tieân cho ngaét töø timer 0 IP.0 PX0 B8H Öu tieân cho ngaét ngoaøi 0 Baûng: Toùm taét thanh ghi IP. IP bò xoùa sau khi reset heä thoáng ñeå (maëc nhieân) ñaët taát caû caùc ngaét ôû möùc öu tieân thaáp hôn. YÙ töôûng “öu tieân” cho pheùp moät ISR seõ bò ngaét bôûi moät ngaét coù ñoä öu tieân cao hôn ngaét ñang phuïc vuï. Ñieàu naøy thì roõ raøng treân mC8051/8031, vì chæ coù hai möùc öu tieân. Neáu moät ISR coù möùc öu tieân thaáp ñang thöïc thi khi moät ngaét coù öu tieân cao xaûy ra thì ISR bò ngaét. ISR cao hôn khoâng bò ngaét. Chöông trình möùc thöïc thi ôû möùc neàn (Base-Lavel) vaø khoâng lieân heä vôùi baát cöù ngaét naøo, coù theå luoân luoân bò ngaét quaûng baát cöù öu tieân cuûa ngaét. Neáu hai Interrupt (ngaét) coù öu tieân khaùc nhau xaûy ra ñoàng thôøi thì Interrupt (ngaét) coù ñoä öu tieân cao hôn ñöôïc phuïc vuï tröôùc. 3. Hoûi voøng tuaàn töï (Polling Sequence): caäp nhaäp ngaét IE1 EX0 ET0 EX1 ET1 ES PX0 PT0 PX1 PT1 PS IE0 IE1 IE0 INT0 INT1 IT0 IT1 RI T1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 caùc cho pheùp ngaét cho pheùp toaøn boä tuaàn töï hoûi voøng ngaét ngaét öu tieân cao ngaét öu tieân thaáp Toång theå ngaét mC Neáu hai ngaét coù cuøng ñoä öu tieân xaûy ra ñoàng thôøi, söï hoûi voøng tuaàn töï seõ xaùc ñònh caùi naøo ñöôïc phuïc vuï tröôùc tieân. Hoûi voøng tuaàn töï laø beân ngoaøi 0, timer0, beân ngoaøi, timer1, port noái tieáp vaø timer. Hình döôi ñaây minh hoïa 5 nguoàn ngaét, cô cheá rieâng bieät vaø toaøn boä, hoûi voøng tuaàn töï vaø caùc möùc öu tieân. Traïng thaùi cuûa taát caû caùc nguoàn ngaét khaû duïng qua caùc bit côø töông öùng trong caùc ISR (Special funetyon Registers). Dó nhieân neáu coù baát kyø ngaét naøo bò caám ngaét khoâng xaûy ra, nhöng phaàn meàm vaãn coù theå kieåm tra côø ngaét. Caùc thí duï veà timer vaø port noái tieáp trong caùc muïc tröôùc ñaõ söû duïng caùc côø ngaét moät caùch môû roäng maø khoâng duøng ngaét. Ngaét Port noái tieáp coù töø Logic OR cuûa ngaét thu (RI) vaø phaùt (TI). Caùc bit côø taïo caùc ngaét ñöôïc toùm taéc trong baûng sau: Ngaét Côø Thanh ghi SER vaø vò trí bit Beân ngoaøi 0 IE0 TCON.1 Beân ngoaøi 1 IE1 TCON.3 Timer 0 TF0 TCON.5 Timer 1 TF1 TCON.7 Port noái tieáp TI SCON.1 Port noái tieáp RI SCON.0 III. XÖÛ LYÙ NGAÉT (Processing Interrupt): Khi ngaét xaûy ra vaø CPU chaáp thuaän, chöông trình chính ngaét quaûng nhöõng hoaït ñoäng sau ñaây xaûy ra: + Leänh hieän haønh hoaøn taát vieäc thöïc thi. + Caáp PC vaøo ngaên xeáp. + Traïng thaùi ngaét hieän haønh ñöôïc caát vaøo beân trong. + Caùc ngaét bò chaën ôû möùc ngaét. + Naïp vaøo PC ñòa chæ vectorcuûa ISR. + ISR thöïc thi. ISR thöïc thi vaø ñaùp öùng ngaét. ISR hoaøn taát baèng leänh RET1 (quay veà töø ngaét). Ñieàu naøy laøm laáy laïi giaù trò cuõ PC töø ngaên xeáp vaø laáp laïi traïng thaùi ngaét cuõ. Thöïc thi chöông trình chính ôû choã maø noù bò döøng. Caùc vector ngaét (Interrupt Vectors): Khi chaáp nhaän ngaét, giaù trò ñöôïc naïp vaøo PC ñöôïc goïi laø vector ngaét. Noù laø ñòa chæ baét ñaàu cuûa ISR cho nguoàn taïo ngaét. Caùc vector ngaét ñöôïc cho baûng sau: Ngaét Côø Ñòa chæ vector Reset heä thoáng RST 0000H Beân ngoaøi 0 IE0 0003H Timer 0 TF 0 000BH Beân ngoaøi 1 IE 1 0013H Timer 1 TF 1 001BH Port noái tieáp T1 hoaëc R1 0023H Baûng : Caùc vector ngaét Vector Reset heä thoáng (RST ôû ñòa chæ 0000H) ñöôïc ñeå trong baûng naøy vì theo nghóa naøy noù gioáng Interrupt: noù ngaét chöông trình chính vaø naïp giaù trò môùi cho PC. Khi “chæ ñeán moät ngaét”, côø gaây ra ngaét töï ñoäng bò xoùa bôûi phaàn cöùng. Caùc ngoaïi leä laø RI vaø TI vôùi caùc ngaét port noái tieáp vaø TF2, EXF2 vôùi caùc Interruput Time. Vì coù hai nguoàn coù theå cho moãi ngaét naøy, khoâng thöïc teá ñeå CPU xoùa côø ngaét. Caùc bit naøy phaûi ñöôïc kieåm tra trong ISR ñeå xaùc ñònh nguoàn ngaét vaø côø taïo ngaét seõ ñöôïc xoùa baèng phaàn meàm. Thoâng thöôøng moät reõ nhaùnh xaûy ra vôùi moät phaûi öùng thích hôïp, phuï thuoäc vaøo nguoàn ngaét. Vì caùc vector ngaét ôû phaàn ñaàu cuûa boä nhôù chöông trình, neân leänh thöù nhaát cuûa chöông trình chính thöôøng laø leänh nhaûy qua chöông trình chính naøy. Ví duï nhö leänh LJMP 0030H. IV. THIEÁT KEÁ CHÖÔNG TRÌNH DUØNG CAÙC NGAÉT: Caùc ví duï trong caùc muïc tröoùc ñaõ khoâng söû duïng caùc ngaét nhöng ñaõ coù voøng laëp ñôïi ñeå kieåm tra caùc côø baùo traøn (TFO hoaëc TF1) hoaëc caùc côø thu vaø côø phaùt Port noái tieáp (TI vaø RI). Vaán ñeà trong phöông phaùp naøy laø thôøi gian thöïc thi coù gía trò cuûa CPU hoaøn toaøn khoâng bò tieâu toán trong vieäc ñôïi caùc côø. Ñieàu naøy hoaøn toaøn khoâng thích hôïp vôùi caùc öùng duïng cuûa vi ñieàu khieån, trong ñoù boä vi ñieàu khieån phaûi töông taùc vôùi nhieàu thieát bò xuaát nhaäp ñoàng thôøi. Trong phaàn naøy ta seõ khaûo saùt caùch phaùt trieån chöông trình duøng vi ñieàu khieån. Khung ñeà nghò cho moät chöông trình phuïc vuï ngaét nhö sau: ORS 0000H ; ñieåm vaøo Reset. Ljmp main; caùc ñieåm vaøo ISR. Org 0030H; ñieåm vaøo chöông trình chính. Main: chöông trình chính baét ñaàu. Leänh thöù nhaát nhaûy tôùi ñòa chæ 0030H, vöøa treân caùc vò trí maø caùc ISR baét ñaàu. Nhö ñöôïc veõ hình sau, chöông trình chính baét ñaàu ôû ñòa chæ 0030H. Chöông trình chính Caùc ñieåm vaøo Reset vaø ngaét LJMP main FFFFH 0030H 0029H 0000H Hình : Toå chöùc boä nhôù khi duøng caùc ngaét 1.Chöông trình phuïc vuï ngaét coù kích thöôùc nhoû : Caùc chöông trình phuïc vuï ngaét phaûi baét ñaàu ôû gaàn phaàn ñaàu cuûa boä nhôù chöông trình ôû caùc ñòa chæ trong baûng caùc vectôr ngaét. Maët duø coù 8 byte ôû caùc ñieåm vaøo ngaét, thöôøng ñuû boä nhôù ñeå thöïc hieän caùc hoaït ñoäng mong muoán vaø quay veà chöông trình chính töø IRS. Neáu chæ coù moät nguoàn ngaét ñöôïc söû duïng, ví duï timer 0, thì coù theå söû duïng khung sau: ORS 000H; Reset LJMP MAIN ORG 000BH; ñieåm vaøo time 0 TOIRS: ; ISR cho time 0 baét ñaàu. RETI; quay veà chöông trình chính. MAIN: Chöông trình chính. Neáu söû duïng nhieàu ngaét phaûi ñaûm baûo laø chuùng phaûi baét ñaàu töø vò trí ñuùng vaø khoâng chaïy qua ISR keá. Vì chæ coù moät ngaét ñöôïc söû duïng trong ví duï treân, chöông trình chính coù theå baét ngay sau leänh RETI. 2. Caùc chöông trình phuïc vuï ngaét coù kích thöôùc lôùn: Neáu ISR daøi hôn 8 byte, coù theå caàn chuyeån noù tôùi moät nôi naøo ñoù trong boä nhôù chöông trình hoaëc coù theå ñeå noù ñi loá qua ñieåm vaøo cuûa ngaét keá. Tieâu bieåu laø ISR baét ñaàu vôùi leänh nhaûy ñeán vuøng nhôù khaùc ôû ñoù coù theå môû roäng chieàu daøi caùc ISR. Ví duï luùc naøy chæ xeùt timer 0, coù theå söû duïng khu._. thieát bò baèng caùch caáp maõ soá môû maùy roài môùi aán phím töông öùng ñeå ñieàu khieån thieát bò. Sau khoûang thôøi gian thoâng maïch laø 30s neáu khoâng coù maõ soá môû maùy thì VXL seõ caáp tín hieäu ngaét RELAY1, thieát bò ngaét khoûi löôùi ñieän thoïai, thieát bò trôû veà traïng thaùi nhaän tín hieäu ñieàu khieån. III. KHOÁI ÑIEÀU KHIEÅN: LED1 ñöôïc xem nhö thieát bò 1. (ñòa chæ A001H). LED2 ñöôïc xem nhö thieát bò 2. (ñòa chæ A002H). Khi nhaän ñöôïc tín hieäu ñieàu khieån töø löôùi ñieän thoïai gôûi ñeán VXL seõ ñoùng hay môû thieát bò maø ngöôøi ñieàu khieån ñang tröïc tieáp ñieàu khieån. SÔ ÑOÀ BOÁ TRÍ LINH KIEÄN CUÛA THIEÁT BÒ MAÏCH IN MAËT TREÂN MAÏCH IN MAËT DÖÔÙI PHAÀN III: THIEÁT KEÁ PHAÀN MEÀM A. NGUYEÂN LYÙ HOÏAT ÑOÄNG CUÛA CAÙC CHÖÔNG TRÌNH I. CHÖÔNG TRÌNH CHÍNH: Trong thieát keá naøy chuùng ta duøng ngaét ngoøai INT0\ vaø tín hieäu duøng ñeå gaây ngaét ngoøai laø tín hieäu baùo chaùy, khi coù söï coá xaûy ra thì tín hieäu baùo chaùy taùc ñoäng leân chaân INT0\, luùc ñoù chöông trình seõ ngöng taát caû caùc hoïat ñoäng ñeå phuïc vuï chöông trình baùo ñoäng. Khi khoâng coù tín hieäu taùc ñoäng leân chaân INT0\ thì chöông trình seõ phuïc vuï cho vieäc naïp soá ñieän thoaïi vaø nhaän tín hieäu ñieàu khieån ñeå tröïc tieáp cho vieäc ñieàu khieån thieát bò. Trong chöông trình chính naøy seõ phuïc vuï cho vieäc naïp soá ñieän thoïai vaø nhaän tín hieäu ñieàu khieån töø T1 (Couter). II. CHÖÔNG TRÌNH NAÏP SOÁ ÑIEÄN THOÏAI: Chöông trình naøy coù nhieäm vuï naïp soá ñieän thoïai töø baøn phím vaøo RAM coù ñòa chæ baét ñaàu 2000H. Theo yeâu caàu cuûa maïch thieát keá ta caàn baùo ñoäng ñeá nhieàu soá ñieän thoïai khaùc nhau, trong ñoù caàn nhaäp caùc soá ñieän thoïai ñaëc bieät veà: cöùu hoûa, coâng an, cô quan… Soá ñieän thoïai nhaäp töø baøn phím coù toái ña 10 soá. Neáu phím nhaän ñöôïc coù giaù trò 00H seõ keát thuùc vieäc nhaäp soá ñieän thoïai töø baøn phím. Khi naïp xong soá ñieän thoïai ta nhaán phím F2 (coù gía trò OFH) ñeå baùo cho vi xöû lyù bieát laø moät soá ñieän thoïai ñaõ nhaäp xong vaø baét ñaàu naïp moät soá khaùc. Chöông trình hieån thò seõ giuùp chuùng ta bieát ñöôïc soá ñieän thoïai ñaõ naïp vaøo. III.CHÖÔNG TRÌNH NHAÄN MAÕ PHÍM: Chöông trình naøy muïc ñích xaùc ñònh giaù trò cuûa phím ñöôïc nhaán, tuy nhieân ñeå traùnh söï sai xoùt do phím rung ta phaûi coù voøng laëp ñôïi. Sau khi goïi chöông trình queùt phím, neáu khoâng coù phím aán thì tieáp tuïc queùt, neáu coù phím nhaán thì tieáp tuïc queùt 30 laán neáu caàn aán thì löu giaù trò vaøo Stack, sau ñoù xeùt traïng thaùi phím nhaû, neáu phím chöa nhaû thì tieáp tuïc queùt, neáu phím nhaû thì queùt 40 laàn maø phím vaãn coøn nhaû thì nhaän giaù trò phím. IV.CHÖÔNG TRÌNH QUEÙT BAØN PHÍM: KYÙ HIEÄU GIAÙ TRÒ PHÍM CHÖÙC NAÊNG F1 0 0 0 0 Keát thuùc vieäc nhaäp töø baøn phím 1 0 0 0 1 Soá 1 2 0 0 1 0 Soá 2 3 0 0 1 1 Soá 3 4 0 1 0 0 Soá 4 5 0 1 0 1 Soá 5 6 0 1 1 0 Soá 6 7 0 1 1 1 Soá 7 8 1 0 0 0 Soá 8 9 1 0 0 1 Soá 9 F2 1 1 1 1 KEÁT THUÙC SOÁ ÑIEÄN THOÏAI Baøn phím trong thieát bò ñöôïc thieát keá cho 12 phím, trong ñoù 10 phím soá duøng ñeå xaùc ñònh caùc soá töø 0 ñeán 9 vaø 2 phím coù chöùc naêng ñaëc bieät F1, F2. Khi ñöôïc aán phím seõ traû veà giaù trò döôùi daïng maõ HECXA nhö baûng treân. Chöông trình queùt baøn phím duøng ñeå xaùc ñònh phím coù ñöôïc aán hay khoâng, chöông trình queùt töøng coät moät. Ñaàu tieân laø ôû coät soá 0, xem xeùt coù haøng naøo tích cöïc hay khoâng neáu khoâng thì chuyeån sang coät tieáp theo, ngöôïc laïi thì löu giaù trò phím aán vaøo ACC. V. CHÖÔNG TRÌNH HIEÅN THÒ: Chöông trình hieån thò naøy duøng phöông phaùt queùt Led ñeå hieån thò caùc soá ñieän thoïai ra Led. Tín hieäu xuaát ra coù 8 bit, trong ñoù coù 4 bit thaáp duøng ñeå choïn Led vaø 4 bit cao laø maõ HEXA cuûa soá ñieän thoïai. Ñaàu tieân xaùc ñònh ñòa chæ soá ñieän thoïai, xaùc ñònh soá choïn Led vaø xuaát ra Port hieån thò, sau ñoù goïi chöông trình Delay. Neáu trong quaù trình hieån thò neáu khoâng coù phím naøo aán thì noù vaãn tieáp tuïc hieån thò soá ñieän thoïai môùi nhaäp vaøo, ngöôïc laïi quay veà chöông trình naïp soá ñieän thoïai. VI. CHÖÔNG TRÌNH BAÙO ÑOÄNG: Khi coù tín hieäu baùo ñoäng thì Interrup ñöôïc thöïc thi (thöïc hieän chöông trình baùo ñoäng). Chöông trình thöïc hieän vieäc quay soá ñieän thoïai cuûa maùy bò goïi ñaõ ñöôïc naïp vaøo RAM (goïi toái ña 3 soá moãi soá 3 laån) “coù theå bao nhieân soá tuøy yù ngöôøi laäp trình”, neáu maùy khoâng baän thì phaùt tín hieäu baùo ñoäng. - Ñaàu tieân ñònh soá cuoäc goïi vaø soá laàn goïi. - Xuaát tín hieäu ñieàu khieån laøm ñoùng RELAY1 laäp traïng thaùi nhaác maùy giaû. - Xeùt tín hieäu môøi quay soá (Dial Tone) neáu coù thì quay soá ñieän thoïai thöù nhaát, coøn khoâng laäp traïng thaùi gaùc maùy 2s sau goïi laïi. - Sau khi quay soá ta xeùt traïng thaùi nhaác maùy cuûa maùy bò goïi, neáu coù nhaác thì xuaát tín hieäu ñieàu khieån ñoùng RELAY2 (RELAY SOUND) noái maïch phaùt tieáng noùi vaø baùo ñoäng thôøi gian 40s, ngöôïc laïi maùy baän laäp traïng thaùi gaùc maùy 2s sau goïi laïi. Neáu goïi trong 3 laàn maø vaãn baän thì goïi sang maùy khaùc. VII. CHÖÔNG TRÌNH XEÙT DIALTONE: Tín hieäu môøi xung quay soá do toång ñaøi caáp coù taàn soá 425Hz. Khi cho MT8880 hoïat ñoäng ôû cheá ñoä Callprogess thì tín hieäu taïi ñaàu ra IRQ/CP cuûa MT8880 laø tín hieäu traïng thaùi ñöôøng daây nhöng ñaõ qua maïch Trigger Schitt ñeå söûa daïng thaønh xung vuoâng. Sau khi cho qua maïch MonoStable vôùi khoõang ñònh thì 4ms thì soá xung ñeám ñöôïc trong khoûang thôøi gian 6s laø 0, coøn Ringback tone laø 1 vaø Busy tone laø 5 xung. Vì vaäy ta duøng Timer 0 ñeå ñeám soá xung naøy ñeå töø ñoù xaùc ñònh caùc tín hieäu traïng thaùi ñöôøng daây. - Ñaàu tieân khôûi ñoäng MT8880 ôû cheá ñoä CP MODE, khôûi ñoäng Timer 0 ñeå ñeám xung. - Goïi chöông trình DELAY 6s. - Neáu xung ñeám ñöôïc laø 0 (coù Dialtone), 5 (coù Busytone). Khi nhaác maùy thì treân ñöôøng daây chæ toàn taïi 1 trong 2 tín hieäu ñoù laø Dialtone vaø Busytone. VIII. CHÖÔNG TRÌNH XAÙT BÒ GOÏI NHAÁC MAÙY: Sau khi quay soá xong treân ñöôøng daây xuaát hieän 1 trong tín hieäu laø: Busytone, Dialtone, Ring Backtone: chöông trình thöïc hieän nhöõng coâng vieäc sau: - Khôûi ñoäng MT8880 ôû cheá ñoä loïc thoïai (CP MODE). - Khôûi ñoäng Timer 0 ñeå ñeám soá xung trong khoûang thôøi gian 6s neáu soá xung laø 0 (maùy bò goïi nhaác maùy), neáu soá xung ñeám ñöôïc laø 5 (maùy baän), soá xung laø 1 (tín hieäu Ringback tone). IX. CHÖÔNG TRÌNH QUAY SOÁ: Khi toång ñaøi caáp tín hieäu môøi quay soá (Dialtone) thì chöông trình quay soá ñöôïc thöïc thi. - Khôûi ñoäng MT8880 ôû cheá ñoä CP MODE vaø BURST MODE. - Xaùc ñònh ñòa chæ cuûa soá ñieän thoïai ñaàu tieân. - Naïp soá ñieän thoïai vaøo thanh ghi phaùt, sau ñoù kieåm tra, neáu thanh ghi phaùt roãng (phaùt xong) thì quay soá ñieän thoïai keá tieáp, neáu chöa phaùt xong thì xeùt laïi. Neáu laø soá ñieän thoïai cuoái (0FH) thì thoùat veà chöông trình baùo ñoäng. X.CHÖÔNG TRÌNH ÑIEÀU KHIEÅN: Thieát bò luoân ôû trong traïng thaùi chôø tín hieäu ñieàu khieån töø löôùi ñieän thoïai cuûa maùy chuû. Thieát bò nhaän daïng tín hieäu ñieàu khieån nhôø vaøo tín hieäu traïng thaùi ñöôøng daây RING BACK, tín hieäu naøy ñöôïc Timer 1 ñeám xung trong thôøi gian 30s, trong thôøi gian naøy neáu khoâng coù tín hieäu baùo ñoäng thì xuaát tín hieäu ñoùng Relay1 ñoùng taûi giaû nhaác maùy, thieát bò ñöôïc thoâng thoïai. - Luùc naøy thieát bò chôø maõ môû maùy töø ñieän thoïai chuû: + Neáu thieát bò khoâng nhaän ñöôïc maõ môû maùy trong thôøi gian 30s thì VXL seõ xuaát tín hieäu ngaét Relay1, thieát bò ñieàu khieån bò ngaén maïch. + Ngöôïc laïi, neáu thieát bò nhaän ñöôïc maõ môû maùy thì tieáp tuïc chôø nhaän maõ soá tröïc tieáp ñieàu khieån thieát bò töông öùng ñaõ ñöôïc caøi ñaët saún. Khi nhaän ñöôïc maõ soá ñieàu khieån thì thieát bò seõ thoâng baùo baèng tieáng noùi cho maùy chuû bieát ñöôïc tình traïng cuûa maùy ñang hoïat ñoäng. - Khi thieát bò ñang hoïat ñoäng maø coù tín hieäu baùo ñoäng thì thieát bò seõ caét ngang phaàn ñieàu khieån trôû veà chöông trình baùo ñoäng. B. GIAÛI THUAÄT CAÙC CHÖÔNG TRÌNH: BEGIN ÑAËT CHEÁ ÑOÄ HOÏAT ÑOÄNG CHO CAÙC TIMER TIMER0 MODE0 TIMER1 MODE 1 CHO PHEÙT NGAÉT EXT0 COÙ NGAÉT BAÙO ÑOÄNG NGAÉT T1 ÑIEÀU KHIEÅN NO YES YES NAÏP SOÁ ÑIEÄN THOÏAI NO EXIT GIAÛI THUAÄT CHÖÔNG TRÌNH CHÍNH ENTER ÑÒA CHÆ RAM CHÖÙA SOÁ ÑIEÄN THOÏAI ÑAÀU TIEÂN BIEÁN ÑEÁM X = 0 NHAÄN GIAÙ TRÒ ÑAÀU TIEÂN GHI SOÁ ÑIEÄN THOÏAI ÑAÀU TIEÂN HIEÅN THÒ TAÊNG ÑÒA CHÆ RAM TAÊNG BIEÁN ÑEÁM X RAM = RAM -X PHÍM 00H ? PHÍM 0FH ? X > 10 ? TAÊNG ÑÒA CHÆ RAM EXIT YES YES NO NO NO YES GIAÛI THUAÄT NAÏP SOÁ ÑIEÄN THOÏAI ENTER BIEÁN ÑEÁM X = 40 GIAÛM BIEÁN ÑEÁM GIAÛM BIEÁN ÑEÁM NHAÄP GIAÙ TRÒ PHÍM PHÍM AÁN PHÍM 0FH ? PHÍM NHAÛ ? LÖU GIAÙ TRÒ PHÍM YES YES NO NO NO YES GIAÛI THUAÄT NHAÄN GIAÙ TRÒ PHÍM QUEÙT PHÍM NO BIEÁN ÑEÁM X = 40 QUEÙT PHÍM BD = 0 ? EXIT YES ENTER KIEÅM TRA CAÙC HAØNG PHÍM AÁN NO NO YES GIAÛI THUAÄT QUEÙT PHÍM X = 4 ? EXIT YES CHOÏN MAÕ COÄT Z = 0 TAÊNG MAÕ HAØNG TAÊNG MAÕ COÄT XAÙC ÑÒNH GIAÙ TRÒ PHÍM LÖU GIAÙ TRÒ PHÍM ENTER DELAY XAÙC ÑÒNH ÑÒA CHÆ HIEÅN THÒ ÑCHT = RAM - X YES NO YES GIAÛI THUAÄT HIEÅN THÒ LÖU ÑCHT VAØO ACC LED > X ? EXIT CHOÏN LED SOÁ 0 LED = 0 ACC = ACC + LED XUAÁT RA PORT HIEÅN THÒ TAÊNG ÑÒA CHÆ HIEÅ NTHÒ TAÊNG SOÁ LED QUEÙT PHÍM PHÍM AÁN NO GIAÛI THUAÄT BAÙO ÑOÄNG ENTER YES NO YES XUAÁT T/H ÑOÙNG RELAY 1 THQS ? EXIT KIEÅM TRA T/H NHAÁC MAÙY CUÛA MAÙY BÒ GOÏI NO SOÁ MAÙY CAÀN GOÏI: X=3 SOÁ LAÀN GOÏI: Y=3 QUAY SOÁ KIEÅM TRA T/H MÔØI QUAY SOÁ Y = 0 ? GAÙC MAÙY DELAY 5S GIAÛM SOÁ LAÀN GOÏI GIAÛM SOÁ MAÙY GOÏI X = 0 ? THNM ? TAÏO T/H GIAÛ NHAÁC MAÙY GAÙC MAÙY DELAY 5s PHAÙT T/H ÑOÙNG RELAY SOUND DELAY 30S NO YES YES NO NO YES EXIT SOÁ XUNG > 3 KHÔÛI ÑOÄNG MT8880 KHÔÛI ÑOÄNG TIMER 0 COÙ T/H MÔØI QUAY SOÁ SETB C ENTER DELAY 5S BUSY TONE CLEAR C GIAÛI THUAÄT XEÙT DIAL TONE NO YES SOÁ 0FH ? KHÔÛI ÑOÄNG MT8880 ENTER DELAY 1S GIAÛI THUAÄT QUAY SOÁ ÑIEÄN THOÏAI RAM = ÑC SOÁ ÑT ÑAÀU TIEÂN NAÏP SOÁ ÑT VAØO ACC NAÏP SOÁ ÑT VAØO THANH GHI PHAÙT THANH GHI PHAÙT ROÃNG RAM = RAM + 1 NO YES EXIT NO YES EXIT SOÁ XUNG > 3 KHÔÛI ÑOÄNG MT8880 ENTER BIEÁN ÑEÁM X = 10 BUSY TONE CLEAR C GIAÛI THUAÄT XEÙT MAÙY BÒ GOÏI SETB TRO DELAY 6S CLEAR TRO MAÙY BAÄN CLEAR C SOÁ XUNG > 0 MAÙY BAÄN CLEAR C X = 0 X = X -1 YES NO ENTER TIMER1 EXT0 RET DELAY 30s SOÁ 1 NO MAÕ SOÁ MM DELAY 30s MAÕ SOÁ ÑK YES NO YES NO YES SO SAÙNH MAÕ YES NO X = X +1 C = X NGAÉT TB 1 ÑOÙNG TB 1 SOÁ 2 X = X +2 YES NO C = X ÑOÙNG TB 2 ÑOÙNG TB 2 YES YES NO NO GIAÛI THUAÄT ÑIEÀU KHIEÅN THIEÁT BÒ PHUÏ LUÏC TAÄP LEÄNH CUÛA m8031 Mnemonic Instruction Code Hexa – decimal Explanation D7 D6 D5 D4 D3 D2 D1 D0 MOV A, Rn 1 1 1 0 1 n2 n1 n0 E8 – EF (A) – (Rn) MOV A, direct 1 a7 1 a6 1 a5 0 a4 0 a3 1 a2 0 a1 1 a0 E5 Byte 2 (A) – (direct) MOV A, @Ri 1 1 1 0 0 1 1 1 E6 – E7 (A) – ((Ri)) MOV A, #data 0 d7 1 d6 1 d5 1 d4 0 d3 1 d2 0 d1 0 d0 74 Byte 2 (A) - #data MOV Rn, A 1 1 1 1 1 n2 n1 n0 F8 - FF (Rn) – (A) MOV Rn, direct 1 a7 0 a6 1 a5 0 a4 1 a3 n2 a2 n1 a1 n0 a0 A8 - AF Byte 2 (Rn) – (direct) MOV Rn, #data 0 d7 1 d6 1 d5 1 d4 1 d3 n2 d2 n1 d1 n0 d0 78 – 7F Byte 2 (Rn) - #data MOV direct, A 1 a7 1 a6 1 a5 1 a4 0 a3 1 a2 0 a1 1 a0 F5 Byte 2 (direct) - A MOV direct, direct 1 a7 a7 0 a6 a6 0 a5 a5 0 a4 a4 0 a3 a3 1 a2 a2 0 a1 a1 1 a0 a0 85 Byte 2 Byte 3 (direct) - (direct) (source) (destination) MOV direct, @Ri 1 a7 0 a6 0 a5 0 a4 0 a3 1 a2 1 a1 i a0 86 – 87 Byte 2 (direct) - #((Ri)) MOV direct,#data 0 a7 d7 1 a6 d6 1 a5 d5 1 a4 d4 0 a3 d3 1 a2 d2 0 a1 d1 1 a0 d0 75 Byte 2 Byte 3 (direct) - #data MOV @Ri,A 1 1 1 1 0 1 0 1 F6 – F7 ((Ri)) – A MOV @Ri, direct 1 a7 0 a6 1 a5 0 a4 0 a3 1 a2 1 a1 i a0 A6 – A7 Byte 2 ((Ri)) – (direct) MOV @Ri, #data 0 d7 1 d6 1 d5 1 d4 0 d3 1 d2 1 d1 i d0 76 – 77 Byte 2 ((Ri)) - #data MOV DPTR, #data 16 1 d7 d7 0 d6 d6 0 d5 d5 1 d4 d4 0 d3 d3 0 d2 d2 0 d1 d1 0 d0 d0 90 Byte 2 Byte 3 (DPTR) - #data15 – 0 (DPH) - #data15 – 8 (DPL) - #data7 – 0 MOVC A, @A + DPTR 1 0 0 1 0 0 1 1 93 (A) – ((A) + (DPTR)) MOVC A, @A + PC 1 0 0 0 0 0 1 1 83 (A) – ((A) + (PC)) MOVX A, @Ri 1 1 1 0 0 0 1 i E2 – E3 (A) - ((Ri)) External RAM MOVX A, @DPTR 1 1 1 0 0 0 0 0 E0 (A) – ((DPTR)) External RAM MOVX @Ri, A 1 1 1 1 0 0 1 i F2 – F3 ((Ri)) – (A) External RAM MOVX@DPTR, A 1 1 1 1 0 0 0 0 F0 ((DPTR)) – (A) External RAM PUSH direct 1 a7 1 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0 C0 Byte 2 (SP) – (SP) + 1 ((SP)) - (direct) POP direct 1 a7 1 a6 0 a5 1 a4 0 a3 0 a2 0 a1 0 a0 D0 Byte 2 (direct) – ((SP)) (SP) – (SP) – 1 XCH A, Rn 1 1 0 0 1 n2 n1 n0 C8 – CF (A) = (Rn) XCH A, direct 1 a7 1 a6 0 a5 0 a4 0 a3 1 a2 0 a1 1 a0 C5 Byte 2 (A) = (direct) XCH A, @Ri 1 1 0 0 0 1 1 i C6 – C7 (A) = ((Ri)) XCHD A, @Ri 1 1 0 1 0 1 1 i D6 – D7 (A3 - 0) = ((Ri3 - 0)) mC 8031 LOGICAL INSTRUSTIONS ANL A, Rn 0 1 0 1 1 n2 n1 n0 58 – 5F (A) – (A) AND (Rn) ANL A, direct 0 a7 1 a6 0 a5 1 a4 0 a3 1 a2 0 a1 1 a0 55 Byte 2 (A) = (A) AND (direct) ANL A, @Ri 0 1 0 1 0 1 1 i 56 - 57 (A) = (A) AND ((Ri)) ANL A, #data 0 d7 1 d6 0 d5 1 d4 0 d3 1 d2 0 d1 0 d0 54 Byte 2 (A) = (A) AND #data ANL direct, A 0 a7 1 a6 0 a5 1 a4 0 a3 0 a2 1 a1 0 a0 52 Byte 2 (direct) - (direct) AND (A) ANL direct, #data 0 a7 d7 1 a6 d6 0 a5 d5 1 a4 d4 0 a3 d3 0 a2 d2 1 a1 d1 1 a0 d0 53 Byte 2 Byte 3 (direct) - (direct) AND #data ORL A, Rn 0 1 0 0 1 n2 n1 n0 48 – 4F (A) – (A) OR (Rn) ORL A, direct 0 a7 1 a6 0 a5 0 a4 0 a3 1 a2 0 a1 1 a0 45 Byte 2 (A) = (A) OR (direct) ORL A, @Ri 0 1 0 0 0 1 1 i 46 - 47 (A) = (A) OR ((Ri)) ORL A, #data 0 d7 1 d6 0 d5 0 d4 0 d3 1 d2 0 d1 0 d0 44 Byte 2 (A) = (A) OR #data ORL direct, A 0 a7 1 a6 0 a5 0 a4 0 a3 0 a2 1 a1 0 a0 42 Byte 2 (direct) - (direct) OR (A) ORL direct, #data 0 a7 d7 1 a6 d6 0 a5 d5 0 a4 d4 0 a3 d3 0 a2 d2 1 a1 d1 1 a0 d0 43 Byte 2 Byte 3 (direct) - (direct) OR #data XRLA, Rn 0 1 1 0 1 n2 n1 n0 68 – 6F (A) – (A) XOR (Rn) XRL A, direct 0 a7 1 a6 1 a5 0 a4 0 a3 1 a2 0 a1 1 a0 65 Byte 2 (A) = (A) XOR (direct) XRL A, @Ri 0 1 1 0 0 1 1 i 66 - 67 (A) = (A) XOR ((Ri)) XRL A, #data 0 d7 1 d6 1 d5 0 d4 0 d3 1 d2 0 d1 0 d0 64 Byte 2 (A) = (A) XOR #data XRL direct, A 0 a7 1 a6 1 a5 0 a4 0 a3 0 a2 1 a1 0 a0 62 Byte 2 (direct) - (direct) XOR (A) XRL direct, #data 0 a7 d7 1 a6 d6 1 a5 d5 0 a4 d4 0 a3 d3 0 a2 d2 1 a1 d1 1 a0 d0 63 Byte 2 Byte 3 (direct) - (direct) XOR #data CLR A 1 1 1 0 0 1 0 0 E4 (A) – 0 CPL A 1 1 1 1 0 1 0 0 F4 (A) – () A7 A6 A5 A4 A3 A2 A1 A0 RL A 0 0 1 0 0 0 1 1 23 Noäi dung cuûa thanh ghi A dòch sang traùi moät bit. C A RLC A 0 0 1 1 0 0 1 1 33 Noäi dung thanh ghi A vaø C dòch sang traùi moät bit. A7 A6 A5 A4 A3 A2 A1 A0 RR A 0 0 0 0 0 0 1 1 03 Noäi dung cuûa thanh ghi A dòch sang phaûi moät bit. C A RRC A 0 0 0 1 0 0 1 1 13 Noäi dung thanh ghi A vaø C dòch sang phaûi moät bit. SWAP A 1 1 0 0 0 1 0 0 C4 (A3 - 0) = (A7 - 4) mC 8031 ARITHMETIC INSTRUCTIONS ADD A, Rn 0 0 1 0 1 n2 n1 n0 28 – 2F (A) – (A) + (Rn) ADD A, direct 0 a7 0 a6 1 a5 0 a4 0 a3 1 a2 0 a1 1 a0 25 Byte 2 (A) = (A) + (direct) ADD A, @Ri 0 0 1 0 0 1 1 i 26 - 27 (A) = (A) + ((Ri)) ADD A, #data 0 d7 0 d6 1 d5 0 d4 0 d3 1 d2 0 d1 0 d0 24 Byte 2 (A) = (A) + #data ADDC A, Rn 0 0 1 1 1 n2 n1 n0 38 – 3F (A) – (A) + (C) + (Rn) ADDC A, direct 0 a7 0 a6 1 a5 1 a4 0 a3 1 a2 0 a1 1 a0 35 Byte 2 (A) = (A) + (C) + (direct) ADDC A, @Ri 0 0 1 1 0 1 1 i 36 - 37 (A) = (A) + (C) + ((Ri)) ADDC A, #data 0 d7 0 d6 1 d5 1 d4 0 d3 1 d2 0 d1 0 d0 34 Byte 2 (A) = (A) + (C) + #data SUBB A, Rn 1 0 0 1 1 n2 n1 n0 98 – 9F (A) – (A) - (C) - (Rn) SUBB A, direct 1 a7 0 a6 0 a5 1 a4 0 a3 1 a2 0 a1 1 a0 95 Byte 2 (A) = (A) - (C) - (direct) SUBB A, @Ri 1 0 0 1 0 1 1 i 96 - 97 (A) = (A) - (C) - ((Ri)) SUBB A, #data 1 d7 0 d6 0 d5 1 d4 0 d3 1 d2 0 d1 0 d0 94 Byte 2 (A) = (A) - (C) - #data INC A 0 0 0 0 0 1 0 0 04 (A) – (A) + 1 INC Rn 0 0 0 0 1 n2 n1 n0 08 – 0F (Rn) – (Rn) + 1 INC direct 0 a7 0 a6 0 a5 0 a4 0 a3 1 a2 0 a1 1 a0 05 Byte 2 (direct) – (direct) + 1 INC @Ri 0 0 0 0 0 1 1 i 06 - 07 ((Ri)) – ((Ri)) + 1 INC DPTR 1 0 1 0 0 0 1 1 A3 (DPTR) – (DPTR) + 1 DEC A 0 0 0 1 0 1 0 0 14 (A) – (A) - 1 DEC Rn 0 0 0 1 1 n2 n1 n0 18 – 1F (Rn) – (Rn) - 1 DEC direct 0 a7 0 a6 0 a5 1 a4 0 a3 1 a2 0 a1 1 a0 15 Byte 2 (direct) – (direct) - 1 DEC @Ri 0 0 0 1 0 1 1 i 16 - 17 ((Ri)) – ((Ri)) – 1 MUL AB 1 0 1 0 0 1 0 0 A4 (B15 - 8), (A7 - 0) – (A) x (B) Keát quaû: byte cao chöùa trong (B) vaø byte thaáp chöùa trong (A) DIV AB 1 0 1 1 0 1 0 0 B4 (A15 - 8), (B7 – 0) – (A) / (B) Keát quaû chöùa trong (A) vaøphaàn dö chöùa trong (B). DAA 1 1 0 1 0 1 0 0 D4 Neáu {[(A3 - 0) >9] hoaëc [(AC >1)]} thì (A3 - 0) – (A3 - 0) + 6 vaø Neáu {[(A7 - 4) >9] hoaëc [(C >1)]} thì (A7 - 4) – (A7 - 4) + 6 Noäi dung thanh ghi A chuyeån ñoåi sang soá BCD. CJNE Rn, #data, rel 1 d7 r7 0 d6 r6 1 d5 r5 1 d4 r4 1 d3 r3 n2 d2 r2 n1 d1 r1 n0 d0 r0 BF - FF Byte 2 Byte 3 (PC) – (PC) + 3 Neáu #data (Rn) thì (PC) – (PC) + rel vaø (C) – (1) CJNE @Ri, #data, rel 1 d7 r7 0 d6 r6 1 d5 r5 1 d4 r4 1 d3 r3 1 d2 r2 1 d1 r1 i d0 r0 B6 – B7 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu #data ((Ri)) thì (PC) – (PC) + rel vaø (C) – (1) DJNZ Rn, rel 1 r7 1 r6 0 r5 1 r4 1 r3 n2 r2 n1 r1 n0 r0 D8 – DF Byte 2 (PC) – (PC) + 2 (Rn) – (Rn) – 1 Neáu (Rn) khaùc 0 thì (PC) – (PC) + rel DJNZ direct, rel 1 a7 r7 0 a6 r6 1 a5 r5 1 a4 r4 1 a3 r3 1 a2 r2 0 a1 r1 1 a0 r0 D5 Byte 2 Byte 3 (PC) – (PC) + 3 (direct) – (direct) – 1 Neáu (direct) khaùc 0 thì (PC) – (PC) + rel NOP 0 0 0 0 0 0 0 0 00 (PC) – (PC) + 1 mC 0831 ORIENTED INSTRUCTIONS CLR C 1 1 0 0 0 0 1 1 C3 (C) – 0 CLR bit 1 b7 1 b6 0 b5 0 b4 0 b3 0 b2 1 b1 0 b0 C2 Byte 2 bit – 0 SETB C 1 1 0 1 0 0 1 0 D3 (C) – 1 SETB bit 1 b7 1 b6 0 b5 1 b4 0 b3 0 b2 1 b1 0 b0 D2 Byte 2 bit – 1 CPL C 1 0 1 1 0 0 1 1 B3 (C) – () CPL bit 1 b7 0 b6 1 b5 1 b4 0 b3 0 b2 1 b1 0 b0 B2 Byte 2 bit –() ANL C, bit 1 b7 0 b6 0 b5 0 b4 0 b3 0 b2 1 b1 0 b0 82 Byte 2 (C) – (C) AND bit ANL C, /bit 1 b7 0 b6 0 b5 0 b4 0 b3 0 b2 0 b1 0 b0 80 Byte 2 (C) – (C) AND () ORL C, bit 0 b7 1 b6 1 b5 1 b4 0 b3 0 b2 1 b1 0 b0 72 Byte 2 (C) – (C) OR bit ORL C, /bit 1 b7 0 b6 1 b5 0 b4 0 b3 0 b2 0 b1 0 b0 A0 Byte 2 (C) – (C) OR () MOV C, bit 1 b7 0 b6 1 b5 0 b4 0 b3 0 b2 1 b1 0 b0 A2 Byte 2 (C) – (bit) MOV bit, C 1 b7 0 b6 0 b5 1 b4 0 b3 0 b2 1 b1 0 b0 92 Byte 2 (bit) – (C) mC 08301 CONTROL TRANSFER INSTRUCTIONS ACALL addr 11 a10 a7 a9 a6 a8 a5 1 a4 0 a3 0 a2 0 a1 1 a0 Byte 1 Byte 2 (PC) – (PC) + 2 (SP) – (SP) +1 ((SP)) – (PC7 - 0) (SP) – (SP) +1 (PC) – page address ñòa chæ töø A0 – A10 naïp vaøo PC0 – PC10 coøn laïi giöõ nguyeân. LCALL 0 a15 a7 0 a14 a6 0 a13 a5 1 a12 a4 0 a11 a3 0 a10 a2 1 a9 a1 0 a8 a0 12 Byte 2 Byte 3 (PC) – (PC) + 3 (SP) – (SP) +1 ((SP)) – (PC7 - 0) (SP) – (SP) +1 ((SP)) – (PC15 - 8) (PC) – addr15 – 0 RET 0 0 1 0 0 0 1 0 22 (PC15 - 8) – ((SP)) (SP) – (SP) – 1 (PC7 - 0) – ((SP)) (SP) – (SP) – 1 RET1 Trôû veà cuûa chöông trình ngaét 0 0 1 1 0 0 1 0 32 (PC15 - 8) – ((SP)) (SP) – (SP) – 1 (PC7 - 0) – ((SP)) (SP) – (SP) – 1 AJMP addr 11 a10 a7 a9 a6 a8 a5 0 a4 0 a3 0 a2 0 a1 1 a0 Byte 1 Byte 2 (PC) – (PC) + 2 (PC10 - 0) – page address LJMP addr 16 0 a15 a7 0 a14 a6 0 a13 a5 0 a12 a4 0 a11 a3 0 a10 a2 1 a9 a1 0 a8 a0 02 Byte 2 Byte 3 (PC) – addr15 – 0 Leänh nhaûy gioáng nhö 8085 SJMP rel 1 r7 0 r6 0 r5 0 r4 0 r3 0 r2 0 r1 0 r0 80 Byte 2 (PC) – (PC) + 2 (PC) – (PC) + rel JMP @A, DPTR 0 1 1 1 0 0 1 1 73 (PC) – (A) + (DPTR) JZ rel 0 r7 1 r6 1 r5 0 r4 0 r3 0 r2 0 r1 0 r0 60 Byte 2 (PC) – (PC) + 2 Neáu (A) = 0 thì (PC) – (PC) + rel. JNZ rel 0 r7 1 r6 1 r5 1 r4 0 r3 0 r2 0 r1 0 r0 70 Byte 2 (PC) – (PC) + 2 Neáu (A) khaùc 0 thì (PC) – (PC) + rel. JC rel 0 r7 1 r6 0 r5 0 r4 0 r3 0 r2 0 r1 0 r0 40 Byte 2 (PC) – (PC) + 2 Neáu (C) = 1 thì (PC) – (PC) + rel. JNC rel 0 r7 1 r6 0 r5 1 r4 0 r3 0 r2 0 r1 0 r0 50 Byte 2 (PC) – (PC) + 2 Neáu (C) = 0 thì (PC) – (PC) + rel. JB bit, rel 0 b7 r7 0 b6 r6 1 b5 r5 0 b4 r4 0 b3 r3 0 b2 r2 0 b1 r1 0 b0 r0 20 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu (bit) =1 thì (PC) – (PC) + rel. JNB bit, rel 0 b7 r7 0 b6 r6 1 b5 r5 1 b4 r4 0 b3 r3 0 b2 r2 0 b1 r1 0 b0 r0 30 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu (bit) = 0 thì (PC) – (PC) + rel. JBC bit, rel 0 b7 r7 0 b6 r6 0 b5 r5 1 b4 r4 0 b3 r3 0 b2 r2 0 b1 r1 0 b0 r0 10 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu (bit) =1 thì bit – 0 (PC) – (PC) + rel. CJNE A, direct, rel 1 a7 r7 0 a6 r6 1 a5 r5 1 a4 r4 0 a3 r3 1 a2 r2 0 a1 r1 1 a0 r0 B5 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu (direct) < (A) thì (PC) – (PC) + rel vaø (C) – 0 hoaëc Neáu (direct) > (A) thì (PC) – (PC) + rel vaø (C) – 1. CJNE A, #data, rel 1 d7 r7 0 d6 r6 1 d5 r5 1 d4 r4 0 d3 r3 1 d2 r2 0 d1 r1 0 d0 r0 B4 Byte 2 Byte 3 (PC) – (PC) + 3 Neáu #data < (A) thì (PC) – (PC) + rel vaø (C) – 0 hoaëc Neáu #data > (A) thì (PC) – (PC) + rel vaø (C) – 1. PHAÀM MEÀM LOC OBJ LINE SOUSE ; Chöông trình chính ; Taïo cheá ñoä laøm vieäc cho caùc timer, ; boä ngaét ngoaøi, laëp voøng ñôïi ngaét, neáu khoâng coù ; ngaét thì quay trôû veà chöông trình ñôïi ngaét ñieàu ; khieån, neáu khoâng thì trôû veà chöông trình naïp ; soá ñieän thoaïi. 2000 10 RAM EQU 2000H ; Ñòa chæ boä nhôù RAM 4001 DAT EQU 4001H ; Ñòa chæ T/G phaùt vaø ; thu DATA cuõa MT8880 4002 CTR EQU 4002H ; Ñòa chæ T/G ñieàu khieån ; vaø traïng thaùi MT8880 6000 HIEN THI EQU 6000H ; Ñòa chæ PORT hieån thò 8000 Ñ/KHIEN EQU 8000H ; Ñòa chæ PORT ñ/khieån 0030 LED EQU 30H 0040 TEM1 EQU 40H 0050 TEM2 EQU 50H 0000 ORG 0000H 0000 020030 LJMP MAIN 0003 ORG 0003H 0003 0200EC LJMP BAODONG 0030 ORG 0030H MAIN: 0030 758915 MOV TMOD,#15H ; Ñaët cheá ñoä hoaït ñoäng ; cho caùc TIMER 0033 75A881 MOV IE,#81H ; Cho pheùp ngaét ngoaøi T0 0036 D288 SETB IT0 0038 12003D LOOP: CALL NAPSODT 003B 80FB SJMP LOOP ; Laëp voøng ñôïi t/h ngaét ; Chöông trình naïp soá ; ñieän thoaïi, sau ñoù hieån ; thò ra LED. ; Naïp soá ñieän thoaïi. 003D 902000 MOV DPTR,#RAM 0040 7E00 LOOP1 MOV R6,#0 0042 120067 LOOP2 CALL NHANPHIM 0045 540F ANL A,#0FH 0047 B40001 CLNE A,#00H, LOOP3 004A 22 RET 004B F0 LOOP3 MOVX @DPTR,A 004C B40001 CJNE A,#00H,LOOP4 004F A3 INC DPTR 0050 80EE SJMP LOOP1 0052 1200A9 LOOP4 CALL HIENTHI 0055 A3 INC DPTR 0056 0E INC R6 0057 BE0AE8 CJME R6,#10,LOOP2 005A C3 CLR C 005B C0E0 PUSH ACC 005D E582 MOV A,DPL 005F 9E SUBB A,R6 0060 F582 MOV DPL,A 0062 D0E0 POP ACC 0064 D3 SETB C 0065 80D9 SJMP LOOP1 ; Chöông trình nhaän giaù trò phím nhaán, soá ; ñieän thoaïi ñöôïc naïp töø baøn phím, giaù trò ; cuûa soá ñieän thoaïi ñöôïc xaùc ñònh bôûi ; chöông trình naøy. Ñeå traùnh tröøông hôïp ; phím bò rung, ta duøng voøng laëp ñôïi. 0067 7828 NHANPHIM MOV R0,#40 0069 12007E WAIT1 CALL QUETPHIM 006C 50F9 JNC NHANPHIM 006E D8F9 DJNZ R0,WAIT1 0070 C0E0 PUSH ACC 0072 7828 WAIT MOV R0,#40 0074 12007E WAIT2 CALL QUETPHIM 0077 40F9 JC WAIT 0079 D8F9 DJPN R0,WAIT2 007B D0E0 POP ACC 007D 22 RET ; Chöông trình queùt phím ñeå nhaän daïng ; traïng thaùi nhaän phím. Côø “C” ñöôïc ; xeùt neáu phím coù nhaán . Côø “C” ñöôïc ; Clear neáu khoâng coù phím nhaán. QUÙET PHÍM 007E 7904 MOV R1,#4 0080 74FE MOV A,#0FEH 0082 FA LOOP5 MOV R2,A 0083 F590 MOV P1,A 0085 E590 MOV A,P1 0087 54F0 ALN A,#0F0H 0089 B4F007 CJNE A,#0F0H,MAY 008C EA MOV A,R2 008D 23 RL A 008E D9F2 DJNZ R1,LOOP5 0090 C3 CLR C 0091 8015 SJMP LOOP6 0093 FA MAY MOV R2,A 0094 7404 96 MOV A,#4 0096 C3 CLR C 0097 99 SUBB A,R1 0098 F9 MOV R1,A 0099 EA MOV A,R2 009A C4 SWAP A 009B 7B04 MOV R3,#4 009D 13 LOOP7 RRC A 009E 5006 JNC LOOP8 00A0 09 INC R1 00A1 09 INC R1 00A2 09 INC R1 00A3 09 INC R1 00A4 DBF7 DJNZ R3,LOOP7 00A6 D3 LOOP8 SETB C 00A7 E9 MOV A,R1 00A8 22 LOOP6 RET ; Chöông trình hieån thò soá ñieän thoïai ta ; söû duïng phöông phaùp queùt töøng LED. HIEÅN THÒ 00A9 C083 PUSH DPH 00AB C082 PUSH DPL 00AD E582 MOV A,DPL 00AF C3 CLR C 00B0 9E SUBB A,R6 00B1 F582 MOV DPL,A 00B3 753000 MOV LED,#0 00B6 858340 HT MOV TEM1,DPH 00B9 858250 MOV TEM2,DPL 00B0 E0 MOVX A,@DPTR 00BD 540F ALN A,#0FH 00BF B40A02 CJNE A,#0AH,HT1 00C2 7400 MOV A,#00H 00C4 C4 HT1 SWAP A 00C5 2530 ADD A,LED 00C7 904000 MOV DPTR,#HIENTHI 00CA F0 MOVX @DPTR,A 00CB 1200E7 CALL,DELAY 00CE 854083 MOV DPH,TEM1 00D1 855082 MOV DPL,TEM2 00D4 E530 MOV A,LED 00D6 B50609 CJNE A,06H,HT2 00D9 D082 POP DPL 00DB D083 POP DPH 00DD 117E CALL QUETPHIM 00DF 50C8 JNC HIENTHI 00E1 22 RET 00E2 A3 HT2 INC DPTR 00F3 0530 INC LED 00E5 80CF SJMP HT 00E7 7DFF DELAY MOV R5,#0FFH 00E9 DDFE HT3 DJNZ R5,HT3 00EB 22 RET ; Chöông trình baùo ñoäng ñöôïc thöïc thi ; khi coù tín hieäu baùo ñoäng: Töï ñoäng ; quay soá ñieän thoaïi, nhaän daïng traïng ; thaùi ñöôøng daây vaø baùo ñeán toái ña ; 3 soá vaø moãi soá quay 3 laàn. 00EC 902000 MOV R3,DPH 00EF AC82 MOV R4,DPL 00F3 7804 MOV R0,#3 00F5 7903 BD1 MOV R1,#3 00F7 7D00 MOV R5,#0 00F9 904002 BD2 MOV DPTR,#DKHIEN 00FC 7401 MOV A,#00H 00FE F0 MOVX @DPTR,A 00FF 120139 CALL DIALTONE 0102 400B JC BD3 0104 904002 MOV DPTR,#DKHIEN 0107 7400 MOV A,#00H 0109 F0 MOVX @DPTR,A 010A 1201C1 CALL DELAY5s 010D 80E6 SJMP BD1 010F 120153 BD3 CALL QUAYSO 0112 120182 CALL LOOPLINE 0115 400E JC SOUND 0117 904002 MOV DPTR,#DKHIEN 011A 7400 MOV A,#00H 011C F0 MOVX @DPTR,A 011D 1201C1 CALL DELAY5s 0120 D9D7 DJNZ R1,BD2 0122 D8D7 DJNZ R0,BD1 0124 32 EXIT RET1 0125 904002 SOUND MOV DPTR,#DKHIEN 0128 7403 MOV A,#03H 012A F0 MOVX @DPTR,A 012B 1201D7 CALL DELAY30s 012E 7401 MOV A,#01H 0130 904002 MOV DPTR,#DKHIEN 0133 F0 MOVX @DPTR,A 0134 7400 MOV A,#00H 0136 F0 MOVX @DPTR,A 0137 80EB SJMP EXIT ; Chöông trình xeùt DIALTONE duøng ; ñeå xeùt tín hieäu môøi quay soá. DIALTONE 0139 904005 MOV DPTR,#CTR 013C 7402 MOV A,#02H 013E F0 MOVX @DPTR,A 013F D28C SETB TR0 0141 1201CC CALL DELAY6s 0144 C28C CLR TR0 0146 E58A MOV A,TR0 0148 B40301 CJNE A,#3,THOAT 014B C3 CLR C 014C 758A00 THOÙAT MOV TR0,#00H 014F 748C00 MOV TH0,#00H 0152 22 RET ; Chöông trình quay soá ñieän thoïai söû ; duïng IC thu phaùt TONE MT8880. QUAY SOÁ 0153 EC MOV A,R4 0154 C3 CLR C 0155 9D SUBB A,R5 0156 FC MOV R4,A 0157 904005 MOV DPTR,#CTR 015A 740B MOV A,#0BH 015C F0 MOVX @DPTR,A 015D 8B83 TIEP MOV DPH,R3 015F 8C28 MOV DPL,R4 0161 E0 MOVX A,@DHTR 0162 A3 INC DPTR 0163 0D INC R5 0164 AB83 MOV D3,DPH 0166 AC82 MOV R4,DPL 0068 540F ANL A,#0FH 006A B40F01 CJNE A,#0FH,TIEP1 016D 22 RET 016E 904004 TIEP1 MOV DPTR,#DAT 0171 F0 MOVX @DHTR,A 0172 904005 TIEP2 MOV DPTR,#CTR 0175 E0 MOVX A,@DPTR 0176 5402 ANL A,#02H 0178 B40202 CJNE A,#02H,TIEP3 017B 80E0 SJMP TIEP 017D 1201A9 TIEP3 CALL DELAY1s 0180 80F0 SJMP TIEP2 ; Chöông trình xeùt LOOPLINE: chöông ; trình xeùt tín hieäu nhaác maùy cuûa maùy ; bò goïi. LOOPLINE 0182 904005 MOV DPTR,#CTR 0185 7402 MOV A,#02H 0187 F0 MOVX @DPTR,A 0188 AE0A MOV R6,10 018A D282 LABEL1 SET TR0 018C 1201CC CALL DELAY6s 018F C28C CLR TR0 0191 E58A MOV A,TR0 0193 758A00 MOV TR0,#00H 0196 758C00 MOV TH0,#00H 0199 B40301 CJNE A,#3,LABEL2 019C C3 CLR C 019D 4001 LABEL2 JC LABEL3 019F 22 RET 01A0 B40002 LABEL3 CJNE A,#00H,LABEL4 01A3 D3 SETB C 01A4 22 RET 01A5 DEE3 LABEL4 DJNZ R6,LABEL1 01A7 C3 CLR C 01A8 22 RET ; Chöông trình DELAY DELAY1s 01A9 C000 PUSH 00H 01AB 7814 MOV R0,#20H 01AD 758D3C NHAT MOV TH1,#HIGH(-50000) 01B0 758BB0 MOV TL1,#LOW(-50000) 01B3 D28E SETB TR1 01B5 308FFD NHAT1 JNB TF1 NHAT1 01B8 C28F CLR TF1 01BA C28E CLR TR1 01BC D8EF DJNZ R0,NHAT 01BE D000 POP 00H 01C0 22 RET DELAY 5S 01C1 C001 PUSH 01H 01C3 7905 MOV R1,#05H 01C5 31A9 NHAT2 CALL DELAY1S 01C7 D9FC DJNZ R1,NHAT2 01C9 D001 POP 01H 01CB 22 RET DELAY 6S 01CC C002 PUSH 02H 01CE 7A06 MOV R2,#06H 01D0 31A9 NHAT3 CALL DELAY1S 01D2 DAFC DJNZ R2,NHAT3 01D4 D002 POP 02H 01D6 22 RET DELAY 30S 01D7 C003 PUSH 03H 01D9 7B05 MOV R3,#05H 01DB 31CC NHAT4 CALL DELAY6S 01DD DBFC DJNZ R3,NHAT4 01DF D003 POP 03H 01E1 22 RET END. MUÏC LUÏC ._.

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

  • docDO35.DOC
Tài liệu liên quan