Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O - Hồ Viết Việt

pdf 43 trang ngocly 2700
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O - Hồ Viết Việt", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ky_thuat_vi_xu_ly_chuong_6_cac_kieu_io_ho_viet_vie.pdf

Nội dung text: Bài giảng Kỹ thuật Vi xử lý - Chương 6: Các kiểu I/O - Hồ Viết Việt

  1. Bài giảng Kỹ thuậtVi 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
  2. Chương 6 Các kiểuI/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)
  3. Thăm dò A19 5V A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 A4 B4 D3 74LS245 D2 A5 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR IOW mov dx, F000 L1: in al, dx cmp al, FF je L1 A A A A A A A A A A A A A A A AIOR : 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 :
  4. A19 5V A18 : The Circuit A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 A4 B4 D3 74LS245 D2 A5 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode EDIR D0 Q0 D1 Q1 IOR D2 Q2 IOW D3 Q3 D4 Q4 D574LS373Q5 D6 Q6 D7 Q7 LE OE A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 AAAAAAAAAAAAAAAAIOW 1111119876543210 543210
  5. 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
  6. Chương trình mov dx, F000 L4: mov bl, al mov ah, 00 in al, dx mov al, 01 cmp al, FF L1: out dx, al je L6 mov cx, FFFF L2: dec cx test al, 01 jnz L2 jnz L5 cmp ah, 00 xor ah, FF jne L3 jmp L6 rol al, 1 L5: test al, 80 cmp al, 01 jz L7 jne L1 L6: mov al, bl jmp L4 jmp L1 L3: ror al, 1 L7: cmp al, 80 jne L1
  7. 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 đó?
  8. Khuyết điểm của thăm dò mov dx, F000 L4: mov bl, al mov ah, 00 in al, dx mov al, 01 cmp al, FF L1: out dx, al je L6 mov cx, FFFF test al, 01 L2: dec cx jnz L5 jnz L2 xor ah, FF cmp ah, 00 jne L3 jmp L6 rol al, 1 L5: test al, 80 cmp al, 01 jz L7 jne L1 L6: mov al, bl jmp L4 jmp L1 L3: ror al, 1 L7: cmp al, 80 jne L1
  9. Ngắt là gì?
  10. Thăm dò instruction While studying, I’ll Input Memory check the bucket every 5 Device 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Ò
  11. Ngắt instruction I’ll just study. When the Input Memory speaker starts playing Device music it means that the bucket is full. I can then transfer the content of the bucket to the drum. Interrupt request µP INTERRUPT
  12. Interrupt- Ngắt •Bộ vi xử lý không cầnphải kiểm tra tính sẵnsàngcủathiếtbị 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
  13. Interrupt- Ngắt •Mộtsố thuậtngữ cầnnhớ: – 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
  14. 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ồm4 byte: – 2 byte cho địa chỉ Offset – 2 byte cho địa chỉ Segment
  15. Interrupt Vector Number Số ngắt •Làmộtsốđượcdùngđể phân biệtcác yếucầungắt. Bởi vì có thể có nhiềuhơn mộtthiếtbị phát yêu cầungắt đếnbộ 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 •Tronghệ thống 8088, co thể có đến 256 số ngắt(từ 00h đếnFFh)
  16. 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
  17. Bảng các vector ngắt
  18. Phản ứng củavixử lý khi không có ngắt • Khi bật công tấc nguồnhoặcnhấn nút reset. 1. Bộ vi xử lý đượckhởi động: – (IP) = 0000h – (CS) = FFFFh –IF = 0 2. Bộ vi xử lý tìm và lấy 1 byte lệnh. 3. IP tăng lên 1. 4. Bộ vi xử lý giải mã và thựchiệnlệnh nếutấtcả các byte lệnh củamộtlệnh đã đượclấy. 5. Quay trỏ lại bước2.
  19. Phản ứng củavixử lý khi có ngắt •Thiếtbị I/O đưayêucầungắt đếnbộ vi xử lý bằng cách làm cho đầuvàongắtINTR 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ấpnhậnngắtbằng cách đưaratínhiệuchấp nhậnngắt ở mứcthấptừ 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ếtbị I/O sẽđưasố ngắt đượcgánchonóđếnbộ 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
  20. Phản ứng của vi xử lý khi có ngắt 9. Bộ vi xử lý lưugiátrị hiệnthời của thanh ghi cờ vào stack. 10. Bộ vi xử lý xoá cờ ngắt 11. Bộ vi xử lý lưugiátrị hiệnthời củaCS vàostack. 12. Bộ vi xử lý lưugiátrị hiệnthời của IP vào stack. 13. Bộ vi xử lý nhân số ngắtvới 4. Kếtquả này chính là địachỉ của nơi lưu trữ vector ngắt tương ứng trong bảng các vector ngắt. Hai byte đầutiêncủavector ngắt được copy vào IP và hai byte tiếp theo được copy vào CS. 14. Quay trở về bước2.
  21. 8088 và một thiết bị ra đơn giản A19 A18 : A0 D7 D0 Q0 D6 D1 Q1 D5 D2 Q2 D4 D3 Q3 D4 Q4 D3 74LS373 D2 D5 Q5 8088 D1 D6 Q6 Minimum D0 D7 Q7 Mode LE OE IOR IOW A A A A A A A A A A A A A A A AIOW 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  22. 8088 và một thiết bị vào đơn giản A19 5V A18 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 A4 B4 D3 74LS245 D2 A5 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode E DIR IOR IOW A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  23. 8088 và thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B7 D6 A6 B6 D5 A5 B5 D4 A4 B4 A3 B3 D3 74LS245 D2 A2 B2 8088 D1 A1 B1 Minimum D0 A0 B0 Mode E DIR IOR IOW INTR INTA INTR A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0
  24. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B0 D6 A6 B1 D5 A5 B2 D4 A4 B3 D3 A3 B4 D2 A2 74LS245 B5 8088 D1 A1 B6 Minimum D0 A0 B7 Mode E DIR IOR IOW 5V INTR INTA 5V DQset INTR clr Q A A A A A A A A A A A A A A A A IOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 5V
  25. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : A0 D7 A7 B7 D6 A6 B6 D5 A5 B5 D4 A4 B4 A3 B3 D3 74LS245 D2 A2 B2 8088 D1 A1 B1 Minimum D0 A0 B0 Mode E DIR IOR IOW 5V INTR INTA 5V DQset INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA
  26. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 : 5V A0 D7 A7 B7 D7 A7 B7 D6 A6 B6 D6 A6 B6 D5 A5 B5 D5 A5 B5 D4 A4 B4 D4 A4 B4 D3 A3 B3 D3 A3 B3 74LS245 74LS245 D2 A2 B2 D2 A2 B2 D1 A1 B1 8088 D1 A1 B1 D0 A0 B0 Minimum D0 A0 B0 Mode INTA E E DIR DIR IOR IOW 5V INTR INTA 5V DQset INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA
  27. 8088 và một thiết bị vào hoạt động theo cơ chế ngắt A19 5V A18 INT 3 : 5V A0 D7 A7 B7 D7 A7 B7 D6 A6 B6 D6 A6 B6 D5 A5 B5 D5 A5 B5 D4 A4 B4 D4 A4 B4 D3 A3 B3 D3 A3 B3 74LS245 74LS245 D2 A2 B2 D2 A2 B2 D1 A1 B1 8088 D1 A1 B1 D0 A0 B0 Minimum D0 A0 B0 Mode INTA E E DIR DIR IOR IOW 5V INTR INTA 5V DQset INTR clr Q A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 5 4 3 2 1 0 INTA RESET
  28. 5V A19 : A0 D7 A0 B0 D6 A1 B1 D5 A2 B2 D4 A3 B3 A4 B4 D3 74LS245 D2 A5 B5 8088 D1 A6 B6 Minimum D0 A7 B7 Mode EDIR IOR D0 Q0 IOW D1 Q1 D2 Q2 D3 Q3 D4 Q4 D574LS373Q5 D6 Q6 D7 Q7 A A A A A A A A A A A A A A A AIOR 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 LE OE 5 4 3 2 1 0 AAAAAAAAAAAAAAAAIOW 1111119876543210 543210
  29. Chương trình chính ISR bắt đầu từ 52800h Kết thúc L1: cmp ah, 88 mov ax,0000 mov ds, ax je L4 mov bx, 000C out dx, al mov ax, 2800 mov cx, FFFF mov [bx], ax L2: dec cx mov ax, 5000 jnz L2 mov [bx+02], ax cmp ah, 00 sti jne L3 mov dx, F000 rol al, 1 mov ah, 00 jmp L1 mov al, 01 L3: ror al, 1 jmp L1 L4:
  30. Chươ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 iret
  31. Khởi động 8259
  32. ICW1, ICW2
  33. ICW3, ICW4
  34. OCW1 và OCW2
  35. 8259 đơn ICW1: 13H ICW2: 08H ICW3: 09H
  36. Ví dụ:Mạch điều khiển ngắt ở PC
  37. 8259s nối tầng
  38. 8259s nối tầng