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

thiết kế và viết chương trình hoạt động cho một mạch đèn chữ chạy sử dụng cpu z80 và hoạt động giao tiếp với cổng com trên máy pcat

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 (574.62 KB, 155 trang )

LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

LỜI MỞ ĐẦU
Xã hội ngày càng phát triển, khối lượng thông tin cần xử lý ngày càng đồ sộ .Quá trình xử
lý bao gồm nhiều cơng việc như :thu thập ,tính tốn ,lưu trữ, tìm kiếm và truyền thông tin .mặc dù
cuộc cách mạng khoa học cơng nghệ đã đem đến cho lồi người vơ số các phương tiện xử lý thông
tin khác nhau ,nhưng máy tính điện tử vẫn là phương tiện xử lý thơng tin đứng ở vị trí hàng đầu .
Với mức đòi hỏi ngày càng cao của xã hội , sự phát triển đồng bộ các phương tiện xử lý thông tin
hiện đại là một việc cần thiết .Các phương tiện này phải áp dụng có hiệu quả trong mọi lĩnh vực
thơng tin liên lạc ,phát thanh truyền hình và tự động điều khiển các ngành cơng nghệ khác.Chính vì
vậy việc số hóa các thiết bị điện tử – viễn thơng đã và đang được thực hiện ráo riết ở trên toàn thế
giới cũng như ở Việt Nam .Với lý do đó xử lý tín hiệu số và lọc số đã trở thành một ngành khoa học
và Kỹ thuật rất được quan tâm và phát triển nhanh chóng . Sự phát triển của ngành khoa học này
mà chúng ta đễ nhận thấy nhất đó là sự ra đời của các vi mạch điện tử , đây cũng chính là nền tảng
của sự phát triển đến chóng mặt của các phần cứng số chuyên dụng và nhờ sự phát triển này mà
máy vi tính đạt được nhiều ưu điểm như : kích thước nhỏ hơn ,tốc độ cao hơn và đặc biệt là giá
thành thấp hơn .
Để tiếp cận với ngành khoa học hiện đại này mỗi người chúng ta cần được trang bị những
kiến thức cơ bản về lĩnh vực tin học cả về phần cứng và phần mềm.
Để hiểu rõ thêm về lĩnh vực tin học và điện tử cũng như cách thức tổ chức và hoạt động của một hệ
thống xử lí thơng tin chúng tơi xin giới thiệu đến tất cả các bạn cách “Thiết kế và viết chương
trình hoạt động cho một mạch đèn chữ chạy sử dụng CPU Z80 và hoạt động giao tiếp với cổng
COM trên máy PC/AT” Đây cũng là nội dung của toàn bộ nội dung của cuốn luận văn này.
Sau cùng là lời cảm ơn chân thành của chúng tôi đến thầy NGUYỄN XN MINH cùng tất
cả q thầy cơ của khoa CNTT trường Đại Học Kỹ Thuật TPHCM đã tận tình giúp đỡ và hướng
dẫn chúng tơi một cách tận tình để chúng tơi có thể hồn thành tốt đồ án này .Kính chúc tất cả các
thầy cơ thành cơng trong công tác giảng dạy và nghiên cứu.

TRANG 1




LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

PHẦN MỘT
GIỚI THIỆU ĐỀ TÀI & PHÂN TÍCH
YÊU CẦU CỦA ĐỀ TÀI.
I. ĐỀ TÀI:
THIẾT KẾ MẠCH NHẬN VÀ HIỂN THỊ KÍ TỰ GIAO TIẾP
THƠNG QUA CỔNG COM TRÊN MÁY VI TÍNH PC
II. Giai đoạn thực tập tốt nghiệp:
II.1 u cầu:
Tìm hiểu một số IC có chức năng thực hiện việc giao tiếp nối tiếp như
8250;8251
Tìm hiểu chức năng chia xung của vi mạch 8253
Tìm hiểu bộ xử lí Zilog 80 (Z80).
Tìm phơng chữ cho bảng đèn ,xử dụng một trong những ma trận chữ
M(12,8);M(16,8).
 Đưa ra hướng thiết kế cho đề tài
Giới thiệu về chức năng ,nhiệm vụ của “Mạch đèn chạy chữ giao tiếp thơng qua cổng COM của
máy vi tính PC “:
Mạch sẽ nhận thơng tin (Mã ASCII của kí tự ) từ bàn phím của máy PC thơng qua cổng giao tiếp
COM2 của máy PC sau đó thơng qua bộ xử lí Z80 các kí tự sẽ được xuất ra một ma trận để hiển thị
kí tự.
Ví dụ:
Khi ta nhập một dịng chữ bất kì từ bàn phím thì quan sát trên ma trận ngoại vi ta sẽ
thấy được dịng kí tự đó và mạch cịn có khả năng làm cho dịng chữ đó có thể chạy
được.


TRANG 2


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

CHƯƠNG I
TÌM HIỂU CÁC VI MẠCH CHÍNH

TRANG 3


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

CHƯƠNG II
TÌM HIỂU BỘ XỬ LÍ 8 BIT
CPU ZILOG 80
I)

TÌM HIỂU BỘ XỬ LÍ CPU ZILOG 80 (Z80):

I.1

SƠ ĐỒ KHỐI:

SYSTEM

CONTROL

µP
CONTROL

BUS
CONTROL

8BITS DATA
D0-D7

DATA BUS
CONTROL

INTERNAL BUS
INSTRUCTION DECODE
& PROCESSOR CONTROL

ALU

INSTRUCTION
REGISTER

MAIN ALTERNATE
AF
A’F
’BC
B’C
’DE
D’E

’HL
H’L
’
I
R

ADDRESS
CONTROL

IX
IY
SP
16 BITS ADDRESS
A0-A15

TRANG 4

PC

GERNERAL
REGISTERS

SPECIAL
PURPOSE
REGISTER


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH


Address control: Xuất tín hiệu địa chỉ từ A0-A5 ra ngoài Micro Processor. Khối này bản thân là
một mạch tổ hợp sinh ra 16 tín hiệu A0 – A15, qua bộ đệm một chiều (out), ba trạng thái đựa ra
ngồi.
Data bus control: Điều khiển tín hiệu dữ liệu D0- D7 giữa Micro Processor và hệ thống bên ngồi.
Khối này cũng có một bộ đệm hai chiều, ba trạng thái loại có thể cài (latch).
ALU (Arithmetic Logic Unit): thực hiện các phép toán số học (cộng, trừ, tăng, giảm), phép luận lý
(And,Or, Xor, bù 1) và các phép toán khác (Shife, rotate,xử lý bit, so sánh, chỉnh dạng thập phânBCD).
Instruction decode &processor control: gồm một mạch tổ hơp thực hiện việc giải mã lệnh và xuất
ra các tín hiệu điều khiển. Các tín hiệu này được đệm trứơc khi xuất, bộ đệm loại hai chiều, ba trạng
thái.
Instruction Register: Chứa câu lệnh đang thực thi.
I.2

SƠ ĐỒ CHÂN CỦA Z80:

A11
A12
A13
A14
A15
CLK
D4
D3
D5
D6
+5V
D2
D7
D0

D1
INT
MNI
HALT
MERQ
IORQ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Z80
CPU


40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

A10
A9
A8
A7
A6
A5
A4
A3

A2
A1
A0
GND
RFSH
M1
RESET
BUSREQ
WAIT
BUSACK
WR
RD

-Vcc (Power supply)-chân11: một nguồn đơn Vcc=
-CLK(Clock)-chân 6: Xung vng có tần số từ 1 đến 6 MHz ( tùy loại CPU)

TRANG 5


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

-RESET –chân 26: Ngõ vào tích cực mức thấp, độ rộng từ tối thiểu là 8 chu kỳ xung clock.
Tín hiệu Reset xóa PC,I,R,IFF, thiết lập chế độ ngắt quãng ở mode 0. Trong khi Reset=0, tất
cả các tuyến địa chỉ , dữ liệu ở trạng thái tổng trở cao (Hi-Z), tuyến điều khiển ở mức không
tác động.
-A0-A15-chân30..40,1..5:Tuyến địa chỉ ngõ ra 4 trạng thái, định vị đến 64 Kbye bộ nhớ.
Ngồi ra CPU cịn dùng tám đường địa chỉ thấp A0-A7 để quản lý được 256 thiết bị ngoại vi
(256 I/O port). Ơ chu kỳ làm tươi A0-A6 giữ địa chỉ là tươi.

-D0-D7-chân 14,15,12,8,7,9,10,13: Tuyến dữ liệu 2 chiều 3 trạng thái.
Tuyến điều khiển theo cơng dụng chia làm 3 nhóm:
*System control: do CPU phát ra để điều khiển hệ thống gồm:
-MREQ(Memory Request)- chân19: Ngõ ra 3 trạng thái, tác động mức thấp, chỉ ra chu kỳ
truy xuất đến bộ nhớ.
-IORQ(Input/Output Request)-chân 20: Ngõ ra 3 trạng thái, tác động mức thấp, chỉ ra chu
kỳ truy xuất đến I/O Port.
-RD (Read)-chân 21: Ngõ ra 3 trạng thái, tác động mức thấp, chỉ 1 chiều dữ liệu từ bộ nhớ
hay thiết bị xuất nhập đến CPU.
-WR (Write)-chân 22: Ngõ ra 3 trạng thái, tác động mức thấp, chỉ 1 chiều dữ liệu từ CPU
đến bộ nhớ , thiết bị xuất nhập.
*Bus Control: Phục vụ cho DMA.
-BUSRQ (Bus Request)- chân25: Ngõ vào tác động mức thấp. Có độ ưu tiên cao hơn NMI,
lấy mẫu ở dưới chu kỳ máy. Tín hiệu này yêu cầu CPU nhường Bus và nó phải được giữ ở
mức 0 trong suốt quá trình sử dụng.
-BUSAK (Bus Acknowlege)-chân 23: Ngõ ra tác động mức thấp, thông báo cho thiết bị yêu
cầu Bus (BUSRQ) biết rằng CPU đã treo dữ liệu, địa chỉ lên trạng thái tổng trở cao (Hi-Z),
tuyến điều khiển không tác động để cho ngoại vi có thể sử dụng Bus.
*uM Control:
-NMI (Non Mask Interrupt) chân 17: Ngõ vào tác động mức thấp có độ ưu tiên cao hơn
INT, nhận biết ở cuối chu kỳ lệnh hiện tại, không IFF kiểm soát. Khi NMI tác động CPU tự
động nhảy đến ô nhớ có địa chỉ 0066h. CPU nhận biết ngắt này tại cạnh xuống.

TRANG 6


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH


-INT (Interrupt)-chân16: Ngõ vào tác động mức thấp, do các thiết bị ra vào yêu cầu khi
nhận được tín hiệu này từ thiết bị vào ra, CPU sẽ hoàn thành cho xong lệnh hiện tại và
chuyển sang phục vụ ngắt quãng ( nếu có IFF cho phép =1).
-WAIT-chân 24: Ngõ vào tác động mức thấp, chỉ cho CPU biết bộ nhớ hay thiết bị vào ra
chưa sẵn sàng cho việc truyền dữ liệu. Khi CPU lập mẫu đường này ở cạnh xuống T2, nếu
có tác động (WAIT) thì CPU sẽ qua trạng thái xung kế là đợi (Twait), và cứ mỗi cạnh
xuống của Twait CPU lại lấy mẫu đường wait. Nếu WAIT tác động lại tiếp tục chuyển. Nếu
không chuyển qua T3 và thực hiện lệnh tiếp tục
- HALT- Chân 18: Ngõ ra tác động mức thấp,chỉ ra rằng CPU đang thực hiện lệnh HALT.
Khi có các đường địa chỉ A0 đến Ạ7 ở mức các tuyến dữ liệu D0 đến D7 ở trạng thái tổng
trở cao. System Control =1. CPU chờ yêu cầu ngắt quãng (INT/NMI) hay bị RESET để
thoát khỏi trạng thái này.
- M1 (machine 1stcygel opcode)- Chân 27:Chu kỳ máy M1 trong mật chu kỳ lệnh . Đây là
ngõ ra tác động mức thấp. Sử dụng MREQ để chỉ ra chu kỳ lấy lệnh. Dùng với và IORQ để
chỉ ra chu kỳ công nhận ngắt quãng .
- RFSH (Refresh) – Chân 28: Ngõ ra tác đông mức thấp. Tác động trong nữa chu kỳ sau
M1 để làm tươi RAM động, lúc này 7 bit đĩa chỉ thấp A0 đến A6 dùng để làm tươi.
I.3

CÁC THANH GHI:
Gồm hai nhóm thanh ghi:
I.3.1 Các thanh ghi chuyên dụng (Special purpose register):
PC (Program Counter): Thanh ghi 16 bits, chứa địa chỉ câu lệnh kế tiếp.
SP (Stack Pointer): Thanh ghi 16 bits, chứa địa chỉ đỉnh ngăn xếp.
IX,IY (Index register): Là các thanh ghi 16 bits được dùng trong các kiểu định vị chỉ
số. Nội dung IX, IY chỉ tới một vùng bộ nhớ lưu trữ dữ liệu cần xữ lý. Để truy xuất
chính xác đến từng byte trong vùng nhớ này, trong các câu lệnh có một số bù 2 có
dấu chính là độ dịch chuyển của byte cần truy xuất đối với dịa chỉ vùng bộ nhớ ( xác
định bằng thanh ghi chỉ số).
Thanh ghi địa chỉ ngắt quãng I( Interrupt page address register): 8 bits, chúa byte

cao của địa chỉ Interrupt ở mode 2, cho phép chương trình phục vụ ngắt quãng đặt ở
vị trí bất kỳ trong bộ n hớ.

TRANG 7


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Thanh ghi làm tươi bộ nhớ ( Memory Refersh Register): X70 CPU chứa 1a một bộ
đệm có thể làm tươi dễ dàng bộ nhớ động. Thanh ghi 7 bits tự động tăng sau mỗi lần
lấy lệnh. Dữ liệu trong thanh ghi được gởi ra phần thấp của bus địa chỉ cùng với tín
hiệu làm tơi trong khi CPU giải mã và thực hiện lệnh vừa được lấy ra. Do đó việc
làm tươi khơng làm chậm chương trình và đối với người lập trình coi như khơng có.
I.3.2 Các thanh ghi đa dụng (General Register):
Gồm hai tập thanh ghi độc lập nhau, có thể trao đổi cho nhau những không thể sử
dụng đồng thời hai bộ thanh ghi.
Main register set: sử dụng thường trực (khi bật máy , reset).
Alternate register set: bơ thanh ghi ln chuyển.
Có thể sử dụng rời rạc các thanh ghi 8 bits hay ghép thành cặp thanh ghi 16 bits để
sử dụng. Các thanh ghi BC,DE,HL trong đó B,D,H tương ứng với byte cao.
Thanh ghi tích lũy A có 8 bits để lưu kết quả các phương pháp số học và logic 8 bits.
Thanh ghi cờ F chỉ ra trạng thái kết quả của các phép toán số học và logic vừa thực
hiện. Nội dung thanh ghi F như sau:
S

Z
X
H

X: Không xác định.

X

P/X

N

C

S: (Gign) : Cờ dấu, cho biết kết quả là dương (S=0) hay âm (S=1) . như vậy S chính là
MSB của kết quả.
Z(Zero): Cờ Zero, cho biết kết quả là 0 (Z=1) hay khác 0 (Z=0).
H (Half carry): cờ nhớ phụ (nhớ từ bit 3). Cờ này dùng cho phép tính BCD, khơng kiểm tra
được.
P/V (Parity/Overflow): cờ cực tính/Tràn tùy theo phép tốn.
Nếu phép tính là luận lý thì cờ này là P. Khi kết quả bị tràn thì V=1, ngược lại V=0 (Parity
Odd).
Nếu phép tính số học thì cờ này là V. Khi kết quả bị tràn thì V=1, ngược lại V=0 .Điều n
ày chỉ có ý nghĩa đối với số có dấu.N( subtract foag): để dùng cho phép tính DAA cho cả
hai phép cộng và trừ. Cờ này cũng không kiểm tra được.
C (Carry): Cờ nhớ, chứa bit nhớ của kết quả.
II.

CÁC GIẢN ĐỒ ĐỊNH THỜI CƠ BẢN:

TRANG 8


LUẬN VĂN TỐT NGHIỆP

II.1

GVHD:NGUYỄN XUÂN MINH

Chu kỳ lấy lệnh (Fetch op-code):
Nội dung PC được đặt lên tuyến địa chỉ ở đầu chu kỳ. MREQ tích cực ở ½ xung clock sau
đó và cạnh xuống của MREQ được dùng trực tiếp để chọn chip cho RAM động. Dữ liệu bộ
nhớ được đựa lên tuyến dữ liệu khi đường RD tích cực. CPU lấy dữ liệu ở cạnh lên của
xung T3. Lúc đó CPU sẽ giải mã và thực hiện lệnh bên trong, cịn phía ngồi bus ở T 3 và
T4 được dùng để làm tười RAM động (được chỉ thị bởi RFSH và MREQ) .

CLK

T1

T2

T3

MERQ
M1
RD
WAIT
D0-D7

Din

RFSH
A0-A15


II.2

REFESH ADD A0-A6

PC

Chu kỳ đọc / ghi bộ nhớ (Read/Write):
Chức năng của RD và MREQ tương tự như trong chu kỳ lấy lệnh:
ĐỌC BỘ NHỚ=RD+MREQ (M1 không tích cực)
GHI BỘ NHỚ=WR+MREQ (M1 kh6ng tích cực)

TRANG 9

T4


LUẬN VĂN TỐT NGHIỆP

T1

GVHD:NGUYỄN XUÂN MINH

T2

T3

T1

T2


T3

CL
K
A0A15
MERQ
RD
WR

D0D7

IN

OUT

WAI
T

II.3

Chu kỳ vào/ra (In/Out):
Đối với chu kỳ vào/ra, CPU tự động xen vào một trạng thái đợi giữa T 2 và kéo dài thời gian
truy xuất cho phép cửa vào/ra giải mã địa chỉ của nó kích đường ra nếu cần.
ĐỌC NGOẠI VI=RD+IORQ (M1 khơng tích cực)
GHI NGOẠI VI =WR+IORQ (M1 khơng tích cực)
T1

T2

TW


T3

T1

CLK
A0-A7
IORQ
RD
D0-D7

IN

WAIT
WR
TRANG 10
D0-D7

DATA OUT


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

III.

LẬP TRÌNH CHO Z80:

III.1


Các phương pháp định vị địa chỉ:


Định vị tức thời: tốn hạng một byte nằm trong câu lệnh.



Định vị tức thời mở rộng: toán hạng 2 byte cũng ở ngay trong câu lệnh.



Định vị trạng 0 bổ chính: lệnh CALL đến một địa chỉ ở trạng 0 là lệnh RST p
(RST:restart,p: địa chỉ mã hóa ở trạng 0).



Định vị tương đối: tầm dịch chuyển là từ –128đến+127 bytes từ địa chỉ ờ câu lệnh kế
tiếp (A+2).



Định vị trực tiếp (hay mở rộng) -> (nn)=ơ nhớ có địa chỉ nn.



Định vị chỉ số dùng 2 thanh ghi IX,YI , mỗi thanh ghi 16 bits.




Định vị trực tiếp thanh ghi: gồm các thanh ghi bên trong CPU như A,B,C,D,E,H,L.



Định vị hiều ngầm: dùng ACC là nơi chứa kết quả các phép tốn số học.



Định vị gián tiếp thanh ghi:như dùng (HL), (DE), (BC), (IX+d), (IY+d), (IY+d), để chỉ ơ
nhớ có địa chỉ là nội dung các thanh ghi nói trên .



Định vị bit: trong các lệnh RESET,SET,BIT cho phép truy xuất đến từng bit trong ơ
nhớ.


III.2

Định vị ngăn xếp (stack) : dùng thanh ghi SP.

Tập lệnh:
* Lệnh truyền dữ liệu và trao đổi dữ liệu:
lệnh LOAD lưu chuyển dữ liệu bên trong giữa các thanh ghi bên trong CPU hay giữa các

thanh ghi và bộ nhớ. Tất cả các lệnh này đều phải chỉ ra nguồn và đích. Lệnh LOAD khơng thay đổi
tốn hạng nguồn. Ngôn ngữ gợi nhớ của hợp ngữ cho dạng này là LD.
Cú pháp lệnh: LD
Các


kiểu

DEST,SOURCE.

định

vị

tốn

hạng

nguồn



đích



tùy

ý.

* Chuyển số liệu 8 bits:
Từ thanh ghi tới thanh ghi:
LD

r,r


Trong đó r là các thanh ghi A,B,C,D,E,H,L.
Riêng thanh ghi A có thể được nạp từ thanh ghi I hoặc R. Hoặc ngược lại nạp A vào I hoặc
R.
Ví du: LD

A,B
TRANG 11


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Nếu toán hạng nguồn trùng đích thì kết quả khơng thay đổi.
Từ thanh ghi đến thanh ghi: có hai cách
-Bộ nhớ được định vị một cách gián tiếp bằng thanh ghi: dùng BC, DE, HL, IX+d,
IY+d để chứa địa chỉ bộ nhớ. Dạng lệnh như sau:
LD

A,(BC)

LD

A,(DE)

-Bộ nhớ được định vị trực tiếp (nn): Cách này cũng chỉ có chuyển số liệu vào A.
LD

A,(nn)


nn: địa chỉ 2 bytes

Nạp số liệu tức thời vào thanh ghi:
LD

r,n

n: số liệu 1 byte

Nạp thanh ghi vào bộ nhớ cũng có hai cách:
-Bộ nhớ được định vị trực tiếp (nn): thanh ghi nguồn cũng chỉ có thể là thanh ghi A.
LD

(nn),A

-Bộ nhớ được định vị gián tiếp bằng thanh ghi:
LD

(HL),r

LD

(IX+d),r

r:A, B, C, D, E, H, L

LD

(IX+d),r


d:địa chỉ tương đối một byte.

Riêng nếu dùng thanh ghi BC,DE để định vị ô nhớ thì thanh ghi nguồn phải là A.
LD

(BC),A

LD

(DE),A

*Nạp số liệu tức thời vào bộ nhớ: bộ nhớ phải được định vị ghián tiếp nhờ HL (IX+d), (IY+d),
kkhông thể dùng BC,DE.
LD

(HL),n

LD

(IX+d),n

LD

(IY+d),n

n:số liệu 1 byte0

*Nhận xét : không thể chuyể số liệu từ một ô nhớ này đến một ô nhớ khác.
* Chuyển số liệu 16 bits:
Số liệu 16 bits có thể được chứa traong các thanh ghi hay cặp thanh ghi 16 bits hay ô

nhớ nằm cạnh nhau.
Các thanh ghi , cặp thanh ghi 16 bits: BC, DE, HL, IX, IY, SP.

TRANG 12


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

-Chuyển số liệu tử thanh ghi tới thanh ghi: ta chỉ có các lệnh sau tương ứng với việc
nạp con trỏ stack:
LD

SP,rr

Với rr làcác thanh ghi HL, IX, IY.
-Từ bộ nhớ tới thanh ghi : bộ nhớ được định vị trực tiếp:
LD

rr,(nn)

Với rr là các thanh ghi BC, DE, HL, IX, IY.
*Kết quả của lệnh: nội dung của ơ nhớ có địa chỉ nn được chuyển vào thanh ghi byte
thấp, cịn nội dung ơ nhớ có địa chỉ nn+1 được chuyển vào thanh ghi byte cao.
-Nạp số liệu tứ c thời vào thanh ghi:
LD

(nn),rr


Với rr: là các thanh ghi BC, DE, HL, IX, IY, SP.
Nn: số liệu 2 bytes.
* Kết quả:

(nn)

<- rrL

(nn+1) <-rrH
Đặc biệt ta cịn có các lệnh liên quan đến Stack. Các lệnh này cất dữ liệu các cặp thanh ghi
cào Stack và lấy ra. Số liệu chuyển cũng là 16 bits
-Cất dữ liệu vào Stack:
PUSH rr
Với rr là các thanh ghi BC, DE, HL, IX, IY, AF.
*Kết quả:

(SP-1) <- rrH
(SP-2) <- rrL
SP

<- SP-2

-Lấy lai dữ liệu từ Stack:
POP

rr

Với rr là dcác thanh ghi BC, DE, HL, IX, IY, AF
*Kết quả:


rrH

<-

(SP+1)

rrL

<-

(SP)

SP

<-

SP+2

* Chuyển nảng dữ liệu:

TRANG 13


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Nhóm lệnh này cho phép chuyển mảng dữ liệu trong bộ nhớ từ nơi này sang nơi khác. Các
cặp thanh ghi cần sử dụng là:
HL: Chứa địa chỉ đầu của mảng nguồn.

DE: Chứa địa chỉ đầu của mảng đích.
BD: Chứa số byte cần dịch cuyển.
-LDD: Load & Decrease
*Kết quả:

(DE)

<-

(HL)

DE

<-

DE-1

HL

<-

HL-1

BC

<-

BC-1

Cờ P/V =1 nếu BC-1=0

-LDDR: Load, Dcrease & Repeat
*Kết quả:

(DE)

<-

(HL)

DE

<-

DE-1

HL

<-

HL-1

BC

<-

BC-1

Lặp lại cho đến khi BC=0.
Hai lệnh trên truyền mảng dữ liệu bắt đầu từ đáy ( địa chỉ cao) lên, thường dùng
trong trường hợp mảng nguồn có địa chỉ thấp hơn để tránh sự chép chồng khi hai

mảng phủ lẫn nhau.
-LDI: Load & Increase.
*Kết quả:

(DE)

<-

(HL)

DE

<-

DE+1

HL

<-

HL+1

BC

<-

BC-1

Lặp cho đến khi Bc=0
Hai lệnh chuyển mảng dữ liệu bắt đầu từ phần địa chỉ thấp, thường dùng trong

trường hợp mảng nguồn có địa chỉ cao hơn mảng đích.
III.2.1 Các lệnh trao đổi dữ liệu:
Dữ liệu 16 bits được trao đổi giữa hai nơi. Chỉ dùng với các cặp thanh ghi và ngăn xếp.
-Trao đổi giữa 2 cặp thanh ghi:

TRANG 14


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

EX

AF, AF’

AF <- -> AF’

EX

DE, HL

DE <- -> HL
BC <- -> BC’,

EXX

DE <- -> DE’

HL <- -> HL’

-Trao đổi giữa đỉnh và ngăn xếp:
EX

(SP) <- -> L, (SP+1) <- -> H

EX

(SP), IX

(SP) <- -> IXL , (SP+1) <- -> IX H

EX
III.2.2

(SP), HL
(SP), IY

(SP) <- -> IYL , (SP+1) <- -> IYH

Nhóm lệnh xử lý dữ liệu:
* Lệnh số học : làm thay đổi cờ:
+ Với dữ liệu 8 bits:
Gồm các lệnh cộng, trừ (có nhớ và khơng nhớ). Một tốn hạng bắt buộc là
thanh ghi chứa A. tốn hạng cịn lại có thể là thanh ghi 8 bits, ô nhớ (định vị
gián tiếp qua HL, IX+d, IY+d). kết quả cũng chứa trong A.
- Lệnh cộng : Dạng
ADD A, toán hạng
* Kết quả:

A <-A + toán hạng + CY, Cờ Carry lập nếu có nhớ


Tốn hạng : A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d).
-Lệnh trừ :dạng :
SUB
*Kết quả: A

toán hạng

<-A –toán hạng , Cờ Carry thiết lập nếu có nhớ.

Tốn hạng : A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d).
-Lệnh cộng với Carry : Dạng
ADC A, toán hạng
* Kết quả :

A <- A + toán hạng + CY, Cờ Carry lập nếu có nhớ.

Tốn hạng : A, B, C, D, E, H, L, n , (HL), (IX+d) , (IY+d).
-Lệnh trừ với Carry : Dạng.
SBC

A, toán hạng.

* Kết quả : A <- A - toán hạng – CY, cờ Carry lập nếu có nhớ.
Tốn hạng: A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d).
Ghi chú : tất cả các lệnh trên đều làm thay đổi trạng thái các cờ.

TRANG 15



LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

+ Với dữ liệu 16 bits:
Thực hiện giữa các cặp thanh ghi bits. Một toán hạng bắt buộc là HL hoặc
IX hoặc IY. Kết quả cũng chứa trong chúng. Các phép toán bao gồm: cộng, cộng có
nhớ, trừc1 nhớ (khơng có phép trừ thơng thường).
-Lệnh cộng :
ADD HL, rr

rr:BC, DE, HL, SP

ADD IX, rr

rr: BC, DE, IX, SP

ADD IY, rr

rr: BC, DE, IY, SP

- Lệnh cộng với Carry: chỉ có với HL
ADD HL, rr

rr: BC, DE, HL, SP

-Lệnh trừ với Carry : cũng chỉ có với HL
SBC

HL, rr


rr: BC, DE, HL, SP

Ghi chú : Nhóm lệnh này cũng làm thay đổi trạng thái cờ.
* Lệnh tăng, giảm 1:
Làm toán hạng tănglện 1 hoặc giảm đi 1. Tốn hạng có thể là thanh ghi , ơ nhớ
(được định vị gián tiếp nhờ HL, IX+d , IY+d )
a.Dữ liệu 8 bits:
-

Tăng 1:

INC toán hạng

-

Giảm 1:

DEC toán hạng

Toán hạng : BC, DE, HL, IX, IY, SP
* Lệnh luận lý:
Các lệnh luận lý chỉ xử lý trên dữ liệu 8 bits, bao gồm các phép toán: AND, OR, CP
(Compaer). Một tốn hạng bắt buộc là A, tốn hạng cịn lại có thể là thanh ghi, số liệu
tức thời hay ô nhớ (định vị gián tiếp nhờ HL, IX+d, IY+d). Kết quả chứa trong thanh
ghi A. Dạng lệnh:
AND toán hạng
OR
XOR


toán hạng

CP
Toán hạng :

toán hạng
toán hạng

A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d).

TRANG 16


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Riêng lệnh so sánh là không thay đổi nội dung thanh ghi A. kết quả được biểu thị trong
hai cờ Carry và Zero ( và cả cờ dấu).
Ví vụ: CP

n

A< n Z=0, CY=1
A= n Z=1, CY= 0
A> n Z=0, CY=0
Ngồi ra cịn có lệnh so sánh chuỗi, tương tự như các lệnh chuyển mảng dữ liệu. Các
lệnh này sử dụng HL chỉ đến đầu mảng, còn thanh ghi BC chỉ yte đếm:
CPI


so sánh A và (HL),

HL <- HL+1 , BC <- BC-1

CPIR so sánh A và (HL),

HL <- HL+1 , BC <- BC-1

Lặp lại đến khi A = (HL) hay BC=0
CPD

so sánh A và (HL),

HL <- HL-1 , BC <- BC-1

CPDR so sánh A và (HL),

HL <- HL-1 , BC <- BC-1

Lặp lại cho đến khi A =(HL) hay BC = 0
a.Lệnh quay:
Lệnh nay cho phép quay vịng các bit trong một tốn hạng8 bits. Phép quay có thể
quay trái hay quay phải. Có thể quay 5 bits của toán hạng hay 9 bits với bit thứ 9 là
bit cờ Carry. Toán hạng là thanh ghi đa năng hay ô nhớ (được định vị gián tiếp nhờ
HL, IX+d, IY+d).
-Quay trái 8 bits:

RLCA,RLC

toán hạng


Toán hạng: A, B, D, E, H, L, (HL), (IX+d), (IY+d).
Riêng với thanh ghi A thì RLCA và RLC A có tác dụng như nhau, những hi viết
RLCA thì lệnh chỉ dày 1 byte trong khi lệnh RLC dài 2 bytes.
CY

b7

b6

b5

b4

b3

b2

Sau 8 lần quay thì tốn hạng trở lại giá trị ban đầu.


Quay phải 8 bit

:RRCA, rrc toán hạng.

TRANG 17

b1

b0



LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

CYY

b7



b6

b5

Quay trái 9 bit

b4

b7

Quay phải 9 bit

b7

b6

b2


b1

b0

:RLA, RL tốn hạng

CY



b3

b6

b5

b4

b3

b1

b2

b0

b1

b0


:RRA, RR tốn hạng

b5

b4

b3

b2

CY

Ngoai ra cịn có 2 lệnh đặc biệt thưịng dùng với số BCD. Hai lệnh này sẽ cho phép một lần quay 4
bit. Phạm vi tác dụng: nữa thấp thanh ghi A và ô nhớ đưôc định vị gián tiếp bởi HL.



Quay trái

(HL)

: RLD

b7

b6

b5

TRANG 18


b4

b3

b2

b1

b0


LUẬN VĂN TỐT NGHIỆP

A



b7

b6

b5

GVHD:NGUYỄN XUÂN MINH

b4

b3


b2

b1

b0

Quay phải : RRD

b7

(HL)

A

b7

b6

b5

b4

b6

b5

b4

b3


b2

b1

b3

b2

b1

b0

b0

b.lệnh dịch:
Phân biệt 2 loại:
-

Dịch số học : gồm dịch trái (tương đương nhân 2) và dịch phải (tương đương
chia 2). Sự tương đương này đúng với trường hợp số có dấu. Toán hạng là thanh
ghi (A, B, C, D, E, H, L) hoặc ơ nhớ (HL), (IX+d) .

♦Dịch trái:
CY

♦Dịch phải:

SLA tốn hạng
b7


b6

b5

b4

b3

b2

b1

b0

b4

b3

b2

b1

b0

0

SRA toán hạng
b7

b6


b5

TRANG 19

CY


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

-Dịch luận lý : dùng với số khơng dấu, chỉ có lphép dịch phải ( tương đương chia 2).
Cịn phép dịch trái sở dĩ khơng có vì nó trùng với dịch trái số học, tức là phép dịch
trái số học dùng được với cả số có dấu hay khơng có dấu.

CY

b7

Dạng lệnh:

b6

b5

b4

b3


b2

b1

b0

0

SRL tố hạng

* Các lệnh xử lý bits:
Các lệnh này cho phép xử lý từng bit của một toán hạng 8bits như thanh ghi (A, B,
C, D, E, H, L), ô nhớ (định vị bởi HL, IX+d). Các phép xử lý bao gồm lập bit (SET)
, xóa bit (RES: Reset), kiểm tra bit (BIT).
-Lập bit:

SET

b, tốn hạng

* Cơng dụng: Lập bit b của tốn hạng lên, với b từ 0 đến 7.
-Xoá bit:

RES

b, toán hạng

* Cơng dụng : Xóa bit b của tốn hạng về 0 , với b từ 0 đến 7
-Kiểm tra bit:


BIT

b, tốn hạng

* Cơng dụng: nạp bù của bit b của tốn hạng vào cờ Z, nội dung tốn hạng
khơng thay đổi.
III.2.3

Nhóm lệnh kiểm tra và phân nhánh:
Bao gồm các lệnh phân nhánh có điều kiện và khơng điều kiện. Các lệnh
phân nhánh có điều kiện sẽ kiểm tra nội dung thanh ghi cờ đề rẽ nhánh thích hợp
theo ý người lập trình.
Các cờ có thể kiềm tra: Cờ dấu S, cờ zero Z, cờ nhớ CY, cờ P/V
(Parity/Overflow).

TRANG 20


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Các điều kiện : Z (Z=1), NZ (Z=0), C (CY=0), P (S=0), M (S=0), PE (parityeven
P=1), PO (parity odd P=0).
* Các lệnh nhảy :
a.Nhảy thường:
-Nhảy khơng điều kiện :

JP


địa chỉ nhảy

Địa chỉ nhảy có thể được định vị tức thời bằng một số 2 bytes, hay có thể
được định vị gián tiếp qua HL, IX, IY. Chú ý khơng thể dùng IX+d, IY+d.
Nhảy có điều kiện :

JP

điều kiện, địa ch3 nhảy

Điều kiện : Các trạng thái cờ đã nêu.
Địa chỉ nhảy : phải là một số tức thời 2 bytes.
b.Nhảy ngắn:
Các lệnh này có thể phạm vi nhảy trong khoảng –128 đến +127 bytes kể từ
địa chỉ câu lệnh kế tiếp. Địa chỉ tương đối này dài 1 byte được viết dạng số bù 2.
-Nhảy không điềukiện:

JP

d

d: là địa chỉ tương đối

Kết quả : PC <- PC+2+dPC+2 : địa chỉ câu lệnh kế tiếp.
-Nhảy có điều kiện: JR

điều kiện,d

Các lệnh nhảy có điều kiện sẽ khơng được thực hiện nếu điều kiện khơng
thỏa, khi đó câu lệnh kế tiếp sẽ được thực hiện.

Điều kiện trong câu lệnh nhảy ngắn có điều kiện chỉ có 4 loại (ứng
với 2 cờ CY, Z ) là C, NC, Z, NZ.
-Ngồi ra cịn có một lệnh nhảy ngắn đặc biệt dùng trong các vòng lặp, sử
dụng kèm theo thanh ghi B làm byte đếm . Lệnh này giảm byte đếm đi 1 và
nhảy ngắn nếu kết quả khác 0, còn nếu kết quả bằng 0 sẽ bỏ qua đề tới lệnh
kế tiếp.
Dạng lệnh:

DJNZ d

* Các lệnh gọi chương trình con và trở về:
a.Các lệnh gọi chương trình con:
Gồm các lệnh gọi có điều kiện và khơng điều kiện.
DALL [điều kiện], địa chỉ
Điều kiện :gồm 8 điều kiện về trạng thái cờ như đã nêu trên. Điều kiện có thể
hoặc không.

TRANG 21


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

Địa chỉ phải là địa chỉ tực thời 2 bytes.
Ngồi ra cịn có các lệnh gọi không điều kiện sử dụng định vị trang 0 bộ
chính: RST (Restart). Các chương trình con này có độ dài không quá 8 bytes.
RST

00H


RST

08H

RST

10H

RST

18H

RST

20H

RST

28H

RST

30H

RST

38H
Các địa chỉ nhảy tới ở trang 0


b.Các lệnh trở về :
Gồm các lệnh trở về khơng điều kiện hay có điều kiện. Điều kiện gồm 8
trạng thái cờ đã nêu.
Dạng lệnh:

RET

{điều kiện}

Ngồi ra cịn có các lệnh trở về từ chương trình xử lý ngắt.
RETI Trở về từ chương trình phục vụ ngắt INT
RETN Trở về từ chương trình phục vụ NMI
III.2.4

Các lệnh vào / ra:
CPU Z80 sử dụng 8 đường địa chỉ thấp để định vị thiết bị ngoại vi, như vậy
nó có khả năng quản lý tối đa 28 = 256 thiết bị ngoại vi.
Định vị cửa vào/ ra : định vị trực tiếp hoặc gián tiếp nhờ thanh ghi C.
Dữ liệu được nhập vào hoặc xuất ra đều qua các thanh ghi.
-Lệnh nhập:

A, (n)

IN
-Lệnh xuất

IN

r, (C )


r:A, B, C, D, E,H,L

OUT (n), A
OUT ( C ), r

Ngồi ra cịn có các lệnh vào / ra theo mảng. Dữ liệu được nhập vào hoặc xuất ra là
một mảng bộ nhớ được định vị bở HL. Chiều dài mảng được xác định bởi thanh ghi
B. Cửa vào/ ra được định vị gián tiếp nhờ thanh ghi C.

TRANG 22


LUẬN VĂN TỐT NGHIỆP

GVHD:NGUYỄN XUÂN MINH

*Lệnh nhập:
IND (Input dnd Decrease)
Kết quả: (HL) <- port ( cC ), B <- B-1 , HL <- HL-1, Cờ Z=1 nếu

B-1 =0.

INDR (Input ,Decerrase and Repeat)
Giống IND nhưng lặp lại cho đến khi B=0
INI

(Input and Increase )
Kết quả: (HL) <- port(C) , B <- HL+1, B <- B-1, Cờ Z=1 nếu

B-1 =0

INIR (Input , Increase and Repeat)
Giống INI nhưng lặp lại cho đến khi B=0
*Lệnh xuất:
OUTD (Output and Decrease)
Kết quả: Port (C ) <- (HL), HL < HL-1, B <- B-1, Cờ Z=1
nếu B-1=0
OTDR (Output Decerease and Repeat)
Giống OUTD nhưng lặp lại cho đến khi B=0
OUTI (Output and Incerease)
Kết quả : Port (C ) <- (HL), HL <- HL+1, B <- B-1, Cờ Z=1
nếu B-1 =0
OTIR (Output, Incerase and Rpeat)
Giống OUT nhưng lặp lại cho đến khi B=0
III.2.5

Nhóm lệnh điều khiển và các lệnh đặc biệt:
* Nhóm lệnh điều khiển:
Gồm các lệnh sau:
-Lệnh NOP (no-operate) :CPU khơng làm gì cả (nhưng vẫn duy trì làm tươi )
-Lệnh HALT : CPU ở trạng thái treo chờ INT hay RESET.
-Lệnh DI (Disable Interrupt): Cấm ngắt quãng (đối với INT)
-Lệnh EI (Enable Interrupt ) : Cho phép ngắt quãng (đối với INT)
-Lệnh IM 0 : (Interrupt mode) : Ngắt quãng mode 0
-Lệnh IM 1 : Ngắt quãng mode 1
-Lệnh IM 2 : Ngắt quãng mode 2

TRANG 23


LUẬN VĂN TỐT NGHIỆP


GVHD:NGUYỄN XUÂN MINH

* Các lệnh đặc biệt:
-DAA (Decimal adjust A) : dùng cho phép toán đối với số BCD. Lệnh này
đắt dau các lệnh cộng hay trừ với dữ liệu là số BCD để hiệu chỉnh kết quả trong A
thành số BCD
-CPL (Complement A) : Lấy bù 1 nội dung thanh ghi A và cất vào A
NEG (Negative A) : Tương tự CPL nhưng là số bù 2.
CCF (Complement carry flag): CY <- CY (bù 1).
SCF (Set carry flag): CY <-1.
Khơng có lệnh xóa carry trực tiếp. Tuy nhiên, các lệnh AND, OR , XOR ln làm
xóa carry nên có thể sử dụng các lệnh sau để xóa:
AND A; OR A

CHƯƠNG III
GIỚI THIỆU MẠCH THU PHÁT NỐI TIẾP
ĐỒNG - DỊ BỘ VẠN NĂNG
USART 8251
Trong phần này ta sẽ giới thiệu mạch 8251A,đó là mạch USART có thể dùng cho cả hai
kiểu truyền thông tin nối tiếp đồng bộ và dị bộ.Sơ đồ khối của mạch 8251 của Intel được
biểu diễn theo hình sau:
I.

SƠ ĐỒ KHỐI CHỨC NĂNG CỦA MẠCH USART 8251:

TRANG 24


LUẬN VĂN TỐT NGHIỆP


D0 – D7

GVHD:NGUYỄN XUÂN MINH

Đệm bus
dữ liệu

Đệm phát
//

--

TxD

TxRDY(Transmitter Ready)

Điều khiển
phần phát

Reset
Logich
điều khiển
ghi/đọc

CLK
C\D
WR

TxC (Transmitter Clock)

TxEMTY(Transmitter empty)

RD
CS

Đệm thu
//

DSR
DTR
CTS

Điều
khiển
Modem

Điều khiển
phần thu

RTS

RxD

--

RxRDY
(Receiver Ready)
RxC
(Receiver Clock)
SYNDET/BRKDET

(Syn detect/break detect)

Các tín hiệu của mạch 8251A hầu hết là giống các tín hiệu của 8088 hoặc các tín hiệu tiêu
chuẩn của RS 232C đã nêu trước đây.Chân chọn vỏ của 8251A vào một địa chỉ cơ bản nào
đó.Các tín hiệu cần phải giải thích thêm gồm:
+ CLK[I]:Chân nối đến xung đồng bộ của hệ thống.
+ TxRDY[O]:Tín hiệu báo đệm giữ rỗng( sẵn sàng nhận kí tự mới từ CPU).
+ RxRDY[O]:Tín hiệu báo đr65m thu đầy ( Có kí tự nằm chờ CPU đọc vào).
+ TxEMPTY[O]: Tín hiệu báo cả đệm giữ và đệm pháy đều rỗng.
+ C\D[I]: CPU thao tác các thanh ghi lệnh\ thanh ghi dữ liệu của 8251, khi C\D = 1 thì
thanh ghi lệnh được chọn làm việc.Chân này thường được nối với A0 của
TRANG 25


×