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
41 trang |
Chia sẻ: banmai | Lượt xem: 1793 | Lượt tải: 1
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