Cỏc quy trỡnh dịch vụ ngắt mó húa (ISR)

Một phần của tài liệu Bài giảng Xây dựng các hệ thống nhúng: Phần 2 (Trang 79 - 80)

3. The OS must be fast

3.5.19 Cỏc quy trỡnh dịch vụ ngắt mó húa (ISR)

Ngắt là một sự kiện dừng thực thi hiện tại của một quỏ trỡnh (tỏc vụ) trong CPU và chuyển việc thực hiện chương trỡnh đến một địa chỉ trong bộ nhớ mó nơi đặt thường trỡnh dịch vụ cho sự kiện. Sự kiện dừng thực thi hiện tại cú thể là sự kiện bờn trong hoặc sự kiện bờn ngoài hoặc sự kết hợp đỳng đắn của sự kiện bờn ngoài và bờn trong. Tiếp nhận dữ liệu nối tiếp thụng qua dũng nối tiếp là sự kết hợp của cỏc sự kiện bờn trong và bờn ngoài. Ngắt thường được phõn loại thành hai: Ngắt mặt nạ và Ngắt khụng thể che dấu (NMI). Ngắt mặt nạ cú thể bị bỏ qua bởi CPU nếu ngắt khụng được kớch hoạt bờn trong hoặc nếu CPU hiện đang tham gia xử lý một ngắt khỏc cú mức độ ưu tiờn cao. Cỏc ngắt khụng thể che được là cỏc ngắt đũi hỏi sự chỳ ý khẩn cấp và CPU khụng thể bỏ qua. Đặt lại ngắt (RST) và ngắt TRAP của bộ xử lý 8085 là vớ dụ cho cỏc ngắt Khụng thể che được.

Ngắt được coi là lợi ớch cho cỏc lập trỡnh viờn và phương chõm chớnh của họ là đưa ra hành vi thời gian thực cho cỏc ứng dụng. Hàm được viết để phục vụ Ngắt được gọi là Định tuyến dịch vụ ngắt (ISR). ISR cho mỗi ngắt cú thể khỏc nhau và chỳng được đặt tại Địa chỉ vectơ ngắt của ngắt tương ứng. ISR về cơ bản là một hàm khụng cú tham số và khụng trả về kết quả. Nhưng, khụng giống như một chức năng thụng thường, ISR cú thể hoạt động bất cứ lỳc nào vỡ việc kớch hoạt ngắt khụng cần phải đồng bộ với thực thi chương trỡnh bờn trong.

Keil C51 Trỡnh biờn dịch chộo cho vi điều khiển 8051 thực hiện Định tuyến dịch vụ ngắt bằng cỏch sử dụng từ khúa và cỳ phỏp của nú được minh họa bờn dưới:

void interrupt_name (void) interrupt x using y {

/*Process Interrupt*/ }

interrupt_name là tờn hàm và lập trỡnh viờn cú thể chọn bất kỳ tờn nào theo sở thớch của mỡnh. Ngắt thuộc tớnh chỉ thị cho trỡnh biờn dịch chộo rằng hàm liờn quan là một thúi quen dịch vụ ngắt. Thuộc tớnh ngắt ảnh hưởng đến mó đối tượng của hàm theo cỏch sau:

- Nếu được yờu cầu, nội dung của cỏc thanh ghi ACC, B, DPH, DPL và PSW được lưu trờn ngăn xếp tại thời điểm gọi hàm.

- Tất cả cỏc thanh ghi làm việc (R0 đến R7) được sử dụng trong chức năng ngắt được lưu trữ trờn ngăn xếp nếu ngõn hàng đăng ký khụng được chỉ định với thuộc tớnh sử dụng.

218

- Cỏc thanh ghi làm việc và cỏc thanh ghi đặc biệt đó được lưu trờn ngăn xếp được khụi phục trước khi thoỏt khỏi chức năng.

- Chức năng được kết thỳc bởi lệnh 8051 RETI. Cỏch sử dụng điển hỡnh được minh họa dưới đõy:

void external_interrupt0 (void ) interrupt 0 using 0 {

adc_control = *adc_control_reg //Read memory mapped ADC // control Register

}

Một phần của tài liệu Bài giảng Xây dựng các hệ thống nhúng: Phần 2 (Trang 79 - 80)