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
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
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)
Trang 3Th ă m dò
mov dx, F000 L1: in al, dx
cmp al, FF
je L1
: :
A 1 5
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
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
8088
Minimum
Mode
A18 A0 :
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
A 1 5
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 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 L1: out dx, al
mov cx, FFFF L2: dec cx
jnz L2 cmp ah, 00 jne L3
rol al, 1 cmp al, 01 jne L1
jmp L4 L3: ror al, 1
cmp al, 80 jne L1
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 7What’s the problem with polling
in the sample program?
• Running LED takes time
• User might remove his/her finger from the switch
• before the in al, dx instruction is
executed
• the microprocessor will not know that the user has pressed the button
Trang 8Problem with Polling
mov dx, F000 mov ah, 00 mov al, 01
L1: out dx, al
mov cx, FFFF L2: dec cx
jnz L2 cmp ah, 00 jne L3
rol al, 1 cmp al, 01 jne L1
jmp L4 L3: ror al, 1
cmp al, 80 jne L1
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 9• The microprocessor does not check if data
is available
• The peripheral will interrupt the processor when data is available
Trang 10Polling vs Interrupt
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.
Input Device
Memory
µµµµP instruction
POLLING
Trang 11Polling vs Interrupt
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.
Input Device
Memory
µµµµP instruction
INTERRUPT
Interrupt request