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 5 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

Tiêu đề Ngắt (Interrupt)
Trường học Trường Đại Học Bách Khoa, Đại Học Quốc Gia TP.Hồ Chí Minh
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại báo cáo môn học
Năm xuất bản 2023
Thành phố Tp.Hồ Chí Minh
Định dạng
Số trang 31
Dung lượng 1,79 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bộ môn Kỹ Thuật Điện Tử - ĐHBK• 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 ở Foreg

Trang 1

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA

Trang 2

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

3.7 Ngắt (Interrupt)

2

Trang 3

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Trang 4

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

• 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)

4

Trang 5

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Thực thi chương trình

5

Trang 6

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Tổng quan về cấu trúc ngắt của 8051

6

Trang 7

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Các nguồn ngắt

7

Trang 8

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 đượ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

8

Trang 9

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Thứ tự ưu tiên ngắt

9

Tuần tự hỏi vòng theo thứ tự: Ngắt ngoài 0, timer 0, ngoài

1, timer 1, cổng nối tiếp, timer 2

Trang 10

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

10

Trang 11

Các vector ngắt

11

Trang 12

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Tổ chức bộ nhớ khi sử dụng ngắt

12

Trang 13

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

MAIN :

Lệnh thứ nhất nhảy đến địa chỉ 0030H, vừa trên các

vị trí vector mà các ISR bắt đầu

13

Trang 14

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

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

Nếu sử dụng nhiều ngắt, thì hãy 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.

14

Trang 15

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Chương trình phục vụ ngắt có kích thước lớn

Thí dụ lúc này chỉ xét Timer 0, có thể sử dụng khung sau :

ORG 0000H ; Điểm vào reset

HERE: SJMP HERE

hay dạng viết gọn như sau:

SJMP $

15

Trang 16

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Trang 17

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Thí dụ: Tạo sóng vuông bằng ngắt của Timer

Các ngắt của Timer xảy ra khi các thanh ghi timer TLx/THx tràn

và đặt cờ báo tràn lên 1 (TFx) Ta có chương trình như sau:

17

Trang 18

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

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 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).

18

Trang 19

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Thí dụ: Tạo hai sóng vuông dùng ngắt (1/2)

Viết chương trình dùng các ngắt để tạo ra các sóng vuông đồng thời 7 KHz

và 500 Hz ở các chân P1.7 và P1.6.

Bài giải.

Cấu hình phần cứng với những định thì cho các dạng sóng mong muốn

được cho trong hình sau:

19

Trang 20

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Thí dụ: Tạo hai sóng vuông dùng ngắt (2/2)

20

Trang 21

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Ngắt timer

VD: Viết chương trình dùng ngắt timer tao ra xung vuông

có tần số 100Hz trên chân P1.2 (thạch anh 24Mhz)

21

ORG 0000H LJMP MAIN ORG 001BH LJMP ISR_TIMER1 ORG 0030H

MAIN:

MOV TMOD,#10H SETB EA

RETI END

Trang 22

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Ngắt timer

VD: Tạo sóng vuông có tần số 100Hz trên chân P1.2, duty

cycle = 25% dùng ngắt timer 1, XTAL = 6MHz

22

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 $

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

Trang 23

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

• Ngắt thu xảy ra khi một ký tự đã nhận xong và đang

đợi trong SBUF để được đọc (RI = 1)

được xóa bởi phần cứng mà phải được xóa bằng phần mềm.

23

Trang 24

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

b) Ngắt cổng nối tiếp

24

Trang 25

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

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

25

Trang 26

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

c) Ngắt ngoài

 Các ngắt ngoài được tạo ra khi có cạnh xuống hoặc

mức thấp trên chân /INT0 hoặc /INT1

 Sự lựa chọn ngắt tích cực theo cạnh hay mức được

lập trình qua bit IT0 hay IT1 trong TCON

 Các cờ tạo ngắt là các bit IE0 và IE1 trong TCON

26

Trang 27

5/15/2012 27

Trang 28

Bộ môn Kỹ Thuật Điện Tử - ĐHBK 28

Trang 29

Bộ môn Kỹ Thuật Điện Tử - ĐHBK 2012/5/15 29

Intel Hexadecimal Format

Field Bytes Description Record mark 1 “:” indicates start-of-record

Record length 2 Number of data bytes in record

Load address 4 Start address for data bytes

Record type 2 00 = data record; 01 = end

record

Data bytes 0-16 data

Checksum 2 Sum of all bytes in record

Trang 30

Bộ môn Kỹ Thuật Điện Tử - ĐHBK 2012/5/15 30

Intel Hexadecimal Format

Trang 31

Bộ môn Kỹ Thuật Điện Tử - ĐHBK

Tài liệu tham khảo

• Hồ Trung Mỹ, Vi xử lý, Nhà xuất bản Đại học

Quốc Gia Tp HCM - 2003

• I Scott MacKenzie , The 8051 Microcontroller,

2nd Edition, Prentice-Hall, 1995

• Slide bài giảng thầy Hồ Trung Mỹ

• Slide bài giảng thầy Lê Chí Thông.

31

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

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm