QC

Interrupts in 8051

 Interrupts in 8051


BÀI HỌC RỒI NHỮNG ĐIỂM CHÚ Ý SAU:

1. Lập trình ngắt timer trong 8051.

2.Lập trình ngắt phần cứng bên ngoài.

3.Lập trình ngắt giao tiếp nối tiếp.

Các loại ngắt trong Vi điều khiển 8051.

  • Timer 0 overflow interrupt - TF0
  • External hardware interrupt - INT0
  • Timer 1 overflow interrupt - TF1
  • External hardware interrupt - INT1
  • Serial communication interrupt - RI/TI

Tạm dịch là :

 -Ngắt tràn bộ định thời 0 - TF0

 -Ngắt phần cứng bên ngoài - INT0

 -Ngắt tràn bộ định thời 1 - TF1

 -Ngắt phần cứng bên ngoài - INT1

 -Ngắt giao tiếp nối tiếp - RI / TI

Khi xảy ra ngắt thì bộ vi điều khiển sẽ thực hiện quy trình phục vụ ngắt. Do đó, vị trí bộ nhớ tương ứng với ngắt cho phép nó. Xem xét ngắt tương ứng với vị trí bộ nhớ được hiển thị trong bảng vectơ ngắt dưới đây.


Cấu trúc ngắt của Vi điều khiển 8051

   Sau khi 'ĐẶT LẠI - RESET ', tất cả các ngắt sẽ bị vô hiệu hóa, và do đó, tất cả các ngắt được kích hoạt bởi phần mềm. Từ tất cả năm ngắt, nếu bất kỳ ai hoặc tất cả ngắt được kích hoạt, điều này sẽ đặt các cờ ngắt tương ứng như biểu diễn trong hình tương ứng với cấu trúc ngắt của vi điều khiển 8051


     Tất cả các ngắt có thể được thiết lập hoặc xóa bởi một số thanh ghi chức năng đặc biệt còn được gọi là kích hoạt ngắt (IE), và nó hoàn toàn phụ thuộc vào mức độ ưu tiên, được thực hiện bằng cách sử dụng thanh ghi ưu tiên ngắt.

Interrupt Enable (IE) Register

   Thanh ghi IE được sử dụng để bật và tắt ngắt. Đây là một thanh ghi có địa chỉ bit, trong đó giá trị EA phải được đặt thành một để cho phép ngắt. Các bit riêng lẻ trong thanh ghi này cho phép ngắt cụ thể như bộ định thời, đầu vào nối tiếp và bên ngoài. Xem xét trong thanh ghi IE bên dưới, bit tương ứng với 1 kích hoạt ngắt và 0 vô hiệu ngắt.


Interrupt Priority Register (IP) (Đăng ký ưu tiên ngắt (IP)- Ngắt ưu Tiên).


 Sử dụng thanh ghi IP, có thể thay đổi các mức ưu tiên của ngắt bằng cách xóa hoặc thiết lập bit riêng lẻ trong thanh ghi Ưu tiên ngắt (IP) như thể hiện trong hình. Nó cho phép ngắt mức ưu tiên thấp có thể ngắt ngắt mức ưu tiên cao, nhưng nó cấm ngắt bằng cách sử dụng một ngắt có mức ưu tiên thấp khác. Nếu mức độ ưu tiên của ngắt không được lập trình, thì vi điều khiển sẽ thực hiện lệnh theo cách xác định trước và thứ tự của nó là INT0, TF0, INT1, TF1 và SI.

1. Lập trình ngắt Timer trong 8051

    Lập trình ngắt Timer: Trong vi điều khiển, ngắt Timer 1 và Timer 0 được tạo ra bởi các bit thanh ghi thời gian TF0 VÀ TF1. Bộ đếm thời gian này làm gián đoạn lập trình bằng mã C liên quan đến:

-Lựa chọn cấu hình của thanh ghi TMOD và phương thức hoạt động của chúng.
-Bật các thanh ghi IE và các bit hẹn giờ tương ứng trong đó.
-Chọn và tải các giá trị ban đầu của TLx và THx bằng cách sử dụng chế độ hoạt động thích hợp.
-Đặt bit chạy bộ hẹn giờ để khởi động bộ hẹn giờ.
-Viết chương trình con cho một bộ định thời và xóa giá trị của TRx ở cuối chương trình con.
Chúng ta cùng xem lập trình ngắt bộ định thời sử dụng mô hình Timer0 cho đèn LED nhấp nháy sử dụng phương pháp ngắt:

  1. #include< reg51 .h>   
  2. sbit Blink Led = P2^0;  // LED SỐ 2
  3. void timer0_ISR (void) interrupt 1  //interrupt no. 1 for Timer0  
  4.  {  
  5. Blink Led=~Blink Led;   // Blink LED on interrupt   
  6. TH0=0xFC;   // loading initial values to timer   
  7. TL0=0x66;  
  8. }   
  9. void main()   
  10. {  
  11. TMOD=0x0l;      // mode 1 of Timer0  
  12. TH0 = 0xFC:    // initial value is loaded to timer  
  13. TL0 = 0x66:           
  14. ET0 =1;         // enable timer 0 interrupt  
  15. TR0 = 1;        // start timer  
  16. while (1);      // do nothing  
  17.  }  


2.Lập trình ngắt phần cứng bên ngoài

   Vi điều khiển 8051 bao gồm hai ngắt phần cứng bên ngoài: INT0 và INT1 như đã thảo luận ở trên. Các ngắt này được kích hoạt ở chân 3.2 và chân 3.3. Nó có thể được kích hoạt mức hoặc kích hoạt cạnh. Trong kích hoạt mức, tín hiệu thấp ở chân 3.2 cho phép ngắt, trong khi ở chân 3.2 chuyển tiếp từ cao xuống thấp cho phép ngắt được kích hoạt cạnh.

   Chúng ta hãy xem tính năng có thể lập trình của vi điều khiển 8051 là:
 - Cho phép bit tương đương của ngắt bên ngoài trong thanh ghi Cho phép ngắt (IE).
 - Nếu nó là mức kích hoạt, thì hãy viết chương trình con thích hợp với ngắt này, hoặc nếu không thì kích hoạt bit trong thanh ghi TCON tương ứng với ngắt được kích hoạt cạnh.

Hãy xem xét lập trình ngắt phần cứng bên ngoài được kích hoạt cạnh là: 

  1. void main()  
  2. {  
  3. IT0 = 1;    // Configure interrupt 0 for falling edge on INT0  
  4. EXO = 1;    // Enabling the EX0 interrupt  
  5. EA =1;      // Enabling the global interrupt flag  
  6. }  
  7. void ISR_ex0(void) interrupt 0  
  8. {  
  9. <body of interrupt>  
  10. }


3. Lập trình ngắt giao tiếp nối tiếp.
(Serial Communication Interrupt Programming).
Hãy xem xét các bước liên quan đến lập trình ngắt giao tiếp nối tiếp là:

- Cấu hình thanh ghi Cho phép ngắt để bật ngắt nối tiếp.
- Cấu hình thanh ghi SCON để thực hiện hoạt động chuyển và nhận.
- Viết chương trình con cho ngắt đã cho với hàm thích hợp.
Hãy xem chương trình gửi 'E' qua cổng nối tiếp với tốc độ truyền 9600 bằng cách sử dụng Ngắt nối tiếp:
  1. void main()   
  2. {  
  3. TMOD = 0x20:   
  4. TH10xFD;      // baud rate for 9600 bps   
  5. SCON = 0x50;   
  6. TR1=1;   
  7. EA=l;   
  8. whlle(l);   
  9. }  
  10. void ISR_Serial(void) interrupt 4   
  11. {  
  12. if(TI==l)   
  13. {   
  14. SBUF= ?E?;   
  15. TI=0;   
  16. }   
  17. else   
  18. RI =0;   
  19. }  


Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...