Tải bản đầy đủ (.pdf) (19 trang)

Bài giảng lý thuyết vi xử lý-Chương 6: Hoạt động ngắt doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (293.54 KB, 19 trang )

ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾTBÀI GIẢNG LÝ THUYẾT
VI XỬ LÝVI XỬ LÝ
TP. HỒ CHÍ MINHTP. HỒ CHÍ MINH
THÁNG 09THÁNG 09 20092009
VI XỬ LÝVI XỬ LÝ
GiáoGiáo viên: PHẠM QUANG TRÍviên: PHẠM QUANG TRÍ
ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 6CHƯƠNG 6
CHƯƠNG 6CHƯƠNG 6
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
 NgắtNgắt ((InterruptInterrupt)) làlà việcviệc xảyxảy rara mộtmột ñiềuñiều kiệnkiện làmlàm chocho
chươngchương trìnhtrình ñangñang thựcthực thithi bịbị tạmtạm dừngdừng ñểñể quayquay sangsang thựcthực
thithi mộtmột chươngchương trìnhtrình kháckhác SauSau khikhi thựcthực thithi xongxong ñoạnñoạn
chươngchương trìnhtrình nàynày sẽsẽ quayquay trởtrở vềvề ñểñể thựcthực thithi tiếptiếp chươngchương
trìnhtrình ñangñang bịbị tạmtạm dừngdừng
 CPUCPU khôngkhông thểthể thựcthực thithi nhiềunhiều hơnhơn mộtmột lệnhlệnh ởở mộtmột thờithời
ñiểmñiểm
nhưngnhưng
CPUCPU
cócó
thểthể
tạmtạm
ngưngngưng
việcviệc
thựcthực
thithi


mộtmột
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
ñiểmñiểm
nhưngnhưng
CPUCPU
cócó
thểthể
tạmtạm
ngưngngưng
việcviệc
thựcthực
thithi
mộtmột
chươngchương trìnhtrình ñểñể thựcthực thithi mộtmột chươngchương trìnhtrình kháckhác rồirồi sausau ñóñó
quayquay vềvề thựcthực thithi tiếptiếp tụctục chươngchương trìnhtrình ñangñang bịbị tạmtạm ngưngngưng
 MộtMột hệhệ thốngthống ñượcñược ñiềuñiều khiểnkhiển bởibởi ngắtngắt chocho tata ảoảo tưởngtưởng
nhiềunhiều côngcông việcviệc ñangñang ñượcñược vivi xửxử lýlý thựcthực hiệnhiện ñồngñồng thờithời
 SựSự giốnggiống nhaunhau vàvà kháckhác nhaunhau giữagiữa ngắtngắt ((InterruptInterrupt)) vàvà gọigọi
chươngchương trìnhtrình concon ((CallCall SubSub RountineRountine))::
 GiốngGiống nhaunhau::
LàmLàm tạmtạm dừngdừng chươngchương trìnhtrình ñangñang thựcthực thi,thi, thựcthực thithi mộtmột
chươngchương trìnhtrình khác,khác, sausau ñóñó quayquay vềvề ñểñể thựcthực thithi tiếptiếp tụctục
chươngchương trìnhtrình ñangñang bịbị tạmtạm dừngdừng

KhácKhác
nhaunhau
::
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG


KhácKhác
nhaunhau
::
 BiểuBiểu diễndiễn việcviệc thựcthực thithi chươngchương trìnhtrình cócó ngắtngắt vàvà khôngkhông cócó
ngắtngắt::
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
 CácCác nguồnnguồn ngắtngắt củacủa 80518051::
1.1. NgắtNgắt dodo tíntín hiệuhiệu bênbên ngoàingoài 00
2.2. NgắtNgắt dodo tíntín hiệuhiệu bênbên ngoàingoài 11
3.3. NgắtNgắt dodo TimerTimer 00
4.4. NgắtNgắt dodo TimerTimer 11
5.5. NgắtNgắt dodo portport nốinối tiếptiếp
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
TỔ CHỨC NGẮT CỦA 8051TỔ CHỨC NGẮT CỦA 8051
 LưuLưu ýý::
 KhiKhi tata resetreset hệhệ thốngthống thìthì tấttất cảcả cáccác ngắtngắt ñềuñều bịbị cấmcấm hoạthoạt
ñộngñộng
 CácCác nguồnnguồn ngắtngắt nàynày ñượcñược chocho phépphép hoặchoặc cấmcấm hoạthoạt ñộngñộng
bằngbằng lệnhlệnh dodo ngườingười lậplập trìnhtrình thiếtthiết lậplập
 ðểðể giảigiải quyếtquyết trườngtrường hợphợp haihai hayhay nhiềunhiều ngắtngắt xảyxảy rara ñồngñồng thờithời
hoặchoặc mộtmột ngắtngắt xảyxảy rara trongtrong khikhi mộtmột ngắtngắt kháckhác ñangñang ñượcñược
thựcthực thithi thìthì CPUCPU dựadựa vàovào haihai yếuyếu tốtố:: ưuưu tiêntiên ngắtngắt vàvà chuỗichuỗi
vòngvòng
 CácCác cờcờ báobáo tíntín hiệuhiệu ngắtngắt ((cc ngtngt))::
 IEIE00 –– CờCờ ngắtngắt ngoàingoài 00
 IEIE11 –– CờCờ ngắtngắt ngoàingoài 11
 TFTF00 –– CờCờ ngắtngắt TimerTimer 00
 TFTF11 –– CờCờ ngắtngắt TimerTimer 11

 TITI vàvà RIRI –– CờCờ ngắtngắt portport nốinối tiếptiếp
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
TỔ CHỨC NGẮT CỦA 8051TỔ CHỨC NGẮT CỦA 8051
 LưuLưu ýý::
 CờCờ ngắtngắt ñượcñược ñặtñặt bằngbằng 11 khikhi tíntín hiệuhiệu ngắtngắt tươngtương ứngứng xảyxảy rara
 CờCờ ngắtngắt ñượcñược xóaxóa bằngbằng 00 khikhi ISRISR củacủa ngắtngắt ñượcñược thựcthực thithi
(ngoại(ngoại trừtrừ cờcờ TITI vàvà RIRI phảiphải xóaxóa bằngbằng lệnhlệnh))
 ChọnChọn loạiloại kíchkích hoạthoạt chocho ngắtngắt ngoàingoài::
 CóCó 22 kiểukiểu kíchkích hoạthoạt chocho ngắtngắt ngoàingoài:: kíchkích hoạthoạt mứcmức hayhay kíchkích
hoạthoạt cạnhcạnh
 ViệcViệc chọnchọn kiểukiểu kíchkích hoạthoạt ñượcñược lậplập trìnhtrình thôngthông quaqua cáccác bitbit
ITIT00 vàvà ITIT11
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
TỔ CHỨC NGẮT CỦA 8051TỔ CHỨC NGẮT CỦA 8051
 ChọnChọn loạiloại kíchkích hoạthoạt chocho ngắtngắt ngoàingoài::
 LưuLưu ýý::
 ITIT00,, ITIT11 ñượcñược ñặtñặt bằngbằng 00 khikhi chọnchọn kiểukiểu kíchkích mứcmức
 ITIT00,, ITIT11 ñượcñược ñặtñặt bằngbằng 11 khikhi chọnchọn kiểukiểu kíchkích cạnhcạnh xuốngxuống
 ThờiThời giangian duyduy trìtrì táctác ñộngñộng củacủa tíntín hiệuhiệu ngắtngắt
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
TỔ CHỨC NGẮT CỦA 8051TỔ CHỨC NGẮT CỦA 8051
Trường hợp ngắt ngoài kích cạnh xuốngTrường hợp ngắt ngoài kích cạnh xuống
 ChọnChọn loạiloại kíchkích hoạthoạt chocho ngắtngắt ngoàingoài::
 LưuLưu ýý::
 ITIT00,, ITIT11 ñượcñược ñặtñặt bằngbằng 00 khikhi chọnchọn kiểukiểu kíchkích mứcmức thấpthấp
 ITIT00,, ITIT11 ñượcñược ñặtñặt bằngbằng 11 khikhi chọnchọn kiểukiểu kíchkích cạnhcạnh xuốngxuống
 ThờiThời giangian duyduy trìtrì táctác ñộngñộng củacủa tíntín hiệuhiệu ngắtngắt
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
TỔ CHỨC NGẮT CỦA 8051TỔ CHỨC NGẮT CỦA 8051
Trường hợp ngắt ngoài kích mức thấpTrường hợp ngắt ngoài kích mức thấp

 ThanhThanh ghighi chocho phépphép ngắtngắt ((IEIE:: InterruptInterrupt EnableEnable))::
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮTTHANH GHI SỬ DỤNG TRONG NGẮT
 ThanhThanh ghighi ưuưu tiêntiên ngắtngắt ((IPIP:: InterruptInterrupt PriorityPriority))::
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮTTHANH GHI SỬ DỤNG TRONG NGẮT
 ChuỗiChuỗi vòngvòng ngắtngắt ((InterruptInterrupt PollingPolling SequenceSequence))::
•• ðểðể giảigiải quyếtquyết vấnvấn ñềñề haihai hayhay nhiềunhiều tíntín hiệuhiệu ngắtngắt cócó mứcmức ưuưu
tiêntiên giốnggiống nhaunhau xuấtxuất hiệnhiện ñồngñồng thờithời
•• ThứThứ tựtự chuỗichuỗi vòngvòng (từ(từ thấpthấp ñếnñến cao)cao):: NgắtNgắt ngoàingoài 00 →
→→
→→
→→
→ NgắtNgắt
TimerTimer
00

→→
→→
→→

NgắtNgắt
ngoàingoài
11

→→
→→
→→

NgắtNgắt

TimerTimer
11

→→
→→
→→

NgắtNgắt
portport
nốinối
tiếptiếp

HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮTTHANH GHI SỬ DỤNG TRONG NGẮT
TimerTimer
00

→→
→→
→→

NgắtNgắt
ngoàingoài
11

→→
→→
→→

NgắtNgắt

TimerTimer
11

→→
→→
→→

NgắtNgắt
portport
nốinối
tiếptiếp

 CácCác vectơvectơ ngắtngắt củacủa 80518051::
•• VectơVectơ ngắtngắt làlà ñịañịa chỉchỉ bắtbắt ñầuñầu chươngchương trìnhtrình phụcphục vụvụ ngắtngắt ((ISRISR))
củacủa ngắtngắt tươngtương ứngứng
•• BảngBảng quiqui ñịnhñịnh ñịañịa chỉchỉ bắtbắt ñầuñầu củacủa cáccác ISRISR::
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
VECTƠ NGẮT CỦA 8051VECTƠ NGẮT CỦA 8051
 KhuôngKhuông mẫumẫu chươngchương trìnhtrình KHÔNGKHÔNG sửsử dụngdụng ngắtngắt::
ORGORG 0000H0000H ;ðiểm nhập của reset hệ thống.;ðiểm nhập của reset hệ thống.
MAIN:MAIN:
……………………………… ;Các lệnh của chương trình chính.;Các lệnh của chương trình chính.
……………………………… ;;
……………………………… ;;
ENDEND
;Chỉ dẫn kết thúc chương trình.;Chỉ dẫn kết thúc chương trình.
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮTTHIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
ENDEND
;Chỉ dẫn kết thúc chương trình.;Chỉ dẫn kết thúc chương trình.

 KhuôngKhuông mẫumẫu chươngchương trìnhtrình CÓCÓ sửsử dụngdụng ngắtngắt::
ORGORG 0000H0000H ;ðiểm nhập của reset hệ thống.;ðiểm nhập của reset hệ thống.
SJMPSJMP MAINMAIN ;Lệnh nhảy ñể vượt qua các ISR.;Lệnh nhảy ñể vượt qua các ISR.
……………… ……………… ;ðiểm nhập của các ISR.;ðiểm nhập của các ISR.
……………………………… ;;
……………………………… ;;
ORGORG
0030H0030H
;ðiểm nhập của chương trình chính.;ðiểm nhập của chương trình chính.
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮTTHIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
ORGORG
0030H0030H
;ðiểm nhập của chương trình chính.;ðiểm nhập của chương trình chính.
MAIN:MAIN:
……………………………… ;Các lệnh của chương trình chính.;Các lệnh của chương trình chính.
……………………………… ;;
……………………………… ;;
ENDEND ;Chỉ dẫn kết thúc chương trình.;Chỉ dẫn kết thúc chương trình.
 VíVí dd 11:: DùngDùng ngắtngắt TimerTimer 00 vàvà ngắtngắt ngoàingoài 11
ORGORG 0000H0000H ;ðiểm nhập của reset hệ thống.;ðiểm nhập của reset hệ thống.
SJMPSJMP MAINMAIN ;Lệnh nhảy ñể vượt qua các ISR.;Lệnh nhảy ñể vượt qua các ISR.
ORGORG 000BH000BH ;ðiểm nhập cho ISR của Timer 0.;ðiểm nhập cho ISR của Timer 0.
……………………………… ;ISR của Timer 0 (;ISR của Timer 0 (dung lượng dung lượng ≤
≤≤
≤≤
≤≤
≤ 8 byte8 byte).).
………………………………
RETIRETI ;Kết thúc ISR của Timer 0.;Kết thúc ISR của Timer 0.

ORGORG
0013H0013H
;ðiểm nhập cho ISR của ngắt ngoài 1.;ðiểm nhập cho ISR của ngắt ngoài 1.
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮTTHIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
ORGORG
0013H0013H
;ðiểm nhập cho ISR của ngắt ngoài 1.;ðiểm nhập cho ISR của ngắt ngoài 1.
……………………………… ;ISR của ngắt ngoài 1 (;ISR của ngắt ngoài 1 (dung lượng dung lượng ≤
≤≤
≤≤
≤≤
≤ 8 byte8 byte).).
………………………………
RETIRETI ;Kết thúc ISR của ngắt ngoài 1.;Kết thúc ISR của ngắt ngoài 1.
ORGORG 0030H0030H ;ðiểm nhập của chương trình chính.;ðiểm nhập của chương trình chính.
MAIN:MAIN:
……………………………… ;Các lệnh của chương trình chính.;Các lệnh của chương trình chính.
……………………………… ;;
……………………………… ;;
ENDEND ;Chỉ dẫn kết thúc chương trình.;Chỉ dẫn kết thúc chương trình.
 VíVí dd 22:: DùngDùng ngắtngắt TimerTimer 00 vàvà ngắtngắt ngoàingoài 11
ORGORG 0000H0000H ;ðiểm nhập của reset hệ thống.;ðiểm nhập của reset hệ thống.
SJMPSJMP MAINMAIN ;Lệnh nhảy ñể vượt qua các ISR.;Lệnh nhảy ñể vượt qua các ISR.
ORGORG 000BH000BH ;ðiểm nhập cho ISR của Timer 0.;ðiểm nhập cho ISR của Timer 0.
JMPJMP T0_ISRT0_ISR ;Lệnh nhảy ñến ISR của Timer 0.;Lệnh nhảy ñến ISR của Timer 0.
ORGORG 0013H0013H ;ðiểm nhập cho ISR của ngắt ngoài 1.;ðiểm nhập cho ISR của ngắt ngoài 1.
JMPJMP EX1_ISREX1_ISR ;Lệnh nhảy ñến ISR của ngắt ngoài 1.;Lệnh nhảy ñến ISR của ngắt ngoài 1.
ORGORG 0030H0030H ;ðiểm nhập của chương trình chính.;ðiểm nhập của chương trình chính.
MAIN:MAIN:

………………………………
HOẠT ðỘNG NGẮTHOẠT ðỘNG NGẮT
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮTTHIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
………………………………
;Các lệnh của chương trình chính.;Các lệnh của chương trình chính.
……………………………… ;;
SJMP SJMP $$ ;Lệnh cách ly chương trình.;Lệnh cách ly chương trình.
T0_ISR:T0_ISR:
……………………………… ;ISR của Timer 0 (;ISR của Timer 0 (dung lượng dung lượng > 8 byte> 8 byte).).
………………………………
RETIRETI ;Kết thúc ISR của Timer 0.;Kết thúc ISR của Timer 0.
EX1_ISR:EX1_ISR:
……………………………… ;ISR của ngắt ngoài 1 (;ISR của ngắt ngoài 1 (dung lượng dung lượng > 8 byte> 8 byte).).
………………………………
RETIRETI ;Kết thúc ISR của ngắt ngoài 1.;Kết thúc ISR của ngắt ngoài 1.
ENDEND ;Chỉ dẫn kết thúc chương trình.;Chỉ dẫn kết thúc chương trình.
CHƯƠNG 6: HOẠT ðỘNG NGẮTCHƯƠNG 6: HOẠT ðỘNG NGẮT
CÁM ƠN SỰ CHÚ Ý LẮNG NGHECÁM ƠN SỰ CHÚ Ý LẮNG NGHE
VÀVÀ
VÀVÀ
TRÂN TRỌNG GIẢI ðÁP CÁC TRÂN TRỌNG GIẢI ðÁP CÁC
CÂU HỎICÂU HỎI

×