1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài 5: NGẮT NGOÀI (INT )

15 600 2
Tài liệu đã được kiểm tra trùng lặp

Đ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 Ngoài (Int)
Trường học Trường Đại Học Kỹ Thuật
Chuyên ngành Kỹ Thuật Điện Tử
Thể loại Bài Giảng
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 15
Dung lượng 406,5 KB

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

Nội dung

Bài 5: NGẮT NGOÀI INTI>Khái niệm: Ngắt là sự đáp ứng các sự kiện bên trong hoặc bên ngoài nhằm thông báo cho bộ vi điều khiển biết thiết bị đang cần được phục vụ... Trình tự thực hiện

Trang 1

Bài 5: NGẮT NGOÀI (INT)

I>Khái niệm:

Ngắt là sự đáp ứng các sự kiện bên trong hoặc bên ngoài nhằm thông báo cho bộ vi điều

khiển biết thiết bị đang cần được phục vụ

Trang 2

II> Trình tự thực hiện ngắt của vi điều khiển

Bài 5: NGẮT NGOÀI (INT)

B1: Kết thúc lệnh hiện tại trong chương trình chính của vi điều

khiển và lưu địa chỉ của lệnh kế tiếp vào ngăn xếp

B2: Lưu lại trạng thái hiện hành của tất cả các ngắt vào bên trong B3: Nhảy tới một vị trí cố định trong bộ nhớ gọi là bảng vecto

ngắt, nơi lưu địa chỉ của trình phục vụ ngắt

B4: Nhận địa chỉ từ bảng vecto ngắt rồi nhảy tới địa chỉ đó và

bắt đầu thực hiện trình phục vụ ngắt cho tới lệnh cuối cùng

B5: kết thúc trình phục vụ ngắt và vđk trở về đúng vị trí mà

nó bị ngắt lúc trước sau nạp địa chỉ lệnh cần làm kế tiếp từ

ngăn xếp và thực hiện lệnh này

Trang 3

Bài 5: NGẮT NGOÀI (INT)

III>Các Ngắt Của 8051 :

ngắt

Trang 4

Bài 5: NGẮT NGOÀI (INT)

IV>Các Thanh Ghi Sử Dụng Cho Ngắt Ngoài

1.Thanh Ghi Cho Phép Ngắt IE (interrupt enable)

EA (IE.7 bit) là bit cho phép ngắt toàn bộ Tức là nếu bạn

sử dụng một trong 5 ngắt kể trên của vđk thì bạn phải set bit này lên với giá trị 1 Ngược lại khi bit EA =0 thì toàn bộ các ngắt của vđk sẽ bị cấm

Trang 5

Bài 5: NGẮT NGOÀI (INT)

ET2 ( IE.5 bit) là bit cho phép ngắt của timer 2 ( chỉ ở họ 52 )

Khi bit này = 1 thì ngắt định thời 2 sẽ được cho phép và ngược lại

ET1, ET0 ( IE.3, IE.1 bit ) là bit cho phép ngắt định thời 1, 0

của vđk 8051 Khi các bit này =1 thì ngắt của hai bộ định thời này được cho phép và ngược lại

ES ( IE.4 bit ) là bit cho phép ngắt truyền thông nối tiếp.

EX1, EX0 (IE.0 và IE.2 bit) là hai bit cho phép của hai ngắt

ngoài của vđk

Trang 6

Bài 5: NGẮT NGOÀI (INT)

2.Thanh Ghi Thiết Lập Chế Độ Ngắt(TCON):

TF1 ( TCON.7) cờ tràn của Timer1

TR1 ( TCON.6) bit Đk hoạt động của Timer1

TF0 ( TCON.5) cờ tràn của Timer0

TR0 ( TCON.4) bit Đk hoạt động của Timer0

Trang 7

Bài 5: NGẮT NGOÀI (INT)

IE1 ( TCON.3) Cờ ngắt ngoài kích theo sườn ; được CPU thiết

lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU xoá khi ngắt được xư lý

IE0 ( TCON.1) Cờ ngắt ngoài kích theo sườn ; được CPU thiết

lập khi phát hiền có sườn xuống ngắt ngoài và đựơc CPU xoá khi ngắt được xư lý

IT1 ( TCON.2) bit Đk kiểu ngắt INT1 được thiết lập và xoá

bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp

IT0 ( TCON.0) bit Đk kiểu ngắt INT0 được thiết lập và xoá

bởi phần mềm để xác định kiểu ngắt theo sườn hay mức thấp

Trang 8

Bài 5: NGẮT NGOÀI (INT)

Như vậy từ 2 thanh ghi trên , để sử dụng ngắt INT0 (ngắt theo mức ta sẽ phải khởi tạo như sau):

void khoi_tao() {

P3_2=1; // khai báo chân lấy tín hiệu EA=1; // cho phép ngắt toàn cục EX0=1; // cho phép ngắt ngoài 0

}

Trang 9

Bài 5: NGẮT NGOÀI (INT)

V>Chương Trình Phục Vụ Ngắt:

Void Name (void) interrupt x ( x là số thứ thực của ngắt )

{

// chuong trinh phuc vu ngat

}

Trang 10

Bài 5: NGẮT NGOÀI (INT)

Như Vậy Các Bước Để Sư Dụng Ngăt Như Sau

Start

Các Lệnh tiền xử lý

Hàm khởi tạo ngát

Hàm phục vụ ngát

Trang 11

Bài 5: NGẮT NGOÀI (INT)

VI>Bài Tầp Thực Hành:

B1 :Dùng ngắt ngoài INT0 để nháy Led1( P1_0) 5 lần khi công tắc tại chân P3_2 được nhấn ; chương trình chính nháy liên tục Led2 (P1_1) (Viết cho cả ngắt theo mức và theo sườn sau đó so sánh kết quả)

Trang 12

Bài 5: NGẮT NGOÀI (INT)

#include <REGX52.H>

void delay(long time) {

long n;

for(n=0;n<time;n++){}

} void khoi_tao() {

P3_2=1;

EA=1;

EX0=1;

Trang 13

Bài 5: NGẮT NGOÀI (INT)

void ngat() interrupt 0

{

int i;

for(i=0;i<5;i++){P1_0=~P1_0; delay(20000);}

}

void main()

{ P1_0 = 1; P1_1 = 1;

khoi_tao();

while(1)

{ P1_1=~P1_1;

delay(20000);

}

Trang 14

Bài 5: NGẮT NGOÀI (INT)

B2 :Dùng ngắt ngoài INT0 :khi nhấn công tắc P3_2 sẽ

nháy Led1 và nháy cho đến khi nhấn công tắc P3_2 lần 2 ; lặp lại quá trình trên Trong hàm main sẽ liên tục nháy một con Led khác

Trang 15

Bài 5: NGẮT NGOÀI (INT)

B3 :Dùng ngắt ngoài INT0 và 4 công tắc ở các chân P3_0,

P3_1 ,P3_2 , P3_3 :khi nhấn công tắc P3_2 sẽ nhảy vào ngắt và liên tục kiểm tra các công tắc P3_1 và P3_0 và P3_3 Khi nhấn P3_4 sẽ chọn 2 Led đầu của Led 7_Seg để hiển thì dữ liệu , nhấn P3_4 lần

2 sẽ chọn 2 Led sau (lặp lại quá trình trên) Khi chọn 2 Led

đầu :nếu P3_0 được nhấn sẽ tăng một biến từ 0 đến 59 (quay vòng giá trị) còn nếu P3_1 được nhấn sẽ giảm giá trị từ 59 xuống 0

(quay vòng giá trị) hiển thì ra 2 Led được chọn ; Khi chọn 2 Led sau :nếu P3_0 được nhấn sẽ tăng một biến từ 0 đến 23 (quay vòng giá trị) còn nếu P3_1 được nhấn sẽ giảm giá trị từ 23 xuống 0

(quay vòng giá trị) hiển thì ra 2 Led được chọn (chỉ thoát khỏi ngắt khi nhấn công tắc P3_2 lần nữa) sau đó sẽ cho giá trị tự tăng như thực tế (chưa quan trọng thời gian chính xac)

Ngày đăng: 27/10/2013, 20:15

TỪ KHÓA LIÊN QUAN

w