CHƯƠNG 7: NGẮT VÀ XỬ LÝ NGẮT TRONG

Một phần của tài liệu tìm hiểu vi điều khiển 8051 (Trang 47)

CL RA ;Nội dung thanh gh iA bằng zero.

CHƯƠNG 7: NGẮT VÀ XỬ LÝ NGẮT TRONG

7.1 Xử lý ngắt

Mộtbộ vi điềukhiển có thể phụcvụ một vàithiết bị, có haicách để thực hiện điều này đó là sử dụng các ngắt và thăm . Trong phương pháp sử dụng

các ngắtthìmỗi khicó một thiếtbị bấtkỳ cần đếndịch vụ củanóthìnóbao chobộ vi điềukhiển bằngcách gửimột tínhiệu ngắt. Khi nhận được tín hiệungắtthìbộvi điều khiển ngắt tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiếtbị. Chương trình đi cùngvới ngắt được gọilà trình dịch vụ ngắtISR (Interrupt Service Routine) hay còn gọi là trình quản lý ngắt (Interrupt handler). Còn trong phương phápthăm dòthì bộviđiềukhiển hiểnthịliên tụctình trạngcủa một thiếtbịđã cho và điều kiện thoả mãn thì nóphục vụ thiết bị. Sau đó nó chuyển sang hiển thị tình trạng của thiếtbịkế tiếp cho đếnkhi tất cả đềuđược phục vụ. Mặcdù phươngpháp thămdò cóthểhiểnthịtình trạngcủamộtvàithiếtbịvà phụcvụmỗi thiếtbịkhicác điều kiện nhất địnhđược thoả mãnnhưng nókhông tận dụng hết cộngdụng của bộ vi điềukhiển. Điểm mạnh của phương phápngắt làbộ viđiều khiển có thểphục vụ được rất nhiều thiết bị (tất nhiên là không tại cùng một thời điểm). Mỗi thiết bị có thểnhận được sự chúý củabộvi điều khiển dựatrên mức ưu tiênđược gán cho nó. Đối với phương pháp thăm dò thì không thểgán mức ưu tiên cho các thiết bị vì nó kiểmtra tấtcả mọithiếtbịtheokiểu hơivòng.Quantrọnghơnlàtrongphươngpháp ngắt thì bộvi điều khiển cũng còn có thể che hoặc làm lơ một yêu cầu dịch vụ của thiếtbị.Điều nàylạimột lầnnữakhôngthểthực hiệnđược trongphươngphápthăm dò. Lý do quantrọng nhất là phương pháp ngắt được ưu chuộng nhất là vì phương phápthămdòlàmlãngphíthờigiancủabộviđiềukhiển bằngcáchhỏidòtừngthiết bịkểcảkhichúngkhôngcầnđếndịchvụ.

7.2 Trình phục vụ ngắt

Đối với mỗi ngắt thì phải có một trình phục vụ ngắt ISR hay trình quản lý ngắt.khimộtngắtđượcgọithìbộviđiềukhiểnphụcvụngắt. Khimộtngắtđượcgọi thì bộ vi điều khiển chạy trình phục vụ ngắt. Đối với mỗi ngắt thì có một vị trí cố địnhtrongbộnhớđểgiữđịachỉISRcủanó.Nhóm cácvịtrí nhớđượcdànhriêngđể

8051hỗtrợ5loại ngắt,có thểchophéphoặccấm ngắtvớitừngloạithôngqua

thanhghiđiều khiểnngắtIE,hoặccóthểcấm tấtcảcácngắtthôngquabitEA. Cáctínhiệu điềukhiểnngắtcó thểđượcmôtảnhưhìnhdưới :

Hình 7-1. Các tín hiệu điều khiển ngắt

Ở hìnhtrên chỉcó 1 điểmchú ý đólà haitín hiệu IT0 và IT1,hai bit này lựa chọnnguyênnhân ngắtcho 2ngắtngoài INTR0 vàINTR1. Nếu=1thìngắttại sườn âm,=0ngắttạisườndương.

Thanh ghiđiều khiển ngắt IE :

7.3 Các bước khi thực hiện một ngắt:

Khikíchhoạtmột ngắtbộviđiềukhiểnđiquacácbướcsau:

1. Nó kết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh kế tiếp (PC) vàongănxếp.

2. Nócũnglưutình trạnghiệntại củatất cảcácngắtvàobêntrong(nghĩa làkhônglưuvàongănxếp).

ngắtnớilưugiữđịachỉcủamộttrìnhphụcvụngắt.

4. Bộvi điều khiển nhận địachỉ ISR từ bảng véc tơngắt và nhảy tới đó. Nóbắtđầuthựchiện trìnhphụcvụngắtchođếnlệnhcuốicùngcủaISRlàRETI(trở vềtừngắt).

5. Khi thực hiện lệnh RETI bộ vi điều khiển quay trở về nơi nó đã bị ngắt. Trướchết nónhậnđịachỉ củabộđếm chươngtrìnhPC từngăn xếpbằng cách kéohaibytetrên đỉnhcủangănxếpvàoPC.Sauđóbắtđầu thựchiện cáclệnhtừđịa chỉđó.

Lưu ý ở bước 5 đến vai trò nhạy cảm của ngăn xếp, vì lý do này mà chúng ta phảicẩn thậnkhi thao táccác nộidung của ngănxếp trong ISR. Đặc biệt trongISR cũng nhưbất kỳ chươngtrình con CALL nào số lầnđẩy vào ngănxếp (Push) và số lầnlấyratừnó(Pop)phảibằngnhau.

7.4 Lập trình ngắt

Khicó mộtngắt,chươngtrìnhchínhsẽbịdừng,contrỏchươngtrìnhngaylập tứcđượcchuyểnđếnmộtđịachỉquyđịnhsẵntrongbảnvectorngắtnhưhìnhdưới:

Hình 7-2. Bảng vector ngắt và ví dụ

7.5 Thứ tự ưu tiên ngắt

Khi có haihay nhiều ngắt cùng lúc xảy ra, hoặc một ngắtđang thực hiện thì môngắtkhácyêucầuthìngắtnàocóđộưutiênhơnsẽđượcưutiênxửlý.

Có3cấpđộưutiênngắttrong8051

- Ngắt reset là ngắt có mức ưu tiên cao nhất, khi reset xảy ra tất cả các ngắt khác và chương trình đều bị dừng và vi điều khiển trở về chế độ khởi dộng banđầu.

- Ngắtmức 1,chỉcó resetmớicóthểcấm ngắtnày

- Ngắtmức0,cácngắtmức1vàresetcó thểcấmngắtnày.

Việc đăt chọn mức ưu tiên ngắt là 1 hoặc 0 thôngqua thanh ghi IP. Việc xử lý ưu tiênngắtcủa8051nhưsau:

- Nếu 1có độ ưu tiên caohơn một ngắtđang được xử lýxuất hiện thì, ngắtcó ưutiênthấpngaylậptứcbịdừngđểngắtkiađượcthựchiện

- Nếu 2ngắtcùngyêu cầuvào1 hời điểmthìngắtcó mức ưutiên hơnsẽ được xửlýtrước (adsbygoogle = window.adsbygoogle || []).push({});

- Nếu2ngắtcócùngmức ưutiên cùngyêucầuvào 1thờiđiểmthì thứtựđược chọnnhưsau: o INTR0 o Timer0 o INTR1 o Timer1 o UART  Thanh ghi IP

Trong đó: Các bittừ 0 đến 5 đặt mức ngắt là 0 hoặc 1cho các ngắt tương ứng nhưsau: -PS:UART

-PT1: Timer1 -PX1:INTR1 -PT0: Timer0 -PX0:INTR0

CHƯƠNG 8: MỘT SỐ ỨNG DỤNG SỬ DỤNG VĐK 8051

-Dùng trong các thiết kế nhỏ, ít thành phần, tiêu tốn ít công suất, hướng điều khiển.-Được dùng trong thiết kế các loại máy tính nhúng. Có thể dùng VĐK để thiết kế bộ -Được dùng trong thiết kế các loại máy tính nhúng. Có thể dùng VĐK để thiết kế bộ điều khiển cho các sản phẩm dân dụng( nhà thông minh, quảng cáo..), thiết bị y tế( máy chụp chiếu..), sản phẩm công nghiệp( điều khiển động cơ, đo lường..).

Một phần của tài liệu tìm hiểu vi điều khiển 8051 (Trang 47)