Mô phỏng hệ thống điều khiển mở bằng MATLAB

Lời mở đầu Lịch sử phát triển của Vi xử lý gắn liền với sự phát triển của các vi mạch điện tử cùng với những công nghệ chế tạo nên chúng. Ngày nay, công nghệ Vi điện tử phát triển rất mạnh mẽ, sự ra đời của những vi mạch tích hợp cỡ lớn (LSI- Large Scale Integration) đến cực lớn (VLSI- Very Large Scale Integration) đã mang lại những thay đổi sâu sắc trong lĩnh vực kỹ thuật và dân dụng, đặc biệt trong lĩnh vực điều khiển tự động. Kỹ thuật Vi xử lý đã phát triển tạo nên sự bùng nổ công nghệ thông tin với sự ra đời các thế hệ máy tính hiện đại, các trang bị tối tân trong các ngành viễn thông, truyền hình, đặc biệt là sự ra đời của mạng siêu xa lộ thông tin INTERNET. Để bắt kịp với công nghệ khoa học kỹ thuật tiên tiến, việc học tập và nghiên cứu Vi xử lý là công việc hết sức cần thiết đối với sinh viên chuyên ngành Kỹ thuật Điện-Điện tử. Với xu hướng đó, em thực hiện đề tài HỆ VI XỬ LÝ 8085A nhằm đáp ứng nhu cầu học hỏi của bản thân cũng như kiểm nghiệm lại các kiến thức lý thuyết đã học. Bộ vi xử lý đầu tiên có khả năng xử lý 4 bit dữ liệu, theo thời gian cũng với sự phát triển của công nghệ chế tạo bán dẫn, ngày nay đã có các bộ vi xử lý 8 bit, 16 bit, 32 bit. Sự phát triển về khả năng xử lý dữ liệu của Vi xử lý làm tăng thêm số lượng lệnh điều khiển và tính toán phức tạp. Đề tài thực hiện việc tìm hiểu, khảo sát cơ chế hoạt động của bộ Vi xử lý 8 bit, từ đó làm cơ sở cho việc khảo sát các bộ Vi xử lý 16 bit, 32 bit. Đề tài được thực hiện gồm ba phần chính: Phần I: Giới thiệu về Hệ thống Vi xử lý. Phần II: Giới thiệu về Vi xử lý 8085A. Phần III: Thiết kế Hệ vi xử lý 8085A. Mục Lục Lời mở đầu 1 Phần I: Giới thiệu về Hệ Vi xử lý I. Sơ lược về Hệ thống Vi xử lý 1. Khối xử lý trung tâm 2 2. Bộ nhớ 2 3. Khối giao tiếp vào ra 3 4. Hệ thống Bus 3 II. Giới thiệu về Vi xử lý 3ù III. Cấu trúc và họat động của Vi xử lý 1. Cấu trúc cơ bản của một Vi xử lý 4 2. Các đặc điểm bên trong Vi xử lý 4 3. Vi xử lý 8 bit 5 4. Tập lệnh của Vi xử lý 8 Phần II: Vi xử lý 8085A I. Giới thiệu 1. Đặc tính 10 2. Sơ đồ chân và sơ đồ logic 10 II. Tập lệnh 8085A 16 Phần III: Thiết kế Hệ Vi xử lý 8085 I. Phương án thiết kế 22 II. Phần cứng 22 1. Khảo sát các IC dùng trong thiết kế 22 2. Kết nối 31 III. Phần mềm 1. Chương trình quét phím 36 2. Chương trình quét đèn 36 3. Chương trình minh họa 36 Phụ lục 43 Mục lục 49

doc41 trang | Chia sẻ: banmai | Lượt xem: 1793 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Mô phỏng hệ thống điều khiển mở bằng MATLAB, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Taàn soá xung clock cung caáp cho Vi xöû lyù laøm vieäc quyeát ñònh toác ñoä laøm vieäc cuûa Vi xöû lyù, toác ñoä naøy ñöôïc cho bôûi nhaø cheá taïo. Toác ñoä xung clock caøng cao thì Vi xöû lyù laøm vieäc vôùi toác ñoä caøng lôùn vaø khaû naêng xöû lyù leänh caøng nhanh. d. Caùc thanh ghi: Trong caáu truùc cuûaVi xöû lyù, caùc thanh ghi giöõ moät vai troø quan troïng, chuùng ñöôïc duøng ñeå xöû lyù döõ lieäu. Coù nhieàu loaïi thanh ghi trong Vi xöû lyù vôùi caùc chöùc naêng khaùc nhau, soá löôïng thanh ghi ñoùng vai troø raát quan troïng ñoái vôùi Vi xöû lyù vaø ngöôøi laäp trình. Neáu Vi xöû lyù coù soá löôïng thanh ghi caøng nhieàu thì ngöôøi laäp trình coù theå vieát caùc chöông trình ñieàu khieån Vi xöû lyù ñôn giaûn hôn bôûi vieäc söû duïng caùc thanh ghi ñöôïc linh ñoäng vaø ña daïng, ñieàu naøy laøm taêng toác ñoä vaø khaû naêng xöû lyù chöông trình cuûa Vi xöû lyù. e. Taäp leänh: Baát kì moät Vi xöû lyù naøo muoán hoaït ñoäng ñöôïc thì phaûi coù taäp leänh. Do caáu taïo phaàn cöùng khaùc nhau neân moãi Vi xöû lyù coù taäp leänh khaùc nhau. Taäp leänh cuûa Vi xöû lyù 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 Vi xöû lyù. Neáu Vi xöû lyù coù nhieàu maïch ñieän logic beân trong ñeå thöïc hieän thì soá löôïng leänh ñieàu khieån cuûa Vi xöû lyù caøng nhieàu, khi ñoù Vi xöû lyù caøng lôùn vaø ñoä phöùc taïp caøng lôùn. Taäp leänh cuûa Vi xöû lyù caøng nhieàu thì raát coù ích cho ngöôøi laäp trình khi vieát chöông trình ñieàu khieån cho Vi xöû lyù. 3. Vi xöû lyù 8 bit: Moãi loaïi Vi xöû lyù seõ coù caáu truùc khaùc nhau nhöng thöôøng coù caùc khoái chính nhö sau: - Khoái ñôn vò soá hoïc/logic (ALU - Arithmetic Logic Unit). - Caùc thanh ghi (Registers). - Khoái ñieàu khieån logic (Control Logic). Chöùc naêng vaø nguyeân lyù hoaït ñoäng cuûa caùc khoái nhö sau: a. Khoái Ñôn vò soá hoïc-logic (ALU - Arithmetic Logic Unit): Ñaây laø khoái quan troïng nhaát cuûa Vi xöû lyù, khoái naøy chöùa caùc maïch ñieän logic coù chöùc naêng chính laø laøm thay ñoåi döõ lieäu. ALU coù hai ngoõ vaøo laø IN, ñoù chính laø caùc ngoõ vaøo döõ lieäu cho ALU xöû lyù vaø moät ngoõ ra OUT laø ngoõ ra keát quaû döõ lieäu ñaõ ñöôïc ALU xöû lyù. Döõ lieäu tröôùc khi ñöa vaøo ALU ñöôïc chöùa ôû thanh ghi ñeäm laø TEMP1 vaø TEMP2. Thoâng thöôøng, ALU luoân laáy döõ lieäu töø moät thanh ghi ñaëc bieät coù teân goïi laø Boä tích luõy (Accumulator). Ngoõ ra OUT cho pheùp ALU coù theå gôûi döõ lieäu ñaõ ñöôïc xöû lyù leân bus döõ lieäu beân trong Vi xöû lyù, do ñoù thieát bò naøo keát noái vôùi bus ñeàu coù theå nhaän döõ lieäu naøy, thöôøng thì ALU gôûi döõ lieäu ñaõ ñöôïc xöû lyù tôùi Boä tích luõy. Khoái ALU coù theå thöïc hieän caùc pheùp tính vaø xöû lyù sau: Add Subtract And Or Exclusive Or Shift right Shift left Increment Decrement Complement Control logic Memory Address Register High | Low SP PC Accumulator (A) Status Register Register B Register C Register D Register E Register H Register L TEMP1 TEMP2 8 bit Data Bus 16 bit Address Bus 8-bit internal data bus External input & output control lines IN IN OUT ALU Instruction Register Instruction Decoder Sô ñoà khoái cuûa moät Vi xöû lyù 8 bit. b. Caùc thanh ghi (Registers): Caùc thanh ghi cô baûn luoân coù trong moät Vi xöû lyù laø A, PC, SP, F, caùc thanh ghi thoâng duïng laø B, C, D, E, thanh ghi leänh, thanh ghi ñòa chæ. Thanh ghi A (Accumulator): hay boä tích luõy, ñaây laø thanh ghi quan troïng cuûa Vi xöû lyù, noù coù chöùc naêng laø löu tröõ döõ lieäu khi tính toaùn. Haàu heát caùc pheùp tính logic vaø soá hoïc ñeàu dieãn ra giöõa thanh ghi naøy vaø ALU. Noù coù chöùc naêng quan troïng khaùc laø truyeàn döõ lieäu töø oâ nhôù hay töø caùc thanh ghi beân trong ra caùc thieát bò ngoaïi vi. Thanh ghi PC (Program Counter): hay boä ñeám chöông trình, laø thanh ghi cô baûn cuûa Vi xöû lyù. Chöùc naêng cuûa thanh ghi PC laø quaûn lyù leänh ñang thöïc hieän vaø leänh seõ ñöôïc thöïc hieän tieáp theo. Tröôùc khi Vi xöû lyù thöïc hieän moät chöông trình thì thanh ghi PC phaûi ñöôïc naïp moät con soá, ñoù chính laø ñòa chæ cuûa oâ nhôù chöùa leänh ñaàu tieân cuûa chöông trình. Sau thöïc hieän vieäc ñoùn leänh töø boä nhôù, Vi xöû lyù seõ töï ñoäng taêng noäi dung PC ñeå chuaån bò ñoùn leänh keá, PC chæ taêng khi Vi xöû lyù baét ñaàu thöïc hieän leänh ñoùn tröôùc ñoù. Thanh ghi traïng thaùi (Status Register): coøn ñöôïc goïi laø thanh ghi côø (Flag Register), duøng ñeå löu tröõ keát quaû cuûa moät soá leänh kieåm tra coù aûnh höôûng ñeán thanh ghi naøy. Caùc bit thöôøng coù trong thanh ghi côø laø: - Bit Carry “C”: khi keát quaû traøn thì C = 1, ngöôïc laïi C = 0. - Bit Zero “Z” : keát quaû baèng 0 thì Z = 1, ngöôïc laïi Z = 0. - Bit Negative “N”: khi bit MSB cuûa thanh ghi laø 1 thì N = 1, ngöôïc laïi N = 0. - Bit Intermediate Carry “I”: gioáng nhö bit Carry nhöng chæ coù taùc duïng vôùi pheùp coäng hay tröø treân 4 bit thaáp. - Bit Interupt Flag “IF”: IF = 1 khi ngöôøi laäp trình cho pheùp ngaét, ngöôïc laïi IF = 0. - Bit Overflow “O”: O = 1 khi bit Carry cuûa pheùp toaùn coäng vôùi bit daáu cuûa döõ lieäu. - Bit Parity “P”: P = 1 khi keát quaû pheùp toaùn laø soá chaün, ngöôïc laïi P = 0. Thanh ghi con troû ngaên xeáp SP (Stack Pointer): chöùc naêng cuûa thanh ghi con troû ngaên xeáp laø quaûn lyù boä nhôù ngaên xeáp khi coù döõ lieäu ñöôïc löu tröõ taïm thôøi vaøo ngaên xeáp. Cuõng gioáng nhö PC, SP cuõng töï ñoäng chæ ñeán oâ nhôù keá. Caùc döõ lieäu chöùa trong ngaên xeáp ñöôïc toå chöùc theo nguyeân taéc vaøo sau ra tröôùc (LIFO: Last In First Out). Trong haàu heát caùc Vi xöû lyù, SP töï giaûm sau khi thöïc hieän leänh caát giöõ döõ lieäu vaøo ngaên xeáp vaø ngöôïc laïi SP seõ töï taêng leân ñeå chæ ñeán oâ nhôù tieáp theo trong ngaên xeáp sau khi Vi xöû lyù thöïc hieän leänh laáy döõ lieäu ra khoûi ngaên xeáp. Vì theá giaù trò cho SP khi thieát laäp thöôøng laø ñòa chæ cuoái cuøng cuûa boä nhôù. Quaù trình naøy do ngöôøi laäp trình thieát laäp ñöôïc goïi laø khôûi taïo con troû ngaên xeáp. Neáu khoâng ñöôïc khôûi taïo, con troû ngaên xeáp seõ chæ ñeán moät oâ nhôù ngaãu nhieân. Khi ñoù döõ lieäu caát vaøo ngaên xeáp coù theå ghi ñeø leân döõ lieäu khaùc laøm chöông trình xöû lyù sai. Thanh ghi ñòa chæ (Address Register): khi Vi xöû lyù caàn truy xuaát boä nhôù, thanh ghi ñòa chæ phaûi taïo ra ñuùng ñòa chæ maø Vi xöû lyù mong muoán. Ngoõ ra cuûa thanh ghi ñòa chæ ñöôïc ñaët leân bus ñòa chæ, bus ñòa chæ duøng ñeå löïa choïn moät oâ nhôù hay moät port I/O caàn truy xuaát. Thanh ghi leänh (Instruction Register): duøng ñeå chöùa leänh Vi xöû lyù ñang thöïc hieän. Thanh ghi naøy do Vi xöû lyù söû duïng, ngöôøi laäp trình khoâng söû duïng. Thanh ghi chöùa döõ lieäu taïm thôøi (Temporary Register): duøng ñeå ALU thöïc hieän caùc pheùp toaùn xöû lyù döõ lieäu, ngöôøi laäp trình khoâng söû duïng thanh ghi naøy. c. Khoái giaûi maõ leänh vaø khoái ñieàu khieån logic: Chöùc naêng cuûa khoái giaûi maõ leänh laø nhaän leänh töø thanh ghi leänh sau ñoù tieán haønh giaûi maõ leänh roài ñöa tín hieäu ñieàu khieån ñeán khoái ñieàu khieån logic. d. Caùc ñöôøng bus: Caùc khoái beân trong Vi xöû lyù lieân heä vôùi nhau thoâng qua taäp hôïp caùc ñöôøng daây ñeå truyeàn döõ lieäu goïi laø bus heä thoáng. Chuùng ñöôïc chia ra laøm ba loaïi: - Bus ñòa chæ: coù nhieäm vuï ñònh ra ñòa chæ cuûa thieát bò caàn truy xuaát neân mang tính moät chieàu, chæ coù Vi xöû lyù môùi ñöa döõ lieäu leân bus ñòa chæ. - Bus döõ lieäu: duøng ñeå keát noái caùc thanh ghi beân trong Vi xöû lyù vaø ALU, taát caû döõ lieäu di chuyeån beân trong Vi xöû lyù töø khoái naøy ñeán khoái khaùc ñeàu thoâng qua bus döõ lieäu, do ñoù bus döõ lieäu mang tính hai chieàu. Khi Vi xöû lyù caàn truy xuaát döõ lieäu töø boä nhôù hay caùc thieát bò I/O beân ngoaøi thì bus döõ lieäu beân trong phaûi ñöôïc noái vôùi bus döõ lieäu beân ngoaøi. - Bus ñieàu khieån: goàm caùc tín hieäu ñieàu khieån ñeå ñaûm baûo söï hoaït ñoäng ñoàng boä giöõa caùc khoái, moãi tín hieäu ñieàu khieån coù moät chieàu nhaát ñònh. Khi hoaït ñoäng, Vi xöû lyù ñöa caùc tín hieäu ñieàu khieån tôùi caùc khoái khaùc trong heä thoáng, ñoàng thôøi Vi xöû lyù cuõng nhaän tín hieäu töø caùc khoái khaùc gôûi veà. Ñieàu naøy khoâng coù nghóa bus ñieàu khieån laø hai chieàu vì Vi xöû lyù gôûi tín hieäu ñi hay nhaän tín hieäu veà treân caùc ñöôøng tín hieäu khaùc nhau beân trong bus ñieàu khieån. 4. Taäp leänh (Instructions) cuûa Vi xöû lyù: Moãi loaïi Vi xöû lyù coù taäp leänh rieâng, soá löôïng leänh cuõng tuøy thuoäc vaøo töøng loaïi Vi xöû lyù. Taäp leänh cuûa Vi xöû lyù coù theå ñöôïc chia laøm caùc nhoùm cô baûn sau: - Nhoùm leänh truyeàn döõ lieäu. - Nhoùm leänh soá hoïc vaø logic - Nhoùm leänh trao ñoåi, truyeàn khoái döõ lieäu vaø tìm kieám. - Nhoùm leänh xoay vaø dòch. - Nhoùm leänh ñieàu khieån - Nhoùm leänh veà bit. - Nhoùm leänh nhaûy. - Nhoùm leänh goïi, trôû veà. - Nhoùm leänh xuaát, nhaäp. Moãi leänh cuûa Vi xöû lyù laø döõ lieäu ôû daïng soá nhò phaân. Khi Vi xöû lyù nhaän ñöôïc moät leänh thì töø döõ lieäu nhò phaân naøy yeâu caàu Vi xöû lyù thöïc hieän coâng vieäc maø leänh yeâu caàu. Chieàu daøi cuûa moät leänh baèng vôùi chieàu daøi töø döõ lieäu cuûa Vi xöû lyù. Moãi leänh maø Vi xöû lyù thöïc hieän goàm hai yeáu toá: - Maõ coâng taùc: cho bieát thao taùc maø Vi xöû lyù phaûi thöïc hieän. - Toaùn haïng: ñöôïc vieát theo sau maõ coâng taùc, cho bieát vò trí döõ lieäu caàn phaûi xöû lyù. Coù nhieàu caùch ñeå chæ vò trí cuûa soá lieäu: - Ñònh ñòa chæ tröïc tieáp baèng thanh ghi: toaùn haïng laø kyù hieäu cuûa caùc thanh ghi vaø döõ lieäu caàn xöû lyù chính laø noäi dung chöùa trong thanh ghi ñoù. - Ñònh ñòa chæ giaùn tieáp baèng thanh ghi: toaùn haïng khoâng phaûi laø ñòa chæ cuûa soá lieäu maø chæ laø daáu hieäu cho bieát nôi chöùa döõ lieäu. - Ñònh ñòa chæ tröïc tieáp: toaùn haïng laø ñòa chæ cuûa döõ lieäu caàn ñöôïc xöû lyù. - Ñònh ñòa chæ töùc thôøi: toaùn haïng chính laø döõ lieäu caàn ñöôïc xöû lyù. - Ñònh ñòa chæ ngaàm ñònh: vò trí hoaëc giaù trò cuûa döõ lieäu caàn ñöôïc xöû lyù ñöôïc hieåu ngaàm nhôø maõ coâng taùc. PHAÀN II: Vi xöû lyù 8085A I. Giôùi thieäu: Vi xöû lyù 8085A ñöôïc haõng Intel cheá taïo vaøo naêm 1974. Ñaây laø moät Vi xöû lyù 8 bit, coù chieàu daøi töø döõ lieäu laø 8 bit, chieàu daøi töø ñòa chæ laø 16 bit. 1. Ñaëc tính: - Nguoàn cung caáp : 5V ± 10%. - Doøng ñieän cöïc ñaïi: Imax = 170mA. - Taàn soá xung clock chuaån 6MHz. - Maïch taïo xung clock ñöôïc tích hôïp, coù theå duøng thaïch anh, RC hay RC beân ngoaøi. - Coù 5 yeâu caàu ngaét: Trong ñoù coù moät yeâu caàu ngaét khoâng che ñöôïc (NMI - Non Maskable Interrupt) vaø moät töông thích vôùi 8080A. - Coù coång Input/Output noái tieáp. - Phaàn meàm töông thích 100% vôùi 8080A. 2. Sô ñoà chaân vaø sô ñoà logic: 8085A X1 X2 Reset Out SOD SID Trap RST 7.5 RST 6.5 RST 5.5 INTR INTA\ AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss Vcc HOLD HLDA CLK Out Reset In Ready IO/M\ S1 RD\ WR\ ALE S0 A15 A14 A13 A12 A11 A10 A9 A8 8085A Ready Hold Intr RST 7.5 RST 6.5 RST 5.5 Trap Reset In X1 X2 SID Vcc Vss A15 - A8 AD7 - AD0 ALE S0 S1 RD\ WR\ HLDA INTA Reset Out SOD CLK Out Sô ñoà chaân A8..A15 - Address bus (output) Byte cao cuûa ñòa chæ oâ nhôù 16 bit hoaëc ñòa chæ coång 8 bit, coù caáu taïo ngoõ ra 3 traïng thaùi. Traïng thaùi Hi-Z ôû cheá ñoä HOLD, HALT vaø trong luùc RESET. AD0..AD7 - Address/Data bus (input/output) Bus ñòa chæ/döõ lieäu, laøm vieäc theo phöông phaùp ña loä thôøi gian: ÔÛ chu kyø ñoàng hoà ñaàu tieân laø byte thaáp cuûa ñòa chæ oâ nhôù hoaëc khoái xuaát nhaäp, ôû hai chu kyø tieáp theo laø döõ lieäu, caáu taïo ngoõ ra 3 traïng thaùi. Traïng thaùi Hi-Z ôû cheá ñoä HOLD, HALT vaø trong luùc RESET. ALE - Address Latch Enable (output) ÔÛ chu kyø ñaàu tieân cuûa xung ñoàng hoà, ALE = [1] cho bieát AD0..AD7 laø bus ñòa chæ. T1 T2 T3 T1 T2 T3 xung clock A15-A8 AD7-AD0 ALE RD\ WR\ T T T T T T Address A15-A8 Address A15-A8 A7-A0 A7-A0 Data D7-D0 Data D7-D0 Chu kyø vieát Chu kyø ñoïc Phöông phaùp ña loä thôøi gian Bus ñòa chæ Choát S0 S1 HLDA HOLD 8085A RESET RDY CLK INTA ALE RD WR IO/M\ OUT AD7 - AD0 A15 - A8 RESET IN Bus ñieàu khieån Bus döõ lieäu Tín hieäu ngaét Vi xöû lyù vaø choát ñòa chæ RD\ - Read control (output) Taùc ñoäng möùc thaáp cho bieát döõ lieäu ñang ñöôïc ñoïc töø boä nhôù hoaëc coång. Caáu taïo ngoõ ra 3 traïng thaùi. Traïng thaùi Hi-Z ôû cheá ñoä HOLD, HALT vaø trong luùc RESET. WR\ - Write control (output) Taùc ñoäng möùc thaáp cho bieát döõ lieäu ñang ñöôïc vieát vaøo boä nhôù hoaëc coång. Caáu taïo ngoõ ra 3 traïng thaùi. Traïng thaùi Hi-Z ôû cheá ñoä HOLD, HALT vaø trong luùc RESET. READY (input) Möùc cao trong chu kyø ñoïc hoaëc vieát cho bieát boä nhôù hoaëc thieát bò ngoaïi vi ñaõ saün saøng gôûi hoaëc nhaän döõ lieäu, Vi xöû lyù seõ ñôïi neáu ngoõ naøy ôû möùc thaáp. S0, S1, IO/M\ - status (output) Ba ngoõ ra cho bieát traïng thaùi hoaït ñoäng cuûa Vi xöû lyù. IO/M\ S1 S0 Traïng thaùi 0 0 1 Vieát vaøo boä nhôù 0 1 0 Ñoïc vaøo boä nhôù 1 0 1 Vieát ra coång 1 1 0 Ñoïc töø coång 0 1 1 Nhaän leänh 1 1 1 Nhaän leänh * traïng thaùi Hi-Z x khoâng xaùc ñònh 1 1 1 Nhaän yeâu caàu ngaét * 0 0 HALT * x x HOLD * x x RESET HLDA - Hold Acknowledge (output) Tín hieäu ra cho bieát Vi xöû lyù chaáp nhaän quyeàn söû duïng bus ñòa chæ vaø bus döõ lieäu ôû chu kyø keá tieáp, ngoõ naøy trôû veà möùc thaáp khi khoâng coøn yeâu caàu HOLD. INTR - Interrupt Request (input) Ñöôïc duøng cho caùc yeâu caàu ngaét coâng duïng chung, Vi xöû lyù seõ nhaän ra sau khi thöïc hieän xong moät chæ thò, ngaét naøy coù theå ñöôïc che baèng phaàn meàm vaø khoâng coù hieäu löïc trong luùc RESET hoaëc trong khi Vi xöû lyù ñang thi haønh moät chöông trình phuïc vuï ngaét. INTA - Interrupt Acknowledge (output) Ngoõ ra möùc thaáp cho bieát Vi xöû lyù chaáp thuaän yeâu caàu ngaét. RST 5.5, RST 6.5, RST 7.5 - Restart Interrupt (input) Ba yeâu caàu ngaét coù möùc ñoä öu tieân cao hôn INTR, ñöôïc ñieàu khieån bôûi leänh SIM. TRAP (input) Yeâu caàu ngaét coù möùc ñoä öu tieân cao nhaát vaø khoâng che ñöôïc baèng phaàn meàm. Teân Möùc öu tieân Ñòa chæ ngaét (1) Tín hieäu taùc ñoäng TRAP 1 24h Caïnh leân vaø möùc cao RST 7.5 2 3Ch Caïnh leân RST 6.5 3 34h Möùc cao RST 5.5 4 2Ch Möùc cao INTR 5 (2) Möùc cao (1) Vi xöû lyù caát PC vaøo ngaên xeáp tröôùc khi nhaûy ñeán ñòa chæ ngaét. (2) Phuï thuoäc vaøo ñòa chæ goïi ngaét. INT0 INT1 INT2 INT3 INT4 INT5 INT6 INT7 Ñeäm ba traïng thaùi 1 1 1 INTR\ INTA Vi xöû lyù 1 1 D0 D1 D2 D3 D4 D5 D6 D7 A8 ... A15 AD0 ... AD7 74148 Caùc ngaét ñöôïc goïi baèng leänh RST INTERRUPT INT RESTART D7 D6 D5 D4 D3 D2 D1 D0 Ñòa chæ boä nhôù (Hex) 0 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 8 2 1 1 0 1 0 1 1 1 0 0 1 0 3 1 1 0 1 1 1 1 1 0 0 1 8 4 1 1 1 0 0 1 1 1 0 0 2 0 5 1 1 1 0 1 1 1 1 0 0 2 8 6 1 1 1 1 0 1 1 1 0 0 3 0 7 1 1 1 1 1 1 1 1 0 0 3 8 RESET IN\ (input) Möùc thaáp ñaët laïi boä ñeám chöông trình veà 0000H, xoùa FF cho pheùp ngaét vaø HLDA. Bus ñòa chæ, bus döõ lieäu vaø bus ñieàu khieån ôû traïng thaùi Hi-Z trong luùc RESET. RESET OUT (output) Baùo cho bieát CPU ñang ôû traïng thaùi RESET, duøng ñeå ñaët laïi toaøn boä heä thoáng, ngoõ ra töông thích TTL. X1, X2 (input) Ngoõ ñaët thaïch anh, RC hoaëc LC ñeå taïo xung ñoàng hoà, X1 coøn laø ngoõ vaøo cuûa tín hieäu ñoàng hoà töø maïch beân ngoaøi. CLK - Clock (output) Ngoõ ra xung ñoàng hoà coù taàn soá baèng phaân nöûa tín hieäu taïi X1. SID - Serial Input Data line (input) Ngoõ vaøo döõ lieäu noái tieáp naïp vaøo bit 7 cuûa boä tích luõy khi coù leänh RIM. SOD - Serial Output Data line (output) Ngoõ ra döõ lieäu noái tieáp ñöôïc xaùc ñònh bôûi leänh SIM. Vcc Nguoàn nuoâi +5V. Vss Mass. Caáu taïo 8085A: Caáu taïo beân trong cuûa Vi xöû lyù 8085A coù ñaày ñuû taát caû caùc khoái cuûa moät Vi xöû lyù 8 bit ñaõ ñöôïc giôùi thieäu, nhöng coù moät soá ñieåm khaùc bieät ñöôïc theå hieän qua sô ñoà khoái sau: HOLD INTERRUPT CONTROL SERIAL I/O CONTROL ACCUMULATOR (8) TEMP REG(8) FLAG (8) FLIP FLOP ALU INSTRUCTION DECODER AND MACHINE CYCLE ENCODING ADDRESS BUFFER DATA/ADDRESS BUFFER B REG (8) C REG (8) D REG (8) E REG (8) H REG (8) L REG (8) STACK POINTER PROGRAM COUNTER INCREMENTER/ DECREMENTER TIMING AND CONTROL CONTROL STATUS DMA RESET 8 BIT INTERNAL DATA BU S X1 X2 CLOCK OUT READY RD\ WR\ ALE S0 S1 IO/M\ A15..A8 ADDRESS BUS AD7..AD0 DATA/ADDRESS BUS INTR INTA\ RST 7.5 RST 6.5 RST 5.5 TRAP SID SOD HLDA RESET IN RESET OUT INSTRUCTION REGISTER (8) Caáu truùc Vi xöû lyù 8085A Caáu taïo Vi xöû lyù 8085A goàm 3 phaàn: Ñôn vò soá hoïc-logic, caùc thanh ghi vaø ñôn vò ñieàu khieån. Caùc thanh ghi trong 8085A ñöôïc chia ra nhö sau: Boä ñeám chöông trình (PC) vaø con troû ngaên xeáp (SP): laø hai thanh ghi coù ñoä daøi 16 bit neân Vi xöû lyù coù theå truy xuaát ñöôïc moät löôïng oâ nhôù laø 216 = 65536 byte hay 64Kbyte. Boä tích luõy (Accummulator): Coù kyù hieäu laø A, ñoä daøi 8 bit. Ñaây laø thanh ghi quan troïng nhaát trong Vi xöû lyù, haàu heát caùc quaù trình tính toaùn ñeàu xaûy ra treân thanh ghi naøy. Thanh ghi traïng thaùi (Status Register): Coù teân khaùc laø thanh ghi côø (Flag), kyù hieäu laø F, thanh ghi naøy coù ñoä daøi 8 bit trong ñoù coù 5 bit traïng thaùi duøng ñeå phaûn aùnh traïng thaùi cuûa Vi xöû lyù khi thöïc hieän xong moät leänh. S Z x AC x P x Cy S - Sign (bit daáu) S = 1 Khi keát quaû laø soá aâm. S = 0 Khi keát quaû laø soá döông. Z - Zero (bit zero) Z = 1 Khi keát quaû baèng 0. Z = 0 Khi keát quaû khaùc 0. AC - Auxiliary Carry (bit soá nhôù phuï) AC = 1 Khi pheùp tính bò traøn treân bit 3. AC = 0 Khi pheùp tính khoâng traøn treân bit 3. P - Parity (bit chaün leû) P = 1 Khi keát quaû laø soá chaün. P = 0 Khi keát quaû laø soá leû. Soá chaün laø soá coù toång soá bit [1] laø chaün, vaø ngöôïc laïi soá leû laø soá coù toång soá bit [1] laø leû. Cy - Carry (bit soá nhôù) Cy = 1 Khi keát quaû coù soá nhôù. Cy = 0 Khi keát quaû khoâng soá nhôù. Caùc thanh ghi coâng duïng chung: Goàm 6 thanh ghi coù ñoä daøi 8 bit ñöôïc kyù hieäu laàn löôït laø B, C, D, E, H vaø L. Caùc thanh ghi naøy coù theå keát hôïp thaønh töøng caëp 16 bit: BC, DE, HL vaø AF, trong ñoù A, B, D vaø H laø caùc thanh ghi cao vaø F, C, E vaø L laø caùc thanh ghi thaáp. II. TAÄP LEÄNH 8085A: Taäp leänh cuûa 8085A ñöôïc chia thaønh caùc nhoùm nhö sau: - Nhoùm leänh truyeàn döõ lieäu - Nhoùm leänh soá hoïc - logic - Nhoùm leänh so saùnh - Nhoùm leänh nhaûy - Nhoùm leänh veà ngaên xeáp - Nhoùm leänh veà xuaát nhaäp - Nhoùm leänh ñieàu khieån 1. Nhoùm leänh truyeàn döõ lieäu: MOV ds, sr Truyeàn döõ lieäu töø thanh ghi sr ñeán thanh ghi ds. MOV ds, M Truyeàn döõ lieäu töø oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL vaøo thanh ghi ds. MOV M, sr Truyeàn döõ lieäu töø thanh ghi sr vaøo oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. MVI ds, data Truyeàn töùc thôøi döõ lieäu 8 bit vaøo thanh ghi ds. MVI M, data Truyeàn töùc thôøi döõ lieäu 8 bit vaøo oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. LXI rp, dw Naïp töùc thôøi döõ lieäu 16 bit vaøo caëp thanh ghi rp. LDA addr Naïp tröïc tieáp noäi dung oâ nhôù coù ñòa chæ laø addr vaøo thanh ghi A. LDAX rp Naïp giaùn tieáp noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi rp vaøo thanh ghi A. LHLD addr Naïp tröïc tieáp noäi dung oâ nhôù coù ñòa chæ laø addr vaøo thanh ghi L, noäi dung oâ nhôù coù ñòa chæ addr+1 vaøo thanh ghi H. STA addr Löu tröõ tröïc tieáp noäi dung thanh ghi A vaøo oâ nhôù coù ñòa chæ addr. STAX rp Löu tröõ giaùn tieáp noäi dung thanh ghi A vaøo oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi rp. SHLD addr Löu tröõ tröïc tieáp noäi dung thanh ghi L vaøo oâ nhôù coù ñòa chæ addr, noäi dung thanh ghi H vaøo oâ nhôù coù ñòa chæ addr+1. XCHG Hoaùn chuyeån noäi dung giöõa caëp thanh ghi HL vôùi caëp thanh ghi DE. 2. Nhoùm leänh soá hoïc - logic: ADD sr Coäng khoâng löu yù soá nhôù noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. ADD M Coäng khoâng löu yù soá nhôù noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. ADI data Coäng khoâng löu yù soá nhôù noäi dung thanh ghi A vôùi döõ lieäu. ADC sr Coäng coù löu yù soá nhôù noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. ADC M Coäng coù löu yù soá nhôù noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. ACI data Coäng coù löu yù soá nhôù noäi dung thanh ghi A vôùi döõ lieäu. SUB sr Tröø khoâng löu yù soá thieáu noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. SUB M Tröø khoâng löu yù soá thieáu noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. SUI data Tröø khoâng löu yù soá thieáu noäi dung thanh ghi A vôùi döõ lieäu. SBB sr Tröø coù löu yù soá thieáu noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. SBB M Tröø coù löu yù soá thieáu noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. SBI data Tröø coù löu yù soá thieáu noäi dung thanh ghi A vôùi döõ lieäu. ANA sr AND giöõa noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. ANA M AND giöõa noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. ANI data AND giöõa noäi dung thanh ghi A vôùi döõ lieäu. ORA sr OR giöõa noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. ORA M OR giöõa noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. ORI data OR giöõa noäi dung thanh ghi A vôùi döõ lieäu. XRA sr EXOR giöõa noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. XRA M EXOR giöõa noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. XRI data EXOR giöõa noäi dung thanh ghi A vôùi döõ lieäu. INR reg Taêng noäi dung thanh ghi reg. INR M Taêng noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. DCR reg Giaûm noäi dung thanh ghi reg. DCR M Giaûm noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. INX rp Taêng noäi dung caëp thanh ghi rp. DCX rp Giaûm noäi dung caëp thanh ghi rp. RRC Ñaåy noäi dung thanh ghi A veà phía phaûi. RLC Ñaåy noäi dung thanh ghi A veà phía traùi. RAR Ñaåy noäi dung thanh ghi A veà phía phaûi ngang qua cy. RAL Ñaåy noäi dung thanh ghi A veà phía traùi ngang qua cy. DAD rp Coäng noäi dung caëp thanh ghi HL vôùi noäi dung caëp thanh ghi rp. DAA Ñieàu chænh noäi dung boä tích luõy A. CMA Nghòch ñaûo noäi dung boä tích luõy A. STC Ñaët bit cy laø [1]. CMC Nghòch ñaûo bit cy. 3. Nhoùm leänh so saùnh: CMP sr So saùnh noäi dung thanh ghi A vôùi noäi dung thanh ghi sr. CMP M So saùnh noäi dung thanh ghi A vôùi noäi dung oâ nhôù coù ñòa chæ chöùa trong caëp thanh ghi HL. CPI data So saùnh noäi dung thanh ghi A vôùi döõ lieäu. 4. Nhoùm leänh nhaûy: JMP addr Nhaûy ñeán ñòa chæ addr khoâng ñieàu kieän. Jcondition addr Nhaûy ñeán ñòa chæ addr neáu thoûa ñieàu kieän: - JNZ Z = 0 - JZ Z = 1 - JNC Cy = 0 - JC Cy = 1 - JPO P = 0 - JPE P = 1 - JP S = 0 - JM S = 1 CALL addr Goïi chöông trình con taïi ñòa chæ addr. Ccondition addr Goïi chöông trình con taïi ñòa chæ addr neáu thoûa ñieàu kieän: - CNZ Z = 0 - CZ Z = 1 - CNC Cy = 0 - CC Cy = 1 - CPO P = 0 - CPE P = 1 - CP S = 0 - CM S = 1 RET Trôû veà töø chöông trình con khoâng ñieàu kieän. Rcondition Trôû veà töø chöông trình con neáu thoûa ñieàu kieän: - RNZ Z = 0 - RZ Z = 1 - RNC Cy = 0 - RC Cy = 1 - RPO P = 0 - RPE P = 1 - RP S = 0 - RM S = 1 RST c Goïi chöông trình phuïc vuï ngaét soá hieäu c. PCHL Naïp boä ñeám chöông trình PC töø caëp thanh ghi HL. 5. Nhoùm leänh veà ngaên xeáp: PUSH rp Chuyeån döõ lieäu cuûa caëp thanh ghi rp vaøo ngaên xeáp. POP rp Laáy döõ lieäu töø ngaên xeáp chuyeån vaøo caëp thanh ghi rp. XTHL Hoaùn chuyeån döõ lieäu giöõa ngaên xeáp vôùi caëp thanh ghi HL. SPHL Chuyeån noäi dung caëp thanh ghi HL vaøo thanh ghi SP. 6. Nhoùm leänh xuaát nhaäp: IN port Nhaäp döõ lieäu töø coång port vaøo thanh ghi A. OUT port Xuaát döõ lieäu töø thanh ghi A ra coång port. 7. Nhoùm leänh ñieàu khieån: NOP Leänh troáng. HLT Leänh döøng chöông trình cho ñeán khi coù leänh ngaét hoaëc RESET. EI Cho pheùp yeâu caàu ngaét. DI Khoâng cho pheùp yeâu caàu ngaét. 8. Nhoùm leänh ñaëc bieät: SIM Leänh naøy söû duïng caùc bit trong thanh ghi A ñeå thöïc hieän caùc coâng vieäc sau: SOD SOE x R 7.5 MSE M 7.5 M 6.5 M 5.5 M 7.5 - M 6.5 - M5.5 = [0]: Cho pheùp yeâu caàu ngaét. = [1]: Ngaên yeâu caàu ngaét. MSE = [0]: Caùc bit töø 0 ñeán 2 cuûa thanh ghi A coù taùc duïng. = [1]: Caùc bit töø 0 ñeán 2 cuûa thanh ghi A khoâng taùc duïng. RST 7.5 = [0]: Khoâng aûnh höôûng. = [1]: Reset Flip Flop RST 7.5 SOE = [0]: Bit thöù 7 cuûa thanh ghi A khoâng göûi ra ngoõ SOD. = [1]: Bit thöù 7 cuûa thanh ghi A ñöôïc göûi ra ngoõ SOD. SOD : Chöùa döõ lieäu caàn göûi ñeán ngoõ ra noái tieáp SOD. RIM Keát quaû cuûa leänh RIM sau khi thöïc hieän ñöôïc traû laïi trong thanh ghi A cho bieát caùc traïng thaùi sau: SID I 7.5 I 6.5 I 6.5 IE M 7.5 M 6.5 M 5.5 M 7.5 - M 6.5 - M 5.5 = [0]: Yeâu caàu ngaét bò ngaên. = [1]: Yeâu caàu ngaét ñöôïc pheùp. IE = [0]: Vi xöû lyù khoâng chaáp nhaän yeâu caàu ngaét. = [1]: Vi xöû lyù chaáp nhaän yeâu caàu ngaét. I 7.5 -I 6.5 - I 5.5 = [0]: Cho bieát khoâng coù yeâu caàu ngaét. = [1]: Cho bieát yeâu caàu ngaét ñang chôø. SID : Chöùa döõ lieäu cuûa ngoõ vaøo noái tieáp SID. PHAÀN III: Thieát keá Heä Vi xöû lyù 8085. I. Phöông aùn thieát keá: Yeâu caàu ñaët ra laø thieát keá heä Vi xöû lyù 8085 coù 40 phím, hieån thò taùm LED 7 ñoaïn. - Veà boä nhôù: choïn EPROM 2764 chöùa chöông trình heä thoáng, SRAM 6264 chöùa döõ lieäu taïm thôøi vaø caùc bieán heä thoáng. Ñoàng thôøi cuõng thieát keá theâm ñeá caém daønh cho EPROM 2764 môû roäng khi caàn, khe caém naøy coù theå caém ñöôïc SRAM 6264 vaø coù theå chuyeån ñoåi chöùc naêng RAM/ROM baèng moät jumper. - Veà giao tieáp noäi boä: söû duïng moät vi maïch 8255A ñeå queùt ñeøn vaø queùt phím. Vi maïch naøy laøm vieäc theo kieåu boä nhôù, moãi port töông öùng vôùi moät vò trí oâ nhôù. Döõ lieäu queùt ñeøn vaø phím laø taùc ñoäng möùc thaáp neân söû duïng caùc LED hieån thò laø loaïi Cathode chung. - Veà giao tieáp vôùi caùc thieát bò ngoaøi: söû duïng hai vi maïch 8255A, lyù do söû duïng tôùi hai vi maïch laø ñeå môû roäng soá coång giao tieáp khi caàn thieát (leân tôùi 6 coång). - Veà giaûi ña hôïp: ñeå taùch giöõa döõ lieäu vaø ñòa chæ treân caùc chaân AD0-AD7 cuûa 8085A coù theå duøng 74LS373 hoaëc 74LS573 laø vi maïch choát, chöùc naêng cuûa hai loaïi laø nhö nhau. Trong thieát keá söû duïng 74LS573, 74LS573 coù caùc ñöôøng döõ lieäu vaøo vaø ra naèm ôû hai beân vi maïch, vì theá vieäc thieát keá maïch in deã daøng hôn. - Veà giaûi maõ ñòa chæ: söû duïng 74LS138 laø vi maïch giaûi maõ 3 ñöôøng ra 8 ñöôøng. Trong thieát keá söû duïng hai vi maïch 74LS138, moät cho giao tieáp noäi boä, moät cho giao tieáp vôùi caùc thieát bò ngoaøi. Ñoàng thôøi cuõng söû duïng theâm moät vi maïch 74LS32 trong vieäc giaûi maõ ñòa chæ. - Veà chöông trình heä thoáng: baøn phím coù 40 phím, trong ñoù 10 phím duøng cho caùc phím soá töø 0 ñeán 9, 26 phím duøng cho caùc phím chöõ caùi töø A ñeán Z, toång coäng laø 36 phím. Coøn laïi 4 phím duøng laøm caùc phím chöùc naêng: phím +, -, PC, ESCAPE. Chöông trình Monitor coù nhieäm vuï queùt ñeøn vaø ñoïc phím nhaán, cho pheùp nhaäp chöông trình vaøo vaø thi haønh chöông trình ñoù, nhaän bieát phím chöùc naêng vaø thöïc hieän caùc coâng vieäc töông öùng. II. Phaàn cöùng: 1. Khaûo saùt caùc vi maïch ñöôïc söû duïng trong thieát keá: a. Boä nhôù EPROM 2764: EPROM 2764 laø boä nhôù chæ ñoïc ñöôïc cheá taïo theo coâng ngheä NMOS, duøng moät nguoàn ñôn +5V, dung löôïng boä nhôù laø 65536 bit, ñöôïc toå chöùc thaønh 8192x8 bit (8KByte). 2764 laø loaïi EPROM coù theå xoùa baèng tia cöïc tím vaø coù theå ghi laïi ñöôïc nhieàu laàn. Coù hai kieåu hoïat ñoäng: bình thöôøng vaø chôø. ÔÛ traïng thaùi chôø, coâng suaát tieâu thuï laø 132mW so vôùi 525mW khi ôû traïng thaùi ñoïc döõ lieäu, thôøi gian truy xuaát laø 200ns. 2764 CE\ OE\ VPP D0-D7 A0-A12 Vpp A12 A7 A6 A5 A4 A3 A2 A1 A0 O0 O1 O2 GND 2764 Vcc PGM\ N.C A8 A9 A11 OE\ A10 CE\ O7 O6 O5 O4 O3 Sô ñoà chaân vaø sô ñoà logic Mode \ Pin CE\ OE\ PGM\ VPP Output Read L L H Vcc Dout Stand-by H x x Vcc Hi-Z Program L x L Vpp Din Program Verify L L H Vpp Dout Program Inhibit H x x Vpp Hi-Z Baûng traïng thaùi b. Boä nhôù SRAM 6264: SRAM 6264 laø boä nhôù ñöôïc cheá taïo theo coâng ngheä CMOS, coù dung löôïng 65536 bit ñöôïc toå chöùc thaønh 8192x8 bit (8KByte), ñieän aùp cung caáp laø +5V, thôøi gian truy caäp khoaûng 150ns. Ngoõ vaøo/ra döõ lieäu ñöôïc duøng chung, caùc ngoõ vaøo/ra naøy töông thích TTL. Coâng suaát tieâu taùn ôû traïng thaùi chôø raát thaáp chæ khoaûng 0,1mW so vôùi khi hoaït ñoäng bình thöôøng laø 200mW. 6264 DQ0-DQ7 A0-A12 CE1\ CE2 OE\ WE\ N.C A12 A7 A6 A5 A4 A3 A2 A1 A0 DQ0 DQ1 DQ2 Vss 6264 Vcc WE\ CE2 A8 A9 A11 OE\ A10 CE1\ DQ7 DQ6 DQ5 DQ4 DQ3 Sô ñoà chaân vaø sô ñoà logic Mode \ Pin WR\ CE1\ CE2 OE\ Output Not Select x H x x Hi-Z x x L x Output Disable H L H H Hi-Z Read H L H L Dout Write L L H H Din Baûng traïng thaùi c. Vi maïch giao tieáp ngoaïi vi 8255A: Vi maïch 8255A laø vi maïch giao tieáp ngoaïi vi laäp trình ñöôïc. Noù ñöôïc duøng ñeå keát noái giao tieáp song song giöõa Vi xöû lyù vaø thieát bò ñieàu khieån beân ngoaøi. PA3 PA2 PA1 PA0 RD\ CS\ GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2 PA4 PA5 PA6 PA7 WR\ RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 8255A 8255A D0-D7 RD\ WR\ RESET A0 A1 CS\ PA0-PA7 PB0-PB7 PC0-PC3 PC4-PC7 Sô ñoà chaân vaø sô ñoà logic A1 A0 RD\ WR\ CS\ Hoaït ñoäng L L L H L Port A à Bus döõ lieäu L H L H L Port Bà Bus döõ lieäu H L L H L Port Cà Bus döõ lieäu L L H L L Bus döõ lieäu à Port A L H H L L Bus döõ lieäu à Port B H L H L L Bus döõ lieäu à Port C H H H L L Bus döõ lieäu à Töø ñieàu khieån x x x x H Bus döõ lieäu ôû traïng thaùi Hi-Z H H L H L Caám x x H H L Bus döõ lieäu ôû traïng thaùi Hi-Z Baûng traïng thaùi Cô cheá hoaït ñoäng cuûa 8255A: Khi chaân RESET ôû möùc 1, 8255A seõ ñöôïc khôûi ñoäng, noù seõ thaû noåi taát caû 24 chaân lieân quan tôùi caùc cöûa vaøo/ra. Traïng thaùi naøy keùo daøi tôùi khi chöông trình öùng duïng vieát töø ñieàu khieån vaøo thanh ghi ñieàu khieån ñeå xaùc ñònh cheá ñoä laøm vieäc cuûa 8255A. Ba cheá ñoä hoaït ñoäng cô baûn cuûa 8255A laø: - Cheá ñoä 0: vaøo/ra thoâng thöôøng. - Cheá ñoä 1: choát vaøo/ra. - Cheá ñoä 2: bus hai chieàu. Töø ñieàu khieån duøng ñeå ñònh nghóa cheá ñoä laøm vieäc cho 8255A. Caáu truùc töø ñieàu khieån cuûa 8255A: D7 D6 D5 D4 D3 D2 D1 D0 Nhoùm B Port C (thaáp) 1 = nhaäp 0 = xuaát Port B 1 = nhaäp 0 = xuaát Choïn cheá ñoä 0 = cheá ñoä 0 1 = cheá ñoä 1 Nhoùm A Port C (cao) 1 = nhaäp 0 = xuaát Port A 1 = nhaäp 0 = xuaát Choïn cheá ñoä 00 = cheá ñoä 0 01 = cheá ñoä 1 1x = cheá ñoä 2 Côø laäp cheá ñoä 1 = tích cöïc Cheá ñoä 0: Töø ñieàu khieån 1 0 0 D4 D3 0 D1 D0 Cheá ñoä 0 xaùc laäp hai port 8 bit (A vaø B) vaø hai port 4 bit (nöûa cao vaø nöûa thaáp cuûa port C). Baát kyø port naøo cuõng coù theå nhaäp hoaëc xuaát döõ lieäu tuøy theo caùc bit D4, D3, D1 vaø D0. Döõ lieäu ñöôïc choát khi nhaäp (coøn khi xuaát thì khoâng). Cheá ñoä 1: Töø ñieàu khieån 1 0 1 D4 D3 1 D1 D0 Cheá ñoä naøy caû hai port A vaø B laøm vieäc ôû cheá ñoä xuaát/nhaäp coù choát. Port A vaø B hoaït ñoäng ñoäc laäp nhau, moãi port coù 4 bit ñieàu khieån/döõ lieäu ñöôïc hình thaønh töø 4 bit cao vaø 4 bit thaáp cuûa port C. Nhoùm A ñöôïc caáu hình ôû cheá ñoä 1: * Port A laø port nhaäp döõ lieäu: Töø ñieàu khieån PC4 PC5 PC3 INTE A RD\ PC6,7 PA0-PA7 I/O INTRA IBFA STBA\ 1 0 1 1 D3 x x x PC6,7 1 = nhaäp 0 = xuaát - STBA\ (PC4): möùc 0 taïi ngoõ vaøo naøy seõ laøm cho döõ lieäu ñöôïc choát vaøo port A. Thieát bò ngoaïi vi duøng tín hieäu naøy ñeå baùo cho 8255A bieát döõ lieäu vaøo ñaõ saün saøng. - IBFA (PC5): ngoõ ra naøy leân möùc 1 ñeå baùo raèng boä ñeäm ñaõ ñaày. Khi chaân naøy ôû möùc 0 thì thieát bò ngoaïi vi coù theå gôûi döõ lieäu môùi tôùi 8255A. - INTRA (PC3): tín hieäu ôû ngoõ ra naøy ñöôïc duøng nhö moät yeâu caàu ngaét. Ngoõ ra naøy leân möùc 1 khi STBA ôû möùc 0, IBFA vaø côø hieäu INTRA ôû möùc 1. Tín hieäu INTEA töï ñoäng ñöôïc xoùa khi CPU nhaäp töø 8255A. Côø hieäu cho pheùp ngaét (INTE) ñöôïc ñieàu khieån baèng caùch ñaët hoaëc xoùa bit PC4. - Caùc bit PC6 vaø PC7 laø caùc bit xuaát nhaäp bình thöôøng phuï thuoäc vaøo bit D3 trong töø ñieàu khieån. * Port A laø port xuaát döõ lieäu: Töø ñieàu khieån PC6 PC7 PC3 INTE A WR\ PC4, 5 PA0-PA7 I/O INTRA ACKA\ OBFA\ 1 0 1 0 D3 x x x PC4, 5 1 = nhaäp 0 = xuaát - OBFA\ (PC7): ngoõ ra naøy seõ xuoáng möùc 0 khi boä ñeäm xuaát ñaày ñeå baùo cho thieát bò ngoaïi vi bieát port A ñang xuaát ra döõ lieäu môùi. - ACKA\ (PC6): ngoõ vaøo naøy ñöôïc thieát bò ngoaïi vi ñaët möùc 0 ñeå baùo cho 8255A bieát döõ lieäu port A ñöôïc chaáp nhaän. - INTRA (PC3): ngoõ ra naøy coù cuøng muïc ñích nhö trong tröôøng hôïp nhaäp. Côø cho pheùp ngaét ñöôïc ñieàu khieån baèng caùch ñaët hoaëc xoùa bit PC6. - Caùc bit PC4 vaø PC5 laø caùc bit xuaát nhaäp bình thöôøng phuï thuoäc vaøo bit D3 trong töø ñieàu khieån. Nhoùm B ñöôïc caáu hình ôû cheá ñoä 1: * Port B laø port nhaäp döõ lieäu: Töø ñieàu khieån PC2 PC1 PC0 INTE B RD\ PC4,5 PB0-PB7 I/O INTRB IBFB STBB\ 1 x x x x 1 1 x - STBB\ (PC2), IBFB (PC1) vaø INTRB (PC0) coù chöùc naêng töông töï nhö trong tröôøng hôïp port A nhaäp. Côø hieäu cho pheùp ngaét (INTE) ñöôïc ñieàu khieån baèng caùch ñaët hoaëc xoùa bit PC2. * Port B laø port xuaát döõ lieäu: Töø ñieàu khieån PC2 PC1 PC0 INTE B WR\ PC4, 5 PB0-PB7 I/O INTRB ACKB\ OBFB\ 1 x x x x 1 0 x Cheá ñoä 2: Cheá ñoä naøy laø cheá ñoä xuaát/nhaäp hai chieàu ñöôïc choát. Trong cheá ñoä naøy, port A ñöôïc duøng cho xuaát vaø nhaäp, 5 bit cuûa port C ñöôïc duøng ñeå chæ traïng thaùi vaø ñieàu khieån port A. Töø ñieàu khieån PC7 PC6 PC4 INTE 1 WR\ PC2, 1,0 PA0-PA7 I/O STBA\ ACKA\ OBFA\ RD\ PC3 INTRA\ PC5 INTE 2 IBFA 1 1 x x x D2 D1 D0 Cheá ñoä nhoùm B 0 = cheá ñoä 0 1 = cheá ñoä 1 Port B 1 = nhaäp 0 = xuaát PC0-2 1 = nhaäp 0 = xuaát - OBFA\ (PC6): boä ñeäm ngoõ ra ñaõ ñaày. - ACKA\ (PC7): tín hieäu baùo chaáp nhaän döõ lieäu. - IBFA (PC5): boä ñeäm ngoõ vaøo ñaày. - STBA\ (PC4): döõ lieäu ñang saün saøng ôû ngoõ vaøo. - INTRA (PC3): tín hieäu yeâu caàu ngaét, ñöôïc söû duïng cho xuaát/nhaäp. Khi nhoùm A ôû cheá ñoä 2 thì nhoùm B chæ coù theå ôû cheá ñoä 0 hoaëc 1. Tuy nhieân, neáu nhoùm B ôû cheá ñoä 0 thì chæ coù 3 bit PC0-PC2 ñöôïc söû duïng cho xuaát/nhaäp vì nhoùm A ñaõ möôïn bit PC3 ñeå söû duïng nhö moät yeâu caàu ngaét. Thoâng thöôøng, neáu nhoùm A ôû cheá ñoä 2 thì caùc bit PC0-PC2 seõ ñöôïc noái vôùi caùc chaân traïng thaùi vaø ñieàu khieån cuûa thieát bò noái vôùi port A. Port B cuõng coù theå ñöôïc duøng cho muïc ñích naøy. Vieäc ñaët/xoùa bit ñoái vôùi port C: ta coù khaû naêng laäp vaø xoùa töøng bit. Neáu bit 7 cuûa töø ñieàu khieån laø 0, 8255A seõ hieåu laø leänh laäp/xoùa bit port C coù nghóa, cho pheùp laäp/xoùa baát kyø bit naøo cuûa port C. Khaû naêng laäp/xoùa töøng bit rieâng leû laø raát thuaän tieän cho öùng duïng khi caùc bit rieâng reõ ñöôïc duøng ñeå ñieàu khieån taùch bieät caùc chöùc naêng beân ngoaøi. Töø ñieàu khieån ñaët/xoùa bit D7 x x x D3 D2 D1 D0 Ñaët/xoùa bit 1 = ñaët (set) 0 = xoùa (reset) Choïn bit 0 1 2 3 4 5 6 7 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 Côø ñaët/xoùa bit 0 = tích cöïc Vcc Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 E OE\ D0 D1 D2 D3 D4 D5 D6 D7 GND 74573 d. Vi maïch choát 74573: 74573 D0-D7 Q0-Q7 OC\ E Sô ñoà chaân vaø sô ñoà logic OUTPUT CONTROL ENABLE G D OUTPUT L H H H L H L L L L x Q0 H x x HI-Z Baûng traïng thaùi e. Vi maïch giaûi maõ 3 ñöôøng à 8 ñöôøng 74138: 74138 A B C Y0 ...Y7 G2A\ G2B G1 A B C G2A G2B G1 Y7 GND Vcc Y0 Y1 Y2 Y3 Y4 Y5 Y6 74138 Sô ñoà chaân vaø sô ñoà logic INPUTS OUTPUTS ENABLE SELECT G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 x H x x x H H H H H H H H L x x x x H H H H H H H H H L L L L L H H H H H H H H L L L H H L H H H H H H H L L H L H H L H H H H H H L L H H H H H L H H H H H L H L L H H H H L H H H H L H L H H H H H H L H H H L H H L H H H H H H L H H L H H H H H H H H H H L G2 = G2A + G2B Baûng traïng thaùi f. Vi maïch 7432: A B Y 1A 1B 1Y 2A 2B 2Y GND Vcc 4B 4A 4Y 3B 3A3Y 7432 Sô ñoà chaân vaø sô ñoà logic A B Y L L L L H H H L H H H H Baûng traïng thaùi 2. Keát noái: a. Boä nhôù: Vi xöû lyù 8085A coù khaû naêng truy xuaát tôùi 64KB boä nhôù. Tuy nhieân, trong thieát keá chæ söû duïng 16K boä nhôù: 8K cho ROM vaø 8K cho RAM, ñoàng thôøi cuõng daønh moät vò trí 8K cho ROM/RAM môû roäng. Caùc boä giao tieáp noäi boä (baøn phím, hieån thò) cuõng ñöôïc ñònh ñòa chæ nhö laø vuøng nhôù. Baûn ñoà boä nhôù ñöôïc chia thaønh 4 vuøng nhôù khaùc nhau. Söû duïng vi maïch 74LS138 coù theå choïn ñeå laøm vieäc vôùi töøng vuøng nhôù khaùc nhau tuøy thuoäc vaøo caùc ñòa chæ cung caáp cho caùc ngoõ vaøo cuûa boä giaûi maõ. Caùc ñöôøng ñòa chæ HEX A15 A14 A13 A12-A0 0 0 0 0 0000H 0 0 0 1 1FFFH 0 0 1 0 2000H 0 0 1 1 3FFFH 0 1 0 0 4000H 0 1 0 1 5FFFH 0 1 1 0 6000H 0 1 1 1 7FFFH 1 0 0 0 8000H 1 0 0 1 9FFFH 1 0 1 0 A000H 1 0 1 1 BFFFH 1 1 0 0 C000H 1 1 0 1 DFFFH 1 1 1 0 E000H 1 1 1 1 FFFFH Trong thieát keá söû duïng ñòa chæ töø 0000H -1FFFH cho ROM heä thoáng, ñòa chæ töø 4000H -5FFFH cho RAM, ñòa chæ töø 2000H - 3FFFH cho RAM/ROM môû roäng, ñòa chæ töø 8000H - 8003H cho giao tieáp baøn phím vaø hieån thò. CPU 74138 Tôùi CE\ cuûa EPROM Tôùi CE\ cuûa ROM/RAM môû roäng Tôùi CS\ cuûa RAM Tôùi CS\ cuûa 8255A giao tieáp noäi boä A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B A13 A14 A15 IO/M\ Vcc Sô ñoà keát noái boä nhôù b. Baøn phím: Baøn phím ñöôïc thieát keá laø loaïi baøn phím ma traän, söû duïng phaàn meàm ñeå queùt phím roài giaûi maõ phím. Ma traän phím bao goàm 8 coät vaø 5 haøng. Trong thieát keá söû duïng vi maïch 8255A ñeå giao tieáp baøn phím, trong ñoù PB0-PB7 laø caùc ngoõ ra döõ lieäu duøng ñeå queùt coät, PA0-PA4 laø caùc ngoõ vaøo döõ lieäu ñoïc haøng. 8255A hoaït ñoäng ôû cheá ñoä 0 vôùi port A laø port ñoïc, port B laø port xuaát. W O G 8 0 X P H 9 1 Y Q I A 2 Z R J B 3 ES S K C 4 PC T L D 5 - U M E 6 + V N F 7 Sô ñoà baøn phím PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA4 PA3 PA2 PA1 PA0 Vcc D7...D0 A0 A1 RD\ WR\ CS\ 8255A Sô ñoà keát noái baøn phím Nguyeân lyù hoaït ñoäng: Ñeå kieåm tra xem coù phím naøo ñöôïc nhaán hay khoâng, CPU seõ gôûi döõ lieäu 00H ra port B roài nhaän döõ lieäu töø port A, neáu khoâng coù phím naøo ñöôïc nhaán thì keát quaû laø 1FH, neáu coù baát kyø phím naøo ñöôïc nhaán thì moät trong 5 ñöôøng ñoïc vaøo cuûa port A seõ xuoáng möùc 0 vì theá döõ lieäu ñoïc vaøo seõ khaùc 1FH, luùc naøy chæ bieát ñöôïc vò trí haøng cuûa phím. Ñeå xaùc ñònh vò trí coät cuûa phím thì CPU phaûi laàn löôït xuaát döõ lieäu ra töøng coät. Döõ lieäu xuaát ra port B ôû laàn queùt ñaàu tieân laø 0EFH, coù nghóa laø chæ coät ñaàu tieân ñöôïc xuoáng möùc 0 trong khi caùc coät khaùc ôû möùc 1. Luùc naøy CPU seõ ñoïc döõ lieäu vaøo töø port A ñeå so saùnh vôùi 1FH. Neáu döõ lieäu ñoïc vaøo baèng vôùi 1FH thì coù nghóa laø phím ñöôïc aán khoâng naèm ôû coät thöù nhaát, CPU tieáp tuïc xuaát döõ lieäu ra port B ñeå queùt coät thöù hai, giaù trò cuûa döõ lieäu luùc naøy laø 0DFH öùng vôùi tröôøng hôïp coät thöù hai ñöôïc xuoáng möùc 0 trong khi caùc coät khaùc ôû möùc 1. CPU ñoïc döõ lieäu töø port A ñeå kieåm tra xem phím coù naèm treân coät naøy khoâng, neáu vaãn chöa phaùt hieän ñöôïc thì CPU tieáp tuïc queùt coät keá tieáp cho tôùi khi phaùt hieän phím ñöôïc nhaán. Khi phaùt hieän ñöôïc moät coät naøo ñoù chöùa phím ñöôïc nhaán thì vò trí naøy chính laø maõ coät cuûa phím. Keát hôïp giöõa maõ haøng vaø maõ coät, CPU seõ xaùc ñònh ñöôïc chính xaùc vò trí cuûa phím nhaán. c. Hieån thò: Boä hieån thò duøng taùm LED 7 ñoaïn, moãi LED duøng ñeå hieån thò moät chöõ soá HEX, chöõ soá ñöôïc taïo thaønh bôûi caùc ñoaïn ñoäc laäp ñöôïc kyù hieäu laø a, b, c, d, e, f, vaø g. Trong thieát keá söû duïng caùc LED Cathod chung neân ñeå hieån thò ñöôïc thì chaân Cathode chung phaûi ñöôïc noái xuoáng möùc thaáp, trong khi caùc ñoaïn phaûi ñöôïc cung caáp döõ lieäu phuø hôïp ôû möùc cao. 8255A söû duïng port B laøm port xuaát döõ lieäu queùt ñeå choïn ñeøn ñöôïc hieån thò, port C laø port xuaát döõ lieäu hieån thò. LED 7 8255A PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 a b c d e f g dp K a b c d e f g dp K LED 0 . . . . . . T8 T1 PB7 . . . PB0 Sô ñoà keát noái boä hieån thò Nguyeân lyù hoaït ñoäng: Boä hieån thò theo phöông phaùp queùt cho pheùp caùc LED trong boä hieån thò söû duïng chung port xuaát döõ lieäu. Döõ lieäu chöùa trong caùc oâ nhôù ôû daïng nhò phaân, do ñoù tröôùc khi ñöa vaøo caùc LED chuùng phaûi ñöôïc chuyeån sang maõ 7 ñoaïn, vieäc naøy ñöôïc thöïc hieän bôûi chöông trình ñoåi maõ ñeøn. 0 1 2 3 4 5 6 7 8 9 A B C D E F 3F 06 5B 4F 66 6D 7D 07 7F 67 77 7C 39 5E 79 71 Maõ 7 ñoaïn cuûa caùc soá HEX Vieäc queùt ñeøn ñöôïc thöïc hieän nhö sau: CPU xuaát döõ lieäu cuûa ñeøn thöù nhaát ra port C, keá ñoù CPU xuaát döõ lieäu queùt ra port B ñeå choïn ñeøn thöù nhaát, luùc ñoù caùc ñeøn khaùc ñeàu taét do khoâng ñöôïc choïn. Sau moät khoaûng thôøi gian trì hoaõn ñeå hieån thò, döõ lieäu 00H ñöôïc ñöa ra port C ñeå taét ñeøn. Döõ lieäu cuûa ñeøn thöù hai tieáp tuïc ñöôïc ñöa ra port C vaø döõ lieäu choïn ñeøn thöù hai ñöôïc ñöa ra port B ñeå cho pheùp ñeøn thöù hai hieån thò ... Sau khi queùt ñeán ñeøn cuoái cuøng thì quaù trình laïi ñöôïc laëp lai töø ñeøn thöù nhaát. Toác ñoä queùt phaûi ñuû lôùn ñeå taát caùc caùc soá xuaát hieän treân caùc ñeøn ñöôïc caûm nhaän ñoàng thôøi. d. Giao tieáp ngoaïi vi: CPU giao tieáp vôùi theá giôùi beân ngoaøi qua caùc thieát bò giao tieáp ngoaïi vi. Trong thieát keá söû duïng 2 vi maïch 8255A neân coù ñöôïc 6 port giao tieáp. Caùc 8255A naøy hoaït ñoäng theo cheá ñoä I/O. Vi xöû lyù 8085A coù theå ñònh soá ñòa chæ I/O toái ña laø 256 port, caùc ñòa chæ ñöôïc choïn cho caùc 8255A laø: Ñòa chæ (Hexa) Port 10H Port A cuûa 8255A-I 11H Port B cuûa 8255A-I 12H Port C cuûa 8255A-I 13H Port ñieàu khieån cuûa 8255A-I 20H Port A cuûa 8255A-II 21H Port B cuûa 8255A-II 22H Port C cuûa 8255A-II 23H Port ñieàu khieån cuûa 8255A-II Söû duïng vi maïch 74LS138 keát hôïp vôùi moät soá coång OR ñeå giaûi maõ ñòa chæ cho caùc vi maïch giao tieáp 8255A. Caùc ñöôøng ñòa chæ HEXA A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 1 0 0 x x 10H-13H 0 0 1 0 0 0 x x 20H-23H Ñòa chæ hoaït ñoäng cuûa caùc vi maïch 8255A. Duøng 74LS138 vôùi caùc ngoõ vaøo A, B vaø C laø caùc ñöôøng ñòa chæ A4, A5, vaø A6. Caùc ñöôøng ñòa chæ A0, A1 vaøo tröïc tieáp caùc 8255A. Nhö vaäy, neáu khoâng söû duïng caùc ñöôøng ñòa chæ A2, A3 vaø A7 thì caùc ñòa chæ 14H, 18H, 90H vaø ñòa chæ 10H ñöôïc xem laø nhö nhau, töông töï nhö vaäy cho caùc ñòa chæ khaùc. Ñeå ñònh ñòa chæ chính xaùc tuyeät ñoái thì phaûi söû duïng caùc coång OR vaø caùc ñöôøng ñòa chæ A2, A3 vaø A7. Tôùi CS\ 8255A-II Tôùi CS\ 8255A-I 74138 A4 A5 A6 IO/M\ A B C G1 G2A\ G2B\ A2 A3 A7 A2 + A3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 A2 + A3 + A7 Sô ñoà keát noái giaûi maõ ñòa chæ cho giao tieáp ngoaïi vi e. Jumper RAM/ROM: Chaân 27 laø Vpp ñoái vôùi EPROM vaø laø WR\ ñoái vôùi RAM, ta coù theå thay ñoåi chöùc naêng RAM/ROM baèng caùch ñaët moät jumper noái chaân naøy leân Vcc neáu laø EPROM vaø noái vôùi WR\ cuûa CPU neáu laø RAM. Chaân 1 laø NC neáu laø EPROM vaø laø chaân CS1 neáu laø RAM, vì theá chaân naøy luoân ñöôïc noái leân Vcc. 6264/ 2764 Vcc Vcc WR\ 1 27 RAM/ROM jumper Sô ñoà keát noái III. Phaàn meàm: 1. Chöông trình queùt phím: Chöông trình seõ queùt baøn phím ñeå kieåm tra xem coù phím naøo ñöôïc aán hay khoâng. Neáu phaùt hieän coù phím ñöôïc aán thì chöông trình seõ nhaän ra phím ñoù baèng caùch xaùc ñònh maõ haøng vaø maõ coät cuûa phím ñoù roài tra baûng ñeå laáy maõ cuûa phím. 2. Chöông trình queùt ñeøn: Döõ lieäu caàn hieån thò ñöôïc chöùa trong boä nhôù döôùi daïng nhò phaân. Ñeå hieån thò ñöôïc treân LED 7 ñoaïn thì caùc döõ lieäu naøy phaûi ñöôïc ñoåi sang maõ 7 ñoaïn, chöông trình seõ giuùp CPU thöïc hieän coâng vieäc naøy ñoàng thôøi cuõng coøn thöïc hieän chöùc naêng queùt ñeøn ñeå hieån thò döõ lieäu laàn löôït treân töøng ñeøn vì theá maïch hieån thò ñöôïc ñôn giaûn. 3. Chöông trình minh hoïa: ; CHUONG TRINH LAY MA PHIM AN GET: LDA (KEYIN) ANI 1Fh CPI 1Fh RZ ; khong co phim an MVI B, 00h LPROW: RRC JNC ROWFD ; co phim duoc an INR B ; hang ke tiep JMP LPROW ROWFD: PUSH B ; luu vi tri hang MVI B, 00h MVI A, 0FEh ; bat dau tu cot 0 LPCOL: MOV D, A STA (DRIVE) LDA (KEYIN) ANI 1Fh CPI 1Fh JNZ COLFD MOV A, D RLC RNC ; du 8 cot INR B JMP LPCOL COLFD: ; B = vi tri cot POP AF ; lay lai vi tri hang STC CMC ; cy = 0 RAL RAL RAL ; hang = hang * 8 ADD B ; ma phim = hang*8 +cot PUSH AF LPFD: CALL DLDIS1 ; tri hoan co hien thi MVI A, 00h STA (DRIVE) LDA (KEYIN) ANI 1Fh CPI 1Fh JNZ LPFD ; doi nha phim CALL DLDIS ; tri hoan co hien thi POP AF LXI H, KEYTBL ; lay bang tra ma phim CALL ADDAX MOV A, M ; tra ma phim STA (KEY) ; luu ma phim MVI A, 01h STA (KEYFLG) ; bao co phim duoc an RET ; BANG TRA MA PHIM KEYTBL: DEFB 00h ; 0 DEFB 01h ; 1 DEFB 02h ; 2 DEFB 03h ; 3 DEFB 04h ; 4 DEFB 05h ; 5 DEFB 06h ; 6 DEFB 07h ; 7 DEFB 08h ; 8 DEFB 09h ; 9 DEFB 0Ah ; A DEFB 0Bh ; B DEFB 0Ch ; C DEFB 0Dh ; D DEFB 0Eh ; E DEFB 0Fh ; F DEFB 10h ; G DEFB 11h ; H DEFB 12h ; I DEFB 13h ; J DEFB 14h ; K DEFB 15h ; L DEFB 16h ; M DEFB 17h ; N DEFB 18h ; O DEFB 19h ; P DEFB 1Ah ; Q DEFB 1Bh ; R DEFB 1Ch ; S DEFB 1Dh ; T DEFB 1Eh ; U DEFB 1Fh ; V DEFB 20h ; W DEFB 21h ; X DEFB 22h ; Y DEFB 23h ; Z ; phim chuc nang DEFB 80h ; ESC DEFB 81h ; PC DEFB 82h ; '-' DEFB 83h ; '+' ; CHUONG TRINH HIEN THI DU LIEU RA LED 7 DOAN PUT: MVI A, 0FEh ; tu den so 0 LHLD (DISPTR) ; con tro den vung dem hien thi MUX: PUSH AF MOV A, M STA (SEGDRV) POP AF STA (DRIVE) PUSH AF PUSH H CALL DLPUT ; tri hoan de nhin thay MVI A, 00h STA (SEGDRV) STA (DRIVE) LDA (KEYIN) ANI 1Fh CPI 1Fh JZ LP002 ; khong co phim an CALL GET ; doc ma phim LP002: LXI H, LP1 PUSH H LHLD (MNPTR) ; thi hanh chuong trinh co dia chi PCHL ; duoc MNPTR chi den LP1: POP H POP AF RLC JNC PUT ; het 8 den, bat dau lai tu den 0 INX H JMP MUX ; den ke tiep ; GIAI MA SO HEX RA LED 7 DOAN DISCOD: PUSH B PUSH D PUSH H MVI B, 04h LXI H, HEXBUF ; vung dem hien thi LP01: MOV A, M ANI 0F0h RRC RRC RRC RRC MOV D, A MOV A, M ANI 0Fh MOV E, A PUSH D INX H DCR B JNZ LP01 LXI H, DISBUF + 7 MVI B, 04h LP02: POP D MOV E, D CALL SUBDIS DCX H CALL SUBDIS DCX H DCR B JNZ LP02 POP H POP D POP B RET ; Tra ma LED SUBDIS: MOV A, E PUSH H LXI H, DISTBL ; lay bang tra ma LED CALL ADDAX MOV A, M POP H MOV M, A RET ; BANG TRA MA LED 7 DOAN DISTBL: DEFB 3Fh ; 0 DEFB 06h ; 1 DEFB 5Bh ; 2 DEFB 4Fh ; 3 DEFB 66h ; 4 DEFB 6Dh ; 5 DEFB 7Dh ; 6 DEFB 07h ; 7 DEFB 7Fh ; 8 DEFB 6Fh ; 9 DEFB 77h ; A DEFB 7Ch ; B DEFB 39h ; C DEFB 5Eh ; D DEFB 79h ; E DEFB 71h ; F ; CHUONG TRINH CONG A VAO HL ADDAX: PUSH B MVI B, 00h MOV C, A DAD B POP B RET ; CHUONG TRINH DOC PHIM RDKEY: MVI A, 00h STA (KEYFLG) LDA (KEY) RET ; CAC CHUONG TRINH DELAY DLKP: PUSH H LXI H, 6000h JMP LPDL DLPUT: PUSH H LXI H, 0080h JMP LPDL DLAYHL: PUSH H LPDL: DCX H MOV A, H CPI 00h JNZ LPDL MOV A, L CPI 00h JNZ LPDL POP H RET ; CHUONG TRINH DELAY VAN HIEN THI DLDIS: PUSH AF PUSH B MVI B, 08h LAB1: CALL DLDIS1 DCR B JNZ LAB1 POP B POP AF RET DLDIS1: MVI A, 0FEh STA (DRIVE) LDA (DISBUF) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0FDh STA (DRIVE) LDA (DISBUF + 1) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0FBh STA (DRIVE) LDA (DISBUF + 2) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0F7h STA (DRIVE) LDA (DISBUF + 3) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0EFh STA (DRIVE) LDA (DISBUF + 4) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0DFh STA (DRIVE) LDA (DISBUF + 5) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 0BFh STA (DRIVE) LDA (DISBUF + 6) STA (SEGDRV) CALL DLPUT MVI A, 00h STA (SEGDRV) MVI A, 7Fh STA (DRIVE) LDA (DISBUF + 7) STA (SEGDRV) CALL DLPUT RET ; CAC NHAN SU DUNG MNPTR EQU 5F20h DISPTR EQU 5F30h ; con tro den vung dem hien thi DISBUF EQU 5F40h ; vung dem hien thi HEXBUF EQU 5F48h ; vung dem so HEXA KEY EQU 5F70h ; chua ma phim KEYFLG EQU 5F80h ; =1 neu co phim nhan KEYIN EQU 8000h DRIVE EQU 8001h SEGDRV EQU 8002h SYSIO EQU 8003h

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

  • docDAVM.DOC
  • docBIA.DOC
  • docBIADOAN.DOC
  • docMUCLUC.DOC
  • docSDKK8085.DOC
Tài liệu liên quan