Bài giảng Vi điều khiển - Ngắt - interrupt - Nguyễn Đình Phú

Tóm tắt Bài giảng Vi điều khiển - Ngắt - interrupt - Nguyễn Đình Phú: ...A JNC MAIN1 MAIN2: CALL DELAY50MS CLR C MOV A,P3 RLC A MOV P3,A JC MAIN2 JMP MAIN1 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DELAY50MS: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguye...nterrupt 11 TIMER0 ĐỊNH THỜI 50MS THÌ BÁO NGẮT ĐỂ TĂNG BIẾN CÓ TÊN BDN (GỌI LÀ BIẾN ĐẾM NGẮT). KHI BIẾN ĐẾM NGẮT BẰNG 20 THÌ ĐƯỢC 1 GIÂY.  LƯU ĐỒ ĐIỀU KHIỂN Begin Khởi tạo timer0 đếm thời gian 50ms Cho phép timer0 ngắt để tăng BDN BDN=20 Đ S End BDN = 00 Giải...iện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 15 JMP MAIN ORG 000BH ;T0 ADDRESS INC BDN MOV TH0,#HIGH(-5000) MOV TL0,#LOW(-5000) RETI MAIN: MOV DPTR,#MA7DOAN MOV IE,#10000010B ;82H MOV TMOD,#00000001B ;TIME0: MO...

pdf21 trang | Chia sẻ: havih72 | Lượt xem: 247 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Vi điều khiển - Ngắt - interrupt - Nguyễn Đình Phú, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 1 
VI ĐIỀU KHIỂN ỨNG DỤNG NGẮT 
VĐK LUÔN THỰC HIỆN MỘT CHƯƠNG TRÌNH THƯỜNG GỌI LÀ CHƯƠNG TRÌNH CHÍNH 
KHI CÓ MỘT SỰ TÁC ĐỘNG TỪ BÊN NGOÀI BẰNG PHẦN CỨNG HAY TÁC ĐỘNG BÊN TRONG 
LÀM CHO VĐK NGỪNG THỰC HIỆN CHƯƠNG TRÌNH CHÍNH ĐỂ THỰC HIỆN MỘT CHƯƠNG 
TRÌNH KHÁC (CÒN GỌI LÀ CHƯƠNG TRÌNH PHỤC VỤ NGẮT ISR) VÀ SAU KHI THỰC HIỆN XONG 
VĐK TRỞ LẠI THỰC HIỆN TIẾP CHƯƠNG TRÌNH CHÍNH. 
QUÁ TRÌNH LÀM GIÁN ĐOẠN VI XỬ LÝ THỰC HIỆN CHƯƠNG TRÌNH CHÍNH XEM NHƯ LÀ NGẮT. 
CÓ NHIỀU SỰ TÁC ĐỘNG LÀM NGỪNG CHƯƠNG TRÌNH CHÍNH GỌI LÀ CÁC NGUỒN NGẮT, 
VÍ DỤ TIMER/COUNTER ĐẾM TRÀN SẼ TẠO RA NGẮT. 
NGẮT ĐÓNG MỘT VAI TRÒ QUAN TRỌNG TRONG LẬP TRÌNH ĐIỀU KHIỂN. 
TA CÓ THỂ MINH HỌA. 
Hình 4-27. Vi điều khiển thực hiện chương trình chính trong 2 trường hợp không và có ngắt. 
CÁC NGUỒN BÁO NGẮT GỒM 6 TÍN HIỆU 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 2 
TG CHO PHÉP NGẮT/CẤM NGẮT IE (INTERRUPT ENABLE): 
EA --- ET2 ES ET1 EX1 ET0 EX0 
CHỨC NĂNG CỦA TỪNG BIT: 
BIT KÍ HIỆU ĐỊA CHỈ BIT CHỨC NĂNG (ENABLE = 1; DISABLE = 0) 
IE.7 EA AFH CHO PHÉP/CẤM TOÀN BỘ CÁC NGUỒN NGẮT. 
IE.6 - AEH CHƯA DÙNG ĐẾN 
IE.5 ET2 ADH CHO PHÉP/CẤM NGẮT TIMER 2 (8052). 
IE.4 ES ACH CHO PHÉP/CẤM NGẮT PORT NỐI TIẾP. 
IE.3 ET1 ABH CHO PHÉP/CẤM NGẮT TIMER 1. 
IE.2 EX1 AAH CHO PHÉP/CẤM NGẮT NGOÀI EXTERNAL1 (INT1). 
IE.1 ET0 A9H CHO PHÉP/CẤM NGẮT TIMER 0. 
IE.0 EX0 A8H CHO PHÉP/CẤM NGẮT NGOÀI EXTERNAL0 (INT0). 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 3 
 CÁC VECTOR NGẮT (INTERRUPT VECTORS): 
Thanh ghi có chức năng thiết lập chế độ ưu tiên trong vi điều khiển là thanh ghi IP (Interrupt Priority) tại địa 
chỉ 0B8H. Tổ chức của thanh ghi như sau: 
--- --- PT2 PS PT1 PX1 PT0 PX0 
Hoạt động của từng bit trong thanh ghi IP được tóm tắt trong bảng 4-15. 
Bit Kí hiệu Địa chỉ bit Chức năng 
IP.7 - - Chưa sử dụng 
IP.6 - - Chưa sử dụng 
IP.5 PT2 BDH Ưu tiên cho ngắt Timer 2 (8052). 
IP.4 PS BCH Ưu tiên cho ngắt Port nối tiếp. 
IP.3 PT1 BBH Ưu tiên cho ngắt Timer 1. 
IP.2 PX1 BAH Ưu tiên cho ngắt ngoài External 1. 
IP.1 PT0 B9H Ưu tiên cho ngắt Timer 0. 
IP.0 PX0 B8H Ưu tiên cho ngắt ngoài External 0. 
Bảng 4-15. Tóm tắt chức năng các bit của thanh ghi IP. 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 4 
CÁC VECTOR ĐỊA CHỈ NGẮT DO NHÀ THIẾT KẾ CUNG CẤP 
INTERRUPT FLAG VECTORS ADDRESS 
SYSTEM RESET RST 0000H 
EXTERNAL0 IE0 0003H 
TIMER0 TF0 000BH 
EXTERNAL1 IE1 0013H 
TIMER1 TF1 001BH 
SERIAL PORT RI OR TI 0023H 
TIMER2 TF2 OR EXF2 002BH 
Bảng 4-17. Tóm tắt vector địa chỉ ngắt. 
VECTOR RESET HỆ THỐNG BẮT ĐẦU TẠI ĐỊA CHỈ 0000H: KHI RESET VI ĐIỀU KHIỂN THÌ THANH 
GHI PC = 0000H VÀ CHƯƠNG TRÌNH CHÍNH LUÔN BẮT ĐẦU TẠI ĐỊA CHỈ NÀY. 
KHI BẠN SỬ DỤNG YÊU CẦU NGẮT NÀO THÌ CHƯƠNG TRÌNH CON PHỤC VỤ NGẮT PHẢI VIẾT 
ĐÚNG TẠI ĐỊA CHỈ TƯƠNG ỨNG. VÍ DỤ BẠN SỬ DỤNG NGẮT TIMER T0 THÌ CHƯƠNG TRÌNH NGẮT 
BẠN PHẢI VIẾT TẠI ĐỊA CHỈ 000BH. 
BÀI SỐ 1: YÊU CẦU: 
MỘT HỆ THỐNG DÙNG VĐK CÓ 2 PORT ĐIỀU KHIỂN 16 LED ĐƠN 
1. P0 ĐIỀU KHIỂN 8 LED SÁNG TẮT DẦN VỚI TGIAN TRỂ LÀ 50MS (TIMER0) 
2. P1 CÓ 1 ĐIỂM SÁNG DI CHUYỂN VỚI TGIAN TRỂ LÀ 1S (TIMER1) 
 LƯU ĐỒ ĐIỀU KHIỂN 
PHÂN TÍCH YÊU CẦU: 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 5 
P0 ĐIỀU KHIỂN 8 LED SÁNG TẮT DẦN VỚI TGIAN TRỂ LÀ 50MS THỰC HIỆN 
LIÊN TỤC – GIAO CHO CHƯƠNG TRÌNH CHÍNH THỰC HIỆN 
P1 CÓ 1 ĐIỂM SÁNG DI CHUYỂN VỚI TGIAN TRỂ LÀ 1S (TIMER1) – GIAO CHO 
CHƯƠNG TRÌNH PHỤC VỤ NGẮT TIMER1 
1 LED SÁNG (P1) 
SÁNG TẮT DẦN (P0)
BEGIN
END
TẮT 8 LED (P0)
CHO TIMER1 NGẮT (50MS) 
KT T0, T1: ĐẾM 50MS
BDN:=0
DỊCH ĐIỂM SÁNG (P1)
INT_T1
RET_I
KHỞI TẠO LẠI 50MS 
BDN:= BDN+1
BDN=20
Đ
S
 VIẾT CHƯƠNG TRÌNH 
;CHUONG TRINH DIEU KHIEN 
 BDN EQU R2 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
 ORG 0000H ;DC CUA CHƯƠNG TRÌNH CHÍNH 
 JMP MAIN 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
 ORG 001BH ;DC CUA CT NGAT TIMER1 
 MOV TH1,#HIGH(-50000) 
 MOV TL1,#LOW(-50000) 
 INC BDN 
 CJNE BDN,#20,INT0EXIT 
 MOV BDN,#0 
 MOV A,P1 
 RL A 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 6 
 MOV P1,A 
INT0EXIT: RETI ;RETURN FROM INTERRUPT 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
MAIN: MOV IE,#10001000B ;CHO PHEP NGAT EA=1, ET1=1 
 MOV TMOD,#00010001B ; 
 SETB TR1 ;CHO TIMER1 DEM 
 MOV P1,#00000001B 
 MOV P3,#00H 
 MOV BDN,#0 
MAIN1: CALL DELAY50MS 
 SETB C 
 MOV A,P3 
 RLC A 
 MOV P3,A 
 JNC MAIN1 
MAIN2: CALL DELAY50MS 
 CLR C 
 MOV A,P3 
 RLC A 
 MOV P3,A 
 JC MAIN2 
 JMP MAIN1 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
DELAY50MS: 
MOV TH0,#HIGH(-50000) 
 MOV TL0,#LOW(-50000) 
 SETB TR0 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 7 
 JNB TF0,$ 
 CLR TF0 
 CLR TR0 
 RET 
 END 
BÀI SỐ 2: YÊU CẦU: 
MỘT HỆ THỐNG DÙNG VĐK CÓ 2 PORT ĐIỀU KHIỂN 16 LED ĐƠN 
P0 ĐIỀU KHIỂN 8 LED SÁNG TẮT DẦN VỚI TGIAN TRỂ LÀ 50MS (TIMER0) 
P1 HIỂN THỊ DỮ LIỆU TỪ MÁY TÍNH GỞI XUỐNG 
 LƯU ĐỒ ĐIỀU KHIỂN 
PHÂN TÍCH YÊU CẦU: 
P0 ĐIỀU KHIỂN 8 LED SÁNG TẮT DẦN VỚI TGIAN TRỂ LÀ 50MS THỰC HIỆN 
LIÊN TỤC – GIAO CHO CHƯƠNG TRÌNH CHÍNH THỰC HIỆN 
P1 CÓ 1 ĐIỂM SÁNG DI CHUYỂN VỚI TGIAN TRỂ LÀ 1S (TIMER1) – GIAO CHO 
CHƯƠNG TRÌNH PHỤC VỤ NGẮT TIMER1 
1 LED SÁNG (P1) 
SÁNG TẮT DẦN (P0)
BEGIN
END
TẮT 8 LED (P0)
CHO TIMER1 NGẮT (50MS) 
KT T0, T1: ĐẾM 50MS
BDN:=0
DỊCH ĐIỂM SÁNG (P1)
INT_T1
RET_I
KHỞI TẠO LẠI 50MS 
BDN:= BDN+1
BDN=20
Đ
S
 VIẾT CHƯƠNG TRÌNH 
;CHUONG TRINH DIEU KHIEN 
 BDN EQU R2 
 DEM EQU R3 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 8 
 ORG 0000H 
 JMP MAIN 
 ORG 001BH ;BẮT ĐẦU CT NGẮT CỦA 
 MOV TH1,#3CH 
 MOV TL1,#0B0H 
 INC BDN 
 CJNE BDN,#20,INT_T1 
 MOV BDN,#0 
 PUSH ACC ;CẤT NỘI DUNG TGA VÀO BNNX 
 MOV A,P1 
 RL A 
 MOV P1,A 
 POP ACC ;LẤY LẠI 
INT_T1: RETI 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
MAIN: MOV IE,#10001000B 
 MOV TMOD,#00010001B ;T0,T1: MOD1 
 SETB TR1 
 MOV P1,#11111110B ;1 LED SANG 
 MOV BDN,#0 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
MAIN3: MOV DEM,#8 ;8 LAN XOAY 
 MOV P0,#11111111B ;8 LED TAT 
MAIN1: CALL DELAY50MS_T0 
 CLR C 
 MOV A,P0 
 RLC A 
 MOV P0,A 
 DJNZ DEM,MAIN1 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 9 
 MOV DEM,#8 
MAIN2: SETB C 
 MOV A,P0 
 RLC A 
 MOV P0,A 
 CALL DELAY50MS_T0 
 DJNZ DEM,MAIN2 
 JMP MAIN3 
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
DELAY50MS_T0: 
MOV TH0,#3CH 
 MOV TL0,#0B0H 
 SETB TR0 
 JNB TF0,$ 
 CLR TR0 
 CLR TF0 
 RET 
 END 
;CHUONG TRINH 
 BDN EQU R2 
 ORG 0000H 
 JMP MAIN 
 ORG 001BH 
 MOV TH1,#HIGH(-50000) 
 MOV TL1,#LOW(-50000) 
 INC BDN 
 CJNE BDN,#20,INT_T0A 
 MOV BDN,#0 
 PUSH ACC 
 MOV A,P1 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 10 
 RL A 
 MOV P1,A 
 POP ACC 
INT_T0A: RETI 
MAIN: MOV IE,#10001000B ;TIMER1 NGAT 
 MOV TMOD,#00010001B 
 SETB TR1 
 MOV P1,#01H 
 MOV P0,#00H 
MAIN1: CALL DELAY50MS 
 SETB C 
 MOV A,P0 
 RLC A 
 MOV P0,A 
 JNC MAIN1 
MAIN2: CLR C 
 MOV A,P0 
 RLC A 
 MOV P0,A 
 CALL DELAY50MS 
 JNC MAIN2 
 JMP MAIN1 
DELAY50MS: 
MOV TH0,#HIGH(-50000) 
 MOV TL0,#LOW(-50000) 
 SETB TR0 
 JNB TF0,$ 
 CLR TR0 
 CLR TF0 
 RET 
 END 
CHƯƠNG TRÌNH ĐỒNG HỒ SỐ GIỜ PHÚT GIÂY – HIỂN THỊ TRÊN LED 7 ĐOẠN 
SỬ DỤNG TIMER0 BÁO NGẮT ĐỂ TĂNG THỜI GIAN GIÂY 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 11 
TIMER0 ĐỊNH THỜI 50MS THÌ BÁO NGẮT ĐỂ TĂNG BIẾN CÓ TÊN BDN (GỌI 
LÀ BIẾN ĐẾM NGẮT). KHI BIẾN ĐẾM NGẮT BẰNG 20 THÌ ĐƯỢC 1 GIÂY. 
 LƯU ĐỒ ĐIỀU KHIỂN 
Begin 
Khởi tạo timer0 đếm thời gian 50ms
Cho phép timer0 ngắt để tăng BDN
BDN=20
Đ
S
End 
BDN = 00
Giải mã giây từ số BCD sang mã 7 đoạn 
Giây : = Giây +1
Giây =60
S
Đ
Hiển thị trên led 7 đoạn 
Giây = 00 Tăng BĐN
Ngắt TIMER0
RETI
Khởi tạo lại timer0 – 
đếm 50ms tiếp theo
 VIẾT CHƯƠNG TRÌNH 
;CHTR DK DEM PHUT GIAY 
 GIO EQU R3 
 PHUT EQU R2 
 GIAY EQU R1 
 BDN EQU R4 
 ORG 0000H ;SYSTEM RESET 
 JMP MAIN 
 ORG 000BH ;T0 ADDRESS 
 INC BDN 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 12 
 MOV TH0,#HIGH(-50000) 
 MOV TL0,#LOW(-50000) 
 RETI 
MAIN: MOV DPTR,#MA7DOAN 
 MOV IE,#10000010B ;82H 
 MOV TMOD,#00000001B ;TIME0: MOD1, DEM XUNG NOI 
 SETB TR0 ;CHO TIMER0 DEM 
LB: MOV GIO,#08 
LB3: MOV PHUT,#30 
LB2: MOV GIAY,#00 
LB1: MOV BDN,#00 
CALL HEXTOBCD 
 CALL GIAIMA 
LBA: CALL HIENTHI 
 CJNE BDN,#20,LBA ;BDN=20 => TG=50MS×20=1S 
 INC GIAY 
 CJNE GIAY,#60,LB1 
 INC PHUT 
 CJNE PHUT,#60,LB2 
 MOV PHUT,#0 
 INC GIO 
 CJNE GIO,#24,LB2 
 MOV GIO,#0 
 JMP LB2 
HEXTOBCD: MOV A,GIAY 
 MOV B,#10 
 DIV AB ;(A)=CHUC GIAY, (B)=DONVI GIAY 
 MOV 27H,B 
 MOV 26H,A 
 MOV A,PHUT 
 MOV B,#10 
 DIV AB ;(A)=CHUC PHUT, (B)=DONVI PHUT 
 MOV 25H,B 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 13 
 MOV 24H,A 
 MOV A,GIO 
 MOV B,#10 
 DIV AB ;(A)=CHUC GIO, (B)=DONVI GIO 
 MOV 23H,B 
 MOV 22H,A 
 RET 
GIAIMA: MOV A,27H 
 MOVC A,@A+DPTR ;GIAI MA HANG DON VI GIAY 
 MOV 37H,A ;(37H) LUU MA7DOAN DVI GIAY 
 MOV A,26H 
 MOVC A,@A+DPTR ;CHUC GIAY 
 MOV 36H,A ;(36H) LUU MA7DOAN CHUC GIAY 
 MOV A,25H 
 MOVC A,@A+DPTR ;DON VI PHUT 
 MOV 35H,A ;(35H) LUU MA7DOAN DVI PHUT 
 MOV A,24H 
 MOVC A,@A+DPTR ;CHUC PHUT 
 MOV 34H,A ;(34H) LUU MA7DOAN CHUC PHUT 
 MOV A,23H 
 MOVC A,@A+DPTR ;DON VI PHUT 
 MOV 33H,A ;(35H) LUU MA7DOAN DVI PHUT 
 MOV A,22H 
 MOVC A,@A+DPTR ;CHUC PHUT 
 MOV 32H,A ;(34H) LUU MA7DOAN CHUC PHUT 
 RET 
HIENTHI: MOV P0,37H ;HTHI DV GIAY 
 MOV P2,#11111110B 
 CALL DELAY1MS 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 14 
 MOV P0,36H ;HTHI CHUC GIAY 
 MOV P2,#11111101B 
 CALL DELAY1MS 
 MOV P0,35H ;HTHI DV PHUT 
 MOV P2,#11110111B 
 CALL DELAY1MS 
 MOV P0,34H ;HTHI CHUC PHUT 
 MOV P2,#11101111B 
 CALL DELAY1MS 
 MOV P0,33H ;HTHI CHUC PHUT 
 MOV P2,#10111111B 
 CALL DELAY1MS 
 MOV P0,32H ;HTHI CHUC PHUT 
 MOV P2,# 01111111B 
 CALL DELAY1MS 
 RET 
$INCLUDE(TV_DELAY.ASM) 
MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 
 END 
KHI GIẢM THỜI GIAN (BDN SO SÁNH 2, GIẢM THỜI GIAN CỦA CHƯƠNG TRÌNH 
NGẮT TIMER0 CÒN 5MS) ĐỂ CHẠY NHANH THÌ THẤY HIỆN TƯỢNG ĐẾM CÀ GIỰT 
LÝ LUẬN KHÔNG CHÍNH XÁC BỊ TRƯỢT KHI QUÁ GIÁ TRỊ 2 CỦA BDN – CHỜ CHO 
ĐẾN KHI BDN TĂNG TỪ 3 ĐẾN 255 RỒI VỀ 0, 1, 2 
DO THỜI GIAN NGẮT NHANH HƠN THỜI GIAN XỬ LÝ CỦA CHƯƠNG TRÌNH CHÍNH 
– CHƯƠNG TRÌNH HIỂN THỊ MẤT NHIỀU THỜI GIAN HƠN 10MS 
CHTR DK DEM PHUT GIAY 
 GIO EQU R3 
 PHUT EQU R2 
 GIAY EQU R1 
 BDN EQU R4 
 ORG 0000H ;SYSTEM RESET 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 15 
 JMP MAIN 
 ORG 000BH ;T0 ADDRESS 
 INC BDN 
 MOV TH0,#HIGH(-5000) 
 MOV TL0,#LOW(-5000) 
 RETI 
MAIN: MOV DPTR,#MA7DOAN 
 MOV IE,#10000010B ;82H 
 MOV TMOD,#00000001B ;TIME0: MOD1, DEM XUNG NOI 
 SETB TR0 ;CHO TIMER0 DEM 
 MOV BDN,#00 
 MOV GIO,#08 
 MOV PHUT,#50 
LB2: MOV GIAY,#00 
LB1: MOV BDN,#00 
 CALL HEXTOBCD 
 CALL GIAIMA 
LBA: CALL HIENTHI 
 CJNE BDN,#2,LBA ;BDN=20 => TG=50MS×20=1S 
 INC GIAY 
 CJNE GIAY,#60,LB1 
 INC PHUT 
 CJNE PHUT,#60,LB2 
 MOV PHUT,#0 
 INC GIO 
 CJNE GIO,#24,LB2 
 MOV GIO,#00H 
 JMP LB2 
CÁC CHƯƠNG TRÌNH CON CÒN LẠI GIỐNG NHƯ TRÊN 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 16 
LÝ LUẬN CHÍNH XÁC KHÔNG BỊ TRƯỢT KHI QUÁ GIÁ TRỊ 2 CỦA BDN 
;CHTR DK DEM PHUT GIAY 
 GIO EQU R3 
 PHUT EQU R2 
 GIAY EQU R1 
 BDN EQU R4 
 ORG 0000H ;SYSTEM RESET 
 JMP MAIN 
 ORG 000BH ;T0 ADDRESS 
 INC BDN 
 MOV TH0,#HIGH(-5000) 
 MOV TL0,#LOW(-5000) 
 RETI 
MAIN: MOV DPTR,#MA7DOAN 
 MOV IE,#10000010B ;82H 
 MOV TMOD,#00000001B ;TIME0: MOD1, DEM XUNG NOI 
 SETB TR0 ;CHO TIMER0 DEM 
 MOV BDN,#00 
 MOV GIO,#08 
 MOV PHUT,#50 
LB2: MOV GIAY,#00 
LB1: CALL HEXTOBCD 
 CALL GIAIMA 
LBA: CALL HIENTHI 
 CJNE BDN,#2,LBB ;BDN=20 => TG=50MS×20=1S 
 MOV BDN,#00 
LBC: INC GIAY 
 CJNE GIAY,#60,LB1 
 INC PHUT 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 17 
 CJNE PHUT,#60,LB2 
 MOV PHUT,#00 
 INC GIO 
 CJNE GIO,#24,LB2 
 MOV GIO,#00 
 JMP LB2 
;XXXXXXXXXXXXXX 
LBB: JC LBA ;NHAY NEU NHO HON 2 
 MOV A,BDN 
 CLR C 
 SUBB A,#2 
 MOV BDN,A 
 JMP LBC 
CÁC CHƯƠNG TRÌNH CON CÒN LẠI GIỐNG NHƯ TRÊN 
CHUONG TRINH GIO PHUT GIAY CO PHIM DIEU CHINH GIO 
;CHTR DK DEM PHUT GIAY 
 GIO EQU R3 
 PHUT EQU R2 
 GIAY EQU R1 
 BDN EQU R4 
 ORG 0000H ;SYSTEM RESET 
 JMP MAIN 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
;CHUONG TRINH CON NGAT INT0 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
 ORG 0003H ;INT0 
 JMP INT0_TIEPTUC 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
;CHUONG TRINH CON NGAT TIMER0 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
 ORG 000BH ;T0 ADDRESS 
 INC BDN 
 MOV TH0,#HIGH(-50000) 
 MOV TL0,#LOW(-50000) 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 18 
 RETI 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
;CHUONG TRINH CON NGAT INT0 DUNG DE CHINH GIO 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
INT0_TIEPTUC: 
CLR EA 
 INC GIO 
 CJNE GIO,#24,INT0_END 
 MOV GIO,#00 
INT0_END: CALL HIENTHI 
 JNB P3.2,INT0_END 
 SETB EA 
 RETI 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
;CHUONG TRINH CHINH 
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
MAIN: MOV DPTR,#MA7DOAN 
 MOV IE,#10000011B ;83H 
 MOV TMOD,#00000001B ;TIME0: MOD1, DEM XUNG NOI 
 SETB TR0 ;CHO TIMER0 DEM 
 SETB IT0 ;CHO PHEP NGAT CANH 
LB: MOV GIO,#14 
LB3: MOV PHUT,#45 
LB2: MOV GIAY,#00 
LB1: MOV BDN,#00 
 CALL HEXTOBCD 
 CALL GIAIMA 
LBA: CALL HIENTHI 
 CJNE BDN,#20,LBA ;BDN=20 => TG=50MS×20=1S 
 INC GIAY 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 19 
 CJNE GIAY,#60,LB1 
 INC PHUT 
 CJNE PHUT,#60,LB2 
 MOV PHUT,#0 
 INC GIO 
 CJNE GIO,#24,LB2 
 MOV GIO,#0 
 JMP LB2 
HEXTOBCD: MOV A,GIAY 
 MOV B,#10 
 DIV AB ;(A)=CHUC GIAY, (B)=DONVI GIAY 
 MOV 27H,B 
 MOV 26H,A 
 MOV A,PHUT 
 MOV B,#10 
 DIV AB ;(A)=CHUC PHUT, (B)=DONVI PHUT 
 MOV 25H,B 
 MOV 24H,A 
 MOV A,GIO 
 MOV B,#10 
 DIV AB ;(A)=CHUC GIO, (B)=DONVI GIO 
 MOV 23H,B 
 MOV 22H,A 
 RET 
GIAIMA: MOV A,27H 
 MOVC A,@A+DPTR ;GIAI MA HANG DON VI GIAY 
 MOV 37H,A ;(37H) LUU MA7DOAN DVI GIAY 
 MOV A,26H 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 20 
 MOVC A,@A+DPTR ;CHUC GIAY 
 MOV 36H,A ;(36H) LUU MA7DOAN CHUC GIAY 
 MOV A,25H 
 MOVC A,@A+DPTR ;DON VI PHUT 
 MOV 35H,A ;(35H) LUU MA7DOAN DVI PHUT 
 MOV A,24H 
 MOVC A,@A+DPTR ;CHUC PHUT 
 MOV 34H,A ;(34H) LUU MA7DOAN CHUC PHUT 
 MOV A,23H 
 MOVC A,@A+DPTR ;DON VI PHUT 
 MOV 33H,A ;(35H) LUU MA7DOAN DVI PHUT 
 MOV A,22H 
 MOVC A,@A+DPTR ;CHUC PHUT 
 MOV 32H,A ;(34H) LUU MA7DOAN CHUC PHUT 
 RET 
HIENTHI: MOV P0,37H ;HTHI DV GIAY 
 MOV P2,#11111110B 
 CALL DELAY1MS 
 MOV P0,36H ;HTHI CHUC GIAY 
 MOV P2,#11111101B 
 CALL DELAY1MS 
 MOV P0,35H ;HTHI DV PHUT 
 MOV P2,#11110111B 
 CALL DELAY1MS 
 MOV P0,34H ;HTHI CHUC PHUT 
 MOV P2,#11101111B 
Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú 
Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 21 
 CALL DELAY1MS 
 MOV P0,33H ;HTHI CHUC PHUT 
 MOV P2,#10111111B 
 CALL DELAY1MS 
 MOV P0,32H ;HTHI CHUC PHUT 
 MOV P2,# 01111111B 
 CALL DELAY1MS 
 RET 
$INCLUDE(TV_DELAY.ASM) 
MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H 
 END 

File đính kèm:

  • pdfbai_giang_vi_dieu_khien_ngat_interrupt_nguyen_dinh_phu.pdf