HỌ VI ĐIỀU KHIỂN 8051

31 207 0
HỌ VI ĐIỀU KHIỂN 8051

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ CHƯƠNG HỌ VI ĐIỀU KHIỂN 8051 3.7 Ngắt (Interrupt) Bộ môn Kỹ Thuật Điện Tử - ĐHBK Nội dung 1) 2) 3) 4) 5) 6) 7) Giới thiệu Tổ chức ngắt 8051 Xử lý ngắt Thiết kế chương trình dùng ngắt Ngắt timer Các ngắt cổng nối tiếp Ngắt bên ngồi Bộ mơn Kỹ Thuật Điện Tử - ĐHBK 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) Bộ môn Kỹ Thuật Điện Tử - ĐHBK Thực thi chương trình Bộ mơn Kỹ Thuật Điện Tử - ĐHBK Tổng quan cấu trúc ngắt 8051 Bộ môn Kỹ Thuật Điện Tử - ĐHBK Các nguồn ngắt Bộ môn Kỹ Thuật Điện Tử - ĐHBK 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 Bộ môn Kỹ Thuật Điện Tử - ĐHBK Thứ tự ưu tiên ngắt Tuần tự hỏi vòng theo thứ tự: Ngắt 0, timer 0, 1, timer 1, cổng nối tiếp, timer Bộ môn Kỹ Thuật Điện Tử - ĐHBK Xử lý ngắt Khi ngắt xảy CPU chấp nhận, chương trình bị ngắt quãng 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 10 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: Bộ mơn Kỹ Thuật Điện Tử - ĐHBK 17 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 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 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 = byte thấp PC) 09H (PCH = byte cao PC) Bộ môn Kỹ Thuật Điện Tử - ĐHBK 18 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: Bộ mơn Kỹ Thuật Điện Tử - ĐHBK 19 Thí dụ: Tạo hai sóng vng dùng ngắt (2/2) Bộ môn Kỹ Thuật Điện Tử - ĐHBK 20 Ngắt timer VD: Viết chương trình dùng ngắt timer tao xung vng có tần số 100Hz chân P1.2 (thạch anh 24Mhz) ORG 0000H LJMP MAIN ORG 001BH LJMP ISR_TIMER1 ORG 0030H MAIN: MOV TMOD,#10H SETB EA SETB ET1 SETB TF1 ; Ép ngắt SJMP $ Bộ môn Kỹ Thuật Điện Tử - ĐHBK ISR_TIMER1: CPL P1.2 CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 RETI END 21 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 ORG 0000H LJMP MAIN ORG 001BH LJMP ISR_TIMER1 ORG 0030H MAIN: MOV TMOD,#10H SETB EA SETB ET1 MOV R1, #0 SETB TF1 ; Ép ngắt SJMP $ Bộ môn Kỹ Thuật Điện Tử - ĐHBK ISR_TIMER1: INC R1 CJNE R1, #1, NOTMARK SETB P1.2 JB NOTCLEAR NOTMARK: CLR P1.2 CJNE R1, #4, NOTCLEAR MOV R1, #0 NOTCLEAR: CLR TR1 MOV TH1,#HIGH(-1250) MOV TL1,#LOW(-1250) SETB TR1 RETI END 22 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 Bộ môn Kỹ Thuật Điện Tử - ĐHBK 23 b) Ngắt cổng nối tiếp Bộ môn Kỹ Thuật Điện Tử - ĐHBK 24 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 = Bộ môn Kỹ Thuật Điện Tử - ĐHBK 25 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 Bộ môn Kỹ Thuật Điện Tử - ĐHBK 26 5/15/2012 27 Bộ môn Kỹ Thuật Điện Tử - ĐHBK 28 Intel Hexadecimal Format Field Bytes Description Record mark “:” indicates start-of-record Record length Number of data bytes in record Load address Start address for data bytes Record type 00 = data record; 01 = end record Data bytes 0-16 Checksum 2012/5/15 Bộ môn Kỹ Thuật Điện Tử - ĐHBK data Sum of all bytes in record (record length, address…) and checksum = 29 Intel Hexadecimal Format 2012/5/15 Bộ môn Kỹ Thuật Điện Tử - ĐHBK 30 Tài liệu tham khảo • Hồ Trung Mỹ, Vi xử lý, Nhà xuất Đại học Quốc Gia Tp HCM - 2003 • I Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995 • Slide giảng thầy Hồ Trung Mỹ • Slide giảng thầy Lê Chí Thơng Bộ mơn Kỹ Thuật Điện Tử - ĐHBK 31

Ngày đăng: 03/11/2017, 11:29

Tài liệu cùng người dùng

Tài liệu liên quan