Tài liệu Bài giảng kỹ thuật vi xử lý-xem thêm vi xử lý chương 6

  • Số trang: 45 |
  • Loại file: PDF |
  • Lượt xem: 132 |
  • Lượt tải: 0
quangtran

Đã đăng 3721 tài liệu

Mô tả:

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 -