Thiết kế - Thi công kit vi điều khiển

PHẦN MỞ ĐẦU Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng. Từ các dây chuyền sản xuất lớn đến các thiết bị gia dụng, chúng ta đều thấy sự hiện diện của vi điều khiển. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng. Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin. Đó chính là sự ra đời của hàng loạt thiết bị tối tân trong ngành viễn thông, truyền hình, đặc biệt là sự ra đời của mạng Internet –siêu xa lộ thông tin, góp phần đưa con người đến đỉnh cao của nền văn minh nhân loại. Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành kỹ thuật điện-điện tử phải hết sức quan tâm. Đó chính là một nhu cầu cần thiết và cấp bách đối với mỗi sinh viên, đề tài này được thực hiện chính là đáp ứng nhu cầu đó. Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc lại là một điều rất phức tạp. Phần công việc xử lý chính vẫn phụ thuộc vào con người, đó chånh là chương trình hay phần mềm. Tuy chúng ta thấy các máy tính ngày nay cực kỳ thông minh, giải quyết các bài toán phức tạp trong vài phần triệu giây, nhưng đó cũng là dựa trên sự hiểu biết của con người. Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri. Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phầân là phần cứng và phần mềm. Các bộ vi điều khiển theo thời gian cùng với sự phát triển của công nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4 Bit đơn giản đến các bộ vi điều khiển 32 Bit. Với công nghệ tiên tiến ngày nay các máy tính có thể đi đến việc suy nghĩ, tri thức các thông tin đưa vào, đó là các máy tính thuộc thế hệ trí tuệ nhân tạo. Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể là một việc có được trong một sớm một chiều. Việc hiểu được cơ chế hoạt động của bộ vi điều khiển 8 Bit là cơ sở để chúng ta tìm hiểu và sử dụng các bộ vi điều khiển tối tân hơn, đây chính là bước đi đầu tiên khi chúng ta muốn xâm nhập sâu hơn vào lĩnh vực này. Để tìm hiểu bộ vi điều khiển một cách khoa học và mang lại hiệu quả cao làm nền tản cho việc xâm nhập vào những hệ thống tối tân hơn. Việc trang bị những kiến thức về vi điều khiển cho sinh viên là hết sức cần thiết. Xuất phát từ thực tiển này em đã đi đến quyết định Thiết kế và thi công hệ thống Kit Vi Điều Khiển 8951. Nhằm đáp ứng nhu cầu ham muốn học hỏi của bản thân. GIỚI HẠN VẤN ĐỀ Do thời gian nghiên cứu và thực hiện đề tài chỉ giới hạn trong vòng 7 tuần lễ, vốn kiến thức và việc tìm hiểu sâu về một hệ vi điều khiển còn hạn chế, luận án này chỉ thực hiện trong phạm vi sau: * Phần I : Giới thiệu các linh kiện sử dụng trong mạch * Phần II : Thiết kế và thi công phần cứng . * Phần III : Thiết kế phần mềm * Phần IV : Phụ lục

doc112 trang | Chia sẻ: banmai | Lượt xem: 1865 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Thiết kế - Thi công kit vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CLK Reset A0 Hình 2 . 9 : Keát noái hieån thò Nguyeân lyù hoaït ñoäng: Ñeå 8 LED hieån thò theo loái vaøo töø phaûi sang traùi ta choïn Mode DD-=10, sau khi khôûi taïo 8279 xong, ñeå hieån thò ta gôûi döõ lieäu vaøo A0 vaø 8279 ñem caát caùc döõ lieäu naøy laàn löôït vaøo 16 oâ nhôù RAM beân trong vaø laàn löôït xuaát caùc döõ lieäu trong RAM naøy ra ngoaøi LED ñeå hieån thò theo loái vaøo töø phaûi sang traùi maø ta ñaõ ñònh tröôùc, ñeå xoaù LED naøo taét ta göûi töø ñieàu khieån C2 vaøo thanh ghi ñieàu khieån, trong maïch caùc transitor ñoùng vai troø nhö moät coâng taéc ñoùng môû LED vaø ñöôïc ñieàu khieån bôûi caùc ngoõ ra thaáp cuûa IC 74145. Caùc transistor naøy phaûi ñoùng môû sao cho nhoû hôn thôøi gian löu aûnh treân voõng maïc cuûa maét khi ñoù chuùng ta seõ coù caûm giaùc 8 LED saùng cuøng luùc. · Thieát keá heä thoáng heä thoáng hieån cheá ñoä cuûa port1 duøng 8 LED: Nhö ñaõ giôùi thieäu trong phaàn I: Port 1 cuûa 8951 laø port I/0 treân caùc chaân töø 1¸8. Caùc chaân coù kí hieäu P1.0 ¸P1.7 laø port chæ coù moät chöùc naêng laø giao tieáp vôùi thieát bò beân ngoaøi. Ñeå quan saùt ñöôïc traïng thaùi laøm vieäc xuaát nhaäp cuûa port1 trong quaù trình giao tieáp ta thieát keá heä thoáng 8 LED, caùc LED naøy ñöôïc xaáp xeáp töø treân xuoáng öùng vôùi thöù töï cuûa caùc bit treân port1. Caùc cathode cuûa 8LED ñöôïc noái chung vôùi nhau vaø noái xuoáng mass, anode cuûa caùc LED ñöa ñeán port1 cuûa 8951 thoâng qua moät boä ñeäm söû duïng hai IC 74244. ·Tính toaùn caùc giaù trò ñieän trôû hieån thò: Vcc VB RB RC Ñeå moät ñoïan LED ñuû saùng thì doøng trung bình Itb qua moãi ñoaïn LED baèng 15 mA, ñieän aùp rôi treân hai cöïc cuûa LED laø Vg = 1.8v. Transistor thieát keá ôû traïng thaùi baõo hoaø Þ Vsat = 0.2v, do ñoù dieän trôû haïn doøng laø: Vaäy ta choïn Rc= 22W Vì moãi LED coù 7 ñoaïn neân giaù trò cöïc ñaïi qua transitor laø: Itb=Ic=15mA*8=120mA neân ta coù theå choïn transitor laøA5Ï64 coù caùc thoâng soá sau bmin=85. Ic=1A thoaû ñieàu kieän thieát keá: + Tính RB (ñieän trôû phaân cöïc cho transitor): Ic=120 mA => IB=120/bmin=120/85=1,5 mA Ñeå transitor daãn baûo hoaø thì IB ³ 1,5 mA VBE£ -0,7 v Möùc thaáp cuaû ngoõ ra TTL thöôøng vaøo khoaûng 0,5v vaø do ñoù ta choïn: Ta choïn RB = 3.3 kW Vaäy caùc thoâng soá choïn laø: LED loaïi Anode chung Transitor loaïi A562(PNP) Ñieän trôû haïn doøng Rc=22W Ñieän trôû phaân cöïc RB=3k3 Chöông II: THI COÂNG HEÄ THOÁNG I.)THIEÁT KEÁ MAÏCH IN: Ñaây laø giai ñoaïn khaù quan troïng trong toaøn boä tieán trình thi coâng bôûi vì moät söï coá hö hoûng nhoû sau naøy hay xaáu hôn laø phaûi laøm laïi töø ñaàu raát coù theå do nhöõng sai soùt trong giai ñoaïn naøy, chính vì theá thôøi gian daønh cho vieäc thieát keá vaø thi coâng maïch in chieám gaàn ½ toång soá thôøi gian thi coâng heä thoáng. Vì caáu truùc maïch phöùc taïp neân ngöôøi thöïc hieän duøng loaïi maïch in hai maët. Ñeå thöïc hieän sô ñoà noái daây ngöôøi thöïc hieän ñaõ söû duïng phaàn meàm veõ maïch ñeå thieát keá Vôùi cheá ñoä töï ñoäng thôøi gian hoaøn taát taát caõ moïi ñöôøng noái coù khaû naêng treân maïch khoâng tôùi 20 phuùt. Nhöng tröôùc nhaát phaûi maát nhieàu thôøi gian ñeå söûa file tröôùc khi chaïy cheá ñoä veõ maïch in töï ñoäng, coâng vieäc tieáp sau khi ñaõ hoaøn taát vieäc noái daây laø chuyeån taát caõ nhöõng moái haøn leân beà maët gaàn linh kieän xuoáng döôùi. Ñaây laø coâng ñoaïn toán nhieàu thôøi gian. Sau khi hoaøn taát, baûn thieát keá ñöôïc ñem ñi gia coâng ñeå hình thaønh maïch in theo yeâu caàu. II.) KIEÅM TRA: Goàm 2 phaàn laø maïch in vaø linh kieän. Sau khi thieát keá vaø gia coâng maïch in nhieäm vuï tieáp theo laø haõy kieåm tra toaøn boä maïch tröôùc khi laép linh kieän vaøo. Bôûi kit thieát keá töông ñoái phöùc taïp neân phaàn maïch in gia coâng chaéc khoâng traùnh khoûi nhöõng loãi tuy laø nhoû. Ngay töø ñaàu khi phaàn thieát keá cuaû maïch ñöôïc ñaët ra, em ñaõ lieät keâ taát caû caùc linh kieän trong maïch vaø chuaån bò ñi mua. Tröôùc khi laép raùp moät laàn nöûa em phaûi kieåm tra laïi töøng linh kieän moät laàn nöõa ñeå traùnh söï thieáu xoùt vaø nhaèm laãn. III).LAÉP RAÙP MAÏCH IN: Qua kinh nghieäm cuûa ngöôøi ñi tröôùc cuõng nhö nhöõng vaáp phaûi maø em ñaõ töøng gaëp trong caùc maïch ñieän phöùc taïp, neáu laép raùp luoân moät loaït xong roài môùi kieåm tra laïi laø moät ñieàu toái kî. Nhöõng sai soùt nhoû cuõng coù theå laøm ta roái tung leân cho neân em ñaõ laép raùp töøng phaàn vaøo vaø kieåm tra ngay baèng caùc thieát bò ño ngay tröôùc khi laép caùc phaàn khaùc. Thöù töï laép raùp nhö sau: Laép maïch dao ñoäng sau ñoù duøng maùy hieän soùng ñeå kieåm tra bieân ñoä cuõng nhö taàn soá dao ñoäng bôûi ñaây laø thoâng soá quan troïng. Laép maïch Reset vaø kieåm tra baèng caùch doø möùc logic khi aán. Laép vi ñieåu khieån vaøo kieåm tra chaân ALE cuaû vi ñieåu khieån coù xung chöa. Laép ROM vaø RAM vaøo maïch. Laép boä hieån thò. Laép boä phaän giao tieáp ngoaïi vi vaø socket ngoõ ra. Laép maïch queùt phím-hieån thò vaø kieåm tra laïi töøng p`ím nhaán. Laép nguoàn nuoâi RAM. IV.) GIAI ÑOAÏN HAØN CHÌ: Chia laøm 3 coâng ñoaïn nhoû: Tröôùc tieân hoaøn taát taát caõ nhöõng loã xuyeân maïch, ñaây laø nhöõng choã maø caùc ñöôøng daây chaïy treân moät maët taïm döøng ñeå chuyeån sang maët kia. Sau khi hoaøn taát caùc loã xuyeân maïch ngöôøi thöïc hieän kieåm tra laò thoâng maïch caùc ñöôøng noái cuõng nhö caùc loã xuyeân maïch. Coâng ñoaïn cuoái cuøng laø haøn linh kieän, do haàu heát caùc linh kieän söû duïng laø loaïi IC Cmos raát deã hö hoûng bôûi nhieät neân ngöôøi thöïc hieän choïn giaûi phaùp thöïc hieän chaân ñeá caém IC nhaèm deã daøng thay ñoåi linh kieän khi gaëp söï coá. Vôùi Baøn Phím Söû Duïng Baøn Phím Cuaû Maùy Tính. V.) HÌNH DAÏNG BEÂN NGOAÏI VAØ CAÙCH SÖÕ DUÏNG: Hình Daïng Beân Ngoaøi Cuaû Heä Thoáng Kit 8951: Coâng taéc swith Jack caém nguoàn 220v Conector 64 chaân duøng giao tieáp vôùi thieát bò ngoaïi vi Coång COM maùy tính Conector 25 chaân duøng giao tieáp vôùi maùy in Baøm phím LED 2. Höôùng Daãn Caùch Söõ Duïng Kit Vi Ñieåu Khieån: Caùc böôùc tieán haønh: Caáp nguoàn cho heä thoáng baèng caùch caám jack caém vaøo nguoàn 220v. Sau ñoù baät coâng taéc swith vaø quan saùt treân maøn hình LED 7 ñoaïn neáu thaáy coù 4 LED beân phaûi maøn hình saùng töùc laø heä thoáng ñaõ ñöôïc caáp nguoàn. Thao taùc treân baøn phím. Kit vi ñieåu khieån coù taát caõ 26 phím chia laøm caùc nhoùm sau: 16 phím nhaäp döõ lieäu cuaû chöông trìn` daïng soá thaäp phaân töø 0 ñeán F. 8 phím chöùc naêng vaø moät phím Reset. 2.1) chöùc naêng cuaû phím Q: + Khi môùi caém ñieän cho maùy 4 LED beân traùi seõ hieån thò 4 soá 0000 4 LED beân phaûi taét. + Neáu khoâng hieån thò ñuùng haûy nhaán phím “Q” ñeå reset laïi, khôûi ñoäng laò hoaïc muoán thoaùt khi muoán thoùat khoûi chöông trình vi ñieàu khieån ñang thöïc hieän. 2.2) chöùc naêng cuaû phím S: Muoán nhaäp döõ lieäu môùi vaøo oâ nhôù coù ñiaï chæ ví duï 4000 haõy duøng caùc phím nhaäp döõ lieäu ñaùnh 4000, ñiaï chæ naøy seõ xuaát hieän ôû 4 LED beân phaûi. Nhaán phím “S” thì ñòa chæ 4000 seõ thay theá ñòa chæ tröôùc ñoù cuaû 4 LED beân phaûi. 4 LED coøn laïi chæ coù 2 LED saùng ñoù chính laø noäi dung cuaû oâ nhôù töông öùng vôùi ñiaï chæ cuaû 4 LED beân traùi. 2.3) chöùc naêng phím “­”: Duøng ñeå löu tröõ döõ lieäu vaøo oâ nhôù coù ñiaï chæ ôû 4 LED beân traùi, ví duï muoán löu tröõ döõ lieäu coù ñiaï chæ laø “3F” vaøo oâ nhôù coù ñòa chæ laø 4000 ta ñaùnh “3F” töø caùc phím döõ lieäu, döõ lieäu môñi “3F” seõ thay theá caùc döõ lieäu tröôùc ñoù. Sau ñoù nhaán phím” ­” ñeå löu döõ lieäu naøy vaøo oâ nhôù 4000 ñeå saün saøng nhaän döõ lieäu tieáp theo vaø hai LED beân phaûi hieån thò noäi dung cuaû oâ nhôù 4000. Chöùc naêng cuaû phím naøy laø löu tröõ döõ lieäu ñoàng thôøi taêng ñòa chæ cuaû oâ nhôù. 2.4) chöùc naêng cuûa phím “¯”: Coù chöùc naêng giaûm ñiaï chæ cuaû oâ nhôù xuoáng 1 ñôn vò töông öùng vôùi moãi laàn nhaán. Ví duï muoán tra laïi oâ nhôù môùi vöøa nhaäp laø 4000 xem coù ñuùng döõ lieäu vöøa nhaäp laø “3F” khoâng ta aán phím “¯”, neáu sai thì nhaäp laïi, neáu ñuùng thì nhaán phím taêng ñiaï chæ ñeå naïp döõ lieäu tieáp theo. 2.5) chöùc naêng cuûa phím”P”: Sau khi nhaäp döõ lieäucuaû moät chöông trìng taïi ñòa chæ 4000, ñeå vi ñieàu khieån thöïc hieän chöông trình naøy haûy nhaán phím “P” khi ñoù maøn hình 8 LED seõ xuaát hieän”PC4000” sau ñoù nhaán phím G chöông trình seõ thi haønh. Neáu chöông trình löu taïi ñòa chæ khaùc 4000 thì tröôùc khi aán phím taêng ñiaï chæ haõy ñaùnh ñòa chæ cuaû chöông trình ñoù vaøo baèng caùc phím nhaäp döõ lieäu sau ñoù nhaán phím taêng ñòa chæ, ví duï muoán thöïc hieän chöông trình taïi ñiaï chæ 5000 thì treân maøn hình LED seõ hieån thò chöõ PC=5000. Nhaán phím “G” chöông trình seõ thi haønh taïi ñiaï c`æ 5000. 2.6) chöùc naêng cuûa phím”R”: Duøng ñeå xem noäi dung caùc thanh ghi tröôùc tieân nhaán caùc phím thaäp phaân töông ñöông töø 6 ñeán F. 2.7) chöùc naêng cuûa phím”I”: Phím naøy seõ taùc ñoäng ñeán ngaét ñoùng cuaû heä thoáng vi xöõ lyù chöông trình seõ bò ngöng sau khi nhaán phím “I”, neáu nhaán phím “I” theâm moät laàn nöõa heä thoáng seõ ñöôïc trôû laïi traïng thaùi maëc ñònh töông ñöông vôùi Reset maùy baèng phím Q. 2.8) chöùc naêng cuûa phím”T”: Chöùc naêng cuaû phím naøy laø thöïc hieän chöông trình töøng böôùc. Trình töï nhaán phím gioáng nhö nhaán phím “G”. Neáu nhaán phím “G” ñeå thöïc hieän chöông trình taïi ñiaï chæ chöùa trong caùc thanh ghi PC ta nhaán phím “T” chöông trình seõ thöïc hieän töøng leänh taïi ñòa chæ chöùa PC. Sau ñaây laø caùc sô ñoà nguyeân lyù, sô ñoà boá trí linh kieän, maïch in maët tröôùc vaø sau. Phaàn III: THIEÁT KEÁ PHAÀN MEÀM Trong heä thoáng vi ñieàu khieån, phaàn cöùng ñöôïc xem nhö theå xaùc coøn phaàn meàm ñöôïc xem nhö linh hoàn chi phoái toaøn boä hgaït ñoäng. Khaû naêng laøm vieäc cuaû heä thoáng linh hoaït hay khoâng chính laø ôû ñaây. Trong chöông trình seõ trình baøy khaùi quaùt caùch vieát moät chöông trình cuøng caùc vaán ñeà lieân quan. Chöông I : MO TAÛ CHÖÔNG TRÌNH PHAÀN MEÀM Ñeå vieát moät chöong trình coù nhieàu caùch ví duï nhö vieát moät maïch töø treân xuoáng döôùi theo caùch naøy CPU seõ ñoïc töøng töï theo caùc chæ thò trong chöông trình töø ñiaï chó thaáp ñeán ñòa chæ cao vaø thöïc hieän chuùng cho ñeán ñòa chæ cuoái cuøng. Trong tröôøng hôïp naøy ngöôøi ñoïc raát deã theo doõi chöông trình vaø naém ñöôïc yù ñoà cuaû ngöôøi vieát, tuy nhieân noù coù nhöôïc ñieåm laø kích thöôùc chöông trình lôùn. Giôùi haïn cuaû phöông phaùp laäp trình tuaàn töï laøm phaùt sinh moät phöông phaùp laäp trình khaùc laø laäp trình caáu truùc. Trong chöông trình naøy vôùi nhöõng ñoaïn thöôøng xuyeân laëp laïi trong chöông trình ngöôøi ta ñem chuùng ra khoûi chöông trình chính chuùng coù theå ñöôïc ñaët ôû ñaàu hoaëc cuoái chöông trình chính (tuyø theo phaàn meàm). Taïi moät ñòa chæ xaùc ñònh taïi nôi chuùng ta ñem ñi ñöôïc thay baèng leänh LCALLxxxx. Trong ñoù xxxx laø ñiaï chæ chuùng ta ñaët chöông trình ñöôïc ñem ñi. Khi gaëp chæ thò naøy CPU seõ nhaûy ñeán chæ thò ñöôïc ñaët sau chæ thò LCALL vaø thi haøfh ñoaïn chöông trình ñoù. Ñeå quaù trình laøm vieäc khoâng bò giaùn ñoaïn ôû cuoái ñoaïn chöông trình ta ñaët chæ thò RET(Return). Khi gaëp chæ thò naøy CPU seõ quay veà chöông trình chính vaø tieáp tuïc coâng vieäc bò boû dôû. Phöông phaùp naøy khaù hieäu quaû trong vieäc giaûm kích thöôùc chöông trình. Tuy nhieân noù laøm cho ngöôøi söû duïng khoù theo doõi chöông trình do maát tính lieân tuïc. Ñeå khaéc phuïc nhöôïc ñieåm naøy ngöôøi ta ñaët cho moãi ñoaïn chöông trình nhö theá moät caùi teân hay nhaõn (Label). Teân ñaët phaûi gíup ngöôøi ñoïc hình dung chöùc naêng nhôù raèng ñoaïn chöông trình naøy coù taùc duïng döøng chöông trình chính trong moät khoaûng thôøi gian t naøo ñoù vaø chuùng ta cuõng qui ñònh vôùi ñoaïn chöông trình ñöôïc goïi laø nôi chöông trình chính ñaët döõ lieäu xöû lyù cuõng nhö nôi chöông trình chính seõ laáy keát quaû veà baèng caùch naøy ngöôøi ñoïc chæ coøn nhôù ñoaïn chöông trình ñöôïc goïi seõ laøm coâng vieäc gì vaø nôi ñaët döõ lieäu coù lieân quan. Phaàn meàm phuïc vuï cho heä thoáng cuaû chuùng ta cuûng ñöôïc thieát keá döïa treân quan ñieåm naøy. Ñeå vieát chöông trình ñieàu khieån heä thoáng coù theå duøng moät trong caùc ngoân ngöõ nhö Assembler, passcal, C… ôû ñaây ngöôøi thieát keá vieát chöông trình baèng ngoân ngöõ assembler cuûa heä thoáng 8 bit duøng 8951. Pascal hay C ñeàu coù theå söû duïng ñeå vieát chöông trình. Tuy nhieân khi dòch ra maõ maùy seõ chieám nhieàu boä nhôù chuùng khoâng minh hoïa ñöôïc khaû naêng söû duïng caùc chæ thò cuûa 8951 trong vieäc taïo cho heä thoáng caùc chöùc naêng thay theá maïch soá. I.THUAÄT GIAÛI: Laø caùch giaûi quyeát vaán ñeà baèng nhöõng thao taùc cuï theå ñöôïc saép xeáp theo moät trình töï nhaát ñònh. Trong kyõ thuaät maùy tính, thuaät ngöõ laø coát loõi mang tính saùng taïo vieäc laäp trình. Thuaät giaûi thöôøng ñi keøm vôùi toå chöùc döõ lieäu, baûn thaân thuaät giaûi laø moät chuyeân ngaønh ñöôïc nghieân cöùu chuyeân saâu vaø luoân phaùt trieån. II.THAO TAÙC: Coøn goïi laø taùc vuï. Leänh hoaëc chæ thò laø moät haønh ñoäng caàn ñöôïc thöïc hieän bôûi cô cheá thöïc hieän thuaät giaûi thao taùc ñöôïc dieãn giaûi bôûi moät nhoùm töø maø chuû yeáu laø moät ñoäng töø, caàn choïn ñoäng töø chæ daãn chính xaùc vaø xuùc tích Moãi moät thao taùc caàn moät thôøi gian vaø tieâu hag vaät chaát ñeå thöïc hieän, thôøi gian vaø tieâu hao tuyø thuoäc vaøo töøng thao taùc. Moãi thao taùc coù theå phaân thaønh caùc thao taùc nhoû. Vaán ñeà laø choïn thao taùc ôû möùc ñoä chi tieát naøo ñeå trình baøy laø hôïp lyù nhaát. Neáu thao taùc toång quaùt thì seõ khoù hieåu ngöôïc laïi neáu quaù chi tieát thì seõ raéc roái deã nhaàm. Caàn choïn thao taùc ôû möùc ñoä toång quaùt nhaát maø ñoái töôïng söû duïng coù theå hieåu ñöôïc. Cuøng moät thao taùc nhöng saép ñaët theo trình töï khaùc nhau seõ cho keát quaû khaùc nhau. Cô caáu trình töï caàn theå hieän trong thao taùc goïi laø caáu truùc ñieàu khieån. A B Caáu truùc tuaàn töï: Caáu truùc laëp: Laëp laò A cho ñeán khi ñieàu kieän C ñuùng, thao taùc phaûi thöïc hieän ít nhaát moät laàn. A C? Ñ S Laëp laïi A voâ ñieàu kieän cho ñeán khi coù leänh thoaùt. A A Neáu ñieàu kieän C ñuùng thì thöïc hieän A (tuyø theo giaù trò cuaû C thao taùc A coù theå thöïc hieän 0,1, hoaëc nhieàu laàn) A C? S Ñ Caáu truùc löïa: Choïn thöïc hieän hoaëc hieån thò moät thao taùc. A C? S Ñ Choïn löïa moät trong hai thao taùc. Ñ C? S B A * Toùm laïi moät thuaät giaûi toái thieåu caàn nhöõng ñieàu kieän sau: Coâng vieäc phaûi cuï theå vaø thöïc hieän ñöôïc treân maùy tính. Soá böôùc thöïc hieän phaûi roõ raøng vaø höõu haïn. Coù soá lieäu vaøo. Coù soá lieäu ra Chöông II : XAÂY DÖÏNG CHÖÔNG TRÌNH HEÄ THOÁNG I.GIAÛI THUAÄT CUÛA HEÄ THOÁNG KIT VI ÑIEÀU KHIEÅN: Ñ S BEGIN KHÔÛI TAÏO 8279 ÑAËT ÑÒA CHÆ NGAÊN XEÁP KHÔÛI TAÏO ÑÒA CHÆ ÑAÀU CHÖÔNG TRÌNH DÒCH CHUYEÅN DÖÕ LEÄU RA 8 O NHÔÙ ÑEÅ HIEÅN THÒ GOÏI CHÖÔNG TRÌNH CON QUEÙT PHÍM PHÍM CHÖÙC NAÊNG GOÏI CHÖÔNG TRÌNH XÖÛ LYÙ PHÍM CHÖÙC NAÊNG GOÏI CHÖÔNG TRÌNH CON DÒCH CHUYEÅN DÖÕ LEÄU TRONG MOÄT O NHÔÙ SANG O NHÔÙ KEÁ DÒCH CHUYEÅN DÖÕ LIEÄU RA 8 O NHÔÙ ÑEÅ HIEÅN THÒ LÖU ÑOÀ CHÖÔNG TRÌNH CHÍNH ÑIEÀU KHIEÅN KIT VI ÑIEÀU KHIEÅN 8951 BEGIN ÑAËT ÑÒA CHÆ KHÔÛI TAÏO GÖÛI TÖØ ÑIEÀU KHIEÅN ÑEÅ ÑAËT CHEÁ ÑOÄ QUEÙT PHÍM HIEÅN THÒ LOÁI VAØO PHAÛI 8 LED ÑAËT TAÀN SOÁ XUNG NGOÕ VAØO 8279 XOÙA RAM FIFO, RESET NGAÉT ÑOÏC DÖÕ LIEÄU VAØO RAM XUAÁT DÖÕ LEÄU TÖØ RAM RA ÑEÅ HIEÅN THÒ END LÖU ÑOÀ CHÖÔNG TRÌNH KHÔÛI TAÏO 8279 LÖU ÑOÀ CHÖÔNG TRÌNH HIEÅN THÒ BEGIN CAÁT NOÄI DUNG CUÛA VUØNG MAÕCOÙ ÑÒA CHÆ LAØ 0200h ÑÒA CHÆ HIEÅN THÒ LED ÑAÀU TIEÂN SOÁ LED TAÊNG ÑÒA CHÆ CUAÛ LED HIEÅN THÒ LED KEÁ SOÁ LED = 8? LAÁY LAÏI NOÄI DUNG CUÛA O NHÔÙ 0200H END Ñ S LÖU ÑOÀ CHÖÔNG TRÌNH XÖÛ LYÙ PHÍM CHÖÙC NAÊNG Löu ñoà phím key- up BEGIN PHÍM [31H] DPL [30H] DPH [37H] DPTR TAÊNG ÑÒA CHÆ LEÂN 1 LAÁY 1 BYTE MÔÙI [DPL] 31H [DPH] 30H CHUYEÅN NOÄI DUNG CUÛA BYTE DATA MÔÙIVAØO O NHÔÙ 0033H CHUYEÅN DÖÕ LIEÄU RA 8 O NHÔÙ ÑEÅ HIEÅN THÒ XOÙA 2 O NHÔÙ 33H,32H TRÔÛ LAÏI CHÖÔNG TRÌNH QUEÙT PHÍM S Ñ X9 Löu ñoà phím key- down BE GIN PHÍM [31H] DPL [32H] DPH GIAÛM ÑÒA CUÛA DPL ÑI 1 CHUYEÅN ÑÒA CHÆ CUÛA DPL VAØO R5 R5 = FF? GIAÛM ÑÒA CHÆ CUÛA DPH ÑI 1 NHAÛY VEÀ X9 S Ñ Ñ S Phím chöùc naêng s BE GIN PHÍM S [33H] DPL [32H] DPH NHAÛY VEÀ X9 S Ñ NHAÛY VEÀ CHÖÔNG TRÌNH XÖÛ LYÙ PHÍ M CHÖÙC NAÊNG NHAÛY VEÀ CHÖÔNG TRÌNH XÖÛ LYÙ PHÍM CHÖÙC NAÊNG Löu ñoà phím G BEGIN PHÍM G LÖU TRÖÕ MAÕ CUÛA LEÄNH NHAÛY VAØO O NHÔÙ 5FF2H FF 40H [5FF1H] 5FF3@ [5FF0H] 5FF4H FF 0A8H NHAÛY VEÀ CHÖÔNG TRÌNH XÖÛ LYÙ PHÍ M CHÖÙC NAÊNG RUN Ñ S Löu ñoà phím p BEGIN PHÍM P LÖU TRÖÕ MAÕ CHÖÕ P VAØ CHÖÕ C [48H] 3AH GOÏI CHÖÔNG TRÌNH CON VVV-1 GOÏI CHÖÔNG TRÌNH HIEÅN THÒ LÖU TRÖÕ ÑÒA CHÆ 4000H [32H] DPTR F0 40H NHAÛY VEÀ CHÖÔNG TRÌNH XÖÛ LYÙ PHÍ M CHÖÙC NAÊNG XOÙA HAI O NHÔÙ 32H VAØ 33H S Ñ LÖU TRÖÕ MAÕ VAØO R0 LAÁY NOÄI DUNG O NHÔÙ 32 H VAØ CHUYEÅN 4 BIT CAO THAØNH 4 BIT THAÁP LAÁY NOÄI DUNG O NHÔÙ 33 H VAØ CHUYEÅN 4 BIT CAO THAØNH 4 BIT THAÁP LÖU TRÖÕ MAÕ VAØO A TRAO ÑOÅI 4 BIT THAÁP CUÛA AVAØ R0 LÖU TRÖÕ MAÕ VAØO O NHÔÙ 33H XOÙA 4 BIT THAÁP CUÛA A BEGIN CAÁT NOÄI DUNG CUÛA THANH GHI A LAÁY LAÏI NOÄI DUNG THANH GHI A TRAO LAÏI NOÄI DUNG CUÛA R0 VAØO O NHÔÙ 32H END CHÖÔNG TRÌNH CONVERT LÖU ÑOÀ CHÖÔNG TRÌNH QUEÙT PHÍM BEGIN GOÏI CHÖÔNG TRÌNH BAÉT ÑAÀU TAÏI ÑÒA CHÆ 0023H CAÁT TAÏM MAÕ PHÍM AÁN NOÄI DUNG O NHÔÙ 40H AND [40H] KQ = 0 ? TRAO LAÏI MAÕ PHÍM END S Ñ Löu ñoà key - 16 BEGIN GOÏI CHÖÔNG TRÌNH BAÉT ÑAÀU TAÏI ÑÒA CHÆ 0047H TAÊNG MAÕ PHÍM LEÂN 1 CAÁT TAÏM MAÕ PHÍM AÁN KQ = 0 ? LAÁY NOÄI DUNG O NHÔÙ 41H AND [41H] Löu ñoà key - 23 KQ = 0 ? GIAÛM KEÁT QUÛA ÑI 1 LÖU MAÕ VAØO O NHÔÙ 41H TRAO LAÏI MAÕ PHÍM END FF ®A S S Ñ Ñ BEGIN KHÔÛI TAÏO 8279 VAØ LAÁY MOÄT MAÕ AND 0F KQ = 0 ? ÑOÅI THAØNH MAÕ GÍA TRÒ CAÁT TAÏM MAÕ GÍA TRÒ Löu ñoà key - 47 XOÙA DISPLAY WRITE RAM TRAO LAÏI MAÕ GÍA TRÒ ÑEÅ HIEÅN THÒ CALL DELAY TRAO LAÏI MAÕ PHÍM FF ®A S Ñ END [38H]®R1 COPPY NOÄI DUNG VUØNG NHÔÙ 30H-33H SANG VUØNG NHÔÙ 34H-37H LÖU TRÖÕ NOÄI DUNG VUØNG NHÔÙ COÙ ÑÒA CHÆ 0200H [40H]®R2 [R0 ]®A CAÁT NOÄI DUNG CHÖÙA TRONG THANH GHI A R0 +1 BEGIN [34H]®R0 GOÏI CHÖÔNG TRÌNH 4-X CHUYEÅN 4BIT CAO CUÛA A THAØNH 4 BIT THAÁP END LAÁY LAÏI NOÄI DUNG THANH GHI A GOÏI CHÖÔNG TRÌNH 4-X R1=40 ? GOÏI CHÖÔNG TRÌNH HIEÅN THÒ S Ñ À CHÖÔNG TRÌNH CHUYEÅN DATA TRONG 4 O NHÔÙ SANG 8 O NHÔÙ CAÁT TAÏM VAØO R3 LÖU TRÖÕ NOÄI DUNG VAØO THANH GHI A ÑAËT BIT CARRY ( C ) [40H]®A XOAY TRAÙI NOÄI DUNG A QUA C KEÁT QUÛA ÑÖA VAØO O NHÔÙ 40H TRAO LAÏI NOÄI DUNG CHÖÙA TRONG R3 TRONG A BEGIN AND 0F ( ÑEÅ AÁY 4BIT THAÁP) CHUYEÅN NOÄI DUNG CUÛA A SANG R1 END R1 + 1 XOÙA BIT CARRY C = 0 ? Ñ S DÖU ÑOÀ CHÖÔNG TRÌNH 4 -X XOÙA 4 LED DÖÕ LIEÄU END II.CHÖÔNG TRÌNH MONITOR MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 1 DOS 7.10 (038-N) MCS-51 MACRO ASSEMBLER, V2.2 OBJECT MODULE PLACED IN BINH.OBJ ASSEMBLER INVOKED BY: C:\TRUNG\ASM51.EXE BINH.ASM LOC OBJ LINE SOURCE 1 ; CHUONG TRINH CHINH 0000 2 ORG 0000H 0000 020033 3 LJMP X1 0033 4 ORG 0033H 0033 020FFD 5 X1: LJMP X2 0FFD 6 ORG 0FFDH 0FFD 758165 7 P2: MOV SP,#65H 1000 120280 8 LCALL KD79 ;NAP DIA CHI CHUONG CHAY O 2 O NHO 5FFF0 VA 5FF1H 1003 905FF0 10 MOV DPTR,#5FF0H 1006 7400 11 MOV A,#00H 1008 F0 12 MOVX @DPTR,A 1009 905FF1 13 MOV DPTR,#5FF1H 100C 7440 14 MOV A,#40H 100E F0 15 MOVX @DPTR,A 16 ;NAP 00 VAO VUNG NHO 30H,31H,32H,33H 100F 753300 17 MOV 33H,#00H 1012 753200 18 MOV 32H,#00H 1015 753100 19 MOV 31H,#00H 1018 753000 20 MOV 30H,#00H 21 101B 7540F0 22 MOV 40H,#0F0H ;NAP F0H VAO O NHO 40 101E 1201A1 23 LCALL CON4_8 24 1021 120216 25 X4: LCALL KEY_16 ;THOAT KHI CO PHIM NHAN 1024 FA 26 MOV R2,A 1025 5410 27 ANL A,#10H 1027 7013 28 JNZ X3 ;NHAY NEU LA PHIM CHUC NANG 1029 120180 29 LCALL CONVERT 102C E540 30 MOV A,40H ;LAY NOI DUNG O NHO 40H 102E 23 31 RL A 102F 44F1 32 ORL A,#0F1H ;OR VOI F1,KET QUA LAN DAU LA F1,F3,F7,FF 1031 F540 33 MOV 40H,A 1033 E533 34 MOV A,33H 1035 4A 35 ORL A,R2 1036 1201A1 36 LCALL CON4_8 1039 021021 37 LJMP X4 38 ;XU LY PHIM CHUC NANG 103C EA 39 X3: MOV A,R2 103D 020600 40 LJMP X5 41 ;PHIM CHUC NANG 0600 42 ORG 0600H 0600 B4172D 43 X5: CJNE A,#17H,X6 0603 853182 44 MOV DPL,31H ;NEU DUNG LA PHIM KEY_UP MA 17 0606 853083 45 MOV DPH,30H 0609 E537 46 MOV A,37H 060B F0 47 MOVX @DPTR,A 060C A3 48 INC DPTR 060D E0 49 X9: MOVX A,@DPTR 060E 858231 50 MOV 31H,DPL MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 2 LOC OBJ LINE SOURCE 0611 858330 51 MOV 30H,DPH 0614 F533 52 MOV 33H,A 0616 7540F3 53 MOV 40H,#0F3H 0619 1201A1 54 LCALL CON4_8 061C 7540F0 55 MOV 40H,#0F0H 061F 753300 56 MOV 33H,#00H 0622 753200 57 MOV 32H,#00H 0625 021021 58 LJMP X4 59 0630 60 ORG 0630H 0630 B41617 61 X6: CJNE A,#16H,X7 ; NEU DUNG LA PHIM KEY_DOWN 0633 853182 62 MOV DPL,31H 0636 853083 63 MOV DPH,30H 0639 1582 64 DEC DPL 063B AD82 65 MOV R5,82H 063D BDFF02 66 CJNE R5,#0FFH,X8 0640 1583 67 DEC DPH 0642 02060D 68 X8: LJMP X9 ;XU LY GIONG PHIM TANG 69 064A 70 ORG 064AH 064A B41513 71 X7: CJNE A,#15H,X10 ;PHIM CHUC NANG S 064D 853382 72 MOV DPL,33H 0650 853283 73 MOV DPH,32H 0653 02060D 74 LJMP X9 75 0660 76 ORG 0660H 0660 B41230 77 X10: CJNE A,#12H,X11 ;NEU DUNG LA PIM CHUC NANG P 0663 758339 78 MOV DPH,#39H ;MA CHU C 0666 758273 79 MOV DPL,#73H ;MA CHU P 0669 1206A0 80 LCALL VVV1 066C 753A48 81 MOV 3AH,#48H 066F 1205D0 82 LCALL DISPLAY 0672 905FF0 83 MOV DPTR,#5FF0H 0675 E533 84 MOV A,33H 0677 F0 85 MOVX @DPTR,A 0678 905FF1 86 MOV DPTR,#5FF1H 067B E532 87 MOV A,32H 067D F0 88 MOVX @DPTR,A 067E 7540F0 89 MOV 40H,#0F0H 0681 753300 90 MOV 33H,#00H 0684 753200 91 MOV 32H,#00H 0687 021021 92 LJMP X4 93 0693 94 ORG 0693H 0693 020720 95 X11: LJMP X12 96 0720 97 ORG 0720H 0720 B4102D 98 X12: CJNE A,#10H,X13 0723 905FF2 99 MOV DPTR, #5FF2H 0726 7402 100 MOV A,#02H ;NAP MA 02 CUA LENH NHAY VAO O NHO 5FF2H 0728 F0 101 MOVX @DPTR,A 0729 905FF1 102 MOV DPTR,#5FF1H ;LAY NOI DUNG CUA O NHO 5FF1H DUA VAO 5FF3H 072C E0 103 MOVX A,@DPTR 072D 905FF3 104 MOV DPTR,#5FF3H 0730 F0 105 MOVX @DPTR,A MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 3 LOC OBJ LINE SOURCE 0731 905FF0 106 MOV DPTR,#5FF0H ;LAY NOI DUNG CUA O NHO 5FF0H DUA VAO O NHO 5FF4H 0734 E0 107 MOVX A,@DPTR 0735 905FF4 108 MOV DPTR,#5FF4H 0738 F0 109 MOVX @DPTR,A 0739 7540FF 110 MOV 40H,#0FFH 073C 75A8FF 111 MOV 0A8H,#0FFH 073F 025FF2 112 LJMP RUN 113 5FF2 114 ORG 5FF2H 115 RUN: 0750 116 ORG 0750H 0750 021021 117 X13: LJMP X4 ;THOAT VE CHUNG TRINH CHINH ;CHUONG TRINH CON CONVERT CHUYEN NOI DUNG 2 O NHO 0180 119 ORG 0180H 0180 C0E0 120 CONVERT:PUSH 0E0H ;CAT A 0182 C000 121 PUSH 00H 0184 E532 122 MOV A,32H 0186 C4 123 SWAP A 0187 F532 124 MOV 32H,A 0189 7832 125 MOV R0,#32H 018B E533 126 MOV A,33H 018D C4 127 SWAP A 018E D6 128 XCHD A,@R0 018F 54F0 129 ANL A,#0F0H 0191 F533 130 MOV 33H,A 0193 8632 131 MOV 32H,@R0 0195 D000 132 POP 00H 0197 D0E0 133 POP 0E0H 0199 22 134 RET 135 ;CHUONG TRINH CON AN PHIM 0216 136 ORG 0216H 0216 120223 137 KEY_16:LCALL KEY_23 0219 FA 138 MOV R2,A 021A E541 139 MOV A,41H 021C 5541 140 ANL A,41H 021E 60F6 141 JZ KEY_16 0220 EA 142 MOV A,R2 0221 22 143 RET ; SU DUNG CAC O NHO VA THNH GHI R2,A,41H,DPTR,R6,R7 0223 145 ORG 0223H 0223 120247 146 KEY_23: LCALL KEY_47 0226 FA 147 MOV R2,A 0227 04 148 INC A 0228 600B 149 JZ M1 022A E541 150 MOV A,41H 022C 5541 151 ANL A,41H 022E 70F3 152 JNZ KEY_23 0230 14 153 DEC A 0231 F541 154 KE_1: MOV 41H,A 0233 EA 155 MOV A,R2 0234 22 156 RET 0235 7AFF 157 M1: MOV R2,#0FFH 0237 020231 158 LJMP KE_1 0247 159 ORG 0247H 0247 90C001 160 KEY_47: MOV DPTR,#0C001H MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 4 LOC OBJ LINE SOURCE 024A E0 161 MOVX A,@DPTR 024B 540F 162 ANL A,#0FH 024D 6010 163 JZ M2 024F 900C00 164 MOV DPTR,#0C00H 0252 E0 165 MOVX A,@DPTR 0253 FA 166 MOV R2,A 0254 74C2 167 MOV A,#0C2H 0256 90C001 168 MOV DPTR,#0C001H 0259 F0 169 MOVX @DPTR,A 025A 120270 170 LCALL DELAY 025D EA 171 MOV A,R2 025E 22 172 RET 025F 74FF 173 M2: MOV A,#0FFH 0261 22 174 RET 0270 175 ORG 0270H 0270 7E30 176 DELAY: MOV R6,#30H 0272 7FFF 177 DE2: MOV R7,#0FFH 0274 DFFE 178 DE1: DJNZ R7,DE1 0276 DEFA 179 DJNR R6,DE2 0278 22 180 RET ;CHUONG TRINH CON 01A1H VA 01DDH LA HAI CHUONG TRINH HIEN THI 4 SO 0 BEN PHAI O ;LED DIA CHI VA TAT 4 LED DATA KHI KHOI DONG 01A1 184 ORG 01A1H 01A1 853034 185 CON4_8: MOV 34H,30H 01A4 853135 186 MOV 35H,31H 01A7 853236 187 MOV 36H,32H 01AA 853337 188 MOV 37H,33H 01AD 7834 189 MOV R0,#34H 01AF 7938 190 MOV R1,#38H 01B1 AA40 191 MOV R2,40H 01B3 900200 192 MOV DPTR,#0200H 01B6 E6 193 C_1: MOV A,@R0 01B7 08 194 INC R0 01B8 C0E0 195 PUSH 0E0H 01BA C4 196 SWAP A 01BB 1201DD 197 LCALL CON4_X 01BE D0E0 198 POP 0E0H 01C0 1201DD 199 LCALL CON4_X 01C3 70F1 200 JNZ C_1 01C5 8A40 201 MOV 40H,R2 01C7 1205D0 202 LCALL DISPLAY 01CA 22 203 RET 204 01DD 205 ORG 01DDH 01DD 540F 206 CON4_X: ANL A,#0FH 01DF F582 207 MOV DPL,A 01E1 E0 208 MOVX A,@DPTR 01E2 FB 209 MOV R3,A 01E3 E540 210 MOV A,40H 01E5 D3 211 SETB C 01E6 33 212 RLC A 01E7 F540 213 MOV 40H,A 01E9 EB 214 MOV A,R3 01EA 4002 215 JC CO_1 MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 5 LOC OBJ LINE SOURCE 01EC 7400 216 MOV A,#00H 01EE F7 217 CO_1: MOV @R1,A 01EF 09 218 INC R1 01F0 7440 219 MOV A,#40H 01F2 C3 220 CLR C 01F3 99 221 SUBB A,R1 01F4 22 222 RET 223 05D0 224 ORG 05D0H 05D0 C083 225 DISPLAY:PUSH DPH 05D2 C082 226 PUSH DPL 05D4 C000 227 PUSH 00H 05D6 C002 228 PUSH 02H 05D8 7838 229 MOV R0,#38H 05DA 900C00 230 MOV DPTR,#0C00H 05DD 7A08 231 MOV R2,#08H 05DF E6 232 DIS_1: MOV A,@R0 05E0 F0 233 MOVX @DPTR,A 05E1 08 234 INC R0 05E2 DAFB 235 DJNZ R2,DIS_1 05E4 D002 236 POP 02H 05E6 D000 237 POP 00H 05E8 D082 238 POP DPL 05EA D083 239 POP DPH 05EC 22 240 RET 06A0 241 ORG 06A0H 06A0 C083 242 VVV1: PUSH DPH 06A2 C082 243 PUSH DPL 06A4 905FF0 244 MOV DPTR,#5FF0H 06A7 F0 245 MOVX @DPTR,A 06A8 F533 246 MOV 33H,A 06AA 905FF1 247 MOV DPTR,#5FF1H 06AD E0 248 MOVX A,@DPTR 06AE F532 249 MOV 32H,A 06B0 75400F 250 MOV 40H,#0FH 06B3 1201A1 251 LCALL CON4_8 06B6 D082 252 POP DPL 06B8 D083 253 POP DPH 06BA 858238 254 MOV 38H,DPL 06BD 858339 255 MOV 39H,DPH 06C0 1205D0 256 LCALL DISPLAY 06C3 754000 257 MOV 40H,#00H 06C6 C083 258 PUSH DPH 06C8 C082 259 PUSH DPL 06CA 753600 260 MOV 36H,#00H 06CD 753700 261 MOV 37H,#00H 06D0 0206EB 262 LJMP VVV_6 263 06DA 264 ORG 06DAH 06DA 1201A1 265 VVV_7: LCALL CON4_8 06DD D082 266 POP DPL 06DF D083 267 POP DPH 06E1 858238 268 MOV 38H,DPL 06E4 858339 269 MOV 39H,DPH 06E7 C083 270 PUSH DPH MCS-51 MACRO ASSEMBLER BINH 02/15/:0 PAGE 6 LOC OBJ DINE SOURCE 06E9 C082 271 PUSH DPL 06EB 120216 272 VVV_6: LCALL KEY_16 06EE B4170F 273 CJNE A,#17H,VVV_5 06F1 D082 274 POP DPL 06F3 D083 275 POP DPH 06F5 853382 276 MOV DPL,33H 06F8 853283 277 MOV DPH,32H 06FB 22 278 RET 279 0700 280 ORG 0700H 0700 FB 281 VVV_5: MOV R3,A 0701 5410 282 ANL A,#10H 0703 70E6 283 JNZ VVV_6 0705 120180 284 LCALL CONVERT 0708 EB 285 MOV A,R3 0709 4233 286 ORL 33H,A 070B E540 287 MOV A,40H 070D D3 288 SETB C 070E 33 289 RLC A 070F 540F 290 ANL A,#0FH 0711 F540 291 MOV 40H,A 0713 0206DA 292 LJMP VVV_7 293 ;CHUONG TRINH CON KHOI TAO 8279 0280 294 ORG 0280H 0280 900C01 295 KD79: MOV DPTR,#0C01H 0283 7410 296 MOV A,#10H 0285 F0 297 MOVX @DPTR,A 0286 E534 298 MOV A,34H 0288 F0 299 MOVX @DPTR,A 0289 74C3 300 MOV A,#0C3H 028B F0 301 MOVX @DPTR,A 028C 7490 302 MOV A,#90H 028E F0 303 MOVX @DPTR,A 028F 7440 304 MOV A,#40H 0291 F0 305 MOVX @DPTR,A 0292 22 306 RET 307 END Phaàn IV: PHUÏ LUÏC Chöông I : TAÄP LEÄNH CUÛA 8951 I . TOÙM TAÉT TAÄP LEÄNH CUÛA 8951 : - Caùc chöông trình ñöôïc caáu taïo töø nhieàu leänh, chuùng ñöôïc xaây döïng logic, söï noái tieáp cuûa caùc leänh ñöôïc nghó ra moät caùch hieäu quaû vaø nhanh, keát quaû cuûa chöông trình khaû quan. - Taäp leänh hoï MSC-51 ñöôïc söï kieåm tra cuûa caùc mode ñònh vò vaø caùc leänh cuûa chuùng coù caùc Opcode 8 bit. Ñieàu naøy cung caáp khaû naêng 28= 256 leänh ñöôïc thi haønh vaø moät leänh khoâng ñöôïc ñònh nghóa. Vaøi leänh coù 1 hoaëc 2 byte bôûi döõ lieäu hoaëc ñòa chæ theâm vaøo Opcode. Trong toaøn boä caùc leänh coù 139 leänh 1 byte, 92 leänh 2 byte vaø 24 leänh 3 byte. 1. Caùc mode ñònh vò (addressing mode): - Caùc mode ñònh vò laø moät boä phaän thoáng nhaát cuûa taäp leänh. Chuùng cho pheùp ñònh roõ nguoàn hoaëc nôi gôûi tôùi cuûa döõ lieäu ôû caùc ñöôøng khaùc nhau tuøy thuoäc vaøo traïng thaùi cuûa ngöôøi laäp trình. 8951 coù 8 mode ñònh vò ñöôïc duøng nhö sau: Thanh ghi. Tröïc tieáp. Giaùn tieáp. Töùc thôøi. Töông ñoái. Tuyeät ñoái. Daøi. Ñònh vò. 1.1 Söï ñònh vò thanh ghi (Register Addressing) : - Coù 4 daõy thanh ghi 32 byte ñaàu tieân cuûa RAM döõ lieäu treân Chip ñòa chæ 00H ¸ 1FH, nhöng taïi moät thôøi ñieåm chæ coù moät daõy hoaït ñoäng caùc bit PSW3, PSW4 cuûa töø traïng thaùi chöông trình seõ quyeát ñònh daõy naøo hoaït ñoäng. Caùc leänh ñeå ñònh vò thanh ghi ñöôïc ghi maät maõ baèng caùch duøng bit troïng soá thaáp nhaát cuûa Opcode leänh ñeå chæ moät thanh ghi trong vuøng ñòa chæ theo logic naøy. Nhö vaäy 1 maõ chöùc naêng vaø ñòa chæ hoaït ñoäng coù theå ñöôïc keát hôïp ñeå taïo thaønh moät leänh ngaén 1 byte nhö sau : n n Opcode n Register Addressing. - Moät vaøi leänh duøng cuï theå cho 1 thanh ghi naøo ñoù nhö thanh ghi A, DPTR . . . maõ Opcode töï noù cho bieát thanh ghi vì caùc bit ñòa chæ khoâng caàn bieát ñeán. 1.2 Söï ñònh ñòa chæ tröïc tieáp (Direct Addressing) : - Söï ñònh ñòa chæ tröïc tieáp coù theå truy xuaát baát kyø giaù trò naøo treân Chip hoaëc thanh ghi phaàn cöùng treân Chip. Moät byte ñòa chæ tröïc tieáp ñöôïc ñöa vaøo Opcode ñeå ñònh roõ vò trí ñöôïc duøng nhö sau : Opcode Direct Addressing - Tuøy thuoäc caùc bit baäc cao cuûa ñòa chæ tröïc tieáp maø moät trong 2 vuøng nhôù ñöôïc choïn. Khi bit 7 = 0, thì ñòa chæ tröïc tieáp ôû trong khoaûng 0¸127 (00H¸7FH) vaø 128 vò trí nhôù thaáp cuûa RAM treân Chip ñöôïc choïn. - Taát caû caùc Port I/O, caùc thanh ghi chöùc naêng ñaëc bieät, thanh ghi ñieàu khieån hoaëc thanh ghi traïng thaùi bao giôø cuõng ñöôïc quy ñònh caùc ñòa chæ trong khoaûng 128¸255 (80¸FFH). Khi byte ñòa chæ tröïc tieáp naèm trong giôùi haïn naøy (öùng vôùi bit 7 = 1) thì thanh ghi chöùc naêng ñaëc bieät ñöôïc truy xuaát. Ví duï Port 0 vaø Port 1 ñöôïc quy ñònh ñòa chæ tröïc tieáp laø 80H vaø 90H, P0, P1 lað daïng thöùc ruùt goïn thuaät nhôù cuûa Port, thì söï bieán thieân cho pheùp thay theá vaø hieåu daïng thöùc ruùt goïn thuaät nhôù cuûa chuùng. Chaúng haïn leänh : MOV P1, A Ü söï bieân dòch seõ xaùc ñònh ñòa chæ tröïc tieáp cuûa Port 1 laø 90H ñaët vaøo hai byte cuûa leänh (byte 1 cuûa port 0). 1.3 Söï ñònh vò ñòa chæ giaùn tieáp (Indirect Addressing): - Söï ñònh ñòa chæ giaùn tieáp ñöôïc töôïng tröng bôûi kyù hieäu @ ñöôïc ñaët tröôùc R0, R1 hay DPTR. R0 vaø R1 coù theå hoaït ñoäng nhö moät thanh ghi con troû maø noäi dung cuûa noù cho bieát moät ñòa chæ trong RAM noäi ôû nôi maø döõ lieäu ñöôïc ghi hoaëc ñöôïc ñoïc. Bit coù troïng soá nhoû nhaát cuûa Opcode leänh seõ xaùc ñònh R0 hay R1 ñöôïc duøng con troû Pointer. i Opcode 1.4. Söï ñònh ñòa chæ töùc thôøi (Immediate Addressing): - Söï ñònh ñòa chæ töùc thôøi ñöôïc töôïng tröng bôûi kyù hieäu # ñöôïc ñöùng tröôùc moät haèng soá, 1 bieán kyù hieäu hoaëc moät bieåu thöùc soá hoïc ñöôïc söû duïng bôûi caùc haèng, caùc kyù hieäu, caùc hoaït ñoäng do ngöôøi ñieàu khieån. Trình bieân dòch tính toaùn giaù trò vaø thay theá döõ lieäu töùc thôøi. Byte leänh theâm voâ chöùa trò soá döõ lieäu töùc thôøi nhö sau: Opcode Immediate Data 1.5 Söï ñònh ñòa chæ töông ñoái: - Söï ñònh ñòa chæ töông ñoái chæ söû duïng vôùi nhöõng leänh nhaûq naøo ñoù. Moät ñòa chæ töông ñoái (hoaëc Offset) laø moät giaù trò 8 bit maø noù ñöôïc coäng vaøo boä ñeám chöông trình PC ñeå taïo thaønh ñòa chæ moät leänh tieáp theo ñöôïc thöïc thi. Phaïm vi cuûa söï nhaûy naèm trong khoaûng -128 ¸ 127. Offset töông ñoái ñöôïc gaén vaøo leänh nhö moät byte theâm vaøo nhö sau: Opcode Relative Offset - Nhöõng nôi nhaûy ñeán thöôøng ñöôïc chæ roõ bôûi caùc nhaõn vaø trình bieân dòch xaùc ñònh Offset Relative cho phuø hôïp. - Söï ñònh vò töông ñoái ñem laïi thuaän lôïi cho vieäc cung caáp maõ vò trí ñoäc laäp, nhöng baát lôïi laø chæ nhaûy ngaén trong phaïm vi -128¸127 byte. 1.6 Söï ñònh ñòa chæ tuyeät ñoái (Absolute Addressing) : - Söï ñònh ñòa chæ tuyeät ñoái ñöôïc duøng vôùi caùc leänh ACALL vaø AJMP. Caùc leänh 2 byte cho pheùp phaân chia trong trang 2K ñang löu haønh cuûa boä nhôù maõ cuûa vieäc cung caáp 11 bit thaáp ñeå xaùc ñònh ñòa chæ trong trang 2K (A0¸A10 goàm A10¸A8 trong Opcode vaø A7¸A0 trong byte)vaø 5 bit cao ñeå choïn trang 2K (5 bit cao ñang löu haønh trong boä ñeám c`öông trình laø 5 bit Opcode). Opcode Addr 7 ¸ Addr 0 Addr 10 ¸ Addr 8 - Söï ñònh vò tuyeät ñoái ñem laïi thuaän lôïi cho caùc leänh ngaén (2 byte), nhöng baát lôïi trong vieäc giôùi haïn phaïm vi nôi gôûi ñeán vaø cung caáp maõ coù vò trí ñoäc laäp. 1.7 Söï ñònh vò daøi (Long Addressifg): - Söï ñònh vò daøi ñöôïc duøng vôùi leänh LCALL vaø LJMP. Caùc leänh 3 byte naøy bao goàm moät ñòa chæ nôi gôûi tôùi 16 bit ñaày ñuû laø 2 byte vaø 3 byte cuûa leänh. Opcode Addr 15 ¸ Addr 8 Addr 7 ¸ Addr 0 - Öu ñieåm cuûa söï ñònh daøi laø vuøng nhôù maõ 64K coù theå ñöôïc duøng heát, nhöôïc ñieåm laø caùc leänh ñoù daøi 3 byte vaø vò trí leä thuoäc. Söï phuï thuoäc vaøo vò trí seõ baát lôïi bôûi chöông trình khoâng theå thöïc thi taïi ñòa chæ khaùc. 1.8 Söï ñònh ñòa chæ phuï luïc (Index Addressing) : - Söï ñònh ñòa chæ phuï luïc duøng moät thanh ghi cô baûn (cuõng nhö boä ñeám chöông trình hoaëc boä ñeám döõ lieäu) vaø Offset (thanh ghiA) trong söï hình thaønh 1 ñòa chæ lieân quan bôûi leänh JMP hoaëc MOVC. Base Register Offset Effective Address PC (or PDTR) ACC Index Addressing. - Caùc baûng cuûa leänh nhaûy hoaëc caùc baûng tra ñöôïc taïo neân moät caùch deã daøng baèng caùch duøng ñòa chæ phuï luïc. II . CAÙC KIEÅU LEÄNH (INSTRUCTION TYPES) CUÛA 8951: 8951 chia ra 5nhoùm leänh chính : Caùc leänh soá hoïc. Leänh logic. Dòch chuyeån döõ dieäu. Lyù luaän. Reõ nhaùnh chöông trình. Töøng kieåu leänh ñöôïc moâ taû nhö sau : 1. Caùc leänh soá hoïc (Arithmetic Instrustion) : ADD A, ADD A, Rn : (A) ¬ (A) + (Rn) ADD A, direct : (A) ¬ (A) + (direct) ADD A, @ Ri : (A) ¬ (A) + ((Ri)) ADD A, # data : (A) ¬ (A) + # data ADDC A, Rn : (A) ¬ (A) + (C) + (Rn) ADDC A, direct : (A) ¬ (A) + (C) + (direct) ADDC A, @ Ri : (A) ¬ (A) + (C) + ((Ri)) ADDC A, # data : (A) ¬ (A) + (C) + # data SUBB A, SUBB A, Rn : (A) ¬ (A) - (C) - (Rn) SUBB A, direct : (A) ¬ (A) - (C) - (direct) SUBB A, @ Ri : (A) ¬ (A) - (C) - ((Ri)) SUBB A, # data : (A) ¬ (A) - (C) - # data INC INC A : (A) ¬ (A) + 1 INC direct : (direct) ¬ (direct) + 1 INC Ri : ((Ri)) ¬ ((Ri)) + 1 INC Rn : (Rn) ¬ (Rn) + 1 INC DPTR : (DPTR) ¬ (DPTR) + 1 DEC DEC A : (A) ¬ (A) - 1 DEC direct : (direct) ¬ (direct) - 1 DEC @Ri : ((Ri)) ¬ ((Ri)) - 1 DEC Rn : (Rn) ¬ (Rn) - 1 MULL AB : (A) ¬ LOW [(A) x (B)] ; coù aûnh höôûng côø OV : (B) ¬ HIGH [(A) x (B)] ; côø Cary ñöôïc xoùa. DIV AB : (A) ¬ Integer Result of [(A)/(B)]; côø OV : (B) ¬ Remainder of [(A)/(B)]; côø Carry xoùa DA A : Ñieàu chænh thanh ghi A thaønh soá BCD ñuùng trong pheùp coäng BCD (thöôøng DA A ñi keøm vôùi ADD, ADDC) Neáu [(A3-A0)>1] vaø [(AC)=1] Ü (A3¸A0) ¬ (A3¸A0) + 6. Neáu [(A7-A4)>9] vaø [(C)=1] Ü (A7¸A4) ¬ (A7¸A4) + 6. 2. Caùc hoaït ñoäng logic (Logic Operation) : Taát caû caùc leänh logic söû duïng thanh ghi A nhö laø moät trong nhöõng toaùn haïng thöïc thi moät chu kyø maùy, ngoaøi A ra maát 2 chu kyø maùy. Nhöõng hoaït ñoäng logic coù theå ñöôïc thöïc hieän treân baát kyø byte naøo trong vò trí nhôù döõ lieäu noäi maø khoâng qua thanh ghi A. Caùc hoaït ñoäng logic ñöôïc toùm taét nhö sau : ANL ANL A, Rn : (A) ¬ (A) AND (Rn). ANL A, direct : (A) ¬ (A) AND (direct). ANL A,@ Ri : (A) ¬ (A) AND ((Ri)). ANL A, # data : (A) ¬ (A) AND (# data). ANL direct, A : (direct) ¬ (direct) AND (A). ANL direct, # data : (direct) ¬ (direct) AND # data. ORL ORL A, Rn : (A) ¬ (A) OR (Rn). ORL A, direct : (A) ¬ (A) OR (direct). ORL A,@ Ri : (A) ¬ (A) OR ((Ri)). ORL A, # data : (A) ¬ (A) OR # data. ORL direct, A : (direct) ¬ (direct) OR (A). ORL direct, # data : (direct) ¬ (direct) OR # data. XRL XRL A, Rn : (A) ¬ (A) ) (Rn). XRL A, direct : (A) ¬ (A) ) (direct). XRL A,@ Ri : (A) ¬ (A) ) ((Ri)). XRL A, # data : (A) ¬ (A) ) # data. XRL direct, A : (direct) ¬ (direct) ) (A). XRL direct, # data : (direct) ¬ (direct) ) # data. CLR A : (A) ¬ 0 CLR C : (C) ¬ 0 CLR Bit : (Bit) ¬ 0 RL A : Quay voøng thanh ghi A qua traùi 1 bit (An + 1) ¬ (An); n = 0¸6 (A0) ¬ (A7) RLC A : Quay voøng thanh ghi A qua traùi 1 bit coù côø Carry (An + 1) ¬ (An); n = 0¸6 (C) ¬ (A7) (A0) ¬ (C) RR A : Quay voøng thanh ghi A qua phaûi 1 bit (An + 1) ® (An); n = 0¸6 (A0) ® (A7) RRC A : Quay voøng thanh ghi A qua phaûi 1 bit coù côø Carry (An + 1) ® (An); n = 0¸6 (C) ® (A7) (A0) ® (C) SWAP A : Ñoåi choå 4 bit thaáp vaø 4 bit cao cuûa A cho nhau (A3¸A0)Ö(A7¸A4). 3. Caùc leänh reõ nhaùnh : Coù nhieàu leänh ñeå ñieàu khieån leân chöông trình bao goàm vieäc goïi hoaëc traû laïi töø chöông trình con hoaëc chia nhaùnh coù ñieàu kieän hay khoâng coù ñieàu kieän. Taát caû caùc leänh reõ nhaùnh ñeàu khoâng aûnh höôûng ñeán côø. Ta coù theå ñònh nhaõn caàn nhaûy tôùi maø khoâng caàn roõ ñòa chæ, trình bieân dòch seõ ñaët ñòa chæ nôi caàn nhaûy tôùi vaøo ñuùng khaåu leänh ñaõ ñöa ra. Sau ñaây laø söï toùe taét töøng hoaït ñoäng cuûa leänh nhaûy. JC rel : Nhaûy ñeán “rel” neáu côø Carry C = 1. JNC rel : Nhaûy ñeán “rel” neáu côø Carry C = 0. JB bit, rel : Nhaûy ñeán “rel” neáu (bit) = 1. JNB bit, rel : Nhaûy ñeán “rel” neáu (bit) = 0. JBC bit, rel : Nhaûy ñeán “rel” neáu bit = 1 vaø xoùa bit. ACALL addr11: Leänh goïi tuyeät ñoái trong page 2K. (PC) ¬ (PC) + 2 (SP) ¬ (SP) + 1 ((SP)) ¬ (PC7¸PC0) (SP) ¬ (SP) + 1 ((SP)) ¬ (PC15¸PC8) (PC10¸PC0) ¬ page Address. LCALL addr16: Leänh goïi daøi chöông trình con trong 64K. (PC) ¬ (PC) + 3 (SP) ¬ (SP) + 1 ((SP)) ¬ (PC7¸PC0) (SP) ¬ (SP) + 1 ((SP)) ¬ (PC15¸PC8) (PC) ¬ Addr15¸Addr0. RET : Keát thuùc chöông trình con trôû veà chöông trình chính. (PC15¸PC8) ¬ (SP) (SP) ¬ (SP) - 1 (PC7¸PC0) ¬ ((SP)) (SP) ¬ (SP) -1. RETI : Keát thuùc thuû tuïc phuïc vuï ngaét quay veà chöông trình chính hoaït ñoäng töông töï nhö RET. AJMP Addr11 : Nhaûy tuyeät ñoái khoâng ñieàu kieän trong 2K. (PC) ¬ (PC) + 2 (PC10¸PC0) ¬ page Address. LJMP Addr16 : Nhaûy daøi khoâng ñieàu kieän trong 64K Hoaït ñoäng töông töï leänh LCALL. SJMP rel : Nhaûy ngaén khoâng ñieàu kieän trong (-128¸127) byte (PC) ¬ (PC) + 2 (PC) ¬ (PC) + byte 2 JMP @ A + DPTR:Nhaûy khoâng ñieàu kieän ñeán ñòa chæ (A) + (DPTR) (PC) ¬ (A) + (DPTR) JZ rel : Nhaûy ñeán A = 0. Thöïc haønh leänh keá neáu A ¹ 0. (PC) ¬ (PC) + 2 (A) = 0 Ü (PC) ¬ (PC) + byte 2 JNZ rel : Nhaûy ñeán A ¹ 0. Thöïc haønh leänh keá neáu A = 0. (PC) ¬ (PC) + 2 (A) 0 Ü (PC) ¬ (PC) + byte 2 CJNE A, direct, rel : So saùnh vaø nhaûy ñeán A ¹ direct (PC) ¬ (PC) + 3 (A) (direct) Ü (PC) ¬ (PC) + Relative Address. (A) < (direct) Ü C = 1 (A) > (direct) Ü C = 0 (A) = (direct). Thöïc haønh leänh keá tieáp CJNE A, # data, rel : Töông töï leänh CJNE A, direct, rel. CJNE Rn, # data, rel : Töông töï leänh CJNE A, direct, rel. CJNE @ Ri, # data, rel : Töông töï leänh CJNE A, direct, rel. DJNE Rn, rel : Giaûm Rn vaø nhaûy neáu Rn ¹ 0. (PC) ¬ (PC) + 2 (Rn) ¬ (Rn) -1 (Rn) 0 Ü (PC) ¬ (PC) + byte 2. DJNZ direct, rel : Töông töï leänh DJNZ Rn, rel. 4. Caùc leänh dòch chuyeån döõ lieäu: Caùc leänh dòch chuyeån döõ lieäu trong nhöõng vuøng nhôù noäi thöïc thi 1 hoaëc 2 chu kyø maùy. Maãu leän` MOV , cho pheùp di chuyeån döõ lieäu baát kyø 2 vuøng nhôù naøo cuûa RAM noäi hoaëc caùc vuøng nhôù cuûa caùc thanh ghi chöùc naêng ñaëc bieät maø khoâng thoâng qua thanh ghi A. Vuøng Ngaên xeáp cuûa 8951 chæ chöùa 128 byte RAM noäi, neáu con troû Ngaên xeáp SP ñöôïc taêng quaù ñòa chæ 7FH thì caùc byte ñöôïc PUSH vaøo seõ maát ñi vaø caùc byte POP ra thì khoâng bieát roõ. Caùc leänh dòch chuyeån boä nhôù noäi vaø boä nhôù ngoaïi duøng söï ñònh vò giaùn tieáp. Ñòa chæ giaùn tieáp coù theå duøng ñòa chæ 1 byte (@ Ri) hoaëc ñòa chæ 2 byte (@ DPTR). Taát caû caùc leänh dòch chuyeån hoaït ñoäng treân toaøn boä nhôù ngoaøi thöïc thi trong 2 chu kyø maùy vaø duøng thanh ghi A laøm toaùn haïng DESTINATION. Vieäc ñoïc vaø ghi RAM ngoaøi (RD vaø WR) chæ tích cöïc trong suoát quaù trình thöïc thi cuûa leänh MOVX, coøn bình thöôøng RD vaø WR khoâng tích cöïc (möùc 1). Taát caû caùc leänh dòch chuyeån ñeåu khoâng aûnh höôûng ñeán côø. Hoaït ñoäng cuûa töøng leänh ñöôïc toùm taét nhö sau : MOV A,Rn : (A) ¬ (Rn) MOV A, direct : (A) ¬ (direct) MOV A, @ Ri : (A) ¬ ((Ri)) MOV A, # data : (A) ¬ # data MOV Rn, A : (Rn) ¬ (A) MOV Rn, direct : (Rn) ¬ (direct) MOV Rn, # data : (Rn) ¬ # data MOV direct, A : (direct) ¬ (A) MOV direct, Rn 2 (direct) ¬ (Rn) MOV direct, direct : (direct) ¬ (direct) MOV direct, @ Ri : (direct) ¬ ((Ri)) MOV direct, # data : (direct) ¬ data MOV @ Ri, A : ((Ri)) ¬ (A) MOV @ Ri, direct : ((Ri)) ¬ (direct) MOV @ Ri, # data : ((Ri)) ¬ # data MOV DPTR, # data16 : (DPTR) ¬ # data16 MOV A, @ A + DPTR : (A) ¬ (A) + (DPTR) MOV @ A + PC : (PC) ¬ (PC) + 1 (A) ¬ (A) + (PC) MOVX A, @ Ri : (A) ¬ ((Ri)) MOVX A, @ DPTR : (A) ¬ ((DPTR)) MOVX @ Ri, A : ((Ri)) ¬ (A) MOVX @ DPTR, A : ((DPTR)) ¬ (A) PUSH direct : Caát döõ lieäu vaøo Ngaên xeáp (SP) ¬ (SP) + 1 (SP) ¬ (Drirect) POP direct : Laáy töø Ngaên xeáp ra direct (direct) ¬ ((SP)) (SP) ¬ (SP) - 1 XCH A, Rn : Ñoåi choå noäi dung cuûa A vôùi Rn (A) Ö (Rn) XCH A, direct : (A) Ö (direct) XCH A, @ Ri : (A) Ö ((Ri)) XCHD A, @ Ri : Ñoåi choå 4 bit thaáp cuûa (A) vôùi ((Ri)) (A3¸A0) Ö ((Ri3¸Ri0)) 5. Caùc leänh luaän lyù (Boolean Instruction) : 8951 chöùa moät boä xöû lyù luaän lyù ñaày ñuû cho caùc hoaït ñoäng bit ñôn, ñaây laø moät ñieåm maïnh cuûa hoï vi ñieàu khieån MSC-51 maø caùc hoï vi ñieàu khieån khaùc khoâng coù. RAM noäi chöùa 128 bit ñôn vò vaø caùc vuøng nhôù caùc thanh ghi chöùc naêng ñaëc bieät caáp leân ñeán 128 ñôn vò khaùc. Taát caû caùc ñöôøng Port laø bit ñònh vò, moãi ñöôøng coù theå ñöôïc xöû lyù nhö Port ñôn vò rieâng bieät. Caùch truy xuaát caùc bit naøy khoâng chæ caùc leänh reõ nhaùnh khoâng, maø laø moät danh muïc ñaày ñuû caùc leänh MOVE, SET, CLEAR, COMPLEMENT, OR, AND. Toaøn boä söï truy xuaát cuûa bit duøng söï ñònh vò tröïc tieáp vôùi nhöõng ñòa chæ töø 00H¸7FH trong 128 vuøng nhôù thaáp vaø 80H¸FFH ôû caùc vuøng thanh ghi chöùc naêng ñaëc bieät. Bit Carry C trong thanh ghi PSW\ cuûa töø traïng thaùi chöông trình vaø ñöôïc duøng nhö moät söï tích luõy ñôn cuûa boäxöû lyù luaän lyù. Bit Carry cuõng laø bit ñònh vò vaø coù ñòa chæ tröïc tieáp vì noù naèm trong PSW. Hai leänh CLR C vaø CLR CY ñeàu coù cuøng taùc duïng laø xoùa bit côø Carry nhöng leänh naøy maát 1 byte coøn leänh sau maát 2 byte. Hoaït ñoäng cuûa caùc leänh luaän lyù ñöôïc toùm taét nhö sau: CLR C : Xoùa côø Carry xuoáng 0. Coù aûnh höôûng côø Carry. CLR BIT : Xoùa bit xuoáng 0. Khoâng aûnh höôûng côø Carry. SET C : Set côø Carry leân 1. Coù aûnh höôûng côø Carry. SET BIT: Set bit leân 1. Khoâng aûnh höôûng côø Carry. CPL C : Ñaõo bit côø Carry. Coù aûnh höôûng côø Carry. CPL BIT : Ñaõo bit. Khoâng aûnh höôûng côø Carry. ANL C, BIT : (C) ¬ (C) AND (BIT) : Coù aûnh höôûng côø Carry. ANL C, /BIT : (C) ¬ (C) AND NOT (BIT):Khoâng aûnh höôûng côø Carry. ORL C, BIT : (C) ¬ (C) OR (BIT) : Taùc ñoäng côø Carry. ORL C, /BIT : (C) ¬ (C) OR NOT (BIT) : Taùc ñoäng côø Carry. MOV C, BIT : (C) ¬ (BIT) : Côø Carry bò taùc ñoäng. MOV BIT, C : (BIT) ¬ (C) : Khoâng aûnh höôûng côø Carry. 6. Caùc leänh xen vaøo (Miscellamous Intstruction) : NOP : Khoâng hoaït ñoäng gì caû, chæ toán 1 byte vaø 1 chu kyø maùy. Ta duøng ñeå delay nhöõng khoaûng thôøi gian nhoû. Chöông II . KHAÛO SAÙT IC SÖÛ DUÏNG I . Khaûo saùt boä nhôù EPROM 2764 Caùc boä nhôù EPROM thoâng duïng toàn taïi döôùi nhieàu kieåu maïch khaùc nhau. Hoï 27XXX coù caùc loaïi vi maïch sau:2708 (1Kx8), 2716 (2Kx8), 2732 (4Kx8), 2764 (8Kx8) …… vôùi Tac = 250_ 450 ns tuyø theo loaïi EPROM cuï theå. Soá ñöôøng ñòa chæ thay ñoåi tuøy thuoäc vaøo dung löôïng cuûa moãi loaïi EPROM, soá ñöôøng döõ lieäu laø 8. Hoaït ñoäng cuûa hoï 27XXX laø töông töï nhau, ôû ñaây do thôøi löôïng coù haïn neân chæ khaûo saùt moät EPROM ñöôïc söû duïng trong maïch laø EPROM 2764. 1 . Sô ñoà chaân: Trong ñoù A0 – A12 : 13 ñöôøng ñòa chæ vaøo O0 _ O7 : 8 ñöôøng döõ lieäu OE\ : Output Enable CE\ : Chip Enable PGM\ : Naïp chöông trình EPROM 2764 coù 13 ñöôøng ñòa chæ neân coù dung löôïng laø 8 KB vaø 8 ñöôøng döõ lieäu ngoõ vaøo cung caáp Vpp vaø Vcc. Ngoõ vaøo Vcc luoân ñöôïc noái leân 5v khi EPROM ñang ñoïc döõ lieäu vaø noái vôùi 30v khi naïp trình cho EPROM. Thôøi gian truy xuaát laø Tac = 150 ns . Hai ngoõ vaøo ñieàu khieån CE\ vaø OE\: + OE\ : Ñöôïc duøng ñeå ñieàu khieån boä ñeäm (Output Buffer) ñeå cho pheùp döõ lieäu cuûa EPROM coù ñöôïc xuaát ra ngoaøi hay khoâng. + CE\ : Laø ngoõ vaøo cho pheùp hai chöùc naêng: Khi hoaït ñoäng bình thöôøng CE\ laø tín hieäu cho pheùp, ñeå ñoïc döõ lieäu töø EPROM CE\ phaûi ôû möùc logic 0 ,ñeå maïch ñieän beân ngoaøi löïa choïn döõ lieäu vaø chuyeån noù ñeán Output Buffer keát hôïp vôùi tín hieäu cho pheùp OE\ ôû möùc logic 0 thì döõ lieäu xuaát hieän ôû caùc ngoõ ra D7 – D0 . Khi CE\ =1 thì EPROM ôû traïng thaùi chôø (Standby) Coâng suaát tieâu thuï ôû traïng thaùi ñoïc döõ lieäu laø 525 mW, ôû traïng thaùi chôø laø 132 mW. 2 . Baûng traïng thaùi laøm vieäc cuûa EPROM 2764: OE\ CE\ PGM Vpp Vcc Output Read VIL VIL VIH Vcc Vcc D out Standby VIH X X Vcc Vcc High Z Program VIL X VIL Vpp Vcc D in Program Verify VIL VIL VIH Vpp Vcc D out Program Inhibit VIH X X Vpp Vcc High Z II . Khaûo saùt SRAM 6264 SRAM 6264 coù dung löôïng 8 KB duøng ñeå löu tröõ chöông trình vaø döõ lieäu. 1 . Sô ñoà chaân: Trong ñoù A0 – A 12 :13 ñöôøng ñòa chæ vaøo WR\ : cho pheùp ghi ôû möùc logic 0 OE\ : cho pheùp xuaát ôû möùc logic 0 CS \ : cho pheùp choïn vi maïch hoaït ñoäng ( möùc 0 ) NC : No Conection Boä nhôù SRAM coù khaû naêng löu tröõ thoâng tin trong noù chöøng naøo coøn ñöôïc caáp ñieän Thôøi gian truy xuaát Tac = 250 ns . 2 . Baûng traïng thaùi laøm vieäc cuûa SRAM 6264 WR\ CS\ CS OE\ Output Not Select X H X X High Z Not Select X X L X High Z Output Disable H L H H High Z Read H L H L D Out Write L L H H D in III . Khaûo saùt IC giaûi maõ 74138 : Khi ta muoán coù nhieàu ñaàu ra choïn voû töø boä giaûi maõ maø vaãn duøng caùc maïch logic ñôn giaûn thì thieát keá seõ trôû neân raát coàng keành do soá löôïng caùc maïch cöûa taêng leân. Trong tröôøng hôïp nhö vaäy ta thöôøng duøng caùc maïch giaûi maõ coù saün. Moät trong caùc maïch giaûi maõ hay ñöôïc söû duïng laø 74LS138 ,maïch giaûi maõ 3 ra 8 ñöôøng. 1. Sô ñoà chaân: Trong ñoù: Y0-Y7: 8 ñaàu ra choïn maïch giaûi maõ. A,B,C:Ba ñaàu vaøo choïn. E1\,E2\,E3:ñaàu vaøo cho pheùp. 2. Baûng traïng thaùi laøm vieäc cuûa 74138: Caùc ñaàu vaøo Caùc ñaàu ra Cho pheùp Ñieàu khieån C B A G2B\ G2A\ G1 Y0\ Y1\ Y2\ Y3\ Y4\ Y5\ Y6\ Y7\ X X X 1 X X 1 1 1 1 1 1 1 1 X X X X 1 X 1 1 1 1 1 1 1 1 X X X X X 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 Trong ñoù : X laø giaù trò khoâng quan taâm. IV: khaûo saùt IC giaûi maõ BCD to Decimal SN74145. Sô ñoà chaân: Trong ñoù :0-9 laø 10 ñaàu ra. A,B,C,D laø 4 ñaàu vaøo. Baûng traïng thaùi. No Input output D C B A 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 2 0 0 1 0 1 1 0 1 1 1 1 1 1 1 3 0 0 1 1 1 1 1 0 1 1 1 1 1 1 4 0 1 0 0 1 1 1 1 0 1 1 1 1 1 5 0 1 0 1 1 1 1 1 1 0 1 1 1 1 6 0 1 1 0 1 1 1 1 1 1 0 1 1 1 7 0 1 1 1 1 1 1 1 1 1 1 0 1 1 8 1 0 0 0 1 1 1 1 1 1 1 1 0 1 9 1 0 0 1 1 1 1 1 1 1 1 1 1 0 Valid 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 TAØI LIEÄU THAM KHAÛO Kyõ Thuaät Vi Xöû Lyù: Taùc giaû: Traàn Vaên Troïng (ÑHSP Kyõ Thuaät-TP.HCM) Xuaát baûn naêm 1995. Giaùo trình Vi Xöû Lyù – Vi ñieàu khieån Ngöôøi soaïn: Nguyeãn Ñình Phuù Laäp Trình Cho Caùc Heä Vi Xöû Lyù Bieân soïan: Huøynh Thuùc Cöôùc Ñaëng Vaên Ñöùc Nghieâm Myõ Nguyeãn Vaên Tam Traàn Baù Thaùi Nguyeãn Chí Thöùc Nhaø xuaát baûn Thoáng Keâ Kyõ Thuaät Vi Ñieàu Khieån Taùc giaû : Leâ Vaên Doanh Phaïm Chaéc Chöông Nhaø Xuaát Baûn Khoa Hoïc Vaø Kyõ Thuaät naêm 1998. THE 8051 MICROCONTROLLER Taùc Giaû: Scott MacKenzie 6. Trình Bieân Dòch ASM51.

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

  • docThiết kế - thi công kit Vi Điều Khiển 8951.DOC
  • docLUUDO.DOC
  • docTB.DOC