BÀI GIẢNG KỸ THUẬT VI XỬ LÝ
NGÀNH ĐIỆN TỬ-VIỄN THÔNG
ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
CỦA HỒ VIẾT VIỆT, KHOA ĐTVT
Tài liệu tham khảo
[1] Kỹ thuật vi xử lý, Văn Thế Minh, NXB Giáo dục, 1997
[2] Kỹ thuật vi xử lý và Lập trình Assembly cho hệ vi xử
lý, Đỗ Xuân Tiến, NXB Khoa học & kỹ thuật, 2001
CHƯƠNG 6
CÁC KIỂU I/O
6.1 Thăm dò (Polling)
6.2 I/O điều khiển bằng ngắt (Interrupt)
-
6.3 DMA (Direct Memory Access)
THĂM DÒ
A19
5V
A18
:
A0
8088
Minimum
Mode
D7
A0
B0
D6
D5
D4
D3
A1
A2
A3
A4
B1
B2
B3
B4
D2
D1
D0
A5
A6
A7
74LS245 B5
E
IOR
B6
B7
DIR
mov
L1: in
cmp
je
IOW
A A A A A A A A A A A A A A A A IOR
1111119876543210
543210
dx, F000
al, dx
al, FF
L1
:
:
A19
A18
:
5V
THE CIRCUIT
A0
D7
D6
D5
D4
D3
8088
Minimum
Mode
D2
D1
D0
A0
B0
A1
B1
A2
B2
A3
B3
A4
B4
74LS245
A5
B5
A6
A7
B6
B7
E
DIR
D0
Q0
D1
Q1
D2
Q2
D3
Q3
D4
Q4
D574LS373
Q5
D6
Q6
D7
Q7
IOR
IOW
A A A A A A A A A A A A A A A A IOR
1111119876543210
543210
LE
AAAAAAAAAAAAAAAAIOW
1111119876543210
543210
OE
BÀI TOÁN
Chƣơng trình tạo ra hiệu ứng “LED chạy”:
- Ban đầu LED chạy từ trên xuống
- Khi nhấn phím thấp nhất thì LED thay đổi
hƣớng chạy
- Khi nhấn phím cao nhất thì chƣơng trình
kết thúc
CHƢƠNG TRÌNH
L1:
L2:
L3:
mov
mov
mov
out
mov
dec
jnz
cmp
jne
rol
cmp
jne
jmp
ror
cmp
jne
dx,
ah,
al,
dx,
cx,
cx
L2
ah,
L3
al,
al,
L1
L4
al,
al,
L1
F000
00
01
al
FFFF
L4:
00
1
01
L5:
L6:
1
80
L7:
mov bl,
in
al,
cmp al,
je L6
test al,
jnz L5
xor ah,
jmp L6
test al,
jz
L7
mov al,
jmp L1
al
dx
FF
01
FF
80
bl
KHUYẾT ĐIỂM CỦA THĂM DÒ
Tốn nhiều thời gian
NgƣờI sử dụng có thể nhả phím trƣớc khi
lệnh in al, dx đƣợc thực hiện, do đó bộ
vi xi xử lý sẽ không biết rằng ngƣờI sử dụng
đã nhấn phím
Làm sao để khắc phục các khuyết điểm đó?
KHUYẾT ĐIỂM CỦA THĂM DÒ
L1:
L2:
L3:
mov
mov
mov
out
mov
dec
jnz
cmp
jne
rol
cmp
jne
jmp
ror
cmp
jne
dx,
ah,
al,
dx,
cx,
cx
L2
ah,
L3
al,
al,
L1
L4
al,
al,
L1
F000
00
01
al
FFFF
L4:
00
1
01
L5:
L6:
1
80
L7:
mov bl,
in
al,
cmp al,
je L6
test al,
jnz L5
xor ah,
jmp L6
test al,
jz
L7
mov al,
jmp L1
al
dx
FF
01
FF
80
bl
NGẮT LÀ GÌ?
THĂM DÒ
instruction
While studying, I’ll
check the bucket every
5 minutes to see if it is
already full so that I can
transfer the content of
the bucket to the drum.
P
THĂM DÒ
Input Memory
Device
NGẮT
instruction
I’ll just study. When the
speaker starts playing
music it means that the
bucket is full. I can
then transfer the
content of the bucket to
the drum.
Interrupt
request
P
INTERRUPT
Input Memory
Device
INTERRUPT- NGẮT
Bộ vi xử lý không cần phải kiểm tra tính sẵn
sàng của thiết bị I/O.
Các thiết bị I/O sẽ báo cho vi xử lý biết khi
chúng đã sẵn sàng
Bộ vi xử lý có thể làm công việc khác khi
thiết bị I/O không có nhu cầu trao đổI dữ liệu
INTERRUPT- NGẮT
Một số thuật ngữ cần nhớ:
Yêu
cầu ngắt
Đầu vào ngắt
Đầu ra chấp nhận ngắt
Chƣơng trình con phục vụ ngắt
Vector ngắt
Số ngắt
Bảng các vector ngắt
INTERRUPT SERVICE ROUTINE (ISR) - CHƢƠNG TRÌNH CON PHỤC VỤ NGẮT
INTERRUPT VECTOR - VECTOR NGẮT
Là chƣơng trình đƣợc thực hiện khi có một
yêu cầu ngắt đƣợc chấp nhận
Kết thúc bằng lệnh IRET
Địa chỉ của chƣơng trình con phục vụ ngắt
Bao gồm 4 byte:
2
byte cho địa chỉ Offset
2 byte cho địa chỉ Segment
INTERRUPT VECTOR NUMBER
SỐ NGẮT
Là một số đƣợc dùng để phân biệt các yếu
cầu ngắt. Bởi vì có thể có nhiều hơn một
thiết bị phát yêu cầu ngắt đến bộ vi xử lý cho
nên để cho bộ vi xử lý có thể nhận biết đƣợc
thiết bị thì mỗI thiết bị sẽ đƣợc gán cho một
số ngắt
Trong hệ thống 8088, co thể có đến 256 số
ngắt (từ 00h đến FFh)
INTERRUPT VECTOR TABLE
BẢNG CÁC VECTOR NGẮT
Là vùng nhớ đƣợc dành riêng để lƣu trữ các
vector ngắt
Có thể xem nhƣ là một mảng các vector ngắt
Mảng
này có 256 phần tử
Mỗi phần tử gồm 4 byte: 2 byte đầu lƣu địa chỉ
offset, 2 byte sau lƣu địa chỉ segment
Các vector ngắt đƣợc lƣu trữ theo trật tự tăng
dần của số ngắt
BẢNG CÁC VECTOR NGẮT
PHẢN ỨNG CỦA VI XỬ LÝ KHI KHÔNG
CÓ NGẮT
1.
2.
3.
4.
5.
Khi bật công tấc nguồn hoặc nhấn nút reset.
Bộ vi xử lý được khởi động:
(IP) = 0000h
(CS) = FFFFh
IF = 0
Bộ vi xử lý tìm và lấy 1 byte lệnh.
IP tăng lên 1.
Bộ vi xử lý giải mã và thực hiện lệnh nếu tất cả các byte lệnh của
một lệnh đã được lấy.
Quay trỏ lại bước 2.
PHẢN ỨNG CỦA VI XỬ LÝ KHI CÓ
NGẮT
6.
7.
8.
Thiết bị I/O đưa yêu cầu ngắt đến bộ vi xử lý bằng cách làm cho
đầu vào ngắt INTR chuyển sang mức cao.
Bộ vi xử lý sẽ hoàn thành lệnh đang thực hiện trước khi chấp
nhận ngắt
Bộ vi xử lý chấp nhận ngắt bằng cách đưa ra tín hiệu chấp nhận
ngắt ở mức thấp từ chân INTA. Lúc này thiết bị I/O sẽ làm cho
tín hiệu ở INTR chuyển về mức thấp.
Thiết bị I/O sẽ đưa số ngắt được gán cho nó đến bộ vi xử lý
thông qua D-Bus. Bộ vi xử lý sẽ lưu trữ số ngắt này vào một
thanh ghi tạm thời
PHẢN ỨNG CỦA VI XỬ LÝ KHI CÓ
NGẮT
9.
10.
11.
12.
13.
14.
Bộ vi xử lý lưu giá trị hiện thời của thanh ghi cờ vào stack.
Bộ vi xử lý xoá cờ ngắt
Bộ vi xử lý lưu giá trị hiện thời của CS vào stack.
Bộ vi xử lý lưu giá trị hiện thờI của IP vào stack.
Bộ vi xử lý nhân số ngắt với 4. Kết quả này chính là địa chỉ của
nơi lưu trữ vector ngắt tương ứng trong bảng các vector ngắt.
Hai byte đầu tiên của vector ngắt được copy vào IP và hai byte
tiếp theo được copy vào CS.
Quay trở về bước 2.
- Xem thêm -