Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
573,63 KB
Nội dung
Hiệu đính từ slide thầy Hồ Trung Mỹ Bộ môn Điện tử - DH BK TPHCM CH H NG VI Đi U KHI N 8051 3.7 Ngắt (Interrupt) Giới thiệu ngắt • Ngắt xảy điều kiện-sự kiện làm cho treo tạm thời chương trình điều kiện phục vụ chương trình khác • Hệ thống điều khiển ngắt – làm nhiều việc đồng thời • Đa nhiệm (vụ) dựa Hardware • Khơng có hỏi vịng • Khi có kiện cụ thể (ngắt) xảy ra, CPU nhảy đến chương trình cụ thể – chương trình phục vụ ngắt (ISR), xử lý ngắt • Cơng việc mức ( Foreground) với công việc mức ngắt ( Background) Thực thi chương trình Tổng quan v cấu trúc ngắt 8051 Các nguồn ngắt 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 sử dụng – Chỉ có cấp ưu tiên 8051 ⇒ Vẫn có nhiều ngắt có ưu tiên ngắt Thứ tự u tiên ngắt Xử lý ngắt Khi ngắt xảy CPU chấp nhận, chương trình bị ngắt qng Các hoạt động sau xảy ra: – Lệnh hành hoàn tất việc thực thi – CPU cất PC vào ngăn xếp (địa quay về) – CPU nhảy đến ISR khác theo nguồn ngắt khác – PC ← địa vector ngắt (= 3+( # of nguồn ngắt)*8) – Thực thi ISR Các vector ngắt 10 Khung ch MAIN : ng trình dùng ngắt ORG 0000H ; Điểm vào reset LJMP MAIN ; Các điểm vào ISR ORG 0030H ; Điểm vào chương trình ; Chương trình bắt đầu Lệnh thứ nhảy đến địa 0030H, vừa vị trí vector mà ISR bắt đầu 12 Ch ng trình phục vụ ngắt có kích th ớc nhỏ Nếu có nguồn ngắt sử dụng, ví dụ Timer 0, sử dụng khung chương trình sau : T0ISR: ORG 0000H LJMP MAIN ORG 000BH ; Reset ; Điểm vào ISR cho Timer ; Bắt đầu ISR cho Timer MAIN: RETI ; Quay chương trình ; Chương trình Nếu sử dụng nhiều ngắt, cẩn thận, phải bảo đảm chúng bắt đầu vị trí khơng chạy lố sang ISR kế Vì có ngắt sử dụng ví dụ trên, chương trình bắt đầu sau lệnh RETI 13 Ch ng trình phục vụ ngắt có kích th ớc lớn Thí dụ lúc xét Timer 0, sử dụng khung sau : ORG LJMP ORG LJMP ORG MAIN: 0000H MAIN 000BH T0ISR 0030H ; Đi m vào reset ; Đi m vào ISR Timer ; Các vector ngắt ti p theo ; Ch ng trình ; Bắt đầu ISR cho Timer T0ISR: RETI ; Quay v ch ng trình Để đơn giản, chương trình làm việc lúc ban đầu Chương trình khởi động timer, cổng nối tiếp ghi ngắt cho thích hợp khơng làm Cơng việc hoàn toàn làm ISR Sau lệnh khởi động, chương trình chứa lệnh sau : HERE: SJMP HERE hay dạng viết gọn sau: SJMP $ 14 a) Ngắt timer • Ngắt timer xảy cờ tràn TFx bật lên • Cờ tạo ngắt xóa phần cứng CPU chuyển đến chương trình phục vụ ngắt (ISR) 15 Thí dụ: Tạo sóng vng ngắt Timer Các ngắt Timer xảy ghi timer TLx/THx tràn đặt cờ báo tràn lên (TFx) Ta có chương trình sau: 16 Phân tích CT Tạo sóng vng ngắt Timer • • • • • • • Ngay sau reset, PC nạp trị 0000H Lệnh thực thi LJMP MAIN mà rẽ nhánh bỏ qua ISR Timer đến địa 0030H nhớ mã Ba lệnh kế (các dòng 11–13) khởi trị Timer chế độ tràn sau 50 μs Lệnh MOV IE, #82H cho phép ngắt Timer Dĩ nhiên tràn thứ khơng xảy có trì hỗn lệnh khởi tạo trị Cứ sau 50 μs ngắt xảy ra; chương trình bị ngắt ISR (của Timer 0) thực thi ISR đảo trạng thái bit cổng quay chương trình gọi (vịng lặp chỗ) tiếp tục với 50 μs kế Chú ý cờ timer TF0 không b xóa phần m m Khi ngắt đ ợc cho phép, TF0 tự động b xóa phần cứng CPU đ n ngắt Tình cờ địa quay chương trình địa lệnh SJMP Địa cất vào ngăn xếp bên trước đến ngắt lấy lại từ ngăn xếp thực thi lệnh RETI cuối ISR Vì SP khơng khởi tạo trị, có giá trị reset 07H Tác vụ cất (PUSH) để địa quay ô nhớ RAM nội 08H (PCL 17 = byte thấp PC) 09H (PCH = byte cao PC) Thí dụ: Tạo hai sóng vng dùng ngắt (1/2) Viết chương trình dùng ngắt để tạo sóng vng đồng thời KHz 500 Hz chân P1.7 P1.6 Bài giải Cấu hình phần cứng với định cho dạng sóng mong muốn cho hình sau: 18 Thí dụ: Tạo hai sóng vng dùng ngắt (2/2) 19 Ngắt timer VD: Tạo sóng vng có tần số 100Hz chân P1.2, duty cycle = 25% dùng ngắt timer 1, XTAL = 6MHz 20 b) Ngắt cổng nối tiếp • Ngắt cổng nối tiếp xảy cờ ngắt TI RI bật lên • Ngắt phát xảy truyền xong ký tự vừa ghi vào SBUF (TI = 1) • Ngắt thu xảy ký tự nhận xong đợi SBUF để đọc (RI = 1) • Cờ gây ngắt cổng nối tiếp (RI TI) khơng xóa phần cứng mà phải xóa phần mềm 21 b) Ngắt cổng nối tiếp 22 Ngắt cổng nối tiếp VD: Viết chương trình nhận ký tự ASCII từ cổng nối tiếp, tốc độ baud 9600bps, XTAL = 12MHz, SMOD = 23 c) Ngắt ngồi • Các ngắt ngồi tạo có cạnh xuống mức thấp chân /INT0 /INT1 • Sự lựa chọn ngắt tích cực theo cạnh hay mức lập trình qua bit IT0 hay IT1 TCON • Các cờ tạo ngắt bit IE0 IE1 TCON 24 12/7/2011 25 26 .. .3. 7 Ngắt (Interrupt) Giới thiệu ngắt • Ngắt xảy điều kiện-sự kiện làm cho treo tạm thời chương trình điều kiện phục vụ chương trình khác • Hệ thống điều khiển ngắt – làm nhiều vi? ??c đồng... nhảy đến chương trình cụ thể – chương trình phục vụ ngắt (ISR), xử lý ngắt • Cơng vi? ??c mức ( Foreground) với công vi? ??c mức ngắt ( Background) Thực thi chương trình Tổng quan v cấu trúc ngắt 8051. .. trình Để đơn giản, chương trình làm vi? ??c lúc ban đầu Chương trình khởi động timer, cổng nối tiếp ghi ngắt cho thích hợp khơng làm Cơng vi? ??c hồn tồn làm ISR Sau lệnh khởi động, chương trình chứa