Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 155 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
Trang 1Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 155
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
Trang 2Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 156
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)
Trang 3Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 157
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
Trang 4Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 158
CÁC VECTOR ĐỊA CHỈ NGẮT DO NHÀ THIẾT KẾ CUNG CẤP
INTERRUPT FLAG VECTORS ADDRESS SYSTEM RESET RST 0000H
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)
PHÂN TÍCH YÊU CẦU:
Trang 5Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 159
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
CJNE BDN,#20,INT0EXIT MOV BDN,#0
Trang 6Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 160
Trang 7Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 161
JNB TF0,$
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
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
Trang 8Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 162
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Trang 9Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 163
CJNE BDN,#20,INT_T0A MOV BDN,#0
PUSH ACC MOV A,P1
Trang 10Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 164
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
Trang 11Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 165
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
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
ORG 0000H ;SYSTEM RESET JMP MAIN
ORG 000BH ;T0 ADDRESS INC BDN
Trang 12Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 166
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
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
Trang 13Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 167
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
Trang 14Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 168
MOV P0,36H ;HTHI CHUC GIAY MOV P2,#11111101B
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
Trang 15Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 169
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
Trang 16Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 170
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
Trang 17Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 171
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)
Trang 18Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 172
INT0_END: CALL HIENTHI
JNB P3.2,INT0_END SETB EA
SETB IT0 ;CHO PHEP NGAT CANH
CJNE BDN,#20,LBA ;BDN=20 => TG=50MS×20=1S INC GIAY
Trang 19Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 173
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
Trang 20Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 174
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
Trang 21Bộ môn điện tử công nghiệp bài giảng vi điều khiển: ngắt – interrupt 175