Ngắt Ngắt Interrupt Interrupt là là việc việc xảy xảy ra ra một một ñiều ñiều kiện kiện làm làm cho cho chương chương trình trình ñang ñang thực thực thi thi bị bị tạm tạm dừng dừng ñể ñ
Trang 1KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾT
VI XỬ LÝ
TP HỒ CHÍ MINH THÁNG 09
THÁNG 09 20092009
VI XỬ LÝ
Giáo Giáo viên: PHẠM QUANG TRÍviên: PHẠM QUANG TRÍ
Trang 2KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 6
HOẠT ðỘNG NGẮT
Trang 3Ngắt Ngắt ((Interrupt Interrupt)) là là việc việc xảy xảy ra ra một một ñiều ñiều kiện kiện làm làm cho cho chương
chương trình trình ñang ñang thực thực thi thi bị bị tạm tạm dừng dừng ñể ñể quay quay sang sang thực thực thi
thi một một chương chương trình trình khác khác Sau Sau khi khi thực thực thi thi xong xong ñoạn ñoạn chương
chương trình trình này này sẽ sẽ quay quay trở trở về về ñể ñể thực thực thi thi tiếp tiếp chương chương trình
trình ñang ñang bị bị tạm tạm dừng dừng
CPU CPU không không thể thể thực thực thi thi nhiều nhiều hơn hơn một một lệnh lệnh ở ở một một thời thời ñiểm
ñiểm nhưng nhưng CPU CPU có có thể thể tạm tạm ngưng ngưng việc việc thực thực thi thi một một
GIỚI THIỆU CHUNG
ñiểm
ñiểm nhưng nhưng CPU CPU có có thể thể tạm tạm ngưng ngưng việc việc thực thực thi thi một một chương
chương trình trình ñể ñể thực thực thi thi một một chương chương trình trình khác khác rồi rồi sau sau ñó ñó quay
quay về về thực thực thi thi tiếp tiếp tục tục chương chương trình trình ñang ñang bị bị tạm tạm ngưng ngưng
Một Một hệ hệ thống thống ñược ñược ñiều ñiều khiển khiển bởi bởi ngắt ngắt cho cho ta ta ảo ảo tưởng tưởng nhiều
nhiều công công việc việc ñang ñang ñược ñược vi vi xử xử lý lý thực thực hiện hiện ñồng ñồng thời thời
Trang 4Sự Sự giống giống nhau nhau và và khác khác nhau nhau giữa giữa ngắt ngắt ((Interrupt Interrupt)) và và gọi gọi chương
chương trình trình con con ((Call Call Sub Sub Rountine Rountine))::
GiốngGiống nhaunhau::
Làm
Là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ương
chương trìnhtrình khác,khác, sausau ñóñó quayquay vềvề ñểñể thựcthực thithi tiếptiếp tụctục chương
chương trìnhtrình ñangñang bịbị tạmtạm dừngdừng
KhácKhác nhaunhau::
GIỚI THIỆU CHUNG
KhácKhác nhaunhau::
Trang 5Biểu Biểu diễn diễn việc việc thực thực thi thi chương chương trình trình có có ngắt ngắt và và không không có có ngắt
ngắt::
GIỚI THIỆU CHUNG
Trang 6Các Các nguồn nguồn ngắt ngắt của của 8051 8051::
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
TỔ 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ằng bằ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ặc
hoặ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ực
thự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òng
vòng
Trang 7Các Các cờ cờ báo báo tín tín hiệu hiệu ngắt ngắt ((c c ngt ngt))::
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
TỔ 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))
Trang 8Chọn Chọn loại loại kích kích hoạt hoạt cho cho ngắt ngắt ngoài ngoà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ạt hoạ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
IT IT00 vàvà ITIT11
TỔ CHỨC NGẮT CỦA 8051
Trang 9Chọn Chọn loại loại kích kích hoạt hoạt cho cho ngắt ngắt ngoài ngoà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
TỔ CHỨC NGẮT CỦA 8051
Trường hợp ngắt ngoài kích cạnh xuống
Trang 10Chọn Chọn loại loại kích kích hoạt hoạt cho cho ngắt ngắt ngoài ngoà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
TỔ CHỨC NGẮT CỦA 8051
Trường hợp ngắt ngoài kích mức thấp
Trang 11Thanh Thanh ghi ghi cho cho phép phép ngắt ngắt ((IE IE:: Interrupt Interrupt Enable Enable))::
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮT THANH GHI SỬ DỤNG TRONG NGẮT
Trang 12Thanh Thanh ghi ghi ưu ưu tiên tiên ngắt ngắt ((IP IP:: Interrupt Interrupt Priority Priority))::
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮT THANH GHI SỬ DỤNG TRONG NGẮT
Trang 13Chuỗi Chuỗi vòng vòng ngắt ngắt ((Interrupt Interrupt Polling Polling Sequence Sequence))::
•• ðểðể 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ên
tiê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ắt Timer
Timer 00 →→ NgắtNgắt ngoàingoài 11 →→ NgắtNgắt TimerTimer 11 →→ NgắtNgắt portport nốinối tiếptiếp
CÁC CÁC THANH GHI SỬ DỤNG TRONG NGẮT THANH GHI SỬ DỤNG TRONG NGẮT
Timer
Timer 00 →→ NgắtNgắt ngoàingoài 11 →→ NgắtNgắt TimerTimer 11 →→ NgắtNgắt portport nốinối tiếptiếp
Trang 14Các Các vectơ vectơ ngắt ngắt của của 8051 8051::
•• 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ủa
củ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::
VECTƠ NGẮT CỦA 8051
Trang 15Khuông Khuông mẫu mẫu chương chương trình trình KHÔNG KHÔNG sử sử dụng dụng ngắt ngắt::
ORG 0000H ;ðiểm nhập của reset hệ thống.
MAIN:
……… ;Các lệnh của chương trình chính.
……… ;;
……… ;;
END ;Chỉ dẫn kết thúc chương trình.
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
END ;Chỉ dẫn kết thúc chương trình.
Trang 16Khuông Khuông mẫu mẫu chương chương trình trình CÓ CÓ sử sử dụng dụng ngắt ngắt::
ORG 0000H ;ðiểm nhập của reset hệ thống.
SJMP SJMP MAINMAIN ;Lệnh nhảy ñể vượt qua các ISR.
……… ;ðiểm nhập của các ISR.
……… ;;
……… ;;
ORG 0030H ;ðiểm nhập của chương trình chính.
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
ORG 0030H ;ðiểm nhập của chương trình chính.
MAIN:
……… ;Các lệnh của chương trình chính.
……… ;;
……… ;;
END ;Chỉ dẫn kết thúc chương trình.
Trang 17Ví Ví d d 1 1:: Dùng Dùng ngắt ngắt Timer Timer 0 0 và và ngắt ngắt ngoài ngoài 1 1
ORG 0000H ;ðiểm nhập của reset hệ thống.
SJMP
SJMP MAINMAIN ;Lệnh nhảy ñể vượt qua các ISR.
ORG 000BH ;ð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 byte 8 byte) ).
………
RETI ;Kết thúc ISR của Timer 0.
ORG 0013H ;ðiểm nhập cho ISR của ngắt ngoài 1.
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
ORG 0013H ;ð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 byte 8 byte) ).
………
RETI ;Kết thúc ISR của ngắt ngoài 1.
ORG 0030H ;ðiểm nhập của chương trình chính.
MAIN:
……… ;Các lệnh của chương trình chính.
……… ;;
……… ;;
END ;Chỉ dẫn kết thúc chương trình.
Trang 18Ví Ví d d 2 2:: Dùng Dùng ngắt ngắt Timer Timer 0 0 và và ngắt ngắt ngoài ngoài 1 1
ORG 0000H ;ðiểm nhập của reset hệ thống.
SJMP MAIN ;Lệnh nhảy ñể vượt qua các ISR.
ORG 000BH ;ðiểm nhập cho ISR của Timer 0.
JMP T0_ISR ;Lệnh nhảy ñến ISR của Timer 0.
ORG 0013H ;ðiểm nhập cho ISR của ngắt ngoài 1.
JMP EX1_ISR ;Lệnh nhảy ñến ISR của ngắt ngoài 1.
ORG 0030H ;ðiểm nhập của chương trình chính.
MAIN:
………
THIẾT KẾ CHƯƠNG TRÌNH CÓ SỬ DỤNG NGẮT
……… ;Các lệnh của chương trình chính.
……… ;;
SJMP $ ;Lệnh cách ly chương trình.
T0_ISR:
……… ;ISR của Timer 0 ( ;ISR của Timer 0 (dung lượng dung lượng > 8 byte > 8 byte) ).
………
RETI ;Kết thúc ISR của Timer 0.
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) ).
………
RETI ;Kết thúc ISR của ngắt ngoài 1.
END ;Chỉ dẫn kết thúc chương trình.
Trang 19CÁM ƠN SỰ CHÚ Ý LẮNG NGHE
VÀ TRÂN TRỌNG GIẢI ðÁP CÁC
CÂU HỎI