Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.7 Ngắt (Interrupt) - Bùi Minh Thành

Giới thiệu ngắt
• Ngắt là sự xảy ra một điều kiện-sự kiện làm cho treo
tạm thời chương trình trong khi đó điều kiện này
được phục vụ bởi một chương trình khác
• Hệ thống được điều khiển bằng ngắt – làm nhiều việc
đồng thời
• Đa nhiệm (vụ) dựa trên Hardware
• Không có hỏi vòng
• Khi có các sự kiện cụ thể (ngắt) xảy ra, CPU sẽ
nhảy đến 1 chương trình con cụ thể – chương
trình phục vụ ngắt (ISR), xử lý ngắt
• Công việc mức nền ( ở Foreground) với công việc
mức ngắt ( ở Background)
pdf 26 trang thamphan 27/12/2022 2780
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.7 Ngắt (Interrupt) - Bùi Minh Thành", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_3_ho_vi_dieu_khien_8051_3_7_ngat_i.pdf

Nội dung text: Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.7 Ngắt (Interrupt) - Bùi Minh Thành

  1. Hiệu đính từ slide của thầy Hồ Trung Mỹ Bộ môn Điện tử - DH BK TPHCM CHƯƠNG 3 HỌ VI ĐiỀU KHIỂN 8051 1
  2. Giới thiệu ngắt • Ngắt là sự xảy ra một điều kiện-sự kiện làm cho treo tạm thời chương trình trong khi đó điều kiện này được phục vụ bởi một chương trình khác • Hệ thống được điều khiển bằng ngắt – làm nhiều việc đồng thời • Đa nhiệm (vụ) dựa trên Hardware • Không có hỏi vòng • Khi có các sự kiện cụ thể (ngắt) xảy ra, CPU sẽ nhảy đến 1 chương trình con cụ thể – chương trình phục vụ ngắt (ISR), xử lý ngắt • Công việc mức nền ( ở Foreground) với công việc mức ngắt ( ở Background) 3
  3. Tổng quan về cấu trúc ngắt của 8051 5
  4. Thanh ghi cho phép ngắt IE •Mặt nạ ngắt •Nếu có nhiều nguồn ngắt xảy ra? – Mã hóa ưu tiên được sử dụng. –Chỉ có 2 cấp ưu tiên trong 8051 ⇒ Vẫn có nhiều ngắt có thể có cùng ưu tiên ngắt 7
  5. Xử lý ngắt Khi ngắt xảy ra và được CPU chấp nhận, chương trình chính bị ngắt quãng. Các hoạt động sau sẽ xảy ra: –Lệnh hiện hành hoàn tất việc thực thi –CPU sẽ cất PC vào ngăn xếp (địa chỉ quay về) –CPU sẽ nhảy đến ISR khác nhau theo nguồn ngắt khác nhau –PC ← địa chỉ vector ngắt (= 3+( # of nguồn ngắt)*8) –Thực thi ISR 9
  6. Tổ chức bộ nhớ khi sử dụng ngắt 11
  7. Chương trình phục vụ ngắt có kích thước nhỏ Nếu chỉ có một nguồn ngắt được sử dụng, ví dụ Timer 0, thì có thể sử dụng khung chương trình sau : ORG 0000H ; Reset LJMP MAIN ORG 000BH ; Điểm vào ISR cho Timer 0 T0ISR: . ; Bắt đầu ISR cho Timer 0 . RETI ; Quay về chương trình chính MAIN: . ; Chương trình chính . . Nếu sử dụng nhiều ngắt, thì cẩn thận, phải bảo đảm là chúng bắt đầu ở vị trí đúng và không chạy lố sang ISR kế. Vì chỉ có một ngắt được sử dụng trong ví dụ trên, chương trình chính có thể bắt đầu ngay sau lệnh RETI. 13
  8. a) Ngắt timer •Ngắt timer xảy ra khi các cờ tràn TFx được bật lên một •Cờ tạo ra ngắt này được xóa bằng phần cứng khi CPU chuyển đến chương trình phục vụ ngắt (ISR) 15
  9. Phân tích CT Tạo sóng vuông bằng ngắt Timer • Ngay sau khi reset, PC được nạp trị 0000H. •Lệnh đầu tiên được thực thi LJMP MAIN mà rẽ nhánh bỏ qua ISR của Timer 0 đến địa chỉ 0030H trong bộ nhớ mã. •Ba lệnh kế (các dòng 11–13) khởi trị Timer 0 chế độ 2 tràn sau 50 μs. •Lệnh MOV IE, #82H cho phép ngắt của Timer 0. Dĩ nhiên tràn thứ nhất sẽ không xảy ra trong vì có trì hoãn ở các lệnh khởi tạo trị •Cứ sau 50 μs một ngắt xảy ra; chương trình chính bị ngắt và ISR (của Timer 0) thực thi. ISR này đảo trạng thái bit cổng và quay về chương trình gọi nó (vòng lặp tại chỗ) và tiếp tục như vậy với 50 μs kế. • Chú ý là cờ timer TF0 không bị xóa bằng phần mềm. Khi các ngắt được cho phép, TF0 tự động bị xóa bằng phần cứng khi CPU chỉ đến ngắt. • Tình cờ địa chỉ quay về trong chương trình chính là địa chỉ của lệnh SJMP. Địa chỉ được cất vào ngăn xếp bên trong trước khi chỉ đến mỗi ngắt và được lấy lại từ ngăn xếp khi thực thi lệnh RETI ở cuối ISR. Vì SP đã không được khởi tạo trị, do đómặc nhiên nó có giá trị reset là 07H. Tác vụ cất (PUSH) để địa chỉ quay về trong các ô nhớ RAM nội 08H (PCL = byte thấp của PC) và 09H (PCH = byte cao của PC). 17
  10. Thí dụ: Tạo hai sóng vuông dùng ngắt(2/2) 19
  11. b) Ngắt cổng nối tiếp • Ngắt cổng nối tiếp xảy ra khi các cờ ngắt TI hoặc RI được bật lên 1 • Ngắt phát xảy ra khi truyền xong một ký tự vừa được ghi vào SBUF (TI = 1) • Ngắt thu xảy ra khi một ký tự đã nhận xong và đang đợi trong SBUF để được đọc (RI = 1) • Cờ gây ngắt của cổng nối tiếp (RI hoặc TI) không được xóa bởi phần cứng mà phải được xóa bằng phần mềm 21
  12. Ngắt cổng nối tiếp VD: Viết chương trình nhận một ký tự ASCII từ cổng nối tiếp, tốc độ baud 9600bps, XTAL = 12MHz, SMOD = 1 23
  13. 12/7/2011 25