Thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính

Tài liệu Thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính: ... Ebook Thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính

doc131 trang | Chia sẻ: huyen82 | Lượt xem: 1523 | Lượt tải: 0download
Tóm tắt tài liệu Thiết kế mạch quang báo kết hợp giữa KIT vi xử lý và máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LÔØI NOÙI ÑAÀU Ngaøy nay vôùi söï phaùt trieån cuûa xaõ hoäi cuøng vôùi söï phaùt trieån cuûa khoa hoïc kyõ thuaät, cho neân nhu caàu veà thoâng tin trôû neân thieát yeáu ñoái vôùi con ngöôøi trong cuoäc soáng cuõng nhö trong hoaït ñoäng saûn xuaát kinh doanh. Ñeå ñaùp öùng nhu caàu treân, quang baùo laø hình thöùc cung caáp thoâng tin höõu ích khoâng theå thieáu trong cuoäc soáng haèng ngaøy. Do ñoù quang baùo ngaøy caøng phaùt trieån tinh vi hôn, ña daïng hôn, töø vieäc thieát keá quang baùo vôùi vaên baûn ñöôïc ghi cheát trong ROM, ñeán vieäc thieát keá moät KIT vi xöû lyù ñeå ñieàu khieån. Quang baùo laø hình thöùc thoâng baùo treân baûng ñeøn. Baûng ñeøn quang baùo goàm nhieàu Ma Traän LED gheùp laïi, moãi moät Ma Traän bieåu dieãn moät kí töï. Tuøy chieàu daøi cuûa baûng ñeøn maø coù theå hieån thò nhöõng baûn tin coù ñoä daøi khaùc nhau. Caùc töø trong vaên baûn seõ laàn löôït xuaát hieän vaø chaïy daàn töø phaûi sang traùi. Khi vaên baûn ñaõ hieån thò ñeán töø cuoái cuøng thì töø ñaàu tieân laïi baét ñaàu xuaát hieän trôû laïi. Quaù trình ñoù cöù tieáp tuïc laïi maõi. Beân caïnh ñoù, vôùi söï ra ñôøi cuûa maùy tính ñieän töû ñaëc bieät laø maùy vi tính, chuùng coù nhöõng tính naêng öu vieät nhö khaû naêng xöû lyù döõ lieäu nhanh choùng, ñoä tin caäy cao, löu tröõ löôïng thoâng tin lôùn vaø quan troïng hôn caû laø maùy tính coù theå keát hôïp vôùi nhieàu thieát bò ngoaïi vi tuøy theo muïc ñích öùng duïng cuï theå, maø vieäc trao ñoåi vaø ñieàu khieån trôû neân ñôn giaûn, chuùng phuï thuoäc vaøo phaàn meàm ñieàu khieån. Döïa vaøo tính ña daïng vaø meàm deûo cuûa maùy tính ngöôøi ta tìm caùch öùng duïng noù vaøo muïc ñích quaûng caùo, chaúng haïn nhö duøng trong quang baùo. Nhôø vaäy, vieäc thieát keá phaàn cöùng cho quang baùo trôû thaønh ít phöùc taïp hôn, nhöng ñoä tin caäy cao hôn. Trong thöïc teá ñeå hieån thò caùc vaên baûn, ngöôøi ta duøng caùc kieåu chöõ laø caùc Ma Traän LED 5x7, 5x8, 8x12 hoaëc 8x14 tuyø thuoäc vaøo muïc ñích söû duïng vaø ñoä phaân giaûi. Theo caùch nghó ñoù vieäc thieát keá maïch quang baùo keát hôïp giöõa KIT vi xöû lyù vaø maùy tính ñöôïc chuùng em trình baøy trong luaän vaên naøy. Phaàn meàm ñieàu khieån vieát baèng ngoân ngöõ PASCAL. ÔÛ ñaây maùy tính ñoùng vai troø truyeàn döõ lieäu vaø ñieàu khieån coøn KIT vi xöû lyù coù nhieäm vuï löu tröõ vaø thöïc hieän chöông trình quang baùo. Vieäc keát hôïp giöõa hai thieát bò laøm cho quang baùo trôû neân ña daïng, phong phuù, ñoä tin caäy cao vaø deã daøng söû duïng. Ngoaøi ra Kit vi xöû lyù coøn coù theå thöïc hieän chöông trình quang baùo ñoäc laäp vôùi maùy tính neáu nhö ñieàu kieän thöïc teá khoâng cho pheùp. Maët duø ñaõ daønh nhieàu thôøi gian ñeå thöïc hieän ñeà taøi nhöng do kieán thöùc vaø tay ngheà coù haïn neân khoâng traùnh khoûi thieáu soùt, chuùng em raát mong söï goùp yù cuûa quí thaày coâ vaø caùc baïn ñeå luaän vaên ñöôïc hoaøn haûo hôn. Chuùng em chaân thaønh caûm ôn thaày Nguyeãn Xuaân Ñoâng, cuøng taát caû quí thaày coâ ñaõ trao doài cho chuùng em löôïng kieán voâ cuøng quí baùu ñeå hoaøn thaønh toát luaän vaên ñaõ ñöôïc giao. Caùm ôn caùc baïn sinh vieân ñaõ coù nhöõng goùp yù quí baùu trong vieäc thöïc hieän luaän vaên naøy. Sinh vieân thöïc hieän Nguyeãn Thanh Tuaán Nguyeãn Ngoïc Khaùnh CHÖÔNG 1: TOÅNG QUAN KYÕ THUAÄT VI XÖÛ LYÙ I.1.Lòch söû phaùt trieån vi xöû lyù. I.1.1.Giôùi thieäu chung veà heä thoáng vi xöû lyù. Vi xöû lyù laø söï keát hôïp cuûa hai kyõ thuaät coâng ngheä quan troïng:Ñoù laø maùy tính duøng kyõ thuaät soá vaø caùc vi maïch ñieän töû. Hai coâng ngheä naøy keát hôïp laïi vôùi nhau vaø caùc nhaø nghieân cöùu ñaõ cheá taïo ra vi xöû lyù. Chöùc naêng chính cuûa vi xöû lyù laø xöû lyù döõ lieäu chöùa trong boä nhôù. Ñeå laøm ñöôïc ñieàu naøy vi xöû lyù phaûi coù caùc maïch logic cho vieäc xöû lyù döõ lieäu vaø caàn phaûi coù chöông trình. Chöông trìng laø taäp hôïp caùc leänh. Vi xöû lyù thöïc hieän moät leänh vôùi trình töï nhö sau: Ñoùn leänh töø boä nhôù. Giaûi maõ leänh Thöïc hieän leänh. I.1.2.Naêng löïc cuûa vi xöû lyù. Khi noùi ñeán naêng löïc cuûa Microprocessor coù nghóa laø noùi ñeán khaû naêng xöû lyù döõ lieäu, coù 3 thoâng soá ñeå ñaùnh giaù naêng löïc cuûa Microprocessor. Chieàu daøi cuûa töø döõ lieäu cuûa Microprocessor. Soá löôïng caùc oâ nhôù maø Microprocessor coù theå truy xuaát ñöôïc. Toác ñoä maø Microprocessor coù theå thöïc hieän moät leänh. I.2.Caùc khaùi nieäm cô baûn veà caáu truùc cuûa vi xöû lyù. I.2.1.Chieàu daøi töø döõ lieäu. Microprocessor ñaàu tieân coù chieàu daøi töø döõ lieäu laø 4 bit, tieáp theo laø caùc Microprocessor 8 bit, 16 bit, 32 bit vaø 64 bit. Moãi Microprocessor coù chieàu daøi töø döõ lieäu khaùc nhau coù moät khaû naêng öùng duïng khaùc nhau, caùc Microprocessor coù chieàu daøi töø döõ lieäu lôùn, toác ñoä laøm vieäc nhanh, khaû naêng truy suaát boä nhôù lôùn ñöôïc duøng trong caùc coâng vieäc xöû lyù döõ lieäu, ñieàu khieån phöùc taïp, caùc Microprocessor coù chieàu daøi töø döõ lieäu nhoû hôn, khaû naêng truy suaát boä nhôù nhoû hôn, toác ñoä laøm vieäc thaáp hôn ñöôïc söû duïng trong caùc coâng vieäc ñieàu khieån vaø xöû lyù ñôn giaûn chính vì theá caùc Microprocessor naøy vaãn toàn taïi. I.2.2.Khaû naêng truy suaát boä nhôù. Dung löôïng boä nhôù maø Microprocessor laøm vieäc quyeát ñònh ñeán toác ñoä laøm vieäc cuûa Microprocessor. Caùc Microprocessor ñaàu tieân bò giôùi haïn veà khaû naêng truy xuaát boä nhôù. Microprocessor 4004 coù 14 ñöôøng ñiaï chæ neân coù theå truy xuaát ñöôïc 214 = 16.384 oâ nhôù, vi xöû lyù 8 bit coù 16 ñöôøng ñiaï chæ neân coù theå truy xuaát ñöôïc 216 = 65.536 oâ nhôù, Microprocessor 16 bit coù 20 ñöôøng ñiaï chæ neân coù theå truy suaát 220 = 1.024.000 oâ nhôù, Microprocessor 32 bit nhö 386 hay 68020 coù theå truy suaát 4 G oâ nhôù, Microprocessor coù khaû naêng truy xuaát boä nhôù caøng lôùn neân coù theå xöû lyù caùc chöông trình lôùn. Tuøy theo öùng duïng cuï theå maø choïn moät Microprocessor thích hôïp. I.2.3.Toác ñoä laøm vieäc cuûa microprocessor Taàn soá xung clock cung caáp cho Microprocessor laøm vieäc quyeát ñònh ñeán toác ñoä laøm vieäc cuûa Microprocessor. Microprocessor coù toác ñoä laøm vieäc caøng lôùn thì khaû naêng xöû lyù leänh caøng nhanh. Taàn soá xung Clock laøm vieäc cuûa caùc Microprocessor ñöôïc cho bôûi caùc nhaø cheá taïo I.2.4. Caùc thanh ghi cuûa Microprocessor. Caùc thanh ghi laø moät phaàn quan troïng trong caáu truùc cuûa Microprocessor. Caùc thanh ghi beân trong cuûa Microprocessor duøng ñeå xöû lyù döõ lieäu. Neáu Microprocessor coù soá löôïng thanh ghi nhieàu thì ngöôøi laäp chöông trình coù theå vieát caùc chöông trình ñieàu khieån Microprocessor ñôn giaûn hôn, laøm taêng toác ñoä xöû lyù chöông trình. Neáu Microprocessor coù soá löôïng thanh ghi ít thì chöông trình seõ phöùc taïp hôn, toác ñoä xöû lyù chöông trình chaäm hôn. Vaäy soá löôïng caùc thanh ghi beân trong Microprocessor cuõng aûnh höôûng ñeán toác ñoä vaø khaû naêng xöû lyù chöông trình. I.2.5.Caùc leänh cuûa Microprocessor. Taäp leänh cuûa Microprocessor laø moät trong nhöõng yeáu toá cô baûn ñeå ñaùnh giaù toác ñoä laøm vieäc cuûa Microprocessor. Neáu Microprocessor coù nhieàu maïch ñieän logic beân trong ñeå thöïc hieän thì soá leänh ñieàu khieån cuûa Microprocessor caøng nhieàu, khi ñoù Microprocessor caøng lôùn vaø ñoä phöùc taïp caøng lôùn. Ví duï so saùnh 2 taäp leänh cuûa 2 Microprocessor 8 bit laø 8051 vaø Z80 thì 8051 coù 111 leänh khaùc nhau coøn Z80 coù 158 leänh. Taäp leänh cuûa moät Microprocessor caøng nhieàu raát coù ích khi laäp trình hay vieát chöông trình cho Microprocessor. I.2.6.Caáu truùc truy xuaát boä nhôù. Moät phaàn quyeát ñònh söï meàm deûo trong laäp trình laø soá löôïng caùc kieåu truy suaát boä nhôù khaùc nhau cuûa Microprocessor, Microprocessor coù nhieàu kieåu truy suaát boä nhôù seõ coù khaû naêng xöû lyù caøng nhanh vaø caáu truùc caùc maïch ñieän beân trong caøng phöùc taïp. Microprosesor coù chieàu daøi töø döõ lieäu caøng lôùn thì coù soá löôïng caùc kieåu truy xuaát boä nhôù caøng lôùn. I.2.7.Caùc maïch ñieän giao tieáp beân ngoaøi cuûa Microprocessor. Ngoaøi giao tieáp vôùi boä nhôù, Microprocessor coù caùc maïch ñieän giao tieáp vôùi caùc maïch ñieän beân ngoaøi ñeå ñieàu khieån hay môû roäng khaû naêng ñieàu khieån. Caùc maïch ñieän beân ngoaøi laø caùc IC vaø ñöôïc goïi laø IC ngoaïi vi. Moãi IC coù moät chöùc naêng rieâng, tuøy thuoäc vaøo yeâu caàu ñieàu khieån maø choïn caùc IC ngoaïi vi. Hình 1.1: Sô ñoà toång quaùt cuûa moät heä thoáng vi xöû lyù I.3.Caáu truùc beân trong cuûa boä vi xöû lyù. Moät boä vi xöû lyù goàm coù hai phaàn chính laø ñôn vò thöïc haønh EU (execution unit) vaø ñôn vò töông thích BUS laø BIU. + EU thöïc hieän taát caû caùc pheùp tính toaùn soá hoïc vaø logic. + BIU thì thu nhaän leänh vaø döõ lieäu töø boä nhôù. Caùc leänh naøy duøng ñeå ñieàu khieån hoaït ñoäng CPU. I.3.1.Ñôn vò thöïc hieän. EU laø nôi xaûy ra caùc quaù trình xöû lyù döõ lieäu trong boä vi xöû lyù. ÔÛ ñaây coù ñôn vò soá hoïc vaø logic (ALU – ARITHMETIC LOGIC UNIT) coäng vôùi caùc thanh ghi xöû lyù soá lieäu vaø löu tröõ caùc keát quaû trung gian. EU nhaän döõ lieäu vaø caùc leänh do BIU thu ñöôïc roài xöû lyù caùc thoâng tin ñoù. Döõ lieäu ñaõ ñöôïc xöû lyù trong EU laïi ñöôïc chuyeån ra boä nhôù hoaëc thieát bò ngoaïi vi thoâng qua BIU. Nhö vaäy EU khoâng lieân heä tröïc tieáp vôùi beân ngoaøi maø khoâng phaûi thoâng qua BIU. I.3.2.Ñôn vò töông thích Bus. BIU goàm caùc maïch phaùt ñiaï chæ vaø ñieàu khieån Bus, daõy chöùa leänh vaø con troû leänh. Noù coù nhieäm vuï baûo ñaûm cho Bus ñöôïc söû duïng heát dung löôïng ñeå taêng toác ñoä caùc thao taùc. I.3.3. Bus ñòa chæ, Bus döõ lieäu, Bus ñieàu khieån. a> Bus ñòa chæ Moät ñòa chæ öùng vôùi moâït vò trí duy nhaát trong boä nhôù. Ñòa chæ raát caàn thieát ñeå coù theå truy xuaát chính xaùc ñeán vò trí caàn thao taùc. Moãi boä vi xöû lyù ñeàu coù soá Bus ñòa chæ khaùc nhau töông öùng dung löôïng nhôù maø CPU coù theå truy suaát tôùi. b> Bus döõ lieäu Bus döõ lieäu (Data Bus) ñeå chuyeån thoâng tin töø CPU ñeán boä nhôù vaø caùc boä phaän khaùc (thao taùc ghi), nhaän döõ lieäu vaøo CPU (thao taùc ñoïc). Bus döõ lieäu vöøa thu vöøa phaùt thoâng tin neân ñöôïc xem laø Bus döõ lieäu hai chieàu. Tuy noù khoâng theå ñoàng thôøi thu vaø phaùt thoâng tin cuøng moät luùc. c> Bus ñieàu khieån Caùc ñöôøng daây cuûa Bus ñieàu khieån duøng ñeå xaùc ñònh moät leänh thöïc hieän vaøo luùc naøo vaø nhö theá naøo, xaùc ñònh caùc thao taùc ñoïc, vieát boä nhôù, xaùc ñònh cheá ñoä hoaït ñoäng cuûa CPU. I.4.Caáu truùc CPU Z80. I.4.1.Caáu taïo caên baûn CPU Z80. CPU Z80 coù nhöõng ñaëc ñieåm sau: 8 bit taùc ñoäng song song. 158 loaïi beänh caên baûn. Coù 22 thanh ghi beân trong. Coù tính naêng ngaét (interrupt). Coù theå noái tröïc tieáp vôùi RAM tónh hoaëc RAM ñoäng maø haàu nhö khoâng caàn maïch phuï trôï beân ngoaøi. Toác ñoä cuûa leänh Fetch laø 1,6ms (Z – 80), 1ms (Z – 80A), 0,76ms (Z – 80B). Chæ caàn duøng moät nguoàn ñieän +5V duy nhaát. Taát caû caùc chaân xuaát tín hieäu ra vaø nhaäp tín hieäu vaøo ñeàu thuoäc loaïi TTL. Caáu truùc beân trong cuûa CPU Z80 Caùc thanh ghi thöôøng duøng Thanh ghi chuû yeáu Thanh ghi boå trôï Accumulator A Flag F Accumulator A’ Flag F’ B C B’ C’ D E D’ E’ H L H’ L’ Caùc thanh ghi chuyeân duøng Interrupt vector Register I Memory refesh Register R Index register IX Index register IY Stack Pointer SP Program counter PC I.4.2. Caùc thanh ghi cuûa CPU -Z80. a> Caùc thanh ghi ña naêng: Bao goàm A, B, C, D,E, H, L. Caùc thanh ghi ña naêng coù ñoä daøi baèng soá bit cuûa BUS döõ lieäu, chuùng coù nhöõng chöùc naêng sau: Laø nôi CPU trao ñoåi döõ lieäu, chöùa döõ lieäu ñöôïc ñoïc töø beân ngoaøi hay gôûi döõ lieäu ra. Laø nôi chöùa caùc toaùn haïng, keát quaû cuûa moät pheùp toaùn. b>Thanh ghi F (8bit): Ñaây laø thanh ghi côø, vaø coøn moät thanh ghi côø phuï laø F’. Khaùc vôùi caùc thanh ghi treân, moãi bit cuûa thanh ghi côø ñoäc laäp vôùi nhau vaø ñöôïc CPU phaûn aùnh tình traïng cuûa keát quaû sau moät pheùp toaùn naøo ñoù. Moãi bit ñöôïc goïi laø moät côø vaø ngöôøi söû duïng coù theå kieåm tra baèng côø. S Z X H X P/V N C Caáu truùc thanh ghi côø CPU Z80 + Côø ZERO (côø Z): Sau moät pheùp toaùn keát quaû baèng 0 thì côø Z = 1 vaø neáu keát quaû khaùc 0 thì côø Z = 0. + Côø CARRY (côø C): Côø naøy phaûn aùnh soá nhôù hay soá möôïn sau moät leänh coäng hoaëc tröø. Côø naøy laø côø hieäu ôû bit cao nhaát cuûa boä tích luõy. + Côø SIGN (côø S): Ñaây laø côø daáu hay côø aâm, phaûn aùnh ñöôïc ñaët tính veà daáu. Neáu S = 0 :Keát quaû pheùp toaùn laø döông. Neáu S= 1 :Keát quaû pheùp toaùn laø aâm. Noùi caùch khaùc côø S chính laø giaù trò cuûa bit MSB cuûa thanh ghi. + Côø PARITY hay côø OVER LOW (côø P hay côø V): Ñaây laø côø cöïc tính hay côø aâm, côø naøy tuøy theo taùc vuï thöïc hieän maø coù yù nghóa P hay V. Neáu pheùp tính laø lyù luaän thì côø naøy laø P. Neáu pheùp tính laø soá hoïc côø thì naøy laø V. Taát caû caùc côø treân, ngöôøi söû duïng coù theå kieåm tra ñöôïc. Ngoaøi ra thanh ghi coøn coù hai côø ngöôøi söû duïng khoâng theå kieåm tra ñöôïc, caùc côø naøy duøng cho pheùp tính BCD. + Côø CPU (côø H): Côø naøy coù taùc duïng nhôø côø Carry nhöng noù chæ phaûn aùnh soá nhôù hay soá möôïn sinh ra ôû bit thöù tö. + Côø SUBTRACT (côø N): Côø naøy duøng cho pheùp tính DAA, cho caû hai pheùp coäng hoaëc tröø. c> Nhoùm caùc thanh ghi phuï: A’, B’, C’, D’,E’, H’, L’ Saùu thanh ghi coøn laïi khoâng phaûi laø boä tích luõy coù theå ñöôïc söû duïng rieâng nhö nhöõng thanh ghi 8 bit: B, C, D, G, H, L. Hay chuùng coù theå ñöôïc gheùp caëp vaø söû duïng nhö nhöõng thanh ghi 16bit: BC, DE, HL. d> Z80 coøn coù hai nhoùm thanh ghi ñaët bieät: coù chöùc naêng coá ñònh ngöôøi laäp trình khoâng theå duøng noù cho moät chöùc naêng khaùc. * Nhoùm thanh ghi ñaët bieät thöù nhaát goàm coù: thanh ghi vector ngaét (I), thanh ghi laøm töôi boä nhôù (R), thanh ghi chæ soá (IX) vaø (IY), con troû ngaên xeáp (SP), thanh ghi PC (boä ñeám chöông trình), thanh ghi I vaø thanh ghi R laø caùc thanh ghi coù ñoä daøi 8 bit, caùc thanh ghi coøn laïi coù ñoä daøi 16bit. +Thanh ghi PC (program counter) : Nguyeân taéc ñoái vôùi moät boä vi xöû lyù vaø thi haønh moät leänh ñaët taïi ñòa chæ laø noäi dung cuûa thanh ghi PC. Nhö vaäy, thanh ghi PC chöùa ñòa chæ cuûa leänh taïi moät thôøi ñieåm naøo ñoù. Luùc môùi caáp ñieän hay Reset CPU, thanh ghi PC seõ chöùa moät giaù trò naøo ñoù vaø ñaây chính laø ñòa chæ ñeå CPU baét ñaàu thi haønh chöông trình. Thanh ghi PC seõ töï ñoäng taêng 1 sau moãi byte, ñaët bieät giaù trò cuûa moät thanh ghi PC coù theå ñöôïc naïp theo yù muoán cuûa ngöôøi söû duïng. Ñieàu naøy cho pheùp chöông trình ñieàu khieån coù theå naïp laïi. +Thanh ghi SP (stack pointer) : Ñaây laø thanh con troû nhaø haàm. Nhaø haàm (STACK): trong quaù trình laøm vieäc cuûa CPU coù theå xuaát hieän moät yeâu caàu nhö caát moät thanh ghi hoaëc moät giaù trò naøo ñoù. Noù seõ caát nhöõng giaù trò naøy ñöôïc choïn laø moät vuøng nhôù naøy goïi laø nhaø haàm. +Thanh ghi vector ngaét I (interrupt vecror) : Duøng trong khi phuïc vuï ngaét quaõng cho pheùp chöông trình phuïc vuï ngaét quaõng ñaët ôû trong boä nhôù. Thanh ghi vector ngaét seõ löu tröõ byte ñòa chæ cao cuûa moät vector ngaét vaø byte ñòa chæ thaáp seõ ñöôïc cung caáp töø thieát bò yeâu caàu ngaét beân ngoaøi. Ngöôøi laäp trình phaûi naïp byte ñòa chæ cao vaøo thanh ghi I tröôùc khi söû duïng ngaét. Thanh ghi I coù ñoä daøi töø döõ lieäu 8 bit. +Thanh ghi R (memory refresh) : Ñaây laø thanh ghi phuïc vuï vieäc laøm töôi boä nhôù. Trong CPU Z 80 coù chöùa moät boä nhôù ñeäm ñeå coù laøm töôi deã daøng boä nhôù ñoäng. Thanh ghi R seõ töï ñoäng taêng sau moãi laàn laáy leänh. Döõ lieäu trong thanh R ñöôïc göûi ra phaàn thaáp cuûa Bus ñòa chæ cuøng vôùi tín hieäu laøm töôi trong khi CPU giaûi maõ vaø thöïc hieän leänh vöøa ñöôïc laáy ra. Do ñoù vieäc laøm töôi khoâng laøm chaäm chöông trình vaø ñoái vôùi ngöôøi laäp chöông trình thì ñieàu ñoù coi nhö khoâng coù. +Thanh ghi IX vaø thanh ghi IY (index register) : Ñaây laø caùc thanh ghi chæ söû duïng trong kieåu ñònh vò chæ soá, hai thanh ghi naøy keát hôïp vôùi moät giaù trò töông ñoái coù ñoä daøi 8 bit laøm taêng khaû naêng truy xuaát boä nhôù coù ñiaï chæ khaùc vôùi ñiaï chæ ñang chöùa trong thanh chæ soá. * Nhoùm thanh ghi ñaët bieät thöù hai laø caùc flipflop ñieàu khieån ngaét. Z80 coù hai ngaét NMI vaø INT, ngaét NMI laø ngaét khoâng theå ngaên ñöôïc, ngaét INT laø ngaét coù theå ngaên ñöôïc bôûi ngöôøi laäp trình. Ngaét khoâng ngaên ñöôïc NMI ñöôïc taùc ñoäng bôûi yeâu caàu ngaét NMI töø beân ngoaøi, khi taùc ñoäng ñeán ngoõ vaøo ngaét naøy, vi xöû lyù seõ nhaûy ñeán ñòa chæ 0066H ñeå thöïc hieän chöông trình, ñòa chæ naøy coá ñònh. Ngaét coù theå ngaên ñöôïc INT bôûi leänh DI vaø coù theå cho pheùp bôûi leänh EI. Traïng thaùi hieän taïi cuûa ngaét naøy ñöôïc thieát laäp trong flip flop IFF1. Khi ngöôøi laäp trình cho pheùp ngaét INT, IFF1 ñöôïc set ôû möùc logic 1, khi ngöôøi laäp trìng khoâng cho pheùp ngaét INT thì IFF1 ñöôïc reset veà 0. I.4.3.Boä xöû lyù logic vaø soá hoïc ALU Caùc leänh logic vaø soá hoïc 8 bit cuûa Z80 ñöôïc thöïc hieän trong ALU, ALU trao ñoåi vôùi thanh ghi qua Bus döõ lieäu beân trong. Caùc loaïi haøm maø ALU thöïc hieän bao goàm: ADD: leänh coäng. SUBTRACT: leänh tröø. LOGICAL AND: Leänh AND thöïc hieän pheùp AND. LOGICAL OR: Leänh OR thöïc hieän pheùp logic OR. LOGICAL EXCLUSIVE OR ( Leänh XOR): thöïc hieän pheùp logic XOR. COMPARE: Pheùp so saùnh. LEFT OR RIGHT SHIFTS OR ROTATOR: Leänh quay voøng vaø dòch. INCREMENT: Leänh taêng 1. DECREMENT: Leänh giaûm 1. SET BIT: Leänh thieát laäp bit traïng thaùi. RESET BIT: Leänh ñaët laïi bit traïng thaùi. TEST BIT: Leänh kieåm tra bit. I.4.4. Sô ñoà chaân CPU Z80. Hình 1.2: Sô ñoà chaân vaø sô ñoà logic CPU-Z80 I.5. Boä nhôù baùn daãn. I.5.1.Boä nhôù - Caùc boä nhôù thoâng duïng. Boä nhôù laø nôi löu tröõ döõ lieäu ñeå microprocessor xöû lyù.Caùc boä nhôù cuûa Microprocessor laø caùc IC, caùc IC nhôù naøy coù theå ñoïc döõ lieäu ra, ghi döõ lieäu vaøo hoaëc chæ ñoïc döõ lieäu ra. I.5.2.Hoaït ñoäng toång quaùt cuûa moät boä nhôù. Nhaän ñòa chæ ñeå löïa choïn ñuùng oâ nhôù caàn truy xuaát. Nhaän tín hieäu ñieàu khieån ñeå thöïc hieän vieäc truy xuaát coù nghóa laø nhaän döõ lieäu vaøo hay gôûi döõ lieäu ra. Nhaän döõ lieäu ñeå löu tröõ vaøo oâ nhôù khi thöïc hieän chöùc naêng ghi. Gôûi döõ lieäu ra khi thöïc hieän chöùc naêng ñoïc. Kieåm tra tín hieäu cho pheùp ñeå bieát boä nhôù naøy coù ñöôïc pheùp truy xuaát hay khoâng. I.5.3.Phaân loaïi boä nhôù. Thoâng thöôøng boä nhôù coù theå ñöôïc phaân thaønh hai loaïi toång quaùt laø: * ROM(read only memory): boä nhôù chæ ñoïc * RAM(random access memory): boä nhôù truy suaát ngaãu nhieân a>ROM. Ñaây laø loaïi boä nhôù khoâng thay ñoåi thì caùc döõ lieäu ñöôïc löu tröõ trong ROM khoâng bò maát ñi hay hö hoûng khi bò maát nguoàn ñieän. ROM cuõng coù nhieàu daïng khaùc nhau ngöôøi ta phaân chuùng thaønh 3 loaïi tieâu bieåu : + MASKABLE ROM (ROM maët naï): Ñaây laø loaïi ROM do nhaø saûn xuaát naïp saún chöông trình, khi ñaõ naïp chöông trình thì caùc bit trong ROM naøy khoâng thay ñoåi ñöôïc nöõa. + PROGRAMMABLE ROM (PROM): Loaïi ROM naøy ngöôøi söû duïng coù theå naïp chöông trình baèng moät thieát bò goïi laø thieát bò ñoát PROM. Khi ñaõ naïp chöông trình thì caùc bit döõ lieäu trong PROM khoâng theå thay ñoåi ñöôïc. + ERASABLE PROGRAMMABLE ROM (EPROM): Ñaây laø loaïi ROM maø ngöôøi söû duïng coù theå naïp chöông trình vaø caùc chöông trình ñoù coù theå xoaù hay thay ñoåi ñöôïc baèng moät thieát bò chuyeân duøng. b> RAM (RANDOM ACCESS MEMORY). RAM laø boä nhôù truy xuaát ngaãu nhieân coù nghóa laø baát kyø oâ nhôù naøo cuõng deã daøng truy xuaát nhö nhöõng oâ nhôù khaùc. RAM ñöôïc duøng trong maùy vi tính ñeå löu tröõ taïm thôøi chöông trình vaø döõ lieäu, noäi dung caùc oâ nhôù trong RAM thay ñoåi lieân tuïc khi Microprocessor thöïc hieän chöông trình. Ñieàu naøy ñoøi hoûi chu kyø ñoïc, ghi phaûi nhanh ñeå RAM khoâng laøm giaûm toác ñoä hoaït ñoäng cuûa heä thoáng. Khuyeát ñieåm cuûa RAM laø döõ lieäu löu tröõ trong RAM seõ maát ñi khi maùy tính maát ñieän, ñieàu naøy coù theå ñöôïc caûi thieän baèng caùch duøng nguoàn pin. Boä nhôù RAM ñöôïc chia laøm hai loaïi SRAM vaø DRAM. + STATIC RAM(SRAM): Ñaây laø loaïi RAM löu tröõ döõ lieäu maõi maõi neáu nguoàn nuoâi khoâng bò maát ñi. SRAM thöïc chaát laø haøng flip flop, trong ñoù moãi flip flop laø moät phaàn töû nhôù ñaïi dieän cho 1 bit. + DYNAMIC RAM (DRAM) : Ñaây laø loaïi RAM luoân ñöôïc laøm töôi. Caáu truùc cô sôû cuûa 1 teá baøo nhôù cuûa DRAM laø moät tuï ñieän giöõa cöïc chaén vaø cöïc neàn cuûa moät Transistor. Döôùi taùc duïng cuûa doøng ræ, ñieän theá trong tuï bò giaûm daàn vì vaäy phaûi luoân naïp ñieän cho moãi tuï vôùi chu kyø naïp laø 2ns. Vieäc naïp ñieän cho tuï nhö vaäy goïi laø quaù trình laøm töôi DRAM. Quaù trình laøm töôi DRAM bao goàm vieäc ñoïc döõ lieäu ra khoûi oâ nhôù roài vieát trôû laïi. Trong thôøi gian laøm töôi thì khoâng ñöôïc truy xuaát oâ nhôù naøo ñoù. c> Sô ñoà chaân vaø sô ñoà logic EPROM 2764 Hình 1.3: Sô ñoà chaân vaø sô ñoà logic EPROM 2764 Baûng traïng thaùi laøm vieäc cuûa EPROM 2764. MODE CE\ OE\ PGM\ VPP VCC OUTPUT Read VIL VIL VIH VCC VCC DOUT Stand by VIH X X VCC VCC High Z Program VIL X VIL VPP VCC DIN Program Verify VIL VIL VIH VPP VCC DOUT Program Inhibit VIH X X VPP VCC High Z I.5.4. Khaûo saùt hoï SRAM. a> Caáu truùc cuûa SRAM. SRAM ñöôïc cheá taïo theo kyõ thuaät MOST. Döõ lieäu trong SRAM seõ toàn taïi neáu khoâng ngaét nguoàn nuoâi RAM. Dung löôïng SRAM cuõng phuï thuoäc vaøo soá ñöôøng ñòa chæ. Töông töï nhö boä nhôù ROM, boä nhôù RAM cuõng coù moät soá thanh ghi, moãi thanh ghi löu tröõ moät töø döõ lieäu duy nhaát vaø coù moät ñòa chæ duy nhaát. Hình 1.4: Caáu truùc beân trong cuûa RAM b> Sô ñoà chaân vaø sô ñoà logic SRAM 6264 Hình 1.5: Sô ñoà chaân vaø sô ñoà logic RAM 6264 Baûng sau cho ta caùc cheá ñoä hoaït ñoäng, caên baûn cuûa RAM 6264 phuï thuoäc vaøo traïng thaùi cuûa caùc chaân ñieàu khieån. MODE 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 Dout Write L L H H Din I.6.Khaûo saùt caùc ic ngoaïi vi vaø öùng duïng. I.6.1.Khaûo saùt khaûo saùt vi maïch giao tieáp 8255A. a> Caáu truùc phaàn cöùng 8255A. 8255A laø IC ngoaïi vi ñöôïc cheá taïo theo coâng ngheä LSI duøng ñeå giao tieáp song song giöõa Microprocessor vaø thieát bò ñieàu khieån beân ngoaøi. Hình 1.6:Sô ñoà chaân vaø sô ñoà logic 8255A Teân caùc chaân 8255A: D7 – D0 Döõ lieäu Bus (Bi – Direction) RESET Reset input CS\ Chip Select RD\ Read input WR\ Write input A0, A1 Port Address PA7 – PA0 Port A PB7 – PB0 Port B PC7 – PC0 Port C 8255A giao tieáp vôùi Microprocessor thoâng qua 3 Bus: Bus döõ lieäu 8 bit D7 – D0, Bus ñòa chæ A1A2, Bus ñieàu khieån RD, WR, CS, Reset. Trong sô ñoà khoái cuûa 8255A, caùc Port I/O cuûa 8255A chia ra laøm 2 nhoùm: Nhoùm A goàm Port A vaø 4 bit cao cuûa Port C, nhoùm B goàm Port B vaø 4 bit thaáp cuûa Port C. Ñeå söû duïng caùc Port cuûa 8255A ngöôøi laäp trình phaûi gôûi töø ñieàu khieån ra ñeå thanh ghi ñieàu khieån 8255A ñònh caáu hình cho caùc Port ñuùng theo yeâu caàu maø ngöôøi laäp trình mong muoán. GROUP B PORT C (LOWER) 1 = INPUT 0 = OUTPUT PORT B 0 = MODE 0 1 = MODE 1 MODE SELECTION 0 = MODE 0 1 = MODE 1 GROUP A PORT C (UPPER) 1 = INPUT 0 = OUTPUT PORT A 1 = INPUT 0 = OUTPUT MODE SELECTION 00 =MODE 0 01 = MODE 1 1X = MODE 2 MODE SET FLAG 1 = ACTIVE D7 D6 D5 D4 D3 D2 D1 D0 hình 1.7: Caáu truùc töø ñieàu khieån I.6.2.Caáu truùc phaàn meàm 8255A a> Caùc nhoùm A vaø B ñöôïc caáu hình ôû Mode 0: Töø ñieàu khieån khi 2 nhoùm A vaø B laøm vieäc ôû Mode 0: 1 0 1 D4 D3 1 D1 D0 ÔÛ Mode 0 caùc Port A, Port B, Port C thaáp caø Port C cao laø caùc Port xuaát hoaëc nhaäp döõ lieäu ñoäc laäp. Do coù 4 bit ñeå löïa choïn neân coù 16 töø ñieàu khieån khaùc nhau cho 16 traïng thaùi xuaát/nhaäp cuûa 4 Port. b> Caùc nhoùm A vaø B ñöôïc caáu hình ôû Mode 1: Nhoùm A laøm vieäc ôû caáu hình Mode 1. Port A ñöôïc caáu hình laø Port nhaäp döõ lieäu. Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ 1.8 Caùc ñöôøng tín hieäu cuûa Port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa Port A. 1 0 1 1 D3 X X X Hình 1. 8: Cheá ñoä laøm vieäc khi PORT A nhaäp döõ lieäu Bit PC4 trôû thaønh bit STBA ( Strobe Input, taùc ñoäng möùc thaáp nhaát), ñöôïc duøng ñeå choát döõ lieäu ôû ngoõ vaøo PA7 – PA0 vaøo maïch choát beân trong 8255A. Bit PC5 trôû thaønh bit IBFA (Input Buffer Full, taùc ñoäng möùc cao), duøng ñeå baùo cho thieát bò beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát vaøo beân trong. Bit PC3 trôû thaønh bit INTRA (interrupt Request, taùc ñoäng möùc cao), bit naøy coù möùc logic 1 khi 2 bit STBA = 1, IBF = 1 vaø bit INTEA (Interrupt Enable) ôû beân trong 8255A baèng 1. Bit INTEA ñöôïc thieát laäp möùc logic 1 hay 0 döôùi söï ñieàu khieån cuûa phaàn meàm duøng caáu truùc bit Set/Reset cuûa 8255A. ÔÛ hình veõ 1.8, bit INTEA = 1 duøng ñeå cho pheùp tín hieäu IBF xuaát hieän taïi ngoõ ra cuûa INTEA coång AND. Tín hieäu INTRA taùc ñoäng ñeán ngoõ vaøo ngaét cuûa Microprocessor ñeå baùo cho Microprocessor bieát: döõ lieäu môùi ñaõ xuaát hieän ôû Port A. Chöông trình phuïc vuï ngaét ñoïc döõ lieäu vaøo vaø xoùa yeâu caàu ngaét. Caùc bit coøn laïi cuûa Port C: PC6, PC7 laø caùc bit xuaát/nhaäp bình thöôøng tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình 1.9. Caùc bit xxx duøng ñeå thieát laäp cho nhoùm B. Port A ñöôïc caáu hình laø Port xuaát döõ lieäu. Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ 1.9. Caùc ñöôøng tín hieäu cuûa Port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa Port A. 1 0 1 0 D3 X X X Hình 1.9: Cheá ñoä laøm vieäc PORT A xuaát döõ lieäu Bit PC7 trôû thaønh bit OBFA (Output Buffer Full, taùc ñoäng möùc thaáp), khi coù döõ lieäu Microprocessor gôûi ra Port A, tín hieäu OBFA seõ yeâu caàu thieát bò beân ngoaøi nhaän döõ lieäu. Bit BC6 trôû thaønh bit ACKA (AcknowLEDge Input, taùc ñoäng möùc thaáp), thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát tín hieäu ñaõ ñöôïc nhaän vaø saün saøng nhaän döõ lieäu tieáp theo. Bit PC3 trôû thaønh INTRA (Interrupt Request, taùc ñoäng möùc cao), bit naøy coù möùc logic 1 khi 2 bit OBFA = 1, ACKA = 1 vaø bit INTEA (Interrupt Enable) ôû beân trong 8255A baèng 1. Tín hieäu INTRA taùc ñoäng ñeán ngoõ vaøo ngaét cuûa Microprocessor ñeå baùo cho Microprocessor bieát: thieát bò beân ngoaøi ñaõ nhaän döõ lieäu ôû Port A. Caùc bit coøn laïi cuûa Port C: PC4, PC5 laø caùc bit xuaát/nhaäp bình thöôøng tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình 1. 8. Caùc bit xxx ñöôïc duøng ñeå thieát laäp nhoùm B. Nhoùm B laøm vieäc ôû caáu hình mode 1: Port B ñöôïc caáu hình laø Port nhaäp döõ lieäu. Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ 1.10. Caùc ñöôøng tín hieäu Port C trôû thaønh caùc ñöôøng ñieàu khieån /döõ lieäu cuûa Port B. 1 X X X X 1 1 X Hình 1.10: cheá ñoä laøm vieäc khi port B nhaäp döõ lieäu. Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùm A hoaït ñoäng ôû Mode 1. Port B ñöôïc caáu hình laø Port xuaát döõ lieäu Chöùc naêng cuûa ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ 1.11. Caùc ñöôøng tín hieäu Port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa Port B. 1 X X X X 1 0 X Hình 1.11: Cheá ñoä laøm vieäc khi PORT B xuaát döõ lieäu Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùmA hoaït ñoäng ôû Mode 1. Caùc bit xxx ñöôïc duøng ñeå thieát laäp cho nhoùm A, bit D0 khoâng coù taùc duïng trong tröôøng hôïp caû 2 nhoùm laøm vieäc ôû mode 1. c> Nhoùm A cuûa 8255A laøm vieäc ôû Mode 2. Mode 2 laø kieåu hoaït ñoäng Strobed Bi – directional 10, söï khaùc bieät vôùi caùc Mode 1 laø Port coù hai chöùc naêng xuaát nhaäp döõ lieäu. Töø ñieàu khieån khi hai nhoùm A hoaït ñoäng ôû Mode 2: 1 1 X X X X X X Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ 1.12. Caùc ñöôøng tín hieäu cuûa Port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa Port A. 1 0 1 1 D3 X X X Hình 1.12: Nhoùm A laøm vieäc ôû cheá ñoä xuaát/nhaäp döõ lieäu Bit PC7 trôû thaønh bit OBFA, PC6 trôû thaønh ACKA, PC4 thaønh bit STBA, PC5 thaønh bit IBFA vaø bit PC3 trôû thaønh bit INTRA. khi OBFA = 1, INTE1 = 1 hoaëc IBFA = 1, INTE2 = 1. Caùc bit PC2,1,0 coøn laïi coù theå laø caùc bit I/O tuøy thuoäc vaøo caùc bit ñieàu khieån cuûa nhoùm B. Chuù yù khi nhoùm A laøm vieäc ôû Mode2, nhoùm B chæ ñöôïc pheùp hoaït ñoäng ôû Mode 0. Caáu hình naøy coøn cho pheùp Set / Reset töøng bit cuûa Port C. töø ñieàu khieån naøy khaùc vôùi töø ñieàu khieån caáu hình laø bit D7 = 0. Hình 1.13:Daïng set vaø reset bit Bit D0 duøng ñeå Set/Reset bit INTE, khi D0 = 1 thì INTE = 1 (cho pheùp ngaét), khi D0 = 0 thì INTE = 0 (khoâng cho pheùp ngaét). 3 bit D1D2D3 duøng ñeå choïn 1 bit cuûa Port C, gaùn möùc logic cuûa bit D0 cho bit cuûa Port ñaõ choïn. Trong thöïc teá Port A vaø Port B thöôøng ñöôïc caáu hình vôùi mode khaùc nhau. Ví duï nhoùm A hoaït ñoäng ôû Mode 2, nhoùm B laøm vieäc ôû Mode 0. CHÖÔNG 2: PHÖÔNG PHAÙP GIAO TIEÁP VÔÙI THIEÁT BÒ NGOAÏI VI Giao tieáp giöõa maùy tính vôùi thieát bò ngoaïi vi laø vieäc trao ñoåi döõ lieäu giöõa maùy tính vôùi moät hay nhieàu thieát bò ngoaïi vi (vôùi moâi tröôøng ngoaøi). Maùy tính coù nhieàu coång vaøo ra (I/O) ñeå thöïc hieän chöùc naêng treân. Caùc coång vaøo ra goàm: coång noái tieáp ( port com). Coång song song ( coång maùy in). Khe caém trong maùy tính (Slot card). II.1/Giao tieáp qua coång noái tieáp RS232 Coång noái tieáp RS232 laø giao dieän phoå bieán roäng raõi nhaát, noù coøn goïi laø coång COM 1 , coøn coång COM 2 thöôøng duøng töï do cho öùng duïng khaùc. Coång naøy truyeàn döõ lieäu döôùi daïng noái tieáp theo moät toác ñoä do ngöôøi laäp trình quy ñònh ( thöôøng laø 1200;2400;4800;9600 bps…). Loaïi truyeàn naøy coù khaû naêng duøng cho nhöõng khoaûng caùch lôùn. Coång noái tieáp RS232 khoâng phaûi laø moät heä thoáng bus, noù cho pheùp deã daøng taïo ra lieân keát döôùi hình thöùc ñieåm._. giöõa hai maùy caàn trao ñoåi thoâng tin vôùi nhau. Chieàu daøi döõ lieäu truyeàn ñi coù theå laø 5,6,7 hoaëc 8 bit, vaø keøm theo caùc bit start, stop, parity ñeå taïo thaønh moät khung truyeàn (frame). Do vieäc truyeàn döõ lieäu laø noái tieáp neân toác ñoä truyeàn bò haïn cheá neân noù thöôøng khoâng ñöôïc söû duïng torng nhöõng öùng duïng caàn toác ñoä truyeàn cao. Khung truyeàn döõ lieäu nhö sau: Start bit D0 D1 D2 D3 D4 D5 D6 D7 Parity bit Stop bit - Hình daïng cuûa coång noái tieáp ôû maùy tính: Chaân (loaïi 9 chaân) Chaân (loaïi 25 chaân) Chöùc naêng 1 8 DCD_Data carrier detect _Loái vaøo 2 3 RxD_Receive Data _Loái vaøo 3 2 TxD_Transmit Data _Loái ra 4 20 DTR_Data Terminal Ready _Loái ra 5 7 GND _Noái ñaát 6 6 DSR _Data Set Ready _Loái vaøo 7 4 RTS _Request To Send _Loái ra 8 5 CTS_Clear To Send _Loái vaøo 9 22 RI _Ring Indicator _Loáivaøo BAÛNG 1: chaân cuûa coång noái tieáp maùy tính Ñòa chæ cô baûn cuûa coång noái tieáp COM 1 laø 3F8h Ñòa chæ cô baûn cuûa coång noái tieáp COM 2 laø 2F8h II.2/Giao tieáp qua khe caém maùy tính (Slot-card). Trong maùy vi tính treân board maïch heä thoáng thöôøng cheá taïo saün caùc khe caém nhaèm muïch ñích môû roäng boä nhôù cuõng nhö môû roäng phaïm vi öùng duïng cuûa maùy vi tính baèng caùch gaén theâm caùc board maïch môû roäng vaøo caùc khe caém naøy. Moãi slot ñeàu coù caùc bus döõ lieäu , bus ñòa chæ vaø caùc ñöôøng tín hieäu ñieàu khieån nhö :CLK,IOW,IOR,AEN,ALE,RESET.Do ñoù vieäc thieát keá caùc Slot-Card töø caùc ñaàu caém Slot seõ ñôn giaûn, soá linh kieän keøm theo ít, vaø taän duïng ñöôïc caùc nguoàn ñieän cuûa maùy tính (+5v,-5v,+12v,-12v) neân giaù thaønh seõ reû ñi, deã daøng ñöa tín hieäu ñieàu khieån ra ngoaøi vaø toác ñoä truyeàn nhanh. Beân caïnh nhöõng öu ñieåm ñoù, Slot cuõng coù moät soá nhöõng nhöôïc ñieåm nhö sau: -Slot-Card phaûi caém vaøo caùc Slot treân board maïch heä thoáng neân phaûi gôõ naép maùy. -Phaïm vi truyeàn tín hieäu gaàn vaø caùp truyeàn phöùc taïp.Trong moät soá tröôøng hôïp khoâng thöïc hieän ñöôïc. Vì vaäy khi söû duïng Slot- Card ñeå giao tieáp vôùi thieát bò ngoaïi vi caàn caân nhaéc kyõ öu khuyeát ñieåm. Tuøy theo muïch ñích söû duïng maø ta choïn phöông aùn thích hôïp nhaát. Trong maùy tính, ñòa chæ duøng ñeå söû duïng card môû roäng laø töø 300h - 31Fh. II.3/Giao tieáp qua coång maùy in (LPT) Coång noái giöõa maùy tính vaø maùy in coøn goïi laø coång song song.Vieäc noái maùy in vôùi maùy tính ñöôïc thöïc hieän hieän qua oå caém 25 chaân ôû phía sau maùy tính, nhöng ñaây khoâng chæ laø choå noái vôùi maùy in maø khi söû duïng may tính vaøo vieäc ñieàu khieån thieát bò ngoaïi vi thì vieäc gheùp noái cuõng ñöôïc thöïc hieän qua oå caém naøy. Coång naøy truyeàn döõ lieäu song song, toác ñoä truyeàn cao. Coång coù caùc ñöôøng daãn töông thích vôùi TTL. II.3.1/Moâ taû coång maùy in Coång maùy in coù taát caû 17 ñöôøng daãn bao goàm 12 ñöôøng daãn ra vaø 5 ñöôøng daãn vaøo. Caùc ñöôøng döõ lieäu töø D0 - D7 laø nhöõng ñöôøng daãn moät chieàu vaø laø ñöôøng daãn ra. Caùc ñöôøng tín hieäu vaøo ra coù choát. hình daïng cuûa coång maùy in: Hình2.1: Coång maùy in -caùc ñöôøng daãn tín hieäu ñöôïc moâ taû nhö sau: chaân soá 1(STROBE):Chaân ra, khi maùy tính ñöa tín hieäu naøy ra thì noù baùo cho maùy in ñoïc döõ lieäu vaøo ñeå in.Xung taùc ñoäng ôû möùc thaáp. Chaân 2 - 9 (DATA): caùc chaân ra döõ lieäu cuûa maùy tính. Chaân 10 ( ACK) : chaân vaøo ñeå baùo cho maùy tính bieát laø döõ lieäu ñaõ nhaän ñöôïc vaø yeâu caàøu maùy tính gôûi döõ lieäu tieáp theo. Chaân 11 (BUSY) : chaân vaøo ñeå baùo cho maùy tính bieát laø maùy in ñang baän khoâng theå nhaän tieáp döõ lieäu töø maùy tính gôûi ra. Chaân naøy taùc ñoäng ôû möùc cao. Chaân 12 (PE) :chaân vaøo ñeå baùo cho maùy tính bieát laø maùy in heát giaáy. Chaân naøy taùc ñoäng ôû möùc cao. Chaân 13 (SLCT): chaân vaøo ñeå baùo maùy tính ñang ôû traïng thaùi löïa choïn.Chaân naøy taùc ñoäng ôû möùc cao. Chaân 14 (AF) :chaân ra taùc ñoäng ôû möùc thaáp.Khi taùc ñoäng thì maùy töï ñoäng dòch theâm moät doøng sau khi in. Chaân 15 (ERROR) : chaân vaøo taùc ñoäng möùc thaáp ñeå baùo maùy in ñang bò loãi. Chaân 16 (INIT) : chaân ra taùc ñoäng möùc thaáp ñeå ñaët laïi maùy in. Chaân 17 ( SLCTIN) : chaân ra taùc ñoäng möùc thaáp ñeå baùo maùy in ñöa döõ lieäu vaøo. Chaân 18 - 25 (GND): laø chaân noái mass. Trong 17 ñöôøng daãn tín hieäu thì coù 5 vaøo, vì vaäy vieäc baét tay giöõa maùy tính vaø maùy in ñöôïc thöïc hieän chaúng haïn nhö khi maùy in khoâng coøn ñuû choå troáng trong boä nhôù thì noù ñöa ñeán maùy tính moät traïng thaùi (BUSY =1) töùc laø baùo maùy in ñang baän khoâng neân gôûi döõ lieäu ra nöõa. II.3.2/Söï trao ñoåi vôùi caùc ñöôøng daãn tín hieäu. Chaân 2 -9 D7 D6 D5 D4 D3 D2 D1 D0 a/Thanh ghi döõ lieäu Chaân 1 Chaân 14 Chaân 16 Chaân 17 Chaân IRQ-ENABLE D7 D6 D5 D4 D3 D2 D1 D0 b/ Thanh ghi ñieàu khieån D7 D6 D5 D4 D3 0 0 0 Error (chaân 15) SLCT(chaân 13) PE(chaân 12) ACK(chaân 10) Busy(chaân 11) c/ Thanh ghi traïng thaùi Hình 2.2 : Thanh ghi coång maùy in cuûa maùy tính PC Caùc ñöôøng daãn tín hieäu cuûa coång maùy in ñöôïc saép xeáp thaønh 3 thanh ghi:thanh ghi döõ lieäu, thanh ghi traïng thaùi vaø thanh ghi ñieàu khieån. Thoâng qua 3 thanh ghi naøy cho pheùp trao ñoåi thoâng tin giöõa moâi tröôøng ngoaøi vaø boä nhôù maùy tính. ñòa chæ htanh ghi döõ lieäu vôùi ñòa chæ cô baûn cuûa coång maùy in 378h. ñòa chæ thanh ghi traïng thaùi laø 379h. ñòa chæ thanh ghi ñieàu khieån laø 37Ah. Muoán truy xuaát döõ lieäu qua coång maùy in thì ta phaûi bieáùt ñöôïc ñòa chæ cô baûn cuûa caùc thanh ghi döõ lieäu goïi laø ñòa chæ cô baûb cuûa coång maùy in. Ñòa chæ cô baûn cuûa coång maùy in LPT1 laø 378h ñòa chæ cô baûn cuûa coång maùy in LPT2 laø 278h. II.4/Choïn coång giao tieáp vôùi KIT vi xöû lyù. Tuy coù nhieàu phöông phaùp giao tieáp vôùi thieát bò ngoaïi vi ñöôïc trình baøy ôû treân, nhöng chuùng em choïn phöông phaùp giao tieáp song song qua coång maùy in LPT1,vì phöông phaùp naøy ñôn giaûn, deã thieát keá phaàn cöùng, toác ñoä truyeàn nhanh, thích hôïp truyeàn döõ lieäu trong khoaûng caùch gaàn, caùc ñöôøng tín hieäu vaøo ra ôû möùc TTL töông thích vôùi KIT vi xöû lyù. CHÖÔNG 3: THIEÁT KEÁ VAØ THI COÂNG PHAÀN CÖÙNG Sô ñoà maïch quang baùo. MAÙY TÍNH KIT VI XÖÛ LYÙ QUEÙT HAØNG QUEÙT COÄT BAÛNG ÑEØN GIAO TIEÁP A.QUANG BAÙO III.1.Khaùi nieäm cô baûn: ÑÔN VÒ HIEÅN THÒ HEÄ VI XÖÛ LYÙ NHAÄP THOÂNG TIN Quang baùo laø thieát bò thoâng tin vaên baûn. Sô ñoà khoái cô baûn quang baùo goàm 3 ñôn vò chính nhö hình veõ: Hình 3.1: Sô ñoà khoái heä thoáng quang baùo. Thoâng tin caàn hieån thò quang baùo ñöôïc ñöa vaøo heä thoáng quang baùo töø ñôn vò nhaäp thoâng tin. Ñôn vò naøy coù theå laø baøn phím, boä nhôù ngoaøi…Ñôn vò nhaäp thoâng tin coù nhieäm vuï bieán ñoåi thoâng tin döôùi daïng soá vaø cung caáp cho heä vi xöû lyù. Ñôn vò xöû lyù coù theå laø KIT vi xöû lyù hoaëc laø maùy tính hay keát hôïp caû hai. Ñôn vò xöû lyù thoâng tin quy ñònh cheá ñoä hieån thò cuûa heä quang baùo. Ñôn vò hieån thò thöôøng laø ma traän LED. Ñoàng thôøi coù theå laø moät baûng quang baùo vôùi ñôn vò hieån thò laø caùc boùng ñeøn ñoát tim,hay laø caùc boùng ñeøn neon. III.2.Phaân loaïi quang baùo: Quang baùo coù theå chia thaønh caùc loaïi nhö sau döïa treân cô sôû laø ñôn vò nhaäp thoâng tin vaø xöû lyù. Loaïi quang baùo maø noäi dung hieån thò ñöôïc ghi cheát trong ROM. Ñôn vò xöû lyù cuûa quang baùo naøydeã daøng nhaän thaáy laø khi thay ñoåi noäi dung caàn hieån thò thì phaûi naïp laïi ROM,raát baát tieän, khoâng coù tính kinh teá. Quang baùo coù giao tieáp vôùi baøn phím: Loaïi naøy duøng moät baøn phím ñeå nhaäp thoâng tin caàn hieån thò. Ñôn vò xöû lyù laø KIT vi xöû lyù hoaëc maùy vi tính coù ngoõ giao tieáp vôùi baøn phím. Quang baùo loaïi naøy cho pheùp thay ñoåi noäi dung hieån thò töông ñoái thuaän lôïi. Quang baùo giao tieáp vôùi maùy vi tính: Ñaây laø loaïi quang baùo ñöôïc ñieàu khieån baèng maùy vi tính neân cheá ñoä hieån thò raát ña daïng, phong phuù. Thoâng thöôøng quang baùo loaïi naøy ñöôïc thieát keá truy xuaát töøng ñieåm(cheá ñoä graphic). Vôùi söï phaùt trieån cuûa phaàn meàm hieän nay ñöôïc maùy tính vöøa ñieàu khieån vöøa laøm vieäc khaùc. Quang baoù keát hôïp giöõa KIT vi xöû lyù vaø maùy tính: Loaïi quang baùo naøy ña daïng hôn , chuùng vöøa coù theå laøm vieäc ñoäc laäp vöøa keát hôïp nhau, coù tính löu tröõ (KIT vi xöû lyù), coù theå kieåm tra noäi dung caàn hieån thò moät caùch deã daøng(maøn hình maùy tính), noäi dung hieån thò chính xaùc. Ngoaøi vieäc phaân loaïi treân, caùc heä thoáng quang baùo coøn coù theå ñöôïc phaân loaïi theo kích thöôùc cuûa ma traän hieån thò. III.3.Phöông phaùp multiplex ñieàu khieån ma traän led Ñeå ñieàu khieån ma traän LED caàn coù maïch choát döõ lieäu, xuaát döõ lieäu caùc maïch naøy phaûi keát hôïp chaët cheõ vôùi nhau. Soá maïch choát tyû leä vôùi soá löôïng LED. Vôùi moät ma traän hieån thò, soá löôïng LED raát lôùn, keùo theo soá maïch choát nhieàu,daãn ñeán phaàn hieån thò quang baùo trôû neân phöùc taïp, coàng keành, khoù keát noái, khoù veõ maïch in, khoâng coù tính kinh teá. Phöông phaùp MULTIPLEX cho pheùp ta ñieàu khieån ma traän LED vôùi soá löôïng ñöôøng daây vaø maïch in giaûm ñaùng keå. Theo phöông phaùp naøy taïi moãi thôøi ñieåm chæ duy nhaát coù moät LED saùng. Caùc LED phaùt saùng theo taàn soá ñuû nhanh ñeå maét ngöôøi caûm thaáy LED saùng lieân tuïc, nhôø hieän töôïng löu aûnh treân voõng maïc cuûa maét, nhöng chuù yù laøm sau cho caùc LED saùng roõ khoâng coù caûm giaùc rung. Do LED ñöôïc caáu doøng phaùt saùng trong thôøi gian ngaén, neân ñeå LED thaáy roõ bieân ñoä doøng xung phaûi lôùn hôn nhieàu laàn so vôùi doøng DC trung bình qua LED. Vôùi cheá ñoä laøm vieäc bieân ñoä doøng khaù lôùn, LED coù theå bò hö neáu thôøi gian quaù laâu. Vì vaäy caùc ma traän LED phaûi ñöôïc baûo veä thích hôïp traùnh hö hoûng. Phöông phaùp MULTIPLEX ñöôïc duøng trong phöông phaùp truyeàn data noái tieáp hay song song, ñöôïc chia thaønh hai loaïi thöôøng duøng : queùt haøng hay queùt coät treân baûng LED. Vieäc choïn haøng hay choïn coät caàn coù moät maïch choïn leänh cheå choïn haøng hay coät thích hôïp. Veà phaàn cöùng goàm maïch dao ñoäng vaø maïch giaûi maõ cho caùc coät caùc haøng Duøng phaàn meàm ñeå xöû lyù choïn haøng hay choïn coät. Taàn soá queùt quy ñònh baèng phaàn meàm. III.4.Boä hieån thò Trong moät heä thoáng vi xöû lyù boä hieån thò ñoùng moät vai troø heát söùc quan troïng, noù laø nôi duøng ñeå giao tieáp giöõa maùy vaø ngöôøi söû duïng. Töø maøn hình hieån thò ngöôøi söû duïng coù theå quan xaùc. Caûm nhaän ñöôïc quaù trình laøm vieäc cuûa heä thoáng. Khi ngöôøi söû duïng muoán vieát moät chöông trình naøo ñoù treân maïch KIT sau khi ñöa döõ lieäu vaøo, nhôø coù maøn hình hieån thò maø ta coù theå kieåm tra laïi döõ lieäu nhaäp vaøo ñaõ ñuùng hay chöa. Hieän nay treân thò tröôøng coù nhieàu loaïi maøn hình hieån thò nhö hieån thò maøn hình Video, baèng Ma Traän LED, baèng LED 7 ñoaïn. Trong caùc caùch hieån thò treân, vieäc hieån thò baèng LED 7 ñoaïn coù caáu truùc ñôn giaûn vaø deå söû duïng. Thaät ra, duø laø loaïi LED ñi nöõa thì caáu taïo cuûa chuùng cuõng töø nhieàu phaàn töû LED rôøi qua coâng ngheä saûn xuaát chuùng seõ coù nhöõng hình daïng khaùc nhau. Vaø nhö ta ñaõ bieát nguyeân lyù hoaït ñoäng cuûa Diod Phaùt Quang laø seõ phaùt saùng khi coù doøng ñieän chaïy qua côõ ( 5 – 30)mA. Do ñoù noù coù theå chæ thò ñöôïc: +Tín hieäu 1: khi coù doøng ñieän chaïy qua, diod saùng. +Tín hieäu 0: khi khoâng coù doøng ñieän chaïy qua, diod taét. III.4.1.Sô ñoà chaân ma traän LED vaø IC thanh ghi dòch 74164. a.Ma Traän LED. Caáu taïo Ma Traän LED goàm coù 40 ñieåm LED nhoû , ñöôïc chia thaønh 8 haøng vaø 5 coät (tuøy töøng loaïi Ma Traän LED maø ta seõ coù loaïi queùt coät ôû möùc cao hay Hình 3.2: Sô ñoà chaân Ma Traän LED möùc thaáp). Trong heä thoáng naøy 8 haøng naøy laø 8 haøng Anod vaø 5 coät laø 5 coät Katod. Nhö vaäy muoán 40 ñieåm LED ñeàu saùng cuøng moät luùc thì ta chæ vieäc cung caáp möùc cao cho 8 haøng vaø möùc thaáp cho 5 coät coøn neáu muoán ñieåm LED naøo saùng thì ta caáp möùc 1 vaø möùc 0 töông öùng vôùi Anod vaø Katod cuûa ñieåm LED ñoù. Nhö vaäy moãi chöõ hay soá caàn hieån thò treân Ma Traän LED thì phaûi ñöôïc toå hôïp bôûi 8 haøng vaø 5 coät vaø ñeå hieån thò heát moät chöõ hay soá ta phaûi queùt tôùi 8x5 laàn. b.thanh ghi dòch 74164. Hình 3.3: Sô ñoà chaân IC74164 Caùc thoâng soá cô baûn cuûa IC hoï 74LS loaïi thanh ghi dòch * Ñieän theá cung caáp: Vcc = 4,75 ¸ 5,25 Volt. * Doøng ra möùc cao: IOH = 400mA. * Doøng ra möùc thaáp: IOL = 8mA. * Taàn soá xung clock: f = 25 MHz. * Ñoä roäng xung CK: T = 2ns. * Doøng vaøo möùc cao: IIH = 20mA. * Doøng vaøo möùc thaáp: IIL = -0.6 ¸ -0,4 mA. * Doøng cung caáp max: Iomax = 25 mA. III.4.2.Caáu truùc boä hieån thò. Maøn hình hieån thò ñöôïc gheùp laïi töø 16 Ma Traän LED. Ñeå tieát kieäm boä giaûi maõ ta duøng phöông phaùp queùt doàn keânh (multiplexer) nghóa laø 8 haøng gioáng nhau cuûa 16 Ma Traän LED ñöôïc noái chung laïi vôùi nhau roài ñöa ñeán 8 ñöôøng ra PORT A cuûa 8255A thöù hai. Vi xöû lyù xuaát döõ lieäu ra PORT A naøy, döõ lieäu xuaát ra seõ quyeát ñònh ñieåm LED naøo saùng. Vôùi 16 Ma Traän LED ta seõ coù 80 coät LED ( 16x5 ), 80 coät naøy keát hôïp vôùi 80 ngoõ ra töø 10 IC 74164 ñeå queùt maøn hình, caùc Transitor D468 ñöôïc söû duïng ñeå thuùc doøng cho coät LED. Caùc coät LED ñöôïc maéc laàn löôït theo daïng noái tieáp nghóa laø chaân QH cuûa 74164 thöù nhaát seõ noái vaøo chaân AB 74164 thöù hai cöù theá tieáp tuïc cho ñeán IC 74164 thöù chín, chaân CK cuûa 10 IC 74164 ñöôïc noái chung laïi vôùi nhau vaø ñöa ra PORT B _8255A thöù hai nhö vaäy taàn soá queùt cuûa maøn hình seõ ñöôïc taïo ra töø phaàn meàm, chaân AB cuûa IC 74164 thöù nhaát ñöôïc noái vaøo chaân PB1_PORT B cuûa 8255A thöù hai. Vôùi caùch maéc maïch nhö treân taïi moät thôøi ñieåm baát kyø chæ coù moät coät LED ñöôïc saùng do ñoù muoán hieån thò moät chöõ (soá) hay moät haøng chöõ thì ta phaûi queùt laøm nhieàu laàn nhöng do taàn soá queùt nhanh ta caûm thaáy caùc chöõ xuaát hieän cuøng moät luùc. III.4.3.Tính toaùn maïch ñeøn LED. Ñôn vò hieån thò cuûa heä thoáng quang baùo duøng Ma Traän LED vaø ñöôïc thieát keá 8 haøng 80 coät, coù theå cuøng moät luùc hieån thò 13 kyù töï treân boä hieån thò. a> Hieån thò haøng. -Doøng caáp cho led laø doøng xung, bieân ñoä phaûi ñuû lôùn ñeå led saùng thaáy roõ. -Moãi laàn queùt chæ coù moät led saùng, choïn doøng qua led laø 30mA. Vaäy maïch ñieàu khieån haøng phaûi coù doøng: Ihaøng = 20mA Do Q1 laøm vieäc ôû cheá ñoä xung vaø taïi moãi thôøi ñieån chæ coù moät LED saùng neân ta choïn Q1 vôùi doøng IC = 50mA. Tra soå tay nghieân cöùu transitor nhaät ta choïn ñöôïc :2SC1887, 2SC1940..vv. Ôû ñaây ta choïn 2SC828 coù caùc thoâng soá. SLN, IC=50mA, P=400 mW, VCBO=30 volt, VEBO=7 volt, hFE=130-520 Doøng ñieän cöïc B khi caùc transitor queùt haøng daãn laø: IB = IC/b = 30/150 = 0.2mA Doøng ñieän naøy ñöôïc cung caáp bôûi PORT giao tieáp 8255 coù ñeäm ngoõ ra TTL coù doøng ñieän ra IOHmin = 0.2 mA neân trò soá treân chaáp nhaän ñöôïc. R2 =(VOH – 0.8)/IB = (2.4 - 0.8)/0.2 = 8KW Ta choïn heä soá khuyeách ñaïi doøng: b = 150 IC = b.IB = 150.0,2 = 30mA Vì caùc Transitor queùt haøng laøm vieäc ôû cheá ñoä daãn baõo hoaø neân VCE = 0,2v IE = ILED = IC + IB = 30mA Vaäy R1 = Vcc/IC = 5/30mA » 150W b> ñieàu khieån coät. Ma Traän LED ñöôïc ñieàu khieån baèng caùch choïn coät roài xuaát döõ lieäu qua haøng. Döõ lieäu ñöôïc xuaát ra ñöôïc vi xöû lyù gôûi ra boä phaän hieån thò thoâng qua 8 ñöôøng cuûa PORT A_ 8255A(2). Töông töï vôùi ñieàu khieån haøng, ñieàu khieån coät Transitor cuõng phaûi laøm vieäc ôû cheá ñoä baõo hoaø. Taïi moãi thôøi ñieåm seõ coù moät coät ñöôïc choïn cho neân doøng qua Transitor seõ laø : Icoät = 30mA . 8 = 240mA Ta choïn Transitor Q2 laø D468 vôùi caùc thoâng soá nhö sau: S1-NPN, IC=1A, b = 85 – 240, VCBO=25volt, VEBO= 5volt Ñeå Transitor Q2 daãn baõo hoøa Ta choïn IB = 4mA VRB = 5V – 0.7V = 4.3V Vaäy: R3 = 4.3V/4mA » 1KW Hình 3.4:Sô ñoà maïch hieån thò thu goïn III.4.4. Maïch nguoàn. Yeâu caàu: - Caáp ñuû doøng vaø aùp cho maïch oån aùp. - Ñoä dôïn soùng thaáp. Thieát keá: Nhö ñaõ tính toaùn ôû maïch ñeøn, ta choïn doøng qua LED laø 30mA. Do ñoù khi taát caû 8 ñeøn saùng thì ta coù : Iled = 30x8 = 240mA Choïn doøng cung caáp cöïc ñaïi cho IC 74LS164 laø 16 mA nhö ta coù: I74LS164 = 16x10 = 160mA Choïn doøng cung caáp cho maïch KIT : + Doøng cung caáp cho 74LS04: 2,4mA + Doøng cung caáp cho 74LS14: 10mA + Doøng cung caáp cho 74LS74: 4mA + Doøng hoaït ñoäng cuûa EPROM 2764: 150 mA + Doøng hoaït ñoäng cuûa RAM 6264: 100mA + Doøng hoaït ñoäng cuûa 8255A: 30mA Doøng ñieän caàn cung caáp cho maïch KIT laø : IKIT = 800mA Nhö vaäy ñeå cho heä thoáng laøm vieäc ñöôïc thì nguoàn cung caáp cho heä thoáng phaûi coù caùc tieâu chuaån: ñieän aùp cung caáp +5v, doøng toái thieåu 1A III.5.Baûng kieåu kyù töï. Vieäc thöïc hieän kieåu kyù töï trong thöc teá coù nhieàu caùch thöïc hieän tuyø thuoäc vaøo yeâu caàu, muïc ñích hieån thò. Coù theå ñoù laø vieäc hieån thò doøng thoâng baùo baèng tieáng ANH, luùc naøy kieåu chöõ caàn theå hieän goïi laø kyù töï khoâng daáu, ta coù theå duøng Ma Traän LED 5x8 ñeå hieån thò. Ngoaøi ra, caàn muoán theå hieän caû kyù töï coù daáu, nhö doøng thoâng baùo tieáng VIEÄT, ta coù theå duøng caùc ma traän kyù töï coù ñoä phaân giaûi cao nhö 8x12, 8x14 hoaëc ta coù theå söû duïng luoân ma traän 5x8 ñeå theå hieän vaên baûn tieáng VIEÄT. Ñeå cho kieåu chöõ theå hieän kyù töï coù daáu ñeïp hôn , deã nhìn hôn, ôû ñeà taøi naøy chuùng em chæ theå hieän kyù töï coù daáu ôû daïng chöõ hoa. Baûng kieåu chöõ ñöôïc theå hieän trong caùc hình veõ sau: Ñeå thöïc hieän kieåu kyù töï treân baûng ñeøn LED, nhoùm thöïc hieän veõ daïng chöõ treân caùc hình veõ, töông öùng vôùi caùc oâ maøu ñen laø möùc logic 1( LED saùng ) nhö vaäy toång hôïp caùc oâ maøu ñen treân maët LED seõ taïo ra kieåu chöõ mong muoán. Vôùi 8 ñöôøng cuûa PORT A_8255A( II) thì taïi moät thôøi ñieåm seõ coù 8 bit döõ lieäu gôûi ñeán LED. Nhö vaäy vôùi kyù töï [1] ôû treân hình veõ thì döõ lieäu caàn naïp vaøo vuøng nhôù laø : DEFB 84H, 82H, FFH, 80H, 80H. Vaø cuõng laøm nhö vaäy ñoái vôùi caùc kyù töï khaùc. Sau khi chaïy chöông trình thöôøng truù, baûn tra kieåu kyù töï naøy seõ ñöôïc naïp vaøo vuøng nhôù RAM mang teân DISTBL. Caùc hình veõ sau giôùi thieäu caùch maõ hoùa kyù töï cuûa moät soá kyù töï cuûa moät soá kyù töï coù daáu vaø khoâng daáu. 70 28 24 28 70 70 29 26 29 70 70 2A 25 2A 70 70 28 A4 28 70 70 29 A6 29 70 70 2A A5 2A 70 72 29 24 28 70 71 2A 24 28 70 71 2B 2A 28 70 72 29 26 29 70 3A 45 44 44 28 06 05 7C 04 04 C 54 54 54 28 38 44 44 44 28 7C 44 44 44 38 7C 54 54 44 38 7C 54 54 54 44 7C 14 14 14 04 7C 56 45 46 44 7C 56 D5 46 44 7E 15 14 14 08 38 44 54 54 30 7C 10 10 10 7C 44 44 7C 44 44 44 44 7E 45 44 44 45 7E 44 44 44 45 7F 44 44 46 45 7E 45 44 44 44 FC 44 44 7E 05 18 04 7C 24 44 3C 04 04 7C 10 28 44 00 7C 40 40 40 40 7C 08 10 08 7C 7C 08 10 20 7C 38 44 44 44 38 38 46 45 46 38 38 44 44 45 3B 7C 14 14 14 08 38 46 C5 46 38 38 44 C4 45 3B 38 44 44 46 39 38 44 44 64 78 7C 14 34 54 48 48 54 54 54 24 04 04 7C 04 04 3C 40 40 40 3C 3C 40 40 41 3F 3C 40 40 42 3D 3E 41 40 40 3C 3D 42 40 40 3C 1C 20 40 20 1C 7C 20 10 20 7C 44 28 10 28 44 04 08 70 08 04 44 64 54 4C 44 38 44 44 44 38 06 09 70 08 04 05 0A 70 08 04 05 0B 70 08 04 50 48 7C 40 40 48 64 54 4C 00 44 44 54 54 28 30 28 24 7C 20 5C 54 54 54 24 38 54 54 54 24 44 24 14 0C 04 28 54 54 54 28 48 54 54 54 38 02 01 00 00 00 01 02 00 00 00 01 03 00 00 00 02 01 02 01 00 80 00 00 00 00 00 00 28 00 00 08 04 54 0C 00 00 00 5C 00 00 00 10 10 10 00 00 00 00 00 00 MOÄT SOÁ QUI ÖÔÙC KIEÅU ÑAÙNH CHÖÕ COÙ DAÁU. A AÂ B AÊ C M SAÉT D Ñ E EÂ F M HUYEÀN G M HOÛI H M NGAÕ I N SAÉT K N HUYEÀN L N HOÛI M N NGAÕ N Ô O OÂ P OÙ Q OØ R OÛ S OÕ T UÙ U Ö V UØ X UÛ Y UÕ 1 SAÉT 2 HUYEÀN 3 HOÛI 4 NGAÕ 5 NAËNG 6 YÙ 7 YØ 8 YÛ 9 YÕ PAGE DOWN AÙ PAGE UP AØ SRCOLL LOCK AÛ ¯ AÕ ­ EÄ PAGE DOWN(phaàn chöõ hoa) AÄ PAGE UP(phaàn chöõ hoa) AÏ Sô ñoà maøn hình quang baùo: B. KIT Z80 III.6.Lyù thuyeát thieát keá. III.6.1.Nhieäm vuï thieát keá. Treân cô sôû phaàn cöùng KIT Z80 ñaõ ñöôïc thieát keá, qua thöïc teá chuùng em nhaän thaáy raèng thao taùc goõ chöõ tieáng vieät coù daáu raát khoù khaên cho ngöôøi söû duïng vaø noäi dung vaên baûn khoù kieåm tra.Vì vaäy chuùng em phaùt trieån ñeà taøi naøy coù giao tieáp vôùi maùy tính nhaèm muïc ñích deã daøng hôn cho ngöôøi söû duïng. ÔÛ ñeà taøi naøy chuùng em giöõ nguyeân caáu truùc cuõ vaø thieát keá theâm phaàn giao tieáp giöõa KIT vi xöû lyù vôùi maùy tính. III.6.2.Caáu hình KIT Z80. - CPU: söû duïng Z80 - Boä nhôù: + ROM: Dung löôïng 16 Kbyte, chia laøm hai phaàn moãi phaàn söû duïng 1 ROM 2764 dung löôïng 8k. Vieäc chia laøm hai phaàn coù taùc duïng laøm ñôn giaûn trong quaù trình thi coâng vaø quaûn lyù boä nhôù, ROM thöù nhaát seõ chöùa chöông trình ñieàu khieån heä thoáng vaø ROM thöù hai chöùa chöông trình môû roäng. + RAM: dung löôïng 8 kbyte, nhö vaäy ta seõ söû duïng RAM 6264 - Baøn phím: coù 41 phím, bao goàm 3 phím chöùc naêng, 1 phím Reset, 23 phím chöõ, coøn laïi laø phím soá vaø phím daáu. - Maøn hình hieån thò: ta söû duïng 16 LED Ma Traän (LED 1 maøu). Giao tieáp vaøo ra: nhoùm söû duïng hai 8255A. 8255A(I) : Port A & port C : duøng cho giao tieáp baøn phím. Port B : duøng giao tieáp giöõa KIT & coång maùy in. 8255A (II) : Port A & port B : giao tieáp vôùi maøn hình qug baùo. Port C : duøng cho giao tieáp giöõa KIT & coång maùy in. III.7.Söû duïng CPU Z80. III.7.1.Cheá ñoä hoaït ñoäng cuûa CPU. c> Choïn cheá ñoä hoaït ñoäng. Ñoái vôùi KIT Z80 naøy laø heä thoáng vi xöû lyù töông ñoái nhoû ñeå phuïc vuï cho vieäc hoïc vaø thöïc taäp neân ta choïn cheá ñoä laøm vieäc ôû cheá ñoä toái thieåu, khoâng söû duïng ngaét. Do ñoù caùc chaân chöùc naêng : INT, BUSRQ, NMI, WAIT ñeàu ñöôïc noái vôùi ñieän trôû 4.7K leân nguoàn 5v ñeå cho chuùng luùc naøo cuõng ôû möùc [1]. III.7.2. Maïch dao ñoäng. Chaân mang kyù hieän f (chaân 6) cuûa CPU ñöôïc noái vôùi maïch dao ñoäng taïo xung, coù chu kyø nhaát ñònh ñöôïc xem laøm chuaån ñeå CPU hoaït ñoäng. Maïch dao ñoäng naøy goïi laø maïch dao ñoäng CLOCK, vaø xung dao ñoäng coù caùch tính chuaån hoaù phaùt ra töø maïch naøy ñöôïc goïi laø xung CLOCK. c> Sô ñoà nguyeân lyù vaø hoaït ñoäng. Heä thoáng naøy taïo ra tín hieäu CLOCK coù taàn soá 2MHz. Maïch dao ñoäng thaïch anh coù tính oån ñònh cao. Thaïch anh dao ñoäng vôùi taàn soá 4MHz khi tín hieäu dao ñoäng thaïch anh ñi qua hai coång ñaûo TRIGGER SCHMIT seõ taïo ra tín hieäu xung vuoâng. Vaø ñöôïc ñöa vaøo flip flop D ñeå chia ñoâi taàn soá, taïo ra tín hieäu coù taàn soá 2Mhz vaø tín hieäu naøy duøng laøm tín hieäu xung CLOCK cho heä thoáng. Hình 3.5: Sô ñoà maïch taïo xung CLOCK III.7.3.Maïch RESET. Ñaây chæ laø moät phaàn nhoû trong heä thoáng coù chöùc naêng taïo moät xung taùc ñoäng vaøo chaân Reset cuûa CPU vaø 8255A. Chaân reset cuûa CPU chòu taùc ñoäng töông ñoái öùng vôùi traïng thaùi thaáp coøn chaân Reset cuûa 8255A chòu taùc ñoäng ôû möùc cao. Coù nghóa laø khi ta ñöa tín hieäu [0] vaøo chaân mang teân RESET seõ laøm cho CPU quay trôû laïi traïng thaùi ban ñaàu taùc ñoäng naøy ñöôïc goïi laø RESET CPU. Do chöông trình quaûn lyù, ñieàu khieån heä thoáng luoân laø chöông trình ñöôïc thi haønh ñaàu tieân taïi ñiaï chæ 0000H, chính thao taùc Reset seõ xoùa thanh ghi côø, ñaët laïi PC = 0000H vaø xoùa thanh ghi Control Word cuûa 8255A. Nhö vaäy chaân Reset thöôøng ôû traïng thaùi cao. Chæ khi naøo caàn Reset CPU chuùng môùi taïm thôøi ñöôïc ñöa xuoáng traïng thaùi thaáp. b> Maïch Reset cho heä thoáng. Sô ñoà nguyeân lyù Reset cho heä thoáng nhö sau : Hình 3.6: Maïch Reset heä thoáng Nhö vaäy ôû maïch Reset heä thoáng chuùng ta söû duïng theâm moät tuï ñieän nhaèm keùo daøi thôøi gian ôû möùc thaáp cuûa chaân Reset CPU. Khoaûng thôøi gian naøy phuï thuoäc vaøo giaù trò tuï C vaø ñieän trôû R döïa treân phöông trình naïp tuï. Tuy nhieân cuõng coøn moät vaán ñeà maø ta caàn giaûi quyeát laø khi chuùng ta söû duïng coâng taéc ñoùng môû nguoàn ñieän nhieàu laàn lieân tuïc ñeå Reset CPU, vieäc laøm cho tuï ñieän xaû ñieän nhanh laø ñieàu caàn thieát. ÔÛ ñaây ta söû duïng theâm diod gaén vaøo maïch Reset. Khi ñoùng hay môû coâng taéc nguoàn ñieän ta seõ coù doøng ñieän chaïy trong maïch theo hai chieàu khaùc nhau, vì giaù trò ñieän trôû theo hai chieàu daãn ñieän naøy lôùn nhoû khaùc nhau neân chuùng coù theå suy ra thôøi gian tích ñieän leân tuï keùo daøi vaø thôøi gian tuï ñieän xaõ ñieän ngaén. Noùi toùm laïi maïch Reset naøy hoaït ñoäng nhö sau: Khi ta ñoùng coâng taéc nguoàn ñieän naïp vaøo tuï C neân trong moät khoaûng thôøi gian naøo ñoù chaân mang tín hieäu Reset seõ mang giaù trò ñieän aùp thaáp töông öùng vôùi traïng thaùi hoaït ñoäng [0]. Sau ñoù môùi ñaït leân ñieän aùp 5v, khi ta môû coâng taéc thì toaøn boä doøng ñieän ñöôïc noái taét xuoáng masse laøm cho chaân Reset CPU coù möùc ñieän aùp thaáp, CPU ñöôïc taùc ñoäng. Thôøi gian Reset maùy ñöôïc nhaø saûn xuaát CPU khuyeân khoâng nhoû hôn moät chu kyø xung Clock cuûa heä thoáng (0.5ms trong thieát keá). Ôû ñaây ta choïn R = 10kW, C = 1mF. III.8.Keát noái boä nhôù. III.8.1.Keát noái Microprocessor vôùi boä nhôù. a> Keát noái toång quaùt Microprocessor - boä nhôù. Boä nhôù coù moät vai troø raát quan troïng trong maùy tính duøng ñeå löu tröõ döõ lieäu, laø nôi ñeå Microprocessor xöû lyù döõ lieäu. Hình 3.7: Sô ñoà keát noái toång quaùt Microprocessor vaø boä nhôù Boä nhôù cuûa maùy vi tính bao goàm caùc boä nhôù ROM vaø RAM, chuùng keát noái vôùi nhau thoâng qua caùc Bus: Bus ñòa chæ (Address Bus), Bus döõ lieäu (Döõ lieäu Bus) vaø Bus ñieàu khieån (Control Bus). Hoaït ñoäng cuûa Microprocessor ghi döõ lieäu vaøo boä nhôù vaø ñoïc döõ lieäu ra töø boä nhôù: * Hoaït ñoäng ghi döõ lieäu: Microprocessor taïo ñòa chæ cuûa oâ nhôù caàn löu tröõ döõ lieäu, ñaët ñòa chæ naøy leân Bus ñòa chæ. Microprocessor ñaët döõ lieäu caàn löu tröõ leân Bus döõ lieäu. Microprocessor taùc ñoäng ñeán tín hieäu ñieàu khieån ghi ôû Bus ñieàu khieån. IC nhôù giaûi maõ ñòa chæ naøy ñeå xaùc ñònh oâ nhôù naøo seõ löu tröõ döõ lieäu naøy. Döõ lieäu treân Bus seõ ñöôïc truyeàn vaøo oâ nhôù ñaõ ñöôïc löïa choïn. * Hoaït ñoäng ñoïc döõ lieäu: Microprocessor seõ taïo ra ñòa chæ cuûa oâ nhôù caàn ñoïc döõ lieäu, ñaët ñòa chæ naøy leân Bus ñòa chæ. Microprocessor taùc ñoäng ñeán tín hieäu ñieàu khieån ñoïc ôû Bus ñieàu khieån. IC nhôù seõ giaûi maõ ñòa chæ naøy ñeå xaùc ñònh oâ nhôù naøo ñöôïc löïa choïn cho vieäc ñoïc döõ lieäu. IC nhôù ñaët döõ lieäu töø oâ nhôù ñaõ ñöôïc löïa choïn leân Bus döõ lieäu ñeå truyeàn vaøo Microprocessor. b>Keát noái chi tieát: Sô ñoà keát noái chi tieát Microprocessor vôùi boä nhôù ñöôïc theå hieän ôû hình 3.8. * Ñeå keát noái Microprocessor vôùi boä nhôù moät caùch chi tieát phaûi ñaët ra moät caàu cuï theå: Duøng Microprocessor Z80 coù dung löôïng boä nhôù laø 64Kbyte. Thieát keá 16 Kbyte boä nhôù EPROM: duøng 2 IC 2764 coù dung löôïng 8 Kbyte/1IC. Thieát keá 8 Kbyte boä nhôù SRAM : duøng 1 IC 6264 coù dung löôïng 8Kbyte/1IC. Trong vuøng nhôù 64 Kbyte chæ söû duïng 24 Kbyte töø kilo byte thöù 1 ñeán kilo byte thöù 24, Kbyte thöù 35 ñeán kilo byte thöù 64 khoâng söû duïng. Ñòa chæ cuûa vuøng nhôù 64 Kbyte laø 0000H - FFFFH, vì chæ söû duïng 24 Kbyte ñaàu tieân neân vuøng nhôù 24 Kbyte naøy coù ñòa chæ: 0000H - 5FFFH. Trong vuøng nhôù 24 Kbyte: 8 Kbyte ñaàu tieân (töø kilo byte thöù 1 ñeán kilo byte thöù 8) ñöôïc daønh cho boä nhôù EPROM 1 coù ñòa chæ töø 0000H – 1FFFH, 8 Kbyte keá tieáp cuûa boä nhôù RAM ñòa chæ töø 2000H – 3FFFH vaø 8 Kbyte coøn laïi daønh cho EPROM 2 coù ñòa chæ töø 4000H – 5FFFH. *Nguyeân taéc giaûi maõ ñòa chæ: Vi xöû lyù Z80 coù theå truy xuaát ñeán 64 Kb boä nhôù. Tuy nhieân ñeå phuø hôïp vôùi yeâu caàu thieát keá ñöôïc ñôn giaûn nhoùm chæ söû duïng caáu hình 24 Kb boä nhôù. Caùc coång vaøo ra duøng 8255A cuõng ñöôïc xem nhö laø vuøng nhôù. Khi ôû cheá ñoä giao tieáp vaøo ra cuõng töông töï nhö ROM, RAM. Nhö vaäy treân baûn ñoà nhôù ñöôïc phaân hoaïch thaønh 5 vuøng khaùc nhau. IC A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 HEX ROM1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH RAM 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000H 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFH ROM2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000H 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 5FFFH 8255 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 6000H ( I ) 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 6003H 8255 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8000H ( II ) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 8003H III.8.2.Sô ñoà maïch giaûi maõ ñòa chæ. ÔÛ heä thoáng naøy caùc linh kieän xung quanh ñöôïc thieát keá theo kieåu boä nhôù, dung löôïng cuûa caùc IC nhôù laø 8 Kb. Do ñoù nhöõng bit cao cuûa Bus ñòa chæ khoâng söû duïng, chaân MERQ duøng ñeå giaûi maõ ñònh vò caùc vuøng nhôù vaø coång 8255A. Coù nhieàu loaïi IC giaûi maõ ôû ñaây nhoùm ñaõ choïn IC 74138 ñeå giaûi maõ. Maïch ñöôïc thieát keá nhö sau: Hình 3.9 : Sô ñoà chaân vaø sô ñoà keát noái giaûi maõ duøng IC74138 III.9. Boä giao tieáp baøn phím. III.9.1. Nguyeân taéc. Vi maïch._. DEFB 00H DEFB 00H DEFB 00H ;PHIM XOA KY TU DEFB 20H DEFB 40H DEFB 3AH DEFB 00H DEFB 00H DEFB 70H ;CHÖÛ AÙ DEFB 28H DEFB 24H DEFB 26H DEFB 71H DEFB 00H DEFB 70H ; CHÖÛ AØ DEFB 28H DEFB 24H DEFB 29H DEFB 72H DEFB 00H DEFB 70H ;CHÖÛ AÂ DEFB 2AH DEFB 25H DEFB 2AH DEFB 70H DEFB 00H DEFB 70H ;CHÖÛ AÊ DEFB 29H DEFB 26H DEFB 29H DEFB 70H DEFB 00H DEFB 7EH ;CHÖÛ M SAÉT DEFB 05H DEFB 18H DEFB 04H DEFB 7CH DEFB 00H DEFB 7CH ;CHÖÛ Ñ DEFB 54H DEFB 44H DEFB 44H DEFB 38H DEFB 00H DEFB 00H ;DAÁU CHAÁM THANG DEFB 00H DEFB 5CH DEFB 00H DEFB 00H DEFB 00H DEFB 7DH ;CHÖÛ N HOÛI DEFB 0BH DEFB 10H DEFB 20H DEFB 7CH DEFB 00H DEFB 7DH ;CHÖÛ N HUYEÀN DEFB 0AH DEFB 10H DEFB 20H DEFB 7CH DEFB 00H DEFB 7EH ;CHÖÛ N SAÉT DEFB 09H DEFB 10H DEFB 20H DEFB 7CH DEFB 00H DEFB 7EH ;CHÖÛ M NGAÕ DEFB 05H DEFB 1AH DEFB 05H DEFB 7CH DEFB 00H DEFB 7DH ;CHÖÛ M HOÛI DEFB 07H DEFB 18H DEFB 04H DEFB 7CH DEFB 00H DEFB 7DH ;CHÖÛ M HUYEÀN DEFB 06H DEFB 18H DEFB 04H DEFB 7CH DEFB 00H DEFB 7CH ;CHÖÛ EÂ DEFB 56H DEFB 55H DEFB 56H DEFB 44H DEFB 00H DEFB 7EH ;CHÖÛ N NGAÕ DEFB 09H DEFB 12H DEFB 21H DEFB 7CH DEFB 00H DEFB 38H ;CHÖÛ Ô DEFB 44H DEFB 44H DEFB 45H DEFB 3BH DEFB 00H DEFB 38H ;CHÖÛ OÙ DEFB 44H DEFB 44H DEFB 46H DEFB 39H DEFB 00H DEFB 38H ;CHÖÛ OÂ DEFB 46H DEFB 45H DEFB 46H DEFB 38H DEFB 00H DEFB 02H ;DAÁU SAÉT DEFB 01H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 01H ;DAÁU HUYEÀN DEFB 02H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 01H ;DAÁU HOÛI DEFB 03H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 00H ;KHOAÛNG TROÁNG DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 3CH ;CHÖÛ UÙ DEFB 40H DEFB 40H DEFB 42H DEFB 3DH DEFB 00H DEFB 38H ;CHÖÛ OÕ DEFB 46H DEFB 45H DEFB 46H DEFB 39H DEFB 00H DEFB 38H ;CHÖÛ OÛ DEFB 45H DEFB 47H DEFB 44H DEFB 38H DEFB 00H DEFB 38H ;CHÖÛ OØ DEFB 44H DEFB 44H DEFB 45H DEFB 3AH DEFB 00H DEFB 02H ;DAÁU NGAÕ DEFB 01H DEFB 02H DEFB 01H DEFB 00H DEFB 00H DEFB 80H ;DAÁU NAËNG DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 06H ;CHÖÛ YÙ DEFB 09H DEFB 70H DEFB 08H DEFB 04H DEFB 00H DEFB 0C0H ;DAÁU CHAÁM DEFB 0C0H DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 3CH ;CHÖÛ Ö DEFB 40H DEFB 40H DEFB 41H DEFB 3FH DEFB 00H DEFB 3CH ;CHÖÛ UØ DEFB 40H DEFB 41H DEFB 42H DEFB 3CH DEFB 00H DEFB 3CH ;CHÖÛ UÛ DEFB 40H DEFB 41H DEFB 43H DEFB 3CH DEFB 00H DEFB 3CH ;CHÖÛ UÕ DEFB 42H DEFB 41H DEFB 42H DEFB 3DH DEFB 00H DEFB 05H ;CHÖÛ YØ DEFB 0AH DEFB 70H DEFB 08H DEFB 04H DEFB 00H DEFB 05H ;CHÖÛ YÛ DEFB 0BH DEFB 70H DEFB 08H DEFB 04H DEFB 00H DEFB 06H ;CHÖÛ YÕ DEFB 09H DEFB 72H DEFB 09H DEFB 04H DEFB 00H DEFB 10H ;DAÁU - DEFB 10H DEFB 10H DEFB 10H DEFB 10H DEFB 00H ORG 0800H ;------------------------------------; ; CHUONG TRINH QUANG BAO ; ; CHO CHU CHAY XUOI TU TRAI QUA PHAI ; ;------------------------------------; PHAI: CALL RS164 LD A,0FFH CALL CLRSCR LD A,80H LD (VAO),A LD HL,(DATAAD) LD (ADATA),HL LD HL,QU_BAO LD (MNPTR),HL LD HL,DELAYVAL LD (DELAYMEM),HL LD A,00 LD (ZEROPAS),A JP PUT QU_BAO: LD HL,(DELAYMEM) DEC HL LD (DELAYMEM),HL LD A,H OR L CP 00H JP NZ,RETURN LD HL,DELAYVAL LD (DELAYMEM),HL CALL ROLPQB LD A,(ZEROPAS) CP 01 JP Z,ZERODATA CALL DATAP RETURN: RET DATAP: LD IX,DISBUF LD IY,(ADATA) LD A,(IY) CP 55H JR Z,QBPRS LD (IX),A DEC IY LD (ADATA),IY RET QBPRS: LD A,01H LD (ZEROPAS),A LD (ZEROTIME),A LD IX,DISBUF LD A,00 LD (IX),A RET ZERODATA: LD A,(ZEROTIME) INC A CP 81 JR Z,DATARESET LD (ZEROTIME),A LD IX,DISBUF LD A,00 LD (IX),A RET DATARESET: LD HL,(DATAAD) LD (ADATA),HL LD HL,DELAYVAL LD (DELAYMEM),HL LD A,00 LD (ZEROPAS),A LD A,0FFH CALL CLRSCR LD A,00H LD (VAO),A RET ORG 0A00H ;------------------------------------; ; CHUONG TRINH QUANG BAO ; ; CHO CHU CHAY XUOI TU PHAI QUA TRAI ; ;------------------------------------; TRAI: CALL RS164 LD A,0FFH CALL CLRSCR LD A,40H LD (VAO),A LD HL,2002H LD (ADATA),HL LD HL,Q_BAO LD (MNPTR),HL LD HL,DELAYVAL LD (DELAYMEM),HL LD A,00H LD (ZEROPAS),A JP PUT Q_BAO: LD HL,(DELAYMEM) DEC HL LD (DELAYMEM),HL LD A,H OR L CP 00H JP NZ,RETURN LD HL,DELAYVAL LD (DELAYMEM),HL CALL ROLTQB LD A,(ZEROPAS) CP 01 JP Z,TZERODATA CALL DATAT RET DATAT: LD IX,DISBUF+79 LD IY,(ADATA) LD A,(IY) CP 55H JP Z,QBPRS LD (IX),A INC IY LD (ADATA),IY RET TZERODATA: LD A,(ZEROTIME) INC A CP 81 JR Z,TDATARESET LD (ZEROTIME),A LD A,00 LD (IX),A RET TDATARESET: LD HL,2002H LD (ADATA),HL LD HL,DELAYVAL LD (DELAYMEM),HL LD A,00 LD (ZEROPAS),A LD A,0FFH CALL CLRSCR LD A,00H LD (VAO),A RET ;---------------------------------------; ; CHUONG TRINH ROLL DU LIEU QUA 80 COT ; ; CHUONG TRINH NAY DUNG CHO QUANG BAO ; ;---------------------------------------; ROLPQB: PUSH BC ; ROLL PHAI QUANG BAO PUSH IX LD B,160 LD IX,DISBUF LQBP80: LD A,(IX+78) LD (IX+79),A DEC IX DJNZ LQBP80 POP IX POP BC RET ;---------------------------------------; ; CHUONG TRINH ROLL DU LIEU QUA 80 COT ; ; CHUONG TRINH NAY DUNG CHO QUANG BAO ; ;---------------------------------------; ROLTQB: PUSH BC ; ROLL TRAI QUANG BAO PUSH IX LD B,80 LD IX,DISBUF LQBT80: LD A,(IX+1) LD (IX),A INC IX DJNZ LQBT80 POP IX POP BC RET ORG 0C00H ;------------------------; ;CHUONG TRINH DONG HO SO ; ;------------------------; LD HL,CLOCK LD (MNPTR),HL LD A,00 LD (MINUTE),A LD (SECOND),A LD (HOUR),A LD HL,DELAYVAL LD (DELAYMEN),HL JP PUT CLOCK: LD HL,(DELAYMEN) DEC HL LD (DELAYMEN),HL LD A,H OR L JP NZ,RETDH LD HL,DELAYVAL+0F00H LD (DELAYMEN),HL LD A,(SECOND) CALL TANG LD (SECOND),A CP 60H JP NZ,RETCK LD A,00H LD (SECOND),A LD A,(MINUTE) CALL TANG LD (MINUTE),A CP 60H JP NZ,RETCK LD A,00H LD (MINUTE),A LD A,(HOUR) CALL TANG LD (HOUR),A CP 24H JP NZ,RETCK LD A,00H LD (HOUR),A RETCK: LD A,(HOUR) LD (HEXBUF),A LD A,(MINUTE) LD (HEXBUF + 1),A LD A,(SECOND) LD (HEXBUF + 2),A CALL DISCODE RETDH: RET TANG: INC A LD B,A AND 0FH CP 0AH JP NZ,NO LD A,B ADD A,06H LD B,A NO: LD A,B RET ;--------------------------------; ;CHUONG TRINH NHAN DU LIEU ; ;--------------------------------; NDL: LD A,81H LD (DIS_IO),A LD A,55H LD (2000H),A LD (2001H),A LD HL,2002H LD A,10H LD (VAO),A LD A,00H LD (VAO),A TUAN: LD A,20H LD (VAO),A TUAN1: LD A,(VAO) AND 01H JR NZ,TUAN1 LD A,00H LD (VAO),A LD A,10H LD (VAO),A LD A,(DATAIN) LD (HL),A LD A,00H LD (VAO),A LD A,(HL) CP 55H JR NZ,TUAN2 LD A,20H LD (VAO),A LD A,00H LD (VAO),A CALL RESET RET TUAN2: INC HL JR TUAN ;--------------------------------; ; VUNG NHO HUU DUNG 2000H-3C00H ; ;--------------------------------; ; CAC NHAN SU DUNG ; ;--------------------------------; KEY_IO EQU 6003H DATAIN EQU 6001H DATAOUT EQU 8000H KEY_IN EQU 6002H KEY_OUT EQU 6000H DIS_IO EQU 8003H CKOUT EQU 8001H SYS_SP EQU 3C02H MNPTR EQU 3CF2H ZEROPAS EQU 3CF9H ZEROTIME EQU 3CFCH KEY EQU 3D00H DISBUF EQU 3E00H HEXBUF EQU 3FD0H ADISBUF EQU 3FDFH ROLPAS EQU 3FE2H DATAAD EQU 3FE5H ROLQB EQU 3FE8H KEYFLG EQU 3FEBH CH_FLG EQU 3FEEH DISPTR EQU 3FF1H DELAYMEM EQU 3FF4H ADATA EQU 3FF7H HOUR EQU 3FFAH MINUTE EQU 3FFCH SECOND EQU 3FFEH DELAYVAL EQU 0309H VAO EQU 8002H ;--------------------------------; ; KET THUC ; ;--------------------------------; END program vd; uses crt; const chu: array[1..111,1..6] of byte = (($70,$28,$24,$28,$70,$00), {A} {1} ($70,$28,$24,$2A,$71,$00), {A1} {2} ($70,$28,$24,$29,$72,$00), {A2} {3} ($70,$28,$24,$29,$73,$00), {A3} {4} ($70,$2A,$25,$2A,$71,$00), {A4} {5} ($70,$28,$A4,$28,$70,$00), {A5} {6} ($70,$2A,$25,$2A,$70,$00), {A6} {7} ($70,$2A,$A5,$2A,$70,$00), {A65} {8} ($70,$29,$26,$29,$70,$00), {A8} {9} ($70,$29,$A6,$29,$70,$00), {A85} {10} ($72,$29,$24,$28,$70,$00), {1A} {11} ($71,$2A,$24,$28,$70,$00), {2A} {12} ($71,$2B,$2A,$28,$70,$00), {3A} {13} ($72,$29,$26,$29,$70,$00), {4A} {14} ($7c,$54,$54,$58,$20,$00), {B} {15} ($38,$44,$44,$44,$28,$00), {C} {16} ($3A,$45,$44,$44,$28,$00), {1C} {17} ($7c,$44,$44,$44,$38,$00), {D} {18} ($7C,$54,$54,$44,$38,$00), {D9} {19} ($7c,$54,$54,$54,$44,$00), {E} {20} ($7C,$56,$45,$46,$44,$00), {E6} {21} ($7C,$56,$D5,$56,$44,$00), {E65} {22} ($7c,$14,$14,$14,$04,$00), {F} {23} ($38,$44,$54,$54,$30,$00), {G} {24} ($7c,$10,$10,$10,$7c,$00), {H} {25} ($44,$44,$7c,$44,$44,$00), {I} {26} ($44,$44,$7C,$46,$45,$00), {I1} {27} ($44,$45,$7E,$44,$44,$00), {I2} {28} ($44,$45,$7F,$44,$44,$00), {I3} {29} ($46,$45,$7E,$45,$44,$00), {I4} {30} ($44,$44,$FC,$44,$44,$00), {I5} {31} ($46,$45,$7C,$44,$44,$00), {1I} {32} ($45,$46,$7C,$44,$44,$00), {2I} {33} ($45,$47,$7C,$44,$44,$00), {3I} {34} ($46,$45,$7E,$45,$44,$00), {4I} {35} ($44,$44,$3C,$04,$04,$00), {J} {36} ($7c,$10,$28,$44,$00,$00), {K} {37} ($7c,$40,$40,$40,$40,$00), {L} {38} ($7c,$04,$18,$04,$7c,$00), {M} {39} ($7E,$05,$18,$04,$7C,$00), {1M} {40} ($7D,$06,$18,$04,$7c,$00), {2M} {41} ($7D,$07,$18,$04,$7C,$00), {3M} {42} ($7E,$05,$1A,$05,$7c,$00), {4M} {43} ($7c,$08,$10,$20,$7c,$00), {N} {44} ($7E,$09,$10,$20,$7C,$00), {1N} {45} ($7D,$0A,$10,$20,$7c,$00), {2N} {46} ($7D,$0B,$10,$20,$7C,$00), {3N} {47} ($7E,$09,$12,$21,$7C,$00), {4N} {48} ($38,$44,$44,$44,$38,$00), {O} {49} ($38,$44,$44,$46,$39,$00), {O1} {50} ($38,$44,$44,$45,$3A,$00), {O2} {51} ($38,$44,$44,$45,$3B,$00), {O3} {52} ($38,$46,$45,$46,$39,$00), {O4} {53} ($38,$44,$C4,$44,$38,$00), {O5} {54} ($38,$46,$45,$46,$38,$00), {O6} {55} ($38,$46,$C5,$46,$38,$00), {O65} {56} ($38,$45,$47,$44,$38,$00), {O7} {57} ($38,$45,$c7,$44,$38,$00), {O75} {58} ($7c,$24,$24,$24,$18,$00), {P} {59} ($7E,$45,$44,$44,$18,$00), {1P} {60} ($7D,$46,$44,$44,$18,$00), {2P} {61} ($38,$44,$54,$64,$78,$00), {Q} {62} ($7c,$14,$34,$54,$5C,$00), {R} {63} ($08,$54,$54,$54,$20,$00), {S} {64} ($04,$04,$7c,$04,$04,$00), {T} {65} ($06,$05,$7C,$04,$04,$00), {1T} {66} ($3c,$40,$40,$40,$3c,$00), {U} {67} ($3C,$40,$40,$42,$3D,$00), {U1} {68} ($3C,$40,$41,$42,$3C,$00), {U2} {69} ($3C,$40,$41,$43,$3C,$00), {U3} {70} ($3C,$42,$41,$42,$3D,$00), {U4} {71} ($3C,$40,$c0,$40,$3C,$00), {U5} {72} ($3C,$40,$40,$41,$3F,$00), {U7} {73} ($3C,$40,$C0,$41,$3F,$00), {U75} {74} ($3E,$41,$40,$40,$3C,$00), {1U} {75} ($3D,$42,$40,$40,$3C,$00), {2U} {76} ($3D,$43,$40,$40,$3C,$00), {3U} {77} ($3E,$41,$42,$41,$3C,$00), {4U} {78} ($1c,$20,$40,$20,$1c,$00), {V} {79} ($7C,$20,$10,$20,$7C,$00), {W} {80} ($44,$28,$10,$28,$44,$00), {X} {81} ($04,$08,$70,$08,$04,$00), {Y} {82} ($06,$09,$70,$08,$04,$00), {1Y} {83} ($05,$0A,$70,$08,$04,$00), {2Y} {84} ($05,$0B,$70,$08,$04,$00), {3Y} {85} ($06,$09,$72,$09,$04,$00), {4Y} {86} ($44,$64,$54,$4C,$44,$00), {Z} {87} ($38,$44,$44,$44,$38,$00), {0} {88} ($50,$48,$7C,$40,$40,$00), {1} {89} ($48,$64,$54,$4C,$00,$00), {2} {90} ($44,$44,$54,$54,$28,$00), {3} {91} ($20,$30,$28,$24,$7C,$00), {4} {92} ($5C,$54,$54,$54,$74,$00), {5} {93} ($7C,$54,$54,$54,$74,$00), {6} {94} ($04,$44,$24,$14,$0C,$00), {7} {95} ($7C,$54,$54,$54,$7C,$00), {8} {96} ($5C,$54,$54,$54,$7C,$00), {9} {97} ($00,$00,$00,$00,$00,$00), { } {98} ($40,$00,$00,$00,$00,$00), {.} {99} ($00,$10,$10,$10,$00,$00), {-} {100} ($08,$04,$54,$0C,$00,$00), {?} {101} ($00,$00,$5C,$00,$00,$00), {!} {102} ($00,$00,$28,$00,$00,$00), {:} {103} ($02,$01,$00,$00,$00,$00), {/} {104} ($01,$02,$00,$00,$00,$00), {\} {105} ($01,$03,$00,$00,$00,$00), {'} {106} ($02,$01,$02,$01,$00,$00), {~} {107} ($04,$08,$70,$0A,$05,$00), {y1} {108} ($04,$08,$71,$0A,$04,$00), {y2} {109} ($04,$08,$71,$0B,$04,$00), {y3} {110} ($04,$0A,$71,$0A,$05,$00)); {y4} {111} var i,n,k:integer;x,h:byte;ch:char;st:string; {--------------------------} procedure cua_so; var x,y,rong,cao:word;origmode,lastrow:word;done:boolean; Begin rong :=20; cao := 44; X:=5; Y:=4; begin textbackground(white); textcolor(black); clrscr; gotoxy(35,6); window (X,Y,x+rong,y+caO); textbackground(BLUE); textcolor(white); end; readln; end; {-------------------------------} procedure test; var x,t:integer;ch:char; begin clrscr; repeat t:= port[$379] and $40; if t=$40 then begin gotoxy(25,2); textcolor(yellow); writeln('CHUA CAM DAY CONG MAY IN & KIT Z80'); delay(65); clrscr; end; if t$40 then begin gotoxy(25,2); writeln('DA NOI DAY CONG MAY IN & KIT Z80'); delay(65); gotoxy(25,3); writeln('NHAN PHIM ">" DE NHAP NOI DUNG QUANG BAO'); delay(65); end; until keypressed; end; {------------------------------} procedure bat_tay1; begin repeat x:=port[$379] and $40; until x=$00; repeat x:=port[$379]and $80; until x=$00; end; {--------------------------------} procedure bat_tay2; begin port[$37A]:=$0B; repeat x:=port[$379]and $40; until x=$40; port[$37A]:=$0A; repeat x:=port[$379] and $40; until x=$00; n:=n+1; end; {--------------------------------} procedure xuat( var h:byte); var x:integer; begin i:=1; n:=0; repeat case upcase(st[i]) of '$':case upcase(st[i+1]) of '0':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[88,k]; bat_tay2; end; i:=i+2; end; '1':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[89,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[90,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[91,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[92,k]; bat_tay2; end; i:=i+2; end; '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[93,k]; bat_tay2; end; i:=i+2; end; '6':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[94,k]; bat_tay2; end; i:=i+2; end; '7':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[95,k]; bat_tay2; end; i:=i+2; end; '8':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[96,k]; bat_tay2; end; i:=i+2; end; '9':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[97,k]; bat_tay2; end; i:=i+2; end; else i:=i+1; end; 'A':case upcase(st[i+1]) of '1': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[2,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[3,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[4,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[5,k]; bat_tay2; end; i:=i+2; end; '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[6,k]; bat_tay2; end; i:=i+2; end; '6': case upcase(st[i+2]) of '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[8,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[7,k]; bat_tay2; end; i:=i+2; end; end; '8': case upcase(st[i+2]) of '5': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[10,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[9,k]; bat_tay2; end; i:=i+2; end; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[1,k]; bat_tay2; end; i:=i+1; end; end; 'B': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[15,k]; bat_tay2; end; i:=i+1; end; 'C': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[16,k]; bat_tay2; end; i:=i+1; end; 'D':case upcase(st[i+1]) of '9': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[19,k]; bat_tay2; end; i:=i+2; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[18,k]; bat_tay2; end; i:=i+1; end; end; 'E':case upcase(st[i+1]) of '6':case upcase(st[i+2]) of '5': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[22,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[21,k]; bat_tay2; end; i:=i+2; end; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[20,k]; bat_tay2; end; i:=i+1; end; end; 'F':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[23,k]; bat_tay2; end; i:=i+1; end; 'G':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[24,k]; bat_tay2; end; i:=i+1; end; 'H':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[25,k]; bat_tay2; end; i:=i+1; end; 'I':case upcase(st[i+1]) of '1': begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[27,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[28,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[29,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[30,k]; bat_tay2; end; i:=i+2; end; '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[31,k]; bat_tay2; end; i:=i+2; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[26,k]; bat_tay2; end; i:=i+1; end; end; 'J':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[36,k]; bat_tay2; end; i:=i+1; end; 'K':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[37,k]; bat_tay2; end; i:=i+1; end; 'L':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[38,k]; bat_tay2; end; i:=i+1; end; 'M':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[39,k]; bat_tay2; end; i:=i+1; end; 'N':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[44,k]; bat_tay2; end; i:=i+1; end; 'O':case upcase(st[i+1]) of '1':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[50,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[51,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[52,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[53,k]; bat_tay2; end; i:=i+2; end; '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[54,k]; bat_tay2; end; i:=i+2; end; '6': case upcase(st[i+2]) of '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[56,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[55,k]; bat_tay2; end; i:=i+2; end; end; '7': case upcase(st[i+2]) of '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[58,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[57,k]; bat_tay2; end; i:=i+2; end; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[49,k]; bat_tay2; end; i:=i+1; end; end; 'P':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[59,k]; bat_tay2; end; i:=i+1; end; 'Q':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[62,k]; bat_tay2; end; i:=i+1; end; 'R':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[63,k]; bat_tay2; end; i:=i+1; end; 'S':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[64,k]; bat_tay2; end; i:=i+1; end; 'T':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[65,k]; bat_tay2; end; i:=i+1; end; 'U':case upcase(st[i+1]) of '1':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[68,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[69,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[70,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[71,k]; bat_tay2; end; i:=i+2; end; '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[72,k]; bat_tay2; end; i:=i+2; end; '7': case upcase(st[i+2]) of '5':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[74,k]; bat_tay2; end; i:=i+3; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[73,k]; bat_tay2; end; i:=i+2; end; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[67,k]; bat_tay2; end; i:=i+1; end; end; 'V':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[79,k]; bat_tay2; end; i:=i+1; end; 'W':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[80,k]; bat_tay2; end; i:=i+1; end; 'X':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[81,k]; bat_tay2; end; i:=i+1; end; 'Y':begin case upcase(st[i+1]) of '1':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[108,k]; bat_tay2; end; i:=i+2; end; '2':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[109,k]; bat_tay2; end; i:=i+2; end; '3':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[110,k]; bat_tay2; end; i:=i+2; end; '4':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[111,k]; bat_tay2; end; i:=i+2; end; else begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[82,k]; bat_tay2; end; i:=i+1; end; end; end; 'Z':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[87,k]; bat_tay2; end; i:=i+1; end; '1':case upcase(st[i+1]) of 'A':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[11,k]; bat_tay2; end; i:=i+2; end; 'C':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[17,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[32,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[40,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[45,k]; bat_tay2; end; i:=i+2; end; 'P':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[60,k]; bat_tay2; end; i:=i+2; end; 'T':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[66,k]; bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[75,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[83,k]; bat_tay2; end; i:=i+2; end; else; i:=i+1; end; '2':case upcase(st[i+1]) of 'A':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[12,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[33,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[41,k]; bat_tay2; end; i:=i+2; end; 'P':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[61,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[46,k]; bat_tay2; end; i:=i+2 end; 'U':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[76,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[84,k]; bat_tay2; end; i:=i+2; end; else; i:=i+1; end; '3':case upcase(st[i+1]) of 'A':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[13,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[34,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[42,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[47,k]; bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[77,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[85,k]; bat_tay2; end; i:=i+2; end; else i:=i+1; end; '4':case upcase(st[i+1]) of 'A':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[14,k]; bat_tay2; end; i:=i+2; end; 'I':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[35,k]; bat_tay2; end; i:=i+2; end; 'M':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[43,k]; bat_tay2; end; i:=i+2; end; 'N':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[48,k]; bat_tay2; end; i:=i+2; end; 'U':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[78,k]; bat_tay2; end; i:=i+2; end; 'Y':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[86,k]; bat_tay2; end; i:=i+2; end; else i:=i+1; end; ' ':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[98,k]; bat_tay2; end; i:=i+1; end; '.':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[99,k]; bat_tay2; end; i:=i+1; end; ':':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[103,k]; bat_tay2; end; i:=i+1; end; '-':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[100,k]; bat_tay2; end; i:=i+1; end; '?':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[101,k]; bat_tay2; end; i:=i+1; end; '!':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[102,k]; bat_tay2; end; i:=i+1; end; '/':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[104,k]; bat_tay2; end; i:=i+1; end; '\':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[105,k]; bat_tay2; end; i:=i+1; end; '"':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[106,k]; bat_tay2; end; i:=i+1; end; '~':begin for k:=1 to 6 do begin bat_tay1; port[$378]:=chu[107,k]; bat_tay2; end; i:=i+1; end; else halt; end; until (i=length(st)+1) or(keypressed) ; repeat x:=port[$379]and $80; until x=$00; port[$378]:=$55; port[$37A]:=$0B; repeat x:=port[$379]and $80; until x=$80; repeat x:=port[$379] and $C0; until x=$C0; port[$37A]:=$0A; repeat x:=port[$379] and $80; until x=$80; repeat x:=port[$379]and $80; until x=$00; port[$378]:=$00; end; {--------------------------------------} PROCEDURE NHAP; begin CLRSCR; test; cua_so; repeat x:=port[$379] and $40; until x=$00; gotoxy(25,2); writeln('********************************'); gotoxy(25,3); writeln('* NHAP CHU HIEN THI QUANG BAO *'); gotoxy(25,4); writeln('*===============*==============*'); gotoxy(25,5); writeln('*NHAP CHU CO DAU THEO FONT VNI *'); gotoxy(25,6); writeln('*===============*==============*'); gotoxy(25,7); writeln('********************************'); gotoxy(25,9); readln(st); xuat(h); repeat x:=port[$379] and $80; until x=$00; gotoxy(25,11); clrscr; gotoxy(25,7); writeln('NHAN FIM > KIT Z80 '); gotoxy(25,8); writeln('NHAN FIM > CHON TIEP'); end; {--------------------------------------} procedure chay_phai; begin clrscr; gotoxy(25,4); writeln('CHUONG TRINH CHAY PHAI XONG'); end; {--------------------------------------} procedure chay_trai; begin clrscr; repeat x:= port[$379] and $20; until x=$20; repeat x:=port[$379] and $80; until x=$80; gotoxy(25,4); writeln('CHUONG TRINH CHAY TRAI XONG'); end; {--------------------------------------} procedure xem_so_byte_truyen; begin clrscr; gotoxy(25,3); writeln('SO BYTE TRUYEN DUOC:',n:3,'BYTE'); gotoxy(25,4); writeln('DU LIEU DA XONG > CHON TIEP'); end; {--------------------------------------} procedure thoat; begin clrscr; gotoxy(25,2); writeln('BAN CO CHAC LA THOAT KHONG "<<(c,C)/(k,K))"?:'); gotoxy(25,3); writeln('CO: NHAN ">" '); gotoxy(25,4); writeln('KHONG: NHAN ">" ' ); end; {---------chuong trinh chinh-----------} Begin repeat clrscr; port[$37A]:=$0A; gotoxy(25,5); writeln('BAN LAM VIEC THEO CAU CHI DAN'); gotoxy(25,7); writeln('1.GOI CHUONG TRINH DON NHAN DU LIEU'); gotoxy(25,8); writeln('2.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA PHAI '); gotoxy(25,9); writeln('3.GOI CHUONG TRINH CHAY CHU QUANG BAO QUA TRAI '); gotoxy(25,10); writeln('4.XEM SO BYTE DA XUAT'); gotoxy(25,11); writeln('5.THOAT'); gotoxy(25,13); writeln('NHAP VAO SO TUONG UNG NEU CAN CHON MUC GHI CHU TREN'); gotoxy(25,14); readln(ch); case upcase(ch) of '1':begin port[$37A]:=$08; nhap; port[$37A]:=$0A; end; '2':begin port[$37A]:=$0E; chay_phai; port[$37A]:=$0A; end; '3':begin port[$37A]:=$06; chay_trai; port[$37A]:=$0A; end; '4':xem_so_byte_truyen; '5':thoat; else gotoxy(25,15); writeln('BAN NHAP SAI YEU CAU NHAP LAI'); sound(350); repeat until keypressed; nosound; end; until readkey= 'c'; end. ._.

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

  • docDO59.DOC
  • docTTRINH.DOC