LOGO
Chương 5: Xử lý ngắt
Nội dung
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
5.1 Khái niệm và mục đích của ngắt
5.2. Tổ chức ngắt của vi điều khiển AT89S52
5.3. Các thiết kế sử dụng ngắt
www.themegallery.com
5.1. Khái niệm và mục
đích của ngắt
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
Khái niệm
Ngắt là gián đoạn một hoạt động nào đó và chuyển
sang một hoạt động khác có yêu cầu cao hơn, sau
khi thực hiện xong hoạt động này, trở về tiếp tục
thực hiện hoạt động ban đầu đang dang dở
Mục đích
Đáp ứng nhanh các yêu cầu trao đổi dữ liệu trong
khi vẫn thực hiện được các công việc khác
www.themegallery.com
5.1.
Tổ chức ngắt
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
a. AT89S52 có 6 nguồn ngắt
Ngắt ngoài đến từ chân /INT0
Ngắt ngoài đến từ chân /INT1
Ngắt do bộ Timer0
Ngắt do bộ Timer1
Ngắt do bộ Timer2
Ngắt do Port nối tiếp
www.themegallery.com
5.1.
Tổ chức ngắt
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
www.themegallery.com
Thanh ghi ngắt
Thanh ghi IE (Interrupt Enable Register)
EA
Cho phép ngắt toàn cục
ET2
Cho phép ngắt do bộ Timer 2
ES
Thanh ghi IE
Cho phép ngắt do Port nối tiếp
Ha Noi Univesity of Industry
Faculty of Electronics
Engineering
Cho phép ngắt do bộ Timer 1
ET1
EX1
E
Cho phép ngắt ngoài trên chân /INT1
T0
EX0
Cho phép ngắt do bộ Timer 0
Cho phép ngắt ngoài trên chân /INT0
www.themegallery.com
Thanh ghi
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
Thanh ghi IP (Interrupt Priority Register)
PT2
Bit ưu tiên ngắt do bộ Timer2
PS
Bit ưu tiên ngắt Port nối tiếp
PT1
Bit ưu tiên ngắt do bộ Timer 1
www.themegallery.com
Thanh ghi
Ha Noi Univesity of Industry
Faculty of Electronics Engineering
Thanh ghi IP (Interrupt Priority Register)
PT2
Bit ưu tiên ngắt do bộ Timer2
PS
Bit ưu tiên ngắt Port nối tiếp
PT1
Bit ưu tiên ngắt do bộ Timer 1
www.themegallery.com
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
Ngắt ưu tiên thấp
Ngắt có
ưu tiên cao
Chương trình chính
Hình 2:
Khi đang phục vụ ngắt ưu tiên
thấp mà xảy ra ngắt ưu tiên cao
Ngắt ưu tiên cao
Xảy ra ngắt có
ưu tiên thấp
Chương trình chính
Hình 3 :
Khi đang phục vụ ngắt ưu tiên
cao mà có yêu cầu ngắt ưu tiên thấp
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
Hoạt động của chương trình khi có ngắt
Chương trình
chính
Lệnh
Chương trình
con phục vụ ngắt
Lệnh
Lệnh
Ngắt ở đây
….
Lệnh i
Lệnh i +1
Lệnh
Lệnh
Lệnh
Lệnh
...
IRETURN
...
Lệnh
Bài 9:
Ngắt do Timer
www.themegallery.com
Nội dung:
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
1.1. Nguyên nhân gây ra ngắt do timer.
1.2. Thứ tự ưu tiên của các ngắt do timer.
2. THIẾT KẾ CÁC ỨNG DỤNG SỬ DỤNG
NGẮT DO TIMER.
2.1. Ngắt do tràn Timer 0.
2.2. Ngắt do tràn Timer 0 và Timer 1.
2.3. Ưu tiên khi sử dụng ngắt do Timer
www.themegallery.com
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
1.1. Nguyên nhân gây ra ngắt do timer.
Khi Timer tràn Thiết lập TFx =1 xảy ra ngắt
TIMER x
(8 hoặc 16 bit)
T
Tràn
Timer
TFx=1
Yêu cầu ngắt
do tràn Timer
www.themegallery.com
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
1.1. Nguyên nhân gây ra ngắt do timer.
Vi điều khiển 89S52 có 3 Timer
Timer 0
Timer 1
Timer 2
Xảy ra ngắt do tràn Timer 0,1,2
www.themegallery.com
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
Thứ tự ưu tiên của các ngắt do timer.
STT
Loại ngắt
Thứ tự ưu
Số hiệu ngắt
tiên
1
2
3
Ngắt ngoài /INT0
Ngắt do Timer 0
Ngắt ngoài /INT1
Thứ nhất
Thứ hai
Thứ ba
0
1
2
4
5
6
Ngắt do Timer 1
Ngắt do PORT nối tiếp
Ngắt do Timer 1
Thứ tư
Thứ năm
Thứ sáu
3
4
5
www.themegallery.com
1. KHÁI QUÁT VỀ NGẮT DO TIMER Ở 8051.
Thanh ghi ưu tiên ngắt IP (Interrupt Priority Register)
Để đặt mức ưu tiên của mỗi ngắt ở mức cao PTx
=1 Mức thấp với giá trị PTx = 0
-
P
-
PT2
PS
PT1
PX1
PT2
Bit ưu tiên ngắt do bộ Timer2
PT1
Bit ưu tiên ngắt do bộ Timer 1
T0
Bit ưu tiên ngắt do bộ Timer 0
PT0
PX0
2. THIẾT KẾ CÁC ỨNG DỤNG SỬ DỤNG
NGẮT DO TIMER
2.1. Ngắt do tràn Timer 0.
Ví dụ 1: Sử dụng Timer0 chế độ 8 bit tạo xung có chu
kỳ 500uS (2KHz) trên chân P3.0, Thạch anh 12MHz.
2. THIẾT KẾ CÁC ỨNG DỤNG SỬ DỤNG
NGẮT DO TIMER
Bước 1: Phân tích bài toán
500 uS
TIMER 0
P3.0
1uS
250 uS 250 uS
• Khi Timer tràn sẽ xảy ra ngắt.
• P3.0 ở mức 1 trong 250uS, mức 0 trong 250uS
• Đảo mức trên chân P3.0 xảy ra khi tràn Timer0
m
m
Bc 2: Lp lu thut
toỏn
Chơng trình chính
Begi
n
Chơng trình con PVN
Khởi tạo
các thanh
ghi
LED vàng
nhấp nháy
S
Đ
Có ngắt?
LED đỏ nhấp
nháy 20 lần
www.themegallery.com
Bớc 3: Viết chơng trình.
#include <REGX52.H>
unsigned int x ;
sbit LED_Vang=P1^0;
sbit LED_Do=P1^2;
void delay(void)
{
unsigned int i;
for(i=1;i<=25000;++i);}
void main(void)
{
-Khai báo các th vi ệ n
Begi
n
I T 0=1;
-Khai báo các biến IE=0x81;
- Viết chơng trìnwhhciloen(1)tạo
{
Led_Vang=1;
delay();
EA x ET2 ES ELT _EVX =0E;
1d an1g T0
edelay();
}
-Xác lập vòng lặp }vô tận
trễ
Khởi tạo
các thanh
ghi
LED vàng
nhấp
LED đỏ nhấp
nháy 20 lần
EX0
- Điều khiển LED void ngatngoai_0(void) interrupt 0
sáng, tắt.
vàng
{
for(x=1;x<=20;++x)
{
-Xác lập vòng lặp 20 lLầend_Do=1
- Điều khiển LED đỏ sádnegl,ay();
tắt.
Led_Do=0;
delay();
}
}
2. ThiÕt kÕ c¸c øng dông sö
dông ng¾t ngoµi.
Bíc 4: Ch¹y thö vµ kiÓm tra kÕt qu¶.