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
Trang 1Bà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
Trang 2Chương 6 Các kiểu I/O
Trang 3Thăm dò
mov dx, F000 L1: in al, dx
cmp al, FF
je L1
: :
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A
0 IOR
5V
Trang 4The Circuit
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A 0 IOR
5V
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
74LS373
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
OE LE
Trang 5Bà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
Trang 6Chương trình
mov dx, F000 mov ah, 00 mov al, 01
mov cx, FFFF
jnz L2 cmp ah, 00 jne L3
rol al, 1 cmp al, 01 jne L1
je L6 test al, 01 jnz L5
xor ah, FF jmp L6
L5: test al, 80
jz L7 L6: mov al, bl
jmp L1 L7:
Trang 7Khuyế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 đó?
Trang 8Khuyết điểm của thăm dò
mov dx, F000 mov ah, 00 mov al, 01
mov cx, FFFF
jnz L2 cmp ah, 00 jne L3
rol al, 1 cmp al, 01 jne L1
jmp L4
L4: mov bl, al
in al, dx cmp al, FF
je L6 test al, 01 jnz L5
xor ah, FF jmp L6
L5: test al, 80
jz L7 L6: mov al, bl
jmp L1 L7:
Trang 9Ngắt là gì?
Trang 10Thăm dò
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.
Input Device
Memory instruction
Trang 11speaker starts playing
music it means that the
bucket is full I can
content of the bucket to
the drum.
Input Device
Memory
P instruction
INTERRUPT
Interrupt request
Trang 12Interrupt- 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
Trang 13– Số ngắt
– Bảng các vector ngắt
Trang 14Interrupt 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
Trang 15Interrupt 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)
Trang 16Interrupt 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
Trang 17Bảng các vector ngắt
Trang 18Phản ứng của vi xử lý khi không có
4 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
Trang 19Phản ứng của vi xử lý khi có ngắt
• 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
6 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
7 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
8 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
Trang 20Phản ứng của vi xử lý khi có ngắt
9 Bộ vi xử lý lưu giá trị hiện thời của thanh ghi cờ vào stack
10 Bộ vi xử lý xoá cờ ngắt
11 Bộ vi xử lý lưu giá trị hiện thời của CS vào stack
12 Bộ vi xử lý lưu giá trị hiện thờI của IP vào stack
13 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
14 Quay trở về bước 2
Trang 218088 và một thiết bị ra đơn giản
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A
0 IOW
74LS373
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
OE LE
Trang 228088 và một thiết bị vào đơn giản
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
5V
Trang 238088 và thiết bị vào hoạt động theo cơ chế ngắt
INTR
A 1 5
8088 Minimum
Mode
A18
A0 :
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A 0 IOR
5V
INTR INTA
Trang 248088 và một thiết bị vào hoạt động theo cơ chế ngắt
INTR
D set Q
5V 5V
8088
Minimum
Mode
A18 A0 :
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
5V
INTR INTA
Trang 258088 và một thiết bị vào hoạt động theo cơ chế ngắt
A 1 5
8088
Minimum
Mode
A18 A0 :
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A 0 IOR
5V
INTR
D set Q
Q clr
5V 5V
INTR INTA
INTA
Trang 268088 và một thiết bị vào hoạt động theo cơ chế ngắt
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
D7 D6 D5 D4 D3 D2 D1 D0
INTA
5V
Trang 278088 và một thiết bị vào hoạt động theo cơ chế ngắt
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A 0 IOR
5V
INTR
D set Q
Q clr
5V
5V
INTR INTA
INTA
74LS245
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
E
DIR
D7 D6 D5 D4 D3 D2 D1 D0
INTA
5V
RESET
INT 3
Trang 28The Circuit
A 1 5
D7 D6
IOR IOW
A19
D5 D4 D3 D2 D1 D0
A 1 4
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
A 7
A 6
A 5
A 4
A 3
A 2
A 1
A 0 IOR
5V
74LS245
B0 B1 B2 B3 B4 B5 B6 B7
A0 A1 A2 A3 A4 A5 A6 A7
74LS373
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D0 D1 D2 D3 D4 D5 D6 D7
OE LE
Trang 29Chương trình chính
mov ds, ax mov bx, 000C mov ax, 2800 mov [bx], ax mov ax, 5000 mov [bx+02], ax sti
mov dx, F000 mov ah, 00 mov al, 01
je L4 out dx, al mov cx, FFFF
jnz L2 cmp ah, 00 jne L3
rol al, 1 jmp L1
jmp L1 L4:
Trang 30Chương trình con phục vụ ngắt (ISR)
mov bl, al
in al, dx test al, 01 jnz S1
xor ah, FF jmp S2
S1: test al, 80
jnz S2 mov ah, 88 S2: mov al, bl
Trang 318259
Trang 32ICW
Trang 33ICW1, ICW2
Trang 34ICW3, ICW4
Trang 36OCW1 và OCW2
Trang 37OCW3
Trang 388259 đơn
ICW1: 13H
ICW2: 08H
ICW3: 09H
Trang 39Interrupt Sources in PC
Trang 40Sources of NMI
Trang 418259s nối tầng
Trang 428259s nối tầng
Trang 43IRQ9 Instead of IRQ2
Trang 44Interrupts (Summary)
Trang 45Edge Triggered and Interrupt