Tải bản đầy đủ (.doc) (90 trang)

GIAO TIẾP MÁY TÍNH VỚI VI XỬ LÝ 8085

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (408.11 KB, 90 trang )

LUÂÄN VĂN TỐT NGHIỆP
Chương I:
CHƯƠNG DẪN NHẬP
1
LUÂÄN VĂN TỐT NGHIỆP
I. ĐẶT VẤN ĐỀ:
Khi nhu cầu học tập ngày càng cao thì thiết bị, phương tiện dạy học càng đóng vai
trò quan trọng, nó giúp người thầy dỡ vất vả trong việc truyền thụ kiến thức, giúp người
học nhanh chóng tiếp thu, ngồi ra còn để minh họa, chứng thực môt cách cụ thể những
bài học mơ hồ trừu tượng.
Trong bài này, người thực hiện muốn đề cập đến môn học vi xử lý, lập trình vi xử
lý, một môn học mang ý nghĩa thiết thực trong xã hội mà quá trình công nghiệp hóa, hiện
đại hóa diễn ra từng ngày. Khi học môn này, người học không chỉ được học về cấu trúc vi
xử lý cả phần cứng lẫn phần mềm, cách kết nối với các IC ngoại vi 8255, 8279, … mà
còn phải sử dụng thành thạo Kit vi xử lý 8085,…
Khi viết một chương trình trên Kit vxl 8085 và để kiểm nghiệm chương trình đó thì
ngưòi học phải qua các bước :
Bước 1: Xác định mục đích yêu cầu của chương trình.
Mục đích, yêu cầu được xác định từ đề bài, hoặc một nhu cầu thực tế, đây là
mục đích chung của chương trình. Để thực hiện mục đích chung này, có thể sẽ
phải qua nhiều bước, mà mỗi bước là một mục đích cụ thể mới, được giải quyết
bằng một chương trình nhỏ hơn, phát sinh trong giai đoạn viết lưu đồ.
Bước 2: Vẽ lưu đồ
Lưu đồ dùng để trình bày cách giải quyết vấn đề, thường thì ngôn ngữ dùng
trong lưu đồ không phải là một ngôn ngữ máy xác định nào, lưu đồ thực chất để
giúp người thảo chương chia nhỏ một chương trình lớn. Từ lưu đồ tổng quát, có
thể vẽ ra lưu đồ chi tiết.
Bước 3: Viết chương trình bằng ngôn ngữ gợi nhớ(ngôn ngữ Assembler).
Bước 4: Chuyển sang mã máy.
Bước 5: Nhập mã máy vào Kit bằng phím.
Bước 6: Chạy thử chương trình và kiểm tra kết quả.


Một chương trình được viết phải được chạy thử và kiểm tra kết quả, kết quả phải
đúng trong mọi trường hợp cho phép (điều kiện đặt ra trước) của chương trình, và từ kết
quả kiểm tra mà phán đốn, nhận định lỗi để sửa chương trình từ đâu, có khi phải sửa lại
cả lưu đồ.
Trong cách làm trên, ta nhận thấy có những khó khăn riêng sau:
− Quá trình dịch từ ngôn ngữ gợi nhớ sang mã máy (bước 4), đòi hỏi sự
quen thuộc bảng tra mã, nếu không việc này chiềm nhiếu thời gian, và việc kiểm tra
lại cũng chiếm không ít thời gian. Tại những lệnh jump, những lệnh call, cần phải xác
định địa chỉ cụ thể, chính xác của ô nhớ rồi mới xác định được lệnh jump. Việc này
chỉ hồn tất khi chương trình được dịch sang mã máy gần như đầy đủ.
− Ở giai đoạn nhập mã máy (bước 5), để nhập nhanh thì phải nhớ vị trí
phím, phải nhập chính xác để tránh thời gian dò để sửa một chương trình nhập sai. Để
nhập một byte cần gõ 3 phím và phải đối chiếuqua lại giữa bản dịch chương trình, nội
dung hiển thị trên các led 7 đoạn cùng với địa chỉ ô nhớ và bàn phím.
− Đối với những ai trong giai đoạn khởi đầu học lập trình vi xử lý, thì 2 việc
trên luôn xẩy ra nhầm lẫn gây mất nhiều thời gian vô ích.
−Khi cần thêm hoặc xóa, hoặc sửa chương trình thì mất nhiều thời gian để dò lại
chương trình, nhập lại khó khăn, thậm chí phải nhập lại phần lớn chương tình.
−Sau khi bị mất điện thì dữ liệu lưu trong RAM không có nguồn dự trữ sẽ bị mất
hết, phải nhập lại tồn bộ chương trình. Đối với những chương trình nhỏ thì thời gian nhập
không đáng kể, nhưng đối với những chương trình lớn thì đây là công việc mất nhiều thời
gian, và gây phiền hà cho người học cũng như người lập trình vi xử lý.
Bên cạnh đó, thực tế đã có những thiết bị nạp EPROM rất tiện lợi, mà có thể đem ý
tưởng đó vào việc học lập trình vi xử lý nhất là việc giao tiếp với thiết bị khác từ vi xử lý
là một điều khá dễ dang.
2
LUÂÄN VĂN TỐT NGHIỆP
Ngồi ra, chương trình đại học rất bao quát, thời gian và điều kiện chỉ cho phép sinh
viên đi hết bề nổi của chương trình mà chưa có hoặc ít có dịp tìm hiểu về chiều sâu. Do
đó, đồ án tốt nghiệp là một cơ hội tốt cho sinh viên đào sâu vào chương trình học, ứng

dụng bài học vào thực tế, chứng minh được sự hữu ích của những kiến thức đã học được
trong môi trường sư phạm.
Từ những lý do trên, người viết quyết định chọn đề tài “GIAO TIẾP MÁY TÍNH
VỚI VI XỬ LÝ 8085”.
Đề tài đưa ra một chương trình như một công cụ hỗ trợ việc học lập trình vi xử lý
trên Kit8085 với một thứ tự sau:
1) Xác định mục đích yêu cầu của chương trình cần viết.
2) Vẽ lưu đồ.
3) Viết chương trình bằng ngôn ngữ Assembly (ngôn ngữ gợi nhớ).
4) Nhập chương trình bằng ngôn ngữ Assembly vào máy (dùng Norton).
5) Gọi chương trình dịch Assembler để dịch từ ngôn ngữ Assembly sang một
file có phần mở rộng “prn” chứa mã máy.
6) Trong chương trình Giao tiếp, gọi file dịch để nạp vào RAM.
7) Chạy thử và kiểm tra kết quả.
Cách làm này có những ưu điểm sau:
− Dịch từ ngôn ngữ Assembly (ngôn ngữ gợi nhớ) tốn rất ít thời gian vì việc này do
máy tính đảm trách, với độ chính xác tuyệt đối.
− Cũng vậy, việc nạp dữ liệu vào RAM cũng chỉ trong vài giây, và được kiểm tra trong
khi nạp nên độ chính xác cũng tuyệt đối.
− Ngồi ra, chương trình được lưu trữ, quản lý dể dàng, dể xem lại, dể kiểm tra. Khi cần
thêm, hoặc xóa hoặc sửa hoặc chép lại một đoạn chương trình, ngay cả thay đổi địa
chỉ bắt đầu, cũng rất đơn giản.
− Về độ chính xác và thời gian cần thiết thì đối với chương trình các lớn càng có lợi,
càng phải nạp chương trình nhiếu thì càng có lợi.
II. TẦM QUAN TRỌNG CỦA VẤN ĐỀ.
Trong xã hội ngày càng phát triển, lượng kiến thức cần truyền tải trong nhà trường
ngày càng tăng, mà thời gian cho phép ngày càng bị giảm đi, thì sự nổ lực của cả người
dạy lẫn người học đều rất cần thiết. Bên cạnh đó, phương tiện ít nhiều sẽ góp phần quan
trọng trong quá trình học tập.
Trước đây, việc học lập trình vi xử lý đã diễn ra một cách tự nhiên, có thể coi như

đã đầy đủ về phương tiện học tập. Nhưng nay, nếu có thêm một chương trình mô phỏng
các họ vi điều khiển, hay vi xử lý, giao tiếp máy tính với vi xử lý để truyền file… thì tất
nhiên sẽ có mặt tích cực, mang thêm nhiều lợi ích cho việc học.
“Giao tiếp máy tính với vi xử lý” còn là một chứng thực về giao tiếp _ những gì đã
được học _ trên chính kit thực tập, điều đó sẽ kích hoạt sự tìm tòi, sự ham thích hiểu biết
của sinh viên.
III. GIỚI HẠN VẤN ĐỀ
Đây là một chuyên đề thú vị, có nhiều vần đề đáng quan tâm, nhưng do những giới
hạn về thời gian và kiến thức, nên trong đồ án này, người viết chỉ có thể trình bày những
phần sau:
− Khái quát Kit 8085 sử dụng, các linh kiện có liên quan trực tiếp đến giao
tiếp.
− Cách thức sử dụng kit, những hoạt động bên trong kit về lệnh, dữ liệu …
mà sau đó sẽ được thay thế bằng cách nạp từ máy tính.
− Giao tiếp máy tính.
− Một số điểm cần lưu ý khi viết một chương trình bằng ngôn ngữ gợi nhớ
cho chương trình dịch Assembler để tạo ra một file có phần mở rộng .prn.
− Cấu trúc một file .prn, những số liệu nào cần xuất.
3
LUÂÄN VĂN TỐT NGHIỆP
− Đôi nét về ngôn ngữ C, chương trình Download
− Chương trình nhận dữ liệu.
IV. MỤC ĐÍCH NGHIÊN CỨU
Trước mắt: đây là một vấn đề hay, đã thu hút người viết từ lâu mà nay mới có dịp
thực hiện, và cũng là nhu cầu cần thiết trong thực tế.
Lâu dài: tuy chỉ là một thiết kế đơn giản, nhưng là một cơ sở ban đầu có thể phát
triển thêm ra hướng tổng quát.
V. XÁC ĐỊNH THUẬT NGỮ
Tựa đề tài là “Giao tiếp máy tính với kit vi xử lý 8085”. Thực chất, vấn đề giao tiếp
chỉ là một cơ sở, phương tiện chủ yếu. Còn sản phẩm của đề tài là một giao diện trên màn

hình vi tính mà trong đó, người dùng cho thể chọn fie cần truyền, và truyền xuống kit qua
một port nào đó để nạp dữ liệu vào RAM.
Đề tài này chỉ thực hiện việc nạp dữ liệu vào RAM mà sau đó sẽ có những phát
triển khác. Thực tế đề ra là việc thực hành lập trình vi xử lý trên kit, chương trình chỉ là
để thực tập, chủ yếu chỉ nạp vào RAM, mà việc nạp dữ liệu vào Kit mất nhiều thời gian,
và mục đích của đề tài trước tiên là để giải quyết vấn đề đó, sau đó có thể phát triển lên
để đọc các vùng RAM, EPROM.
Chương II:
CƠ SỞ LÝ LUẬN
4
LUÂÄN VĂN TỐT NGHIỆP
Từ vấn đề đặt ra như ở chương 1 đã trình bày, người thực hiện đề tài đã tiến hành
giải quyết theo hướng sau:
− Xác định thiết bị giao tiếp: Kit vi xử lý 8085 đã có sẵn các IC ngoại vi 8255 làm
nhiệm vụ giao tiếp, chỉ cần chọn IC, xác định địa chỉ của IC đó, địa chỉ của các port
vào ra, mode hoạt động của các port, xác định các điểm nối kết phần cứng với máy
tính và viết chương trình nhận, phát dữ liệu.
− Xác định cổng giao tiếp: đối với máy tính: chọn cổng LPT1 (mà sau này có thể phát
triển để có thể sử dụng cả LPT2, COM1, COM2) với phướng pháp giao tiếp song
song bất đồng bộ.
− Xây dựng giao diện trên màn hình máy tính:Yêu cầu cần có …… và phù hợp với
người sử dụng. Sau đó tiến hành viết giải thuật, và bắt tay vào viết chương trình. Ở
đây, người thực hiện đã viết chương trình truyền dữ liệu trong môi trường Borland C
3.1. Trong quá trình viết, phải giải quyết những khó khăn phát sinh một cách cụ thể.
− Viết chương trình truyền, nhận dữ liệu với Kit.
− Ghép nối các phần lại.
− Thử nghiệm.
− Sửa lỗi.
− Phương pháp chủ yếu là tham khảo tài liệu và thực nghiệm
5

LUÂÄN VĂN TỐT NGHIỆP
Chương III:
KIT THỰC TẬP
VI XỬ LÝ 8085
6
LUÂÄN VĂN TỐT NGHIỆP
I.KIT THỰC TẬP VI XỬ LÝ 8085:
Kit thực tập vi xử lý 8085 là một loại máy tính chủ yếu phục vụ cho mục đích học
tập và nghiên cứu thiết kế về lĩnh vực vi xử lý. Kit này, xuất phát tại trường ĐH Sư phạm
kỹ thuật – Trung tâm Việt-Đức, và do nhu cầu học tập và nhu cầu thực tế, các giáo viên
trong bộ môn Điện-Điện tử của trường đã cải tiến cho phù hợp. Mặt khác, sinh viên thuộc
khoa, trong các đề tài tốt nghiệp, đồ án môn học, cùng với sự hứng thú, đã tham khảo, tìm
hiểu về cấu tạo và nguyên lý hoạt động, và mở rộng thêm một số chức năng cho kit.
Một Kit thực tập vi xử lý thường có các phần chính được trình bày trong sơ đồ khối
ở (Hình 1).
Với mục đích của đề tài này là giao tiếp song song nên trong Kit 8085, chỉ cần quan
tâm đến 8085 và bộ lệnh 8085, 8255, 8279.
I.1. SƠ LƯỢC VI XỬ LÝ 8085:
Vi xử lý (microprocessor) là một thiết bị bán dẫn chứa các mạch logic điện tử có
khả năng xử lý các dữ liệu, chương trình từ ngồi đưa vào để điều khiển các IC, thiết bị
kết nối theo mục đích định trước.
I.1.1. Cấu trúc phần cứng:
I.1.1.1. Cấu trúc bên ngồi:
8085 là một bộ vi xử lý 8 bit do Intel sản xuất, đầu tiên vào năm 1977. Nó có khả
năng định địa chỉ cho bộ nhớ tới 64 Kbyte, IC này có 40 chân, dạng DIP, sử dụng nguồn
đơn + 5V.
Chức năng, dạng tín hiệu, trạng thái các chân của 8085 được cho ở bảng sau:
Bảng 1:
Chân Ký hiệu In/out 3 state Ý nghĩa
1,2 X1, X2 I X1, X2 là 2 ngõvào của mạch dao động.

Tần số ngõ vào được chia cho 2 bởi
mạch chia bên trong. Tần số làm việc
cực đạicủa:
8085A: 6MHz
8085A-2: 10MHz
8085A-1:12MHz
3 Reset Out O Cho biết CPU đang reset. Tín hiệu này
có thể dùng để reset các thành phần khác
trong mạch.
4 SOD O Serial Output: ngõ ra dữ liệu nối tiếp
được xác định bởi lệnh SIM.
7
LUÂÄN VĂN TỐT NGHIỆP
5 SID I Serial Input: ngõ vào dữ liệu nối tiếp, dữ
liệu này được nạpàobit thứ 7 của thanh
ghi Accumulator khi thực hiện lệnh RIM.
6 TRAP I Trap: tín hiệu không ngăn được. Ngõ vào
trap được kích bởi cạnh lên.
7,8,9 RST 7.5, 6.5, 5.5 I Restart Intrerupt Repuest: là các tín hiệu
ngắt có thể ngăn được. RST 7.5 có thể
được kích bằng cạnh, RST 6.5 và 5.5 có
thể được kích bằng mức.
10 INTR I Interrupt: là tín hiệu ngắt thôngdụng có
thể che được lệnh kích bằng mức.
11 INTA\ O Interrupt Acknowledge: tín hiwệu dùng
để báo cho thiết bị yêu cầu ngắt INTR
biết rằng microprocessor đã chấp nhận
yêu cầu ngắt và thiết bị yêu cầu ngắt hãy
đặt lệnh lên bus dữ liệu.
19-12 AD7-AD0 I/O-3 Address/Data bus: các đường dữ liệu và

các đường địa chỉ được tích hợp chung
với nhau. Ơû trạng thái T1 của chu kỳ
máy, cá ngõ này đóng vai trò là các ngõ
ra địa chỉ. Các trạng thái còn lại của chu
kỳ máy, nó đóng vai trò là các đường dữ
liệu.
20 Vss Ground.
28-22 A15-A8 O-3 Address bus:các ngõ này được dùng để
xuất 8 bit địa chỉ cao.
30 ALE O Address Latch Ennable: ngõ này tạ ra
một xungở trạng thái T1 của chu kỳ máy
để xác định A15-A8 và AD7-AD0 là các
đường địa chỉ.
31 WR\ O-3 Write: dùng để xác định icroprocessor
đang thực hiện lệnh ghi dữ liệu lên bộ
nhớ hay IO.
32 RD\ O-3 Read: dùng để xác định microprocessor
đang thực hiện lệnh đọc dữ liệu từ bộ
nhớ hay IO.
29,33,34 S0,S1, IO/M\ O,O-3 Machine Cycle Status: 3 bit này cho biết
trạng thái chu kỳ máy.
IO/M\ S1 S0 Trạng thái
0 0 1 Memory Write
8
LUÂÄN VĂN TỐT NGHIỆP
0 1 0 Memory Read
0 1 1 Op-code fetch.
1 0 1 IO write.
1 1 0 IO read.
1 1 1 Interrupt Ackowledge.

Ơû trạng thái dừng (halt), S1=S2=0 và
IO/M\ ở trạng thái tổng trở cao. Trong
khoảng thời gian Hold và reset thì trạng
thái của S0 và S1 không xác định,IO/M\
ở trạng thái tổng trở cao. Thường thì các
bit WR\, RD\ và IO/M\ dùng để xác định
trạng thái làm việc của bus như: memory
read, memory write, IO read, IO write.
35 READY I Ready là tín hiệu trả lời từ bộ nhớ hoặc
thiết bị ngoại vi IO cho microprocesser
biết để microprocessor có thể hồn thành
chu kỳ máy đang thực hiện.
36 RESET IN I Reset: ngõ vào reset 8085 để trở về trạng
thái ban đầu của nó. Tín hiệu này phải ở
mức 0 khoảng 3 chu kỳ xung clock.
37 CLK O Clock out: ngõ ra tín hiệu clock để cung
cấp cho các thiết bị khác. Tần số của nó
bằngtần số ngõ vào chia 2.
38 HLDA O Hold Ackowledge: tín hiệu ngõ ra cho
biết tín hiệu hold đã được chấp nhận và
CPU sẽ ở trạng thái Hold ở chu kỳ xung
clock tiếp theo.
39 HOLD I Hold request: nhận tín hiệu yêu cầu
ngưng từ bộ điều khiển DMA.
40 Vcc Power: nguồn cung cấp +5V.
Các chân của IC đượïc bố trí như hình vẽ sau (hình 2):
9
8085
C LK(OUT)
RESET(OUT)

A11
S0
AD6
22
INTA
Vss
AD2
3 HLDA
32
35
38
15
5
S1
AD5
21
24
18
7
RST5.5
IO/M
X2
RST7.5
AD1
13
10
9
8
SOD
INTR

WR
17
2 HOLD
28
30
39
11
4
AD4
29
31
37
40
6
1
READY
X1
AD0
19
A10
A12
A15
RD
SID
16
Vcc
36
14
RST6.5
20

23
26
A9
A14
ALE
AD7
25
A8
A13
TRAP
27
33
12
AD3
34
RESET IN
8085 Pinout




Hình 2: Sơ đồ chân và các tín hiệu của 8085
LUÂÄN VĂN TỐT NGHIỆP
Tồn bộ các tín hiệu của 8085 có thể đuợc phân thành 6 nhóm:
(1) Tuyến địa chỉ
(2) Tuyến dữ liệu
(3) Các tín hiệu trạng thái và điều khiển
(4) Nguồn cung cấp và các tín hiệu tần số
(5) Các ngắt và các tín hiệu tần số
(6) Các cổng I/O nối tiếp

10
Control
and
Status Signals
+5V
AD7
AD0
A15
A8
SID
SOD
TRAP
X1 X2
Vcc
Vss
INTR
READY
HOLD
8085
GND
RST 7.5
RST 6.5
RST 5.5
RESET IN
RESET
OUT
CLK
OUT
28
21

19
12
30
29
33
34
32
31
11
18
35
39
36
2121
1 2
5
4
6
7
8
9
10
40 20
ALE
S0
S1
IO/M
RD
WR
INTA

HLDA
High Outer
Address Bus
Multiplexed
Address/Data Bus
Serial
I/O
Ports
Interrupts
and
Externally
Initiated
Signals
LUÂÄN VĂN TỐT NGHIỆP
Hình 3: các nhóm hoạt động của 8085
I.1.1.2. Cấu trúc bên trong 8085:
8085ù bao gồm đơn vị logic và số học ALU (Arithmetic and Logic Unit), đơn
vị định thời và điều khiển (Timing and Control Unit) , bộ giải mã và thanh ghi lệnh
(Instruction Register and Decoder), dãy thanh ghi ( Register Array), điều khiển ngắt
(Interrupt Control) và điều khiển I/O nối tiếp (Serial I/O Control) (xem hình 4).
Hình 4: Sơ đồ khối chức năng của 8085
I.1.2.Cấu trúc phần mềm:
Tập lệnh của 8085
Một lệnh (Instruction) là một mẫu nhị phân (binary pattern) được thiết kế bên trong
vi xử lý để thực hiện một chức năng cụ thể (Instruction set), xác định các chức năng mà
vi xử lý có thể thực hiện. Tập lệnh của 8085 có 74 lệnh (hơn 8080 hai lệnh), các lệnh này
có thể được phân thành 5 nhóm chức năng :
− Các hoạt động (sao chép) truyền dữ liệu
11
Accumulater

Address Buffer
(8)
AD15 - AD8
Address Bus
Array
Register
Data Address Buffer
(8)
AD7 - AD0
Address Data Bus
X1
X2
Power Supply
+5V
GND
Timing and Control
Interrupt Control
8 Bit Internal Data Bus
(8) (8) (8)
Temp. Reg.
Instruction
Register
Instruction
Decoder
and
Machine
Cycle
Encoding
Flag
Flip Flops

Arithmatic
Logic
Unit
(8)
(ALU)
CLK
GEN
CLK OUT
READY
RD
WR
Control
Status DMA
Reset
ALE S0 S1
IO/M
HOLD
HLDA
RESET IN
RESET OUT
INTR RST 5.5 RST 7.5
RST 6.5
TRAP
INTA
Stack Pointer
Program Counter
Incrementer / Decrementer
Address Lactch
Multiplexer
(8)

(8)
(8)
(8)
(8)
(8)
(8)
(8)
(16)
(16)
(16)
Reg.
Reg.
Reg. Reg.
Reg.
Reg.
Re
g.
Sel
ect
W Z
B C
D E
H L
Temp. Reg.
Temp. Reg.
Serial I/O Control
SID
SOD
LUÂÄN VĂN TỐT NGHIỆP
− Các hoạt động tốn học

− Các hoạt động logic
− Các hoạt động rẽ nhánh
− Và, các hoạt động điều khiển
Tập lệnh vi xử lý 8085 được phân thành 3 nhóm tuỳ theo kích cỡ từ :
Các lệnh một từ hoặc 1 byte
Các lệnh hai từ hoặc 2 byte
Các lệnh ba từ hoặc 3 byte
Lệnh một byte chứa mã hoạt động (Opcode) và tốn tử (Operand) trong cùng một
byte.
Trong lệnh hai byte, byte thứ nhất nêu lên mã hoạt động và theo sau là tốn tử.
Đối với lệnh ba byte, byte đầu tiên cho biết mã hoạt động, 2 byte theo sau là dữ liệu
(nội dung hoặc địa chỉ) 16 bit.
I.2. IC NGOẠI VI 8255:
I.2.1. Cấu trúc:
I.2.1.1. Phần cứng:
8255 là một thiết bị I/O giao tiếp song song, nó có thể được lập trình để truyền dữ
liệu dưới các điều kiện khác nhau, từ I/O đơn giản đến I/O có ngắt. Nó khá linh hoạt, đa
năng và tinh tế (khi có nhiều cổng I/O được đòi hỏi), nhưng cũng phức tạp. Nó là một
thiết bị I/O phổ dụng có thể được sử dụng với hầu hết bất kỳ bộ vi xử lý nào.
8255 có 40 chân dạng DIP như hình 5.
Hình 5 : sơ đồ chân và Sơ đồ khối của 8255
12
1
2
3
4
5
6
7
8

9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23

22
21
A1
A0
PB7
PB6
PB5
PB4
PB3
D0
D1
D2
D3
D4
D5
D6
D7
PC 7
PC 6
PC 5
PC 4
PC 0
PC 1
PC 2
PC 3
PB0
PB1
PB2
PA4
PA5

PA6
PA7
PA3
PA2
PA1
PA0
WR
CS
RESET
GND
Vcc
8 255
Group
A
Po rt C
Upper
(4)
Group
A
Port C
Lowe r
(4)
Group
B
Po rt
B
(8)
Group
A
Po rt

A
(8)
Group
A
C ontro l
Group
A
C ontro l
Data
Bus
Buffer
Read
Write
C ontrol
Logic
I/O
PA7-PA0
I/O
PA7-PA0
I/O
PA7-PA0
I/O
PA7-PA0
Bidirectional
Data Bus
D7-D0
RD
WR
A1
A0

RESET
CS




RD
LUÂÄN VĂN TỐT NGHIỆP
Bảng 2: Bảng liệt kê chức năng các chân IC 8255
Tên các chân Chức năng
D7 – D0 Data bus (Bi – Direction)
RESET Rest Input
CS\ Chip Select
RD\ Read Input
WR\ Write Input
A0, A1 Port Address
PA7 – PA0 Port A
PB7 – PB0 Port B
PC7 – BC0 Port C
Sơ đồ khối trên hình 5. trình bày hai cổng 8 bit (A và B) và hai cổng 4 bit (C
U

C
L
) bộ điện tuyến dữ liệu, và logic điều khiển. Hình 5.9 (b) trình bày một sơ đồ đơn giản
hóa nhưng mở rộng của cấu trúc bên trong, chứa một thanh ghi điểu khiển. Sơ đồ khối
này chứa tất cả các phần tử của một thiết bị lập trình; cổng C thực hiện chức năng tương
tự chức năng của thanh ghi trạng thái, ngồi ra còn cung cấp các tín hiệu bắt tay.
I.2.1.2.Phần mềm:
Từ điều khiển

Hình 6 trình bày một thanh ghi được gọi là thanh ghi điều khiển (control register).
Nội dung của thanh ghi này, gọi là từ điều khiển (control word), nêu rõ một chức năng
I/O cho mỗi cổng. Thanh ghi có thể được xâm nhập để ghi từ điều khiển. Khi A
0
và A
1

mức logic 1, như đã đề cập ở trên. Thanh ghi này không thể bị xâm nhập đối với hoạt
động Đọc.
Bit D
7
của thanh ghi điều khiển nêu rõ hoặc chức năng I/O hoặc chức năng Đặt/Đặt
lại bit như phân loại trong Hình 5.8 (b). Nếu D
7
= 1các bit D
6
÷ D
5
quyết định các chức
năng I/O ở các mốt khác nhau. Nếu bit D
7
= 0, cổng C hoạt động ở mốt Đặt/Đặt lại bit
(BSR). Từ điều khiển BSR không ảnh hưởng đến các chức năng của các cổng A và B.
13
LUÂÄN VĂN TỐT NGHIỆP
Hình 6: Cấu trúc từ điều khiển của IC ngoại vi 8255.
Căn cứ vào từ điều khiển của 8255, có thể klhởi tạo 8255 ở các mode 0 hoặc mode
1 hoặc mode 2, và có thể xác định hướng vào ra dữ liệu cho mỗi port.
Để trao đổi thông tin với các ngoại vi (ở đây là các mô - đun vào ra) thông qua
8255, ba bước sau đây là cần thiết :

(1) Xác định được địa chỉ các cổng A, B và C và của thanh ghi điều khiển theo logic
chọn chip (CS) và các đường địa chỉ A
0
, A
1
.
(2) Ghi từ điều khiển vào thanh ghi điều khiển.
(3) Ghi các lệnh I/O để thông tin với các ngoại vi thông qua cổng A,B và C.
Hệ thống Kit đã được đặt cho 8255 làm việc với các ngõ vào / ra ở mốt 0 như sau :
1. Các ngõ ra được chốt
2. Các ngõ vào không được chốt
3. Các cổng không có khả năng bắt tay và ngắt.
Ví dụ:
Để A, C là cổng nhập (8 bít), B là cổng xuất(8bít), và chọn ngoại vi có địa chỉ từ 00
– 03 thì phải làm như sau:
Gởi từ điều khiển 99hex vào thanh ghi điều khiển.
Xuất từ điều khiển ra thanh ghi điều khiển có địa chỉ 03hex.
I.3. IC GIẢI MÃ HIỂN THỊ 8279:
I.3.1. Cấu trúc 8279
I.3.1.1. Phần cứng:
14
PORT C (LOWER)
1=INPUT
0=OUTPUT
D
7
D
6
D
5

D
4
D
3
D
2
D
1
D
0
PORT B
1=INPUT
0=OUTPUT
MODE SELECTION
0=MODE 0
1=MODE 1
PORT C (UPPER)
1=INPUT
0=OUTPUT
PORT A
1=INPUT
0=OUTPUT
MODE SELECTION
00=MODE 0
01=MODE 1
1X=MODE 2
GROUP B
GROUP A
MODE SET FLAG
1=ACTIVE

LUÂÄN VĂN TỐT NGHIỆP
8279 là một phương pháp phần cứng để giao tiếp với bàn phím ma trận và hiển thị
đa hợp. Bất lợi của phương pháp dùng phần mềm là vi xử lí bị bận trong lúc kiểm tra và
làm tươi hiển thị. 8279 sẽ thay thế vi xử lí đảm trách hai nhiệm vụ này.
8279 (Hình ) là một thiết bị dạng DIP _ 40, có hai phần chính : bàn phím và hiển
thị. Phần bàn phím có thể được nối với một ma trận tối đa 64 phím, sự gõ phím được giải
nẩy và mãphím được lưu trữ vào bộ nhớ FIFO bên trong (First _ In _ First _ Out : Vào
trước, ra trước) , và một tín hiệu ngắt được phát ra mỗi lần gõ phím. Phần hiển thị có thể
cung cấp một hiển thị có quét tối đa 16 Led. Phần này có bộ nhớ RAM 16 x 8, có thể
được sử dụng đọc / ghi thông tin cho các mục đích hiển thị. Phần hiển thị có thể được
khởi tạo ở dạng ghi phải (right entry) hoặc ghi trái (left entry).
Tần số xung đồng hồ cấp cho 8279 tối đa là 3,125MHz
Hình 7: Sơ đồ chân logic của 8279
Bảng 3: Chức năng các chân IC 8279
Tên chân Số chân Mô tả và chức năng
DB0 – DB7 8 Bi-directional
databus:Đường dữ liệu 2
chiều.
Tất cả các lệnh và dữ liệu
giữaCPU và 8279 được
truyền trên những đường dữ
liệu này.
CLK 1 Clock input: ngõ vào xung
clock. Xung clock có tần ố
tối đa là 3,125MHz.
RESET 1 Reset in: dùng để đặt lại
trạng thái làm việc của 8279
15
LUÂÄN VĂN TỐT NGHIỆP
khi ngõ vào này ở mức cao.

Sau khi được reset, 8279 có
thể làm việc ở chế độ:
− Hiển thị 16 ký tự lối vào
trái.
− Lập mã quét phím khóa
ngồi 2 phím.
CS\ 1 Chip select: tác động mức
thấp cho phép 8279 thực
hiện các chức năng kết nối
với CPU để truyền và nhận
dữ liệu.
A0 1 Buffer address: đường địa
chỉ này thương được kết nối
với đ5a chỉ A0 của vi xử lý
dùng để phân biệt lệnh hay
dữ liệu.
− A0=[1]: tín hiệu vào ra
là lệnh.
− A0=[0]:tín hiệu vào ra
là dữ liệu.
RD\, WR\ 2 Read, Write:ch phép đọc
hay ghi dữ liệu lên bus dữ
liệu, thanh ghi điều khiển
hay bộ nhớ RAM hiển thị.
IRQ 1 Interrupt Request: đường tín
hiệu yêu cầu ngắt (output).
Ngõ ra này sẽ ở mức cao nế
có dữ liệu ở trong bộ nhớ
FIFO hay SensorRAM, ngõ
ra này sẽ ở mức thấp mỗi

khicó sự đọc bộ nhớ
FIFO/SensorRAM và trởlại
mức cao khi d4có dữ liệu
chứa trong RAM.
Vss, Vcc 2 Cấp nguồn 0Vvà +5V cho
8279.
SL0 – SL3 4 Scan lines: 4 đường scan
line nàycó thể giải mã ra 16
đường hay mã hóa thành 1
đường, được dùng để quét
phím hay ma trận cảm biến
16
LUÂÄN VĂN TỐT NGHIỆP
và hiển thị.
RL0 – RL7 8 Return line: được nối với
đường scan line thông qua
các phím hay công tắc cảm
biến. Ở chế độ quét phím,
sẽ kết hợp với các đường
scan lines tạo thành mã của
phím được nhấn.
SHIFT
CTRL/STB
1
1
Shift, Control / Strobe input
Mode: trong chế độ quét
phím, mức logic của từng
ngõ vào này sẽ được lưu trữ
với vị trí của phím để tạo ra

1 giá trị của phím được
nhấn.
OUT A0 – A3
OUT B0 – B3
4
4
Đêy là 2 portngõ ra của
thanh ghi hiển thị 16 x 4 bit.
Dữ liệu từ những thanh ghi
này sẽ được đưa ra đồng bộ
kết hợp với các đường quét
scan lines để đa hợp thành
số hiển thị.
Hai ngõ ra 4 bit này có thể
xóa độc lập và có thể kết
hợp với nhau để tạo thành
một ngõ ra 8 bit.
BD\ 1 Blanking display: dùng để
xóa hiển thị trong quá trình
chuyển đổi giữa các số hay
khi gặp lệnh xóa hiển thị.
Sơ đồ khối logic (Hình 8) trình bày bốn phần chính của 8279 : bàn phím, quét, hiển
thị và giao tiếp vi xử lí. Các chức năng của các phần này được miêu tả như dưới đây :
17
LUÂÄN VĂN TỐT NGHIỆP
IR
Q
BD
CL
K

RESE
T
DB0-
DB7
Data
Buffer
Control and
Timing
Registers
Timing
and
Control
Internal Data Bus (8)
Display
Address
Registers
16 x 8
Display
RAM
8 x 8
FIFO/Sensor
RAM
Keyboard
Debounce
and
Control
OUT A0-A3 OUT
B0-B3
Display
Registers

SL0-
SL3
Scan Counter
RDWR CS A0
I/O Control
8
FIFO/Sensor
RAM
Status
RL0-RL7
CNTL/STB
SHIF
T
Return

Hình 8: Sơ đồ khối của 8279
Để giao tiếp với vi xử lý, 8279 cần tám đường dữ liệu hai chiều (BD
0
_ BD
7
), một
đường yêu cầu ngắt (IRQ), và sáu đường giao tiếp, kể cả đường địa chỉ của bộ đệm (A
0
)
Khi A
0
ở mức cao, các tín hiệu được hiểu như là các từ điều khiển và trạng thái.
Khi A
0
ở mức thấp, các tín hiệu được hiểu là dữ liệu.

Đường IRQ lên mức cao bất kì lúc nào việc ghi nhận dữ liệu vào FIFO. Tín hiệu
này được sử dụng để ngắt vi xử lí nhằm chỉ thị tính khả dụng của dữ liệu.
I.3.1.2. Lập trình cho 8279
Để có sử dụng 8279, cần biết các từ điều khiển của 8279.
8279 có tất cả tám từ điều khiển, tùy theo mục đích sử dụng mà sẽ chọn từ điều
khiển thích hợp.
 Đặt mốt hiển thị / bàn phím
MSB LSB
Mã 0 0 0 D D K K K
Trong đó, D D là mốt hiển thị và K K K là mốt bàn phím
D D
0 0 Hiển thị 8 kí tự 8 bit _ ghi trái
0 1 Hiển thị 16 kí tự 8 bit _ ghi trái
1 0 Hiển thị 8 kí tự 8 bit _ ghi phải
18
LUÂÄN VĂN TỐT NGHIỆP
1 1 Hiển thị 16 kí tự 8 bit _ ghi phải
K K K
0 0 0 Bàn phím quét có lập mã _ Khóa ngồi 2 phím
0 0 1 Bàn phím quét có giải mã _ Khóa ngồi 2 phím
0 1 0 Bàn phím quét có lập mã _ Xoay vòng N phím
0 1 1 Bàn phím quét có giải mã _ Xoay vòng N phím
1 0 0 Ma trận cảm biến, quét có lập mã
1 0 1 Ma trận cảm biến, quét có giải mã
1 1 0 Ngõ vào Strob, quét hiển thị có lập mã
1 1 0 Ngõ vào Strob, quét hiển thị có giải mã
Trong suốt thời gian RAM hiển thị đang bị xố (∼ 160 µS), nó không thể được ghi
vào. Bit có trọng số cao nhất (MSB) của từ trạng thái được đặt trong suốt thời gian này.
Khi RAM hiển thị trở nên khả dụng trở lại, bit này tự động được đặt lại.
19

LUÂÄN VĂN TỐT NGHIỆP
 Khởi tạo 8279
Mặc dù 8279 có tới tám từ điều khiển, nhưng không phải lúc nào cũng sử dụng
hết tất cả tám từ này.
Khi khởi tạo một 8279, thứ tự các từ điều khiển sau đây là cần thiết :
+ Đặt mốt hiển thị / bàn phím
+ Lập trình xung đồng hồ
+ Xố RAM hiển thị, hoặc FIFO hoặc cả hai
Các từ điều khiển còn lại có thể được gởi ra thanh ghi điều khiển trong lúc này
hoặc khi cần.
II. CÁC THAM SỐ CẦN THIẾT CỦA KIT:
Trên đây, đã giới thiệu các IC quạn trọng để có thể kết nối Kit với máy tính. Ngồi
ra, các thông số về địa chỉ cũng không kém phần quan trọng.
Bảng : Bảng đồ địa chỉ bộ nhớ của kit
Bộ nhớ A
15
A
14
A
13
A
12
→ A
0
Vùng địa chỉ
bộ nhớ
ROM1 0 0 0
0 → 0
0000
H

0 0 0
1 → 1
1FFF
H
ROM2
0 0 1
0 → 0
2000
H
0 0 1
1 → 1
3FFF
H
RAM1
0 1 0
0 → 0
4000
H
0 1 0
1 → 1
5FFF
H
RAM2
0 1 1
0 → 0
6000
H
0 1 1
1 → 1
7FFF

H
RAM3
1 0 0
0 → 0
8000
H
1 0 0
1 → 1
9FFF
H
8279
1 0 1
0 → 0
A000
H
1 0 1
1 → 1
BFFF
H
144424443
20
3 bit ứng với 6 trạng
thái của 6 vùng nhớ
LUÂÄN VĂN TỐT NGHIỆP
Dựa vào 3 bit A13, A14, A15 để xác định các vùng ROM, RAM như sau:
Bảng 4 : Bảng đồ địa chỉ I/O của kit
Bộ nhớ A7 A6 A5 A4 A3 A2 A1 A0
Vùng địa chỉ bộ
nhớ
8255A 0 0 0 0 0 0 0 0 00

0 0 0 0 0 1 1 1 07
8255B 0 0 0 0 1 0 0 0 08
0 0 0 0 1 1 1 1 0F
8253A 0 0 0 1 0 0 0 0 10
0 0 0 1 0 1 1 1 17
8253B 0 0 0 0 1 0 0 0 18
0 0 0 1 1 1 1 1 1F
8259 0 0 1 0 0 0 0 0 20
0 0 1 0 1 1 1 1 27
8251 0 0 1 0 1 0 0 0 28
0 0 1 0 1 1 1 1 2F
ADC0809 0 0 1 1 0 0 0 0 30
0 0 1 1 0 1 1 1 37
DAC0808 0 0 1 1 1 0 0 0 38
0 0 1 1 1 1 1 1 3F
144424443
21
3 bit ứng với 6 trạng
thái của 6 vùng nhớ
74138
A
13
A
14
A
15
A
B
C
O

0
O
1
O
2
O
3
O
4
O
5
O
6
O
7
CS\ROM1
CS\ROM2
CS\RAM1
CS\RAM2
CS\RAM3
CS\8279
No use
No use
Hình 9 : chọn bộ nhớ
LUÂÄN VĂN TỐT NGHIỆP
Dựa vào 3 bit A3, A4, A5 có thể xác định ngoại vi sử dụng như sau:
III. SỬ DỤNG KIT:
Chức năng các phím:
− Phím RESET hoặc Q: khởi động lại tồn bộ hệ thống Kit, các thanh ghi, các điểm
dừng, các khởi tạo, đều được reset.

− Phím A hoặc Address hoặc S: đặt lại địa chỉ ô nhớ để tác động vào: xem dữ liệu,
thay đổi nội dung.
− Phím UP hoặc ↑ : lưu trữ dữ liệu ở 2 led trái vào địa chỉ ghi ở 4 led phải.
− Phím Down hoặc ↓ : để xem lại dữ liệu đã nạp.
− Phím P hoặc PC: đặt địa chỉ chạy chương trình.
− Phím G hoặc GO: chạy chương trình tại địa chỉ đã chọn sẳn.
− Phím I hoặc INTR: ngắt chương trình, khởi động nóng hệ thống, các khởi tạo,
điểm dừng đều vẫn còn.
Các thao tác nhập liệu trên là để đưa các dữ liệu, các lệnh vi xử lý đã được mã hóa
ra dạng mã máy, vào những địa chỉ yêu cầu của người thảo chương. Vàsau đó, kết quả
kiểm tra, chạy thử chương trình sẽ cho biết chương trình đúng hay sai.
Mục đích chủ yếu của đề tài là rút ngắn thời gian dịch sang mã máy và thời gian
nhập liệu, nghĩa là phải nạp được dữ liệu vào bộ nhớ RAM mà không tốn thời gian nhập
liệu.
22
A
B
C
O
0
O
1
O
2
O
3
O
4
O
5

O
6
O
7
74138
A
3
A
4
A
5
CS\8255A
CS\8255B
CS\8253A
CS\8253B
CS\8259
CS\8251
CS\ADC0805
CS\DAC0808
Hình 10: Chọn I/O
LUÂÄN VĂN TỐT NGHIỆP
Chương IV:
GIAO TIẾP
MÁY TÍNH VỚI
KIT THỰC TẬP
VI XỬ LÝ 8085
23
LUÂÄN VĂN TỐT NGHIỆP
Giao tiếp giữa máy tính và thiết bị ngoại vi có thể bằng một trong các cách sau:
I.GIAO TIẾP BẰNG SLOT-CARD:

Trong máy tính, trên main board hoặc IO-card, thường chế tạo sẵn các rãnh cắm
(slot) cho phép mở rộng bộ nhớ, cài đặt thêm phần cứng, mở rộng phạm vi ứng dụng cho
máy tính.
Để sử dụng được các rãnh cắm này, cần phải có tài liệu chính xác về các thông số
cần thiết, ví dụ địa chỉ của cổng là bao nhiêu, thuộc loại rãnh bao nhiêu bit, theo chuẩn
nào, kich thước phần mạch in cắm vào , độ dày mạch in, rãnh nguồn, rãnh dữ liệu, rãnh
dự trữ, …
II. GIAO TIẾP BẰNG CỔNG MÁY IN:
Mọi máy tính đều có cổng máy in đặt phía sau máy. Cổng máy in không chỉ để kết
nối với máy in mà còn có thể kết nối với nhiếu loại thiết bị ngoại vi khác cho mục đích đo
lường và điều khiển,…
Cổng máy in là loại cổng 25 chân, dữ liệu truyền song song, dễ kết nối, các địa chỉ
của cổng của các máy tính hầu như giống nhau.
Giao tiếp bằng cổng máy in gọi là giao tiếp song song bất đồng bộ. Trong kiểu giao
tiếp này, nới phát tín hiệu và nới nhận tín hiệu đều có xung báo phát và xung báo nhận,
tần số xung clock tại nơi phát và tần số xung clock tại nơi thu không cần quan tâm.
III. GIAO TIẾP BẰNG CỔNG COM:
Cổng COM được sử dụng khá phổ biến. Dữ liệu truyền ở cổng này thuộc dạng dữ
liệu nối tiếp. Tín hiệu truyền ở cổng này có thể truyền đi xa nhờ có cấu tạo đường dây
cáp ít sợi hơn cổng song song, mức áp tín hiệu cao.
Cổng COM có loại 9 chân và loại 25 chân như cổng song song, có tổng cộng 8
đường dẫn tín hiệu không kể đường nối đất, từ máy tính đi ra là loại phích cắm nhiều
chân khác với cổng song song.
Cổng COM, còn gọi là cổng nối tiếp theo chuẩn RS-232. Chuẩn RS-232 từ năm
1969 được chấp nhận chuyên dùng cho truyền số liệu và các đường nối kiểm tra giữa
terminal và moderm, tốc độ cực đại là 20Kbps, với khoảng các tối đa không quá 15m.
Đây là lại giao tiếp không cân bằng có driver.
Mức áp tín hiệu trên đường dây là +15V/-15V. Trên đường dây, mức logic 1 có
điện áp từ 5V đến 15V và mức logic 0 từ –5V đến –15V. mức áp này không tương thích
TTL do đó thường phải sử dụng thêm các IC chuyên dụng MC1488, MC1489 để thay đổi

mức logic cho tương thích TTL.
Giao tiếp nối tiếp còn chia ra nối tiếp bất đồng bộ và nối tiếp đồng bộ (sử dụng các
chuẩn UART dùng CMOS 6402, USART dùng ngoại vi 8251, chuẩn ACIA dùng NMOS
6850 …).
IV. CHỌN PHƯƠNG PHÁP GIAO TIẾP VÀ CỔNG KẾT NỐI:
Trong đề tài này, vì lý do thời gian có hạn, nên người thực hiện đề tài chỉ có thể sử
dụng một phương pháp truyền dữ liệu, đó là truyền dữ liệu song song bất đồng bộ qua
cổng máy in LPT1.
Cổng LPT1 là một cổng song song, dữ liệu được truyền với tốc độ khá cao từ máy
tính, do đó tốc độ truyền dữ liệu chung chỉ còn phụ thuộc vào Kit.
24
LUÂÄN VĂN TỐT NGHIỆP
Hình dạng một cổng LPT1 được cho trong hình sau:
Hình 11: Cổng LPT (DB25).
Bảng 5: Bố trí chân ở cổng LPT ở máy tính:
Chân Ký hiệu Vào/Ra Mô tả
1 STROBE Output Byte được in
2 D0 Output Đường dữ liệu được in D0
3 D1 Output Đường dữ liệu được in
4 D2 Output Đường dữ liệu được in
5 D3 Output Đường dữ liệu được in
6 D4 Output Đường dữ liệu được in
7 D5 Output Đường dữ liệu được in
8 D6 Output Đường dữ liệu được in
9 D7 Output Đường dữ liệu được in
10 Ack Input Acknowledge
11 Busy Input 1:máy in bận
12 PE Input Hết giấy
13 SCLT Input Select
14 AF Output Autofeet

15 ERROR Input Error
16 INIT Output 0: đặt lại máy in
17 SLCTIN Output Select in
18 GND Nối đât
19 GND
20 GND
21 GND
22 GND
23 GND
24 GND
25 GND
Cổng máy in LPT1 có địa chỉ cơ bản là 378Hex và cổng LPT2 có địa chỉ cơ bản là
78Hex.
Các thanh ghi trong máy tính kết nối với cổng máy in:
Thanh ghi dữ liệu (Data register, địa chỉ = địa chỉ cơ bản )
25
13
1
25
14

×