Giáo trình Hệ thống tủ sách máy tính

Cấu trúc luận lý

Máy tính số (Digital computer) là máy giải quyết các vấn đề bằng cách thực hiện

các chỉ thị do con người cung cấp. Chuỗi các chỉ thị này gọi là chương trình (program).

Các mạch điện tử trong một máy tính số sẽ thực hiện một số giới hạn các chỉ thị đơn giản

cho trước. Tập hợp các chỉ thị này gọi là tập lệnh của máy tính. Tất cả các chương trình

muốn thực thi đều phải được biến đổi sang tập lệnh trước khi được thi hành. Các lệnh cơ

bản là:

- Cộng 2 số.

- So sánh với 0.

- Di chuyển dữ liệu.

Tập lệnh của máy tính tạo thành một ngôn ngữ giúp con người có thể tác động lên

máy tính, ngôn ngữ này gọi là ngôn ngữ máy (machine language). Tuy nhiên, hầu hết các

ngôn ngữ máy đều đơn giản nên để thực hiện một yêu cầu nào đó, người thiết kế phải

thực hiện một công việc phức tạp. Đó là chuyển các yêu cầu này thành các chỉ thị có chứa

trong tập lệnh của máy. Vấn đề này có thể giải quyết bằng cách thiết kế một tập lệnh mới

thích hợp cho con người hơn tập lệnh đã cài đặt sẵn trong máy (built-in). Ngôn ngữ máy

sẽ được gọi là ngôn ngữ cấp 1 (L1) và ngôn ngữ vừa được hình thành gọi là ngôn ngữ cấp

2 (L2).

Tuy nhiên, trong thực tế, để có thể thực hiện được, các ngôn ngữ L1 và L2 không

được khác nhau nhiều. Như vậy, ngôn ngữ L2 cũng không thật sự giúp ích nhiều cho

người thiết kế. Do đó, một tập lệnh kế tiếp được hình thành sẽ hướng về con người nhiều

hơn là máy tính, tập lệnh này sẽ tạo thành một ngôn ngữ và ta gọi là ngôn ngữ L3. Ta có

thể viết các chương trình trong L3 như là đã tồn tại máy tính sử dụng ngôn ngữ L3 (máy

ảo L3). Các chương trình này sẽ được dịch sang ngôn ngữ L2 và được thực thi bằng một

chương trình dịch L2.

pdf 130 trang kimcuc 3240
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ thống tủ sách máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Hệ thống tủ sách máy tính

Giáo trình Hệ thống tủ sách máy tính
Giáo trình he thong
 download form www.geosoftvn.com
Tu sach MÁY TÍNH 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 1 
Chương 1 
KIẾN TRÚC VÀ HOẠT ĐỘNG CỦA HỆ VI XỬ LÝ / 
MÁY TÍNH 
1. Cấu trúc luận lý 
Máy tính số (Digital computer) là máy giải quyết các vấn đề bằng cách thực hiện 
các chỉ thị do con người cung cấp. Chuỗi các chỉ thị này gọi là chương trình (program). 
Các mạch điện tử trong một máy tính số sẽ thực hiện một số giới hạn các chỉ thị đơn giản 
cho trước. Tập hợp các chỉ thị này gọi là tập lệnh của máy tính. Tất cả các chương trình 
muốn thực thi đều phải được biến đổi sang tập lệnh trước khi được thi hành. Các lệnh cơ 
bản là: 
- Cộng 2 số. 
- So sánh với 0. 
- Di chuyển dữ liệu. 
Tập lệnh của máy tính tạo thành một ngôn ngữ giúp con người có thể tác động lên 
máy tính, ngôn ngữ này gọi là ngôn ngữ máy (machine language). Tuy nhiên, hầu hết các 
ngôn ngữ máy đều đơn giản nên để thực hiện một yêu cầu nào đó, người thiết kế phải 
thực hiện một công việc phức tạp. Đó là chuyển các yêu cầu này thành các chỉ thị có chứa 
trong tập lệnh của máy. Vấn đề này có thể giải quyết bằng cách thiết kế một tập lệnh mới 
thích hợp cho con người hơn tập lệnh đã cài đặt sẵn trong máy (built-in). Ngôn ngữ máy 
sẽ được gọi là ngôn ngữ cấp 1 (L1) và ngôn ngữ vừa được hình thành gọi là ngôn ngữ cấp 
2 (L2). 
Tuy nhiên, trong thực tế, để có thể thực hiện được, các ngôn ngữ L1 và L2 không 
được khác nhau nhiều. Như vậy, ngôn ngữ L2 cũng không thật sự giúp ích nhiều cho 
người thiết kế. Do đó, một tập lệnh kế tiếp được hình thành sẽ hướng về con người nhiều 
hơn là máy tính, tập lệnh này sẽ tạo thành một ngôn ngữ và ta gọi là ngôn ngữ L3. Ta có 
thể viết các chương trình trong L3 như là đã tồn tại máy tính sử dụng ngôn ngữ L3 (máy 
ảo L3). Các chương trình này sẽ được dịch sang ngôn ngữ L2 và được thực thi bằng một 
chương trình dịch L2. 
Việc xây dựng toàn bộ chuỗi các ngôn ngữ, mỗi ngôn ngữ được tạo ra sẽ thích hợp 
hơn ngôn ngữ trước đó sẽ có thể tiếp tục cho đến khi nhận được ngôn ngữ thích hợp nhất. 
Sơ đồ một máy ảo n cấp có thể biểu diễn như sau: 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 2 
Một máy tính số có n cấp có thể xem như có n-1 máy ảo khác nhau, mỗi máy ảo có 
một ngôn ngữ máy riêng. Các chương trình viết trên các máy ảo này không thể thực thi 
trực tiếp mà phải dịch thành các ngôn ngữ máy cấp thấp hơn. Chỉ có máy thật dùng ngôn 
ngữ máy L1 mới có thể thực thi trực tiếp bằng các mạch điện tử. Một lập trình viên sử 
dụng máy ảo cấp n không cần biết tất cả các trình dịch này. Chương trình trong máy ảo 
cấp n sẽ được thực thi bằng cách dịch thành ngôn ngữ máy cấp thấp hơn và ngôn ngữ máy 
này sẽ được dịch thành ngôn ngữ máy thấp hơn nữa hay dịch trực tiếp thành ngôn ngữ 
máy L1 và thực thi trực tiếp trên các mạch điện tử. 
Cấp n 
Cấp 3 
Cấp 2 
Cấp 1 
Máy ảo Mn dùng ngôn 
ngữ máy Ln 
Chương trình trong Ln được dịch thành 
ngôn ngữ của máy cấp thấp hơn 
Máy ảo M3 dùng ngôn 
ngữ máy L3 
Chương trình trong L3 được dịch thành 
ngôn ngữ L2 hay L1 
Máy ảo M2 dùng ngôn 
ngữ máy L2 
Chương trình trong L2 được dịch thành 
ngôn ngữ máy L1 
Máy tính số M1 dùng 
ngôn ngữ máy L1 
Chương trình trong L1 được thực thi trực 
tiếp bằng các mạch điện tử 
Hình 1.1. Máy ảo n cấp 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 3 
Về cơ bản, máy tính gồm có 6 cấp: 
Cấp 0 chính là phần cứng của máy tính. Các mạch điện tử của cấp này sẽ thực thi 
các chương trình ngôn ngữ máy của cấp 1. Trong cấp logic số, đối tượng quan tâm là các 
cổng logic. Các cổng này được xây dựng từ một nhóm các transistor. 
Cấp 1 là cấp ngôn ngữ máy thật sự. Cấp này có một chương trình gọi là vi chương 
trình (microprogram), vi chương trình có nhiệm vụ thông dịch các chỉ thị của cấp 2. Hầu 
hết các lệnh trong cấp này là di chuyển dữ liệu từ phần này đến phần khác của máy hay 
thực hiện việc một số kiểm tra đơn giản. 
Mỗi máy cấp 1 có một hay nhiều vi chương trình chạy trên chúng. Mỗi vi chương 
trình xác định một ngôn ngữ cấp 2. Các máy cấp 2 đều có nhiều điểm chung ngay cả các 
máy cấp 2 của các hãng sản xuất khác nhau. Các lệnh trên máy cấp 2 được thực thi bằng 
cách thông dịch bởi vi chương trình mà không phải thực thi trực tiếp bằng phần cứng. 
Cấp thứ 3 thường là cấp hỗn hợp. Hầu hết các lệnh trong ngôn ngữ của cấp máy 
này cũng có trong ngôn ngữ cấp 2 và đổng thời có thêm một tập lệnh mới, một tổ chức bộ 
Cấp 5 Cấp ngôn ngữ hướng vấn đề 
Dịch (chương trình dịch) 
Cấp 4 Cấp ngôn ngữ hợp dịch 
Dịch (hợp dịch) 
Cấp 3 Cấp hệ điều hành 
Dịch 1 phần (hệ điều hành) 
Cấp 2 Cấp máy quy ước 
Thông dịch (vi chương trình) 
Cấp 1 Cấp vi lập trình 
Vi chương trình (phần cứng) 
Cấp 0 Cấp logic số 
Hình 1.2 – Các cấp trên máy tính số 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 4 
nhớ khác và khả năng chạy 2 hay nhiều chương trình song song. Các lệnh mới thêm vào 
sẽ được thực thi bằng một trình thông dịch chạy trên cấp 2, gọi là hệ điều hành. Nhiều 
lệnh cấp 3 được thực thi trực tiếp do vi chương trình và một số lệnh khác được thông dịch 
bằng hệ điều hành (do đó, cấp này là cấp hỗn hợp). 
Cấp 4 thật sự là dạng tượng trưng cho một trong các ngôn ngữ. Cấp này cung cấp 
một phương pháp viết chương trình cho các cấp 1, 2, 3 dễ dàng hơn. Các chương trình 
viết bằng hợp ngữ được dịch sang các ngôn ngữ của cấp 1, 2, 3 và sau đó được thông dịch 
bằng các máy ảo hay thực tương ứng. 
Cấp 5 bao gồm các ngôn ngữ được thiết kế cho người lập trình nhằm giải quyết 
một vấn đề cụ thể. Các ngôn ngữ này được gọi là cấp cao. Một số ngôn ngữ cấp cao như 
Basic, C, Cobol, Fortran, Lisp, Prolog, Pascal và các ngôn ngữ lập trình hướng đối tượng 
như C++, J++,  Các chương trình viết bằng các ngôn ngữ này thường được dịch sang 
cấp 3 hay 4 bằng các trình biên dịch (compiler). 
2. Giao tiếp ngoại vi 
Ta phân biệt tất cả 3 phương pháp xuất / nhập dữ liệu: 
- Nhập / xuất bằng cách hỏi trạng thái của thiết bị ngoại vi (polling) 
- Nhập / xuất bằng ngắt (interrupt). 
- Nhập / xuất bằng cách truy xuất trực tiếp vào bộ nhớ dùng các phần cứng phụ 
trợ (DMA). 
2.1. Nhập / xuất dữ liệu bằng cách hỏi vòng (polling) 
Ta biết rằng vấn đề điều khiển nhập / xuất dữ liệu sẽ rất đơn giản trong trường hợp 
thiết bị ngoại vi lúc nào cũng có thể làm việc với μP. Ta có thể ví dụ như bộ hiển thị Led 
7 đoạn lúc nào cũng sẵn sàng hiển thị dữ liệu khi mà μP gởi dữ liệu ra. Tuy nhiên, trong 
thực tế, không phải lúc nào μP cũng làm việc với các thiết bị ngoại vi có tính năng như 
trên. Ví dụ như khi làm việc với một máy in, μP yêu cầu in nhưng máy in không sẵn sàng 
(giả sử như hết giấy, kẹt giấy, ). Khi đó, μP phải kiểm tra xem một thiết bị mà nó cần 
giao tiếp có sẵn sàng hay không nếu thiết bị sẵn sàng thì mới thực hiện trao đổi dữ liệu. 
Để kiểm tra các thiết bị ngoại vi, μP phải sử dụng các tín hiệu bắt tay (handshake) xác 
định tuần tự từng thiết bị, xem thiết bị nào có yêu cầu trao đổi dữ liệu. Các tín hiệu này 
lấy từ các mạch giao tiếp do người thiết kế tạo ra. 
Giả sử hệ thống có 2 thiết bị ngoại vi, nếu thiết bị 1 có dữ liệu cần truyền đến μP 
thì nó sẽ gởi 1 xung để chốt dữ liệu đồng thời tạo tín hiệu sẵn sàng cho thiết bị. Khi μP 
kiểm tra tín hiệu sẵn sàng của thiết bị 1 thì nó sẽ đọc dữ liệu vào từ mạch chốt và xoá tín 
hiệu sẵn sàng. 
Trong trường hợp μP muốn gởi dữ liệu ra thiết bị 2, nó sẽ đọc tín hiệu sẵn sàng của 
thiết bị 2, nếu thiết bị 2 có thể nhận dữ liệu thì μP sẽ gởi dữ liệu ra mạch chốt và thiết bị 2 
sẽ đọc dữ liệu vào. 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 5 
2.2. Ngắt và xử lý ngắt 
Trong cách thức thực hiện trao đổi dữ liệu bằng cách hỏi vòng như trên, trước khi 
tiến hành thực hiện thì μP phải kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi. Tuy 
nhiên trong thực tế ta cần phải tận dụng khả năng của μP để làm các công việc khác mà 
không phải tốn thời gian kiểm tra thiết bị, chỉ khi nào có yêu cầu trao đổi dữ liệu thì mới 
tạm dừng công việc hiện tại. Cách làm việc như vậy gọi là ngắt μP, khi có một ngắt xảy ra 
thì ta phải thực hiện gọi các chương trình phục vụ ngắt tại các địa chỉ xác định của μP. 
Các tín hiệu ngắt từ thiết bị ngoại vi đưa vào μP thông qua các chân NMI hay INTR. 
2.2.1. Các loại ngắt 
™ Ngắt cứng: là các yêu cầu ngắt từ các chân NMI hay INTR. 
Ngắt cứng NMI là ngắt không che được còn ngắt cứng INTR có thể che được. Các 
lệnh CLI (Clear Interrupt) và STI (Set Interrupt) chỉ ảnh hưởng đến việc μP có chấp nhận 
yêu cầu ngắt tại chân INTR hay không. Yêu cầu ngắt tại chân INTR có thể có các kiểu 
ngắt từ 00h ÷ FFh. Kiểu ngắt này sẽ được đưa vào bus dữ liệu để μP xác định kiểu ngắt 
(dùng cho các thiết bị ngoại vi khác nhau). 
™ Ngắt mềm: là các ngắt thực hiện bằng phần mềm tác động do người sử dụng. 
2.2.2. Đáp ứng của μP khi có yêu cầu ngắt 
Khi có yêu cầu ngắt đến μP và nếu được phép ngắt, μP sẽ thực hiện các công việc 
sau: 
- [SP] ← SP – 2, [SP] ← FR (Flag Register): cất thanh ghi cờ vào stack. 
- IF ← 0, TF ← 0: không cho thực hiện các ngắt khác. 
- SP ← SP – 2, [SP] ← CS: cất địa chỉ đoạn mã vào stack. 
- SP ← SP – 2, [SP] ← IP: cất địa chỉ trở về sau khi phục vụ ngắt 
74LS245
2
3
4
5
6
7
8
9
19
1
18
17
16
15
14
13
12
11
A1
A2
A3
A4
A5
A6
A7
A8
G
DIR
B1
B2
B3
B4
B5
B6
B7
B8
INT2
INT1
INT7
INT5
VCC
INT6
INT4
INT0
1
2
3
4
5
6
11
12
8
INT3
8086
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
GND
AD14
AD13
AD12
AD11
AD10
AD9
AD8
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
NMI
INTR
CLK
GND RESET
READY
TEST
INTA (QS1)
ALE (QS0)
DEN (S0)
DT/R (S1)
IO/M (S2)
WR (LOCK)
HLDA (RQ/GT1)
HOLD (RQ/GT0)
RD
MN/MX
BHE/S7
A19/S6
A18/S5
A17/S4
A16/S3
AD15
VCC
Hình 1.3 – Kết nối ngắt đơn giản 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 6 
- IP ← [Số_hiệu_ngắt*4], CS ← [Số_hiệu_ngắt*4 + 2]: lấy lệnh tại địa chỉ phục 
vụ ngắt tương ứng 
- Sau khi kết thúc chương trình con phục vụ ngắt (khi gặp lệnh IRET): 
+ IP ← [SP], SP ← SP + 2 
+ CS ← [SP], SP ← SP + 2: lấy lại địa chỉ trước khi gọi chương trình phục vụ 
ngắt 
+ FR ← [SP], SP ← SP + 2: lấy lại giá trị thanh ghi cờ 
2.2.3. Xử lý ưu tiên ngắt 
Như ta đã biết ở trên, khi μP đang thực hiện lệnh, nếu có ngắt xảy ra thì μP sẽ tạm 
ngừng chương trình và thực thi chương trình con phục vụ ngắt. Trong thực tế sẽ có trường 
hợp có nhiều yêu cầu ngắt khác nhau cùng một lúc, khi đó μP sẽ phục vụ cho ngắt theo 
thứ tự ưu tiên với nguyên tắc là ngắt nào có mức ưu tiên cao nhất thì sẽ phục vụ cho ngắt 
đó trước. 
Các mức ưu tiên của các ngắt (từ mức thấp nhất đến mức cao nhất): 
- Ngắt thực hiện chạy từng lệnh (INT 1) 
- Ngắt che được INTR 
- Ngắt không che được NMI 
- Ngắt nội bộ (INT 0: xảy ra do phép chia số 0, ngắt mềm) 
2.3. Nhập / xuất dữ liệu bằng DMA (Direct Memory Access) 
Trong các phương thức trao đổi dữ liệu như hai phần trên đã trình bày thì việc trao 
đổi dữ liệu giữa thiết bị ngoại vi và hệ thống thường theo trình tự sau: từ ngoại vi đến vi 
xử lý rồi đi vào bộ nhớ hay từ bộ nhớ đến vi xử lý rồi ghi ra ngoại vi. Trong thực tế sẽ 
có trường hợp ta cần thực hiện trao đổi dữ liệu ngay giữa ngoại vi và bộ nhớ. Khi đó 
người ta đưa ra cơ chế truy xuất bộ nhớ trực tiếp (DMA). Để thực hiện được vấn đề này, 
các hệ vi xử lý thông thường dùng thêm các mạch chuyên dụng để điều khiển quá trình 
truy xuất bộ nhớ trực tiếp (DMAC – Direct Memory Access Controller). Có tất cả 3 cơ 
chế hoạt động: 
¾ Tận dụng thời gian CPU không dùng bus: 
Ta phải dùng thêm mạch phát hiện các chu kỳ xử lý nội của CPU và tận dụng các 
chu kỳ này để thực hiện trao đổi dữ liệu. 
¾ Treo CPU để trao đổi từng byte: 
CPU không bị treo trong khoảng thời gian dài mà chỉ bị treo trong thời gian ngắn 
đủ để trao đổi 1 byte dữ liệu giữa bộ nhớ và ngoại vi. Do đó, công việc của CPU không bị 
gián đoạn mà chỉ bị chậm đi. 
¾ Treo CPU một khoảng thời gian để trao đổi một khối dữ liệu: 
Trong cơ chế này, CPU bị treo trong suốt quá trình trao đổi dữ liệu. 
- CPU ghi từ lệnh và từ chế độ làm việc vào DMAC. 
- Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó gởi tín hiệu DRQ = 1 
(DMA Request) đến DMAC. 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 7 
- DMAC gởi tín hiệu HRQ (Hold Request) đến chân HOLD của CPU để yêu cầu 
treo CPU. Tín hiệu này sẽ giữ ở mức cao cho đến hết quá trình trao đổi dữ liệu. 
- Sau khi nhận yêu cầu treo, CPU sẽ thực hiện hết chu kỳ bus của m?nh rồi treo 
các bus và gởi tín hiệu HLDA (Hold Acknowledge) để báo cho DMAC biết có 
thể sử dụng các bus. 
- DMAC chuyển dữ liệu từ bộ nhớ đến ngoại vi bằng cách: đưa địa chỉ byte đầu 
tiên ra bus địa chỉ và đưa tín hiệu MEMR để đọc 1 byte từ bộ nhớ, kế tiếp 
DMAC đưa tín hiệu IOW để ghi dữ liệu ra ngoại vi. Sau đó, DMAC giảm số 
byte cần truyền, cập nhật địa chỉ bộ nhớ và lặp lại quá trình cho đến khi hết 
byte cần truyền. 
Hình 1.4 – Giao tiếp DMAC với hệ vi xử lý 
Hai tín hiệu dùng để yêu cầu treo và chấp nhận yêu cầu treo CPU dùng cho cơ chế 
DMA là HOLD và HLDA có thể mô tả như sau: 
Hình 1.5 – Tín hiệu HOLD và HLDA 
μP 
DMAC 
HRQ 
HACK
HOLD 
HLDA 
I/O 
DRQ
DACK
DRQ 
DACK
Memory 
Address bus 
Data bus 
Control bus 
CLK 
HOLD 
HLDA 
T4 hay T1 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Trang 8 
3. Bus 
Hình 1.6 - Các bus trong một hệ thống máy tính 
Bus là đường truyền tín hiệu điện nối các thiết bị khác nhau trong một hệ thống 
máy tính. Bus thường có từ 50 đến 100 dây dẫn được gắn trên mainboard, trên các dây 
này có các đầu nối đưa ra, các đầu này được sắp xếp và cách nhau những khoảng quy 
định để có thể cắm vào đó những I/O board hay board bộ nhớ (bus hệ thống – system 
bus). 
Cũng có những bus dùng cho mục đích chuyên biệt, thí dụ nối 1 vi xử lý với 1 hay 
nhiều vi xử lý khác hoặc nối với bộ nhớ cục bộ (local bus). 
Trong vi xử lý cũng có một số bus để nối các thành phần bên trong của bộ vi xử lý 
với nhau. Người thiết kế chip vi xử lý có thể tuỳ ý lựa chọn loại bus bên trong nó, còn với 
các bus liên hệ bên ngoài cần phải xác định rõ các quy tắc làm việc cũng như các đặc 
điểm kỹ thuật về điện và cơ khí của bus để người thiết kế mainboard có thể ghép nối chip 
vi xử lý với các thiết bị khác. Nói cách khác, các bus này phải tuân theo 1 chuẩn nào đó. 
Tập các quy tắc của chuẩn còn được gọi là giao thức bus (bus protocol) 
Thường có nhiều thiết bị nối với bus, một số thiết bị là tích cực (active) có thể đòi 
hỏi truyền thông trên bus, trong khi đó có các thiết bị thụ động chờ yêu cầu từ các thiết bị 
khác. Các thiết bị tích cực được gọi là chủ (master) còn thiết bị thụ động là tớ (slave). 
Ví dụ: Khi CPU ra lệnh cho bộ điều khiển đĩa đọc/ghi một khối dữ liệu thì CPU là 
master còn bộ điều khiển đĩa là slave. Tuy nhiên, bộ điều khiển đĩa ra lệnh cho bộ nhớ 
nhận dữ liệu thì nó lại giữ vai trò master. 
CPU 
Registers 
 ALU 
Đồng xử lý 
Memory 
board 
I/O 
board 
Bus cục bộ 
(local bus)
Bus nội (on-chip bus) 
Bus hệ thống (system bus) 
Tài liệu Lập trình hệ thống Chương 1 
Phạm Hùng Kim Khánh Tran ...  của đường 
truyền và sử dụng dây xoắn đôi. 
Hình 4.13 – Chuẩn giao tiếp RS422 
Hình 4.14 – Chuẩn giao tiếp RS485 
Các đặc tính kỹ thuật: 
Đặc tính RS422 RS485 
Số thiết bị truyền 1 32 
Số thiết bị nhận 10 32 
Tài liệu Lập trình hệ thống Chương 4 
Phạm Hùng Kim Khánh Trang 115 
Chiều dài cable cực đại 1200m 1200m 
Tốc độ truyền cực đại (từ 12 – 1200m) 10Mps – 100Kbps 10Mps – 100Kbps
Điện áp cực đại tại ngõ ra thiết bị truyền -0.25V ÷ 6V -7V ÷ 12V 
Điện áp ngõ vào thiết bị nhận -10V ÷ 10V -7V ÷ 12V 
Đối với chuẩn RS232, khoảng cách truyền không cho phép đi xa nên khi muốn thực 
hiện truyền ở khoảng cách xa thì phải chuyển từ RS232 sang chuẩn RS485 để truyền đi và 
sau đó chuyển từ RS485 sang RS232 để máy tính có thể nhận dạng được. Sơ đồ mạch 
chuyển đổi từ RS232 sang RS485 và ngược lại mô tả như sau: 
Hình 4.15 – Chuyển đổi từ RS323 sang RS485 và ngược lại 
RO
1
DI
4
RE
2DE
3
A
6
B
7
MAX485
120
120
VCC
1
2
3
4
5
6
7
8
CON8
R1IN
13
R
2I
N
8
T1IN
11
T
2I
N
10
C+
1
C1-
3
C2+
4
C2-
5V+
2
V-
6
R1OUT
12
R
2O
U
T
9
T1OUT
14
T
2O
U
T
7
MAX2325
9
4
8
3
7
2
6
1
DB9 10u
10u
10u
VCC
10u
10u
RO
1
DI
4
RE
2 DE
3
A
6
B
7
MAX485
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 116 
Chương 5 
GIAO TIẾP CỐNG SONG SONG 
1. Cấu trúc cổng song song 
Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ liệu 
bao gồm 5 chế độ hoạt động: 
- Chế độ tương thích (compatibility). 
- Chế độ nibble. 
- Chế độ byte. 
- Chế độ EPP (Enhanced Parallel Port). 
- Chế độ ECP (Extended Capabilities Port). 
3 chế độ đầu tiên sử dụng port song song chuẩn (SPP – Standard Parallel Port) trong 
khi đó chế độ 4, 5 cần thêm phần cứng để cho phép hoạt động ở tốc độ cao hơn. Sơ đồ chân 
của máy in như sau: 
Chân Tín hiệu Mô tả 
1 STR (Out) Mức tín hiệu thấp, truyền dữ liệu tới máy in 
2 D0 Bit dữ liệu 0 
3 D1 Bit dữ liệu 1 
4 D2 Bit dữ liệu 2 
5 D3 Bit dữ liệu 3 
6 D4 Bit dữ liệu 4 
7 D5 Bit dữ liệu 5 
8 D6 Bit dữ liệu 6 
9 D7 Bit dữ liệu 7 
10 ACK (In) Mức thấp: máy in đã nhận 1 ký tự và có khả năng 
nhận nữa 
11 BUSY (In) Mức cao: ký tự đã được nhận; bộ đệm máy in đầy; 
khởi động máy in; máy in ở trạng thái off-line. 
12 PAPER EMPTY (In) Mức cao: hết giấy 
13 SELECT (In) Mức cao: máy in ở trạng thái online 
14 AUTOFEED (Out) Tự động xuống dòng; mức thấp: máy in xuống 
dòng tự động 
15 ERROR (In) Mức thấp: hết giấy; máy in ở offline; lỗi máy in 
16 INIT (Out) Mức thấp: khởi động máy in 
17 SELECTIN (Out) Mức thấp: chọn máy in 
18-25 GROUND 0V 
Cổng song song có ba thanh ghi có thể truyền dữ liệu và điều khiển máy in. Địa chỉ 
cơ sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4 được lưu trữ 
trong vùng dữ liệu của BIOS. Thanh ghi dữ liệu được định vị ở offset 00h, thanh ghi trang 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 117 
thái ở 01h, và thanh ghi điều khiển ở 02h. Thông thường, địa chỉ cơ sở của LPT1 là 378h, 
LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h hoặc 279h và địa chỉ thanh ghi 
điều khiển là 37Ah hoặc 27Ah. Tuy nhiên trong một số trường hợp, địa chỉ của cổng song 
song có thể khác do quá trình khởi động của BIOS. BIOS sẽ lưu trữ các địa chỉ này như sau: 
Địa chỉ Chức năng 
0000h:0408h Địa chỉ cơ sở của LPT1
0000h:040Ah Địa chỉ cơ sở của LPT2
0000h:040Ch Địa chỉ cơ sở của LPT3
 Định dạng các thanh ghi như sau: 
Thanh ghi dữ liệu (hai chiều): 
 7 6 5 4 3 2 1 0 
Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0 
Chân số 9 8 7 6 5 4 3 2 
Thanh ghi trạng thái máy in (chỉ đọc): 
 7 6 5 4 3 2 1 0
Tín hiệu máy in BUSY ACK PAPER EMPTY SELECT ERROR IRQ x x
Số chân cắm 11 10 12 13 15 - - - 
Thanh ghi điều khiển máy in: 
 7 6 5 4 3 2 1 0 
Tín hiệu 
máy in 
x x DIR IRQ 
Enable 
SELECTIN INIT AUTOFEED STROBE
Số chân cắm - - - - 17 16 14 1 
x: không sử dụng 
IRQ Enable: yêu cầu ngắt cứng; 1 = cho phép; 0 = không cho phép 
Chú ý rằng chân BUSY được nối với cổng đảo trước khi đưa vào thanh ghi trạng 
thái, các bit SELECTIN , AUTOFEED và STROBE được đưa qua cổng đảo trước khi đưa 
ra các chân của cổng máy in. 
Thông thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn PC 
nhiều nên các đường ACK , BUSY và STR được sử dụng cho kỹ thuật bắt tay. Khởi đầu, 
PC đặt dữ liệu lên bus sau đó kích hoạt đường STR xuống mức thấp để thông tin cho máy 
in biết rằng dữ liệu đã ổn định trên bus. Khi máy in xử lý xong dữ liệu, nó sẽ trả lại tín hiệu 
ACK xuống mức thấp để ghi nhận. PC đợi cho đến khi đường BUSY từ máy in xuống thấp 
(máy in không bận) thì sẽ đưa tiếp dữ liệu lên bus. 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 118 
2. Giao tiếp với thiết bị ngoại vi 
2.1. Giao tiếp với máy tính 
Quá trình giao tiếp với cổng song song dùng 2 chế độ: chế độ chuẩn SPP và chế độ 
mở rộng. Việc giao tiếp ở chế độ chuẩn mô tả như sau: 
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
Hình 5.1 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ chuẩn 
Sơ đồ chân kết nối mô tả như sau: 
PC1 PC2 
Chức năng Chân Chân Chức năng 
D0 2 15 ERROR 
D1 3 13 SELECT 
D2 4 12 PAPER EMPTY 
D3 5 10 ACK 
D4 6 11 BUSY 
BUSY 11 6 D4 
ACK 10 5 D3 
PAPER EMPTY 12 4 D2 
SELECT 13 3 D1 
ERROR 15 2 D0 
GND 25 25 GND 
Ngoài ra, việc kết nối giữa 2 máy tính sử dụng cổng song song có thể dùng chế độ 
mở rộng, chế độ này cho phép giao tiếp với tốc độ cao hơn. 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 119 
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
Hình 5.2 - Trao đổi dữ liệu qua cổng song song giữa 2 PC dùng chế độ mở rộng 
Sơ đồ chân kết nối mô tả như sau: 
PC1 PC2 
Chức năng Chân Chân Chức năng 
D0 2 2 D0 
D1 3 3 D1 
D2 4 4 D2 
D3 5 5 D3 
D4 6 6 D4 
D5 7 7 D5 
D6 8 8 D6 
D7 9 9 D7 
SELECT 13 17 SELECTIN
BUSY 11 16 INIT 
ACK 10 1 STROBE 
SELECTIN 17 13 SELECT 
INIT 16 11 BUSY 
STROBE 1 10 ACK 
2.2. Giao tiếp thiết bị khác 
Quá trình giao tiếp với các thiết bị ngoại vi có thể thực hiện thông qua chế độ chuẩn. 
Để đọc dữ liệu, có thể dùng một IC ghép kênh 2Æ1 74LS257 và dùng 4 bit trạng thái của 
cổng song song còn xuất dữ liệu thì sử dụng 8 đường dữ liệu D0 – D7. 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 120 
12
3
4
5
6
7
8
9
10K
D0
3
D1
4
D2
7
D3
8
D4
13
D514
D6
17
D7
18
OE
1
CLK11
Q0
2
Q1
5
Q2
6
Q3
9
Q4
12
Q5 15
Q6
16
Q7
19
74LS374
SW0-7
9 8
74LS06
VCC
STROBE
PAPER EMPTY
ACK
D0
3
D1
4
D2
7
D3
8
D4 13
D5
14
D6
17
D7
18
OE
1
CLK
11
Q0
2
Q1
5
Q2
6
Q3
9
Q412
Q5
15
Q6
16
Q7
19
74LS374
13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
G
15A/B
1
1Y
4
2Y
7
3Y
9
4Y
12
1A
2
2A
5
3A
11
4A
14
1B
3
2B
6
3B
10
4B 13
74LS257
12
3
4
5
6
7
8
9
10K1
VCC
12
74LS06
3 4
74LS06
5 6
74LS06
BUSY
SELECT
SELECT IN
AUTO FEED
Hình 5.3 – Mạch giao tiếp đơn giản thông qua cổng máy in 
Giao diện: 
Hình 5.4 – Giao diện của chưnơg trình giao tiếp với cổng máy in 
Chương trình giao tiếp trên VB sử dụng thư viện liên kết động để trao đổi dữ liệu với 
cổng máy in. Thư viện IO.DLL bao gồm các hàm sau: 
- Hàm PortOut: xuất 1 byte ra cổng 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 121 
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port 
As Integer, ByVal Data As Byte) 
Port: địa chỉ cổng, Data: dữ liệu xuất 
- Hàm PortWordOut: xuất 1 word ra cổng 
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal 
Port As Integer, ByVal Data As Integer) 
- Hàm PortDWordOut: xuất 1 double word ra cổng 
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal 
Port As Integer, ByVal Data As Long) 
- Hàm PortIn: nhập 1 byte từ cổng, trả về giá trị nhập 
Private Declare Function PortIn Lib "IO.DLL" (ByVal 
Port As Integer) As Byte 
- Hàm PortWordIn: nhập 1 word từ cổng 
Private Declare Function PortWordIn Lib "IO.DLL" 
(ByVal Port As Integer) As Integer 
- Hàm PortDWordIn: nhập 1 double word từ cổng 
Private Declare Function PortDWordIn Lib "IO.DLL" 
(ByVal Port As Integer) As Long 
Chương trình nguồn: 
VERSION 5.00 
Begin VB.Form Form1 
 Caption = "Printer Interface Example" 
 ClientHeight = 4665 
 ClientLeft = 60 
 ClientTop = 345 
 ClientWidth = 3585 
 LinkTopic = "Form1" 
 ScaleHeight = 4665 
 ScaleWidth = 3585 
 StartUpPosition = 3 'Windows Default 
 Begin VB.CommandButton cmdReceive 
 Caption = "Receive" 
 Height = 495 
 Left = 1200 
 TabIndex = 18 
 Top = 3960 
 Width = 1095 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 122 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 7 
 Left = 1800 
 TabIndex = 17 
 Top = 3480 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 6 
 Left = 1800 
 TabIndex = 16 
 Top = 3000 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 5 
 Left = 1800 
 TabIndex = 15 
 Top = 2520 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 4 
 Left = 1800 
 TabIndex = 14 
 Top = 2040 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 3 
 Left = 1800 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 123 
 TabIndex = 13 
 Top = 1560 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 2 
 Left = 1800 
 TabIndex = 12 
 Top = 1080 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 1 
 Left = 1800 
 TabIndex = 11 
 Top = 600 
 Width = 1575 
 End 
 Begin VB.CheckBox chkSW 
 Height = 375 
 Index = 0 
 Left = 1800 
 TabIndex = 10 
 Top = 120 
 Width = 1575 
 End 
 Begin VB.CommandButton cmdExit 
 Caption = "Exit" 
 Height = 495 
 Left = 2400 
 TabIndex = 9 
 Top = 3960 
 Width = 975 
 End 
 Begin VB.CommandButton cmdSend 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 124 
 Caption = "Send" 
 Height = 495 
 Left = 0 
 TabIndex = 8 
 Top = 3960 
 Width = 1095 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED7" 
 Height = 375 
 Index = 7 
 Left = 240 
 TabIndex = 7 
 Top = 3480 
 Width = 1095 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED6" 
 Height = 375 
 Index = 6 
 Left = 240 
 TabIndex = 6 
 Top = 3000 
 Width = 975 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED5" 
 Height = 375 
 Index = 5 
 Left = 240 
 TabIndex = 5 
 Top = 2520 
 Width = 975 
 End 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 125 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED4" 
 Height = 375 
 Index = 4 
 Left = 240 
 TabIndex = 4 
 Top = 2040 
 Width = 975 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED3" 
 Height = 375 
 Index = 3 
 Left = 240 
 TabIndex = 3 
 Top = 1560 
 Width = 975 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED2" 
 Height = 375 
 Index = 2 
 Left = 240 
 TabIndex = 2 
 Top = 1080 
 Width = 975 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED1" 
 Height = 375 
 Index = 1 
 Left = 240 
 TabIndex = 1 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 126 
 Top = 600 
 Width = 975 
 End 
 Begin VB.Label lblLED 
 BackStyle = 0 'Transparent 
 Caption = "LED0" 
 Height = 375 
 Index = 0 
 Left = 240 
 TabIndex = 0 
 Top = 120 
 Width = 975 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 7 
 Left = 840 
 Shape = 3 'Circle 
 Top = 3480 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 6 
 Left = 840 
 Shape = 3 'Circle 
 Top = 3000 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 127 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 5 
 Left = 840 
 Shape = 3 'Circle 
 Top = 2520 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 4 
 Left = 840 
 Shape = 3 'Circle 
 Top = 2040 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 3 
 Left = 840 
 Shape = 3 'Circle 
 Top = 1560 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 2 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 128 
 Left = 840 
 Shape = 3 'Circle 
 Top = 1080 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 1 
 Left = 840 
 Shape = 3 'Circle 
 Top = 600 
 Width = 375 
 End 
 Begin VB.Shape shpLED 
 BorderColor = &H000000FF& 
 FillColor = &H000000FF& 
 FillStyle = 0 'Solid 
 Height = 375 
 Index = 0 
 Left = 840 
 Shape = 3 'Circle 
 Top = 120 
 Width = 375 
 End 
End 
Attribute VB_Name = "Form1" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 
'IO.DLL 
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port 
As Integer, ByVal Data As Byte) 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 129 
Private Declare Function PortIn Lib "IO.DLL" (ByVal 
Port As Integer) As Byte 
'Variable 
Private BA_LPT As Integer 
Private Sub cmdExit_Click() 
End 
End Sub 
Private Sub cmdReceive_Click() 
Dim n As Integer 
Dim n1 As Integer 
Dim i As Integer 
PortOut BA_LPT + 2, &H8 'SELECTIN = 1 
PortOut BA_LPT + 2, 0 'SELECTIN = 0 
n1 = PortIn(BA_LPT + 1) 'Doc 4 bit thap 
n1 = n1 / &H10 'Dich phai 4 bit 
PortOut BA_LPT + 2, 2 'AUTOFEED=1 
n = PortIn(BA_LPT + 1) 'Doc 4 bit cao 
n = n And &HF0 
n = n + n1 
 For i = 0 To 7 
 chkSW(i).Value = n Mod 2 
 If chkSW(i).Value = 0 Then 
 chkSW(i).Caption = "Switch " & Str(i) & 
" off" 
 Else 
 chkSW(i).Caption = "Switch " & Str(i) & 
" on" 
 End If 
 n = Fix(n / 2) 
 Next i 
End Sub 
Private Sub cmdSend_Click() 
Dim t As Integer 
Dim i As Integer 
Tài liệu Lập trình hệ thống Chương 5 
Phạm Hùng Kim Khánh Trang 130 
Dim s As String 
t = 0 
For i = 0 To 7 
 t = t + (2 ^ i) * (1 - shpLED(i).FillStyle) 
Next i 
PortOut BA_LPT, t 
PortOut BA_LPT, 1 'STROBE = 1 
PortOut BA_LPT, 0 'STROBE = 0 
End Sub 
Private Sub Form_Load() 
BA_LPT = &H378 
PortOut BA_LPT + 2, 0 
End Sub 
Private Sub lblLED_Click(Index As Integer) 
shpLED(Index).FillStyle = 1 - 
shpLED(Index).FillStyle 
End Sub 

File đính kèm:

  • pdfgiao_trinh_he_thong_tu_sach_may_tinh.pdf