1. Trang chủ
  2. » Tất cả

Vxl-Ch03-8051-3.7 Interrupts_40 Slides.ppt

40 4 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 đề Chương 3 Hệ Điều Khiển 8051 - Ngắt (Interrupt)
Người hướng dẫn Hồ Trung Mỹ
Trường học Trường Đại Học Bách Khoa Thành Phố Hồ Chí Minh
Chuyên ngành Kỹ thuật điện tử, Vi xử lý
Thể loại giáo trình
Thành phố Hồ Chí Minh
Định dạng
Số trang 40
Dung lượng 1,18 MB

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

Nội dung

Slide 1 CHƯƠNG 3 HỌ VI ĐiỀU KHIỂN 8051 ĐHBK Tp HCM Khoa Đ ĐT BMĐT GVPT Hồ Trung Mỹ Môn học Vi Xử Lý 3 7 Ngắt (Interrupt) Giới thiệu ngắt • Hệ thống được điều khiển bằng ngắt – làm nhiều việc đồng thời[.]

Trang 2

3.7 Ngắt (Interrupt)

Trang 3

– 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ớicông việc mức ngắt ( ở Background)

Trang 4

Thực thi chương trình

Trang 5

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

Trang 6

Các nguồn ngắt

Trang 7

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

Trang 8

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

Trang 9

– Nếu CPU nhận tín hiệu ngắt

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

Xử lý ngắt

Trang 10

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

Trang 12

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 :

LJMP MAIN

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

Trang 13

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

RETI ; Quay về chương trình chính.

Để đơn giản, chương trình của chúng ta sẽ chỉ làm một việc lúc ban đầu

Chương trình khởi động timer, cổng nối tiếp và các thanh ghi ngắt cho thích hợp

và rồi không làm gì cả Công việc hoàn toàn được làm trong ISR Sau các lệnh khởi động, chương trình chính chứa lệnh sau :

HERE: SJMP HERE

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

SJMP $

Trang 14

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:

Trang 15

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

Trang 16

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:

Trang 17

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

Trang 18

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

• SPISR phải kiểm tra RI hoặcTI và xóa nó

• TI xảy ra ở cuối thời gian bit thứ 8 trong chế độ 0 hoặc

bắt đầu bit dừng trong các chế độ khác TI phải bị xóa bằng phần mềm

• RI xảy ra ở cuối thời gian bit thứ 8 trong chế độ 0 hoặc

ở giữa bit dừng trong các chế độ khác khi SM2 =0 Nếu SM2 = 1, RI = RB8 trong chế độ 2,3 và RI = 1 chỉ khi bit dừng hợp lệ nhận được trong chế độ 1

Trang 19

Xuất tập mã ASCII dùng ngắt (1/2)

; xu t các mã ASCII ra c ng n i ti pất các mã ASCII ra cổng nối tiếp ổng nối tiếp ối tiếp ếp

ORG 0 LJMP Main ORG 0023H ; vector c ng n i ti p ổng nối tiếp ối tiếp ếp LJMP SPISR

ORG 0030H ; đi m vào chính ểm vào chính

MOV TH1,#-26 ; dùng 1200 baud

MOV SCON,#42H ; mode 1, cho TI = 1 đ ép ng t ểm vào chính ắt

; g i ký t th nh t ửi ký tự thứ nhất ự thứ nhất ứ nhất ất.

MOV A,#20H ; tr ước hết gửi khoảng trống ếp ửi ký tự thứ nhất c h t g i kho ng tr ng ảng trống ối tiếp MOV IE,#90H ; cho phép ng t c ng n i ti p ắt ổng nối tiếp ối tiếp ếp SJMP $ ; đ i có ng t ợi có ngắt ắt

Trang 20

SPISR: CJNE A,#7FH,Skip ; n u mã ASCII = 7FH ếp

MOV A,#20H ; xu t l i t đ u t 20H ất ạy ừ đầu từ 20H ầu từ 20H ừ đầu từ 20H Skip: MOV SBUF,A ; b t đ u phát n i ti p ắt ầu từ 20H ối tiếp ếp

RETI

• Tốc độ CPU phải lớn hơn nhiều truyền nối tiếp1200 baud

Do đó phần lớn thời gian CPU thực thi SJMP.

• Thời gian cho 1 ký tự = (1/1200 baud)(8+1+1) = 8333.3 mS

so với 1 µS machine cycle!

• Ta nên thay lệnh SJMP bằng các lệnh hữu dụng để làm

việc gì đó.

Xuất tập mã ASCII dùng ngắt (2/2)

Trang 21

trong chu kỳ máy kế.

• IE0 và IE1 được tự động xóa khi CPU chuyển sang ISR

Trang 22

• Nếu ngắt ngoài được kích mức thấp (IT0 hoặc IT1 =0), thì nguồn bên ngoài phải ở tích cực cho đến khi ngắt

yêu cầu được sinh ra

• Tiếp theo nó phải không tích cực trước khi ISR hoàn tất, hoặc ngắt khác sẽ được tạo ra

• Thường thì có tác động trong ISR làm cho nguồn yêu cầu ngắt quay về trang thái không tích cực

Ngắt ngoài

Trang 23

1 = solenoid engaged (furnace on) if T < 19C

0 = solenoid disengaged (furnace off) if T > 21C

Trang 24

ORG 0 LJMP Main

RETI ORG 13H

RETI ORG 0030H Main: MOV IE,#85H ; cho phép ng t ngoài ắt

SETB IT0 ; kích c nh âm ạy SETB IT1

SETB P1.7 ; tr ước hết gửi khoảng trống ếp ở lò c h t m lò

JB P3.2,Skip ; n u T>21? ếp CLR P1.7 ; đúng thì t t lò ắt Skip: SJMP $ ; không làm gì c ảng trống

TD: Bộ điều khiển lò (2/2)

Trang 26

ORG 0 LJMP Main LJMP EX0ISR ORG 0BH LJMP T0ISR ; T0 và R7=20 t o tr 1s ạy ễ 1s ORG 1BH

LJMP T1ISR ; dùng T1 t o âm c nh báo ạy ảng trống

MOV TMOD,#11H ; timer 16 bit MOV IE,#81H ; cho phép ng t ngoài 0 ắt Skip: SJMP $ ; đ i ng t ợi có ngắt ắt

TD: Hệ thống cảnh báo có người lạ (2/4)

Trang 27

EX0ISR: MOV R7,#20 ; 20x50000 s = 1 s

SETB TF0 ; ép ph c v T0 ISR ục vụ T0 ISR ục vụ T0 ISR SETB TF1 ; ép ph c v T1 ISR ục vụ T0 ISR ục vụ T0 ISR SETB ET0 ; cho phép ng t T0 ắt SETB ET1 ; cho phép ng t T1 ắt RETI

MOV TL0,#LOW(-50000) ; làm tr ễ 1s

SETB TR0 ; cho T0 ch y l n n a ạy ầu từ 20H ữa

TD: Hệ thống cảnh báo có người lạ (3/4)

Trang 28

TD: Hệ thống cảnh báo có người lạ (4/4)

Trang 29

Interrupt Timing 1

• Since the external interrupt pins are sampled once each machine cycle, an input high or low should hold for at least 12 oscillator periods to ensure

sampling.

• If the external interrupt is transition-activated , the external source has to hold the request pin high for at least one cycle, and then hold it low for at least one cycle This is done to ensure that the

transition is seen so that interrupt request flag IEx will be set

• IEx will be automatically cleared by the CPU when

the service routine is called.

Trang 30

Interrupt Timing 2

• If the external interrupt is level-activated,

the external source has to hold the

request active until the requested interrupt

is actually generated Then it has to

deactivate the request before the interrupt service routine is completed, or else

another interrupt will be generated.

Trang 31

Interrupt Timing 3

• Response Time

The /INT0 and /INT1 levels are inverted and latched into IE0 and IE1 at S5P2 of every machine cycle The values are not actually polled by the circuitry until

the next machine cycle

• If a request is active and conditions are right for it to

be acknowledged, a hardware subroutine call to the requested service routine will be the next instruction

to be executed The call itself takes two cycles Thus,

a minimum of three complete machine cycles elapse between activation of an external interrupt request and the beginning of execution of the first instruction

of the service routine

Trang 32

Interrupt Timing 4

• A longer response time would result if the request is

blocked by one of the 3 previously listed conditions.

1 An interrupt of equal or higher priority level is

already in progress.

2 The current (polling) cycle is not the final cycle in the execution of the instruction in progress

(ensure completion)

3 The instruction in progress is RETI or any write

to the IE or IP registers (one more instruction will

be executed)

• If an interrupt of equal or higher priority level is

already in progress, the additional wait time

obviously depends on the nature of the other

interrupt’s service routine.

Trang 33

Interrupt Timing 5

• If the instruction in progress is not in its final cycle,

the additional wait time cannot be more than 3 cycles, since the longest instructions (MUL and DIV) are only

4 cycles long, and if the instruction in progress is

RETI or an access to IE or IP , the additional wait time cannot be more than 5 cycles (a maximum of one

more cycle to complete the instruction in progress, plus 4 cycles to complete the next instruction if the instruction is MUL or DIV).

• Thus, in a single-interrupt system, the response time

is always more than 3 cycles and less than 9 cycles.

Trang 34

Interrupt Response Timing Diagram: Fastest

Trang 35

Interrupt Response Timing Diagram: Longest

RETI MUL AB Save PC ISR Level 0 ISR Main program Level 0 ISR

9 cycles

Level 1 interrupt occurs here (missed last chance before RETI instruction)

Trang 36

Interrupt Timing 6

Single-Step Operation

• The 80C51 interrupt structure allows single-step

execution with very little software overhead As

previously noted, an interrupt request will not be

responded to while an interrupt of equal priority level

is still in progress, nor will it be responded to after RETI until at least one other instruction has been

executed Thus, once an interrupt routine has been entered, it cannot be re-entered until at least one

instruction of the interrupted program is executed

• One way to use this feature for single-step operation

is to program one of the external interrupts (e.g.,

/INT0) to be level-activated

Trang 37

Interrupt Timing 7

• The service routine for the interrupt will terminate with

the following code:

JNB P3.2,$ ;Wait Till /INT0 Goes High

JB P3.2,$ ;Wait Till /INT0 Goes Low

RETI ;Go Back and Execute One Instruction

• Now if the /INT0 pin, which is also the P3.2 pin, is held

Interrupt 0 routine and stay there until /INT0 is pulsed (from low to high to low) Then it will execute RETI, go back to the task program, execute one instruction, and immediately re-enter the External Interrupt 0 routine to await the next pulsing of P3.2 One step of the task

Trang 38

periods ), while the oscillator is running The CPU

responds by generating an internal reset.

• The external reset signal is asynchronous to the

internal clock The RST pin is sampled during State 5 Phase 2 of every machine cycle The port pins will

maintain their current activities for 19 oscillator

periods after a logic 1 has been sampled at the RST pin; that is, for 19 to 31 oscillator periods after the

external reset signal has been applied to the RST pin.

Trang 39

Reset Timing

Trang 40

Interrupt Timing 9

• The internal reset algorithm writes 0s to all

the SFRs except the port latches, the Stack

Pointer, and SBUF

• The port latches are initialized to FFH (input

mode), the Stack Pointer to 07H, and SBUF is indeterminate

• The internal RAM is not affected by reset On

power up the RAM content is indeterminate.

Ngày đăng: 22/02/2023, 16:16

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w