1. Trang chủ
  2. » Giáo án - Bài giảng

vi xu ly bui minh thanh vxl ch03 8051 3 7 interrupts v02 cuuduongthancong com

31 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 31
Dung lượng 1,79 MB

Nội dung

ĐẠ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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.7 Ngắt (Interrupt) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thực thi chương trình Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Tổng quan cấu trúc ngắt 8051 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Các nguồn ngắt Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 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 = byte thấp PC) 09H (PCH = byte cao PC) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com ISR_TIMER1: CPL P1.2 CLR TR1 MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 RETI END https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com 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 https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 23 b) Ngắt cổng nối tiếp Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 25 c) Ngắt  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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 26 5/15/2012 27 CuuDuongThanCong.com https://fb.com/tailieudientucntt Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 data Sum of all bytes in record (record length, address…) and checksum = 2012/5/15 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 29 Intel Hexadecimal Format 2012/5/15 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt 31 ... SETB TF1 ; Ép ngắt SJMP $ Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ISR_TIMER1: CPL P1.2 CLR TR1 MOV TH1,#HIGH (-1 0000) MOV TL1,#LOW (-1 0000) SETB TR1 RETI END https://fb.com/tailieudientucntt... “:” 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-1 6 Checksum data... 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 CuuDuongThanCong.com

Ngày đăng: 27/12/2022, 13:48