Thông báo

Collapse
No announcement yet.

Không hiểu về ngắt trong AT89

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Không hiểu về ngắt trong AT89

    Hi các bạn !
    Mình mới bước vào tìm hiểu lập trình IC. Có một số vấn đề trong tài liệu mình đọc hoài mà chưa hiểu. Mong các bạn giải thích bằng ngôn ngữ tự nhiên dễ hiểu nhất đựoc k ?

    Ngắt trong AT89 là gì ? Tại sao phải ngắt ? thực hiện ngắt như thế nào ?

    Nếu các bạn có ví dụ thì tốt quá. Cảm ơn các bạn nhiều.

  • #2
    Nguyên văn bởi vickyvu0684 Xem bài viết
    Hi các bạn !
    Mình mới bước vào tìm hiểu lập trình IC. Có một số vấn đề trong tài liệu mình đọc hoài mà chưa hiểu. Mong các bạn giải thích bằng ngôn ngữ tự nhiên dễ hiểu nhất đựoc k ?

    Ngắt trong AT89 là gì ? Tại sao phải ngắt ? thực hiện ngắt như thế nào ?

    Nếu các bạn có ví dụ thì tốt quá. Cảm ơn các bạn nhiều.
    Ngôn ngữ tự nhiên dễ hiểu hả bạn ? Ô kê như sau :
    Hôm nay bạn dự định đến nhà người yêu chơi và mọi việc đã được bạn lên lịch sẵn ( chương trình được viết tuần tự hoặc rẽ nhánh - hàm main).
    Nếu mọi việc xuôn xẻ thì nó sẽ diễn ra như ý bạn ( không có ngắt ).
    Nhưng trời phụ bạn, bạn đang đi thì gặp thằng ôn vật nào đấy tông vào bạn làm bạn phi mệ nó xuống ao ( cái này bạn đã tính đến nhưng không biết khi nào - có ngắt xảy ra ).
    Bạn phải ngay lập tức buông tay lái, bơi vài vòng, kéo cái xe lên và túm cổ thằng kia lên giã cho 1 trận nếu nó còn ở đấy và bạn to hơn. (thực hiện hàm phục vụ ngắt ).
    Xả nó xong bạn lại tiếp tục hành trình đến nhà người yêu vì đã hứa không rút lại được và có thể sẽ có thằng ôn nào đấy mời bạn xơi ... gạch (tiếp tục công việc đã được lên lịch sẵn từ trước ).
    ____
    Như vậy có thể hiểu nôm na : Ngắt là hiện tượng vi điều khiển dừng chương trình đang thực hiện để thực hiện một đoạn chương trình khác khi gặp phải các tác động đặc biệt đến phần cứng.
    Tác động đặc biệt đó gọi là nguồn ngắt.
    Đoạn chương trình mà vi điều khiển ưu tiên thực hiện đó gọi là chương trình phục vụ ngắt.
    Ngắt để vi điều khiển đáp ứng tức thời với những tác động cần được ưu tiên xử lý.
    Khi có ngắt ( cờ ngắt được bật lên ) thì vi điều khiển ngay lập tức lưu công việc đang thực hiện vào một chỗ nào đó ( tạm thời bạn chỉ biết thế thôi ) và nhảy đến đoạn chương trình phục vụ ngắt. Khi xử lý xong chương trình phục vụ ngắt nó sẽ load lại công việc mà nó đã dừng lại trước đó ( load từ chỗ mà nó đã lưu) và thực hiện tiếp. Nếu có ngắt nữa thì nó lại làm tương tự . Nhọc quá @@.

    Comment


    • #3
      Mình đọc mãi cũng ko hiểu. Có phải trong phần mềm KeiC đã tích hợp 1 số hàm ngắt rồi, mình muốn sử dụng ngắt chỉ việc gọi nó ra không? cách gọi ntn?
      Email:
      Đau đầu vì điện tử

      Comment


      • #4
        Chả trình dịch nào tích hợp cả, mấy cái ngắt bạn phải tự khai báo cho phép nó chạy và khi có cờ ngắt đc set thì nó tự động nhảy vào hàm ngắt mà thôi, còn nội dung hàm ngắt ra sao là tác vụ nó cần thi hành, cái này cũng là tự viết chỉ có khác là cách viết hàm ngắt mỗi trình dịch có 1 kiểu viết ko hoàn toàn giống cách viết hàm thông thường trong C
        Website chính thức đổi địa chỉ website thành
        Mời các bạn ghé thăm !!!

        Comment


        • #5
          Cảm ơn bạn duong_act mình đã hiểu ý bạn rồi.

          Comment


          • #6
            Nguyên văn bởi lowpass Xem bài viết
            Mình đọc mãi cũng ko hiểu. Có phải trong phần mềm KeiC đã tích hợp 1 số hàm ngắt rồi, mình muốn sử dụng ngắt chỉ việc gọi nó ra không? cách gọi ntn?
            Rất ít trình dịch được tích hợp sẵn hàm ngắt. Hoặc nếu có tích hợp thường là những ngắt rất khó xử lý hoặc trình dịch "ăn sẵn" như MikroC, CCS cho PIC thường tích hợp sẵn ngắt USB.
            Bình thường để sử dụng ngắt ngoài việc bạn phải tự cấu hình các thanh ghi liên quan thì bạn phải khai báo hàm phục vụ ngắt. Với Keil cho C51 thì để khai báo một hàm là hàm phục vụ ngắt thường có cụm từ "interrupt x" đi kèm phía sau tên hàm.
            Ví dụ :
            Code:
            void Ngat() interrupt 2
            {
             .....
            }
            Giá trị của x để chỉ loại ngắt mà hàm hỗ trợ (bạn xem bảng vector ngắt). Mình ít làm 89 nên biết qua thế thôi. Với trình dịch khác nó lại khai báo kiểu khác.

            Comment


            • #7
              Bạn ơi sẵn cho mình hỏi . Việc gắn trở treo áp vào những cảng không dùng có quan trọng k ? nếu k gắn trở treo áp (để trống) những cảng k dùng thì IC có hoạt động ổn định k ? Hiện tại mình gặp hiện tượng này . Mình lập trình cho điều khiển áp ra cho cảng P3 điều khiển các transitor dẫn cho LED sáng. Còn cảng P0,P1 và P2 mình để trống (đang làm nữa chừng thì hết điện trở chưa mua kịp). Nhưng có lúc nó hoạt động lúc không ? Vậy có phải do không có trở treo trên P0,P1,P2 nên bị vậy k ?

              Cảm ơn các bạn .

              Comment


              • #8
                Nguyên văn bởi vickyvu0684 Xem bài viết
                Bạn ơi sẵn cho mình hỏi . Việc gắn trở treo áp vào những cảng không dùng có quan trọng k ? nếu k gắn trở treo áp (để trống) những cảng k dùng thì IC có hoạt động ổn định k ? Hiện tại mình gặp hiện tượng này . Mình lập trình cho điều khiển áp ra cho cảng P3 điều khiển các transitor dẫn cho LED sáng. Còn cảng P0,P1 và P2 mình để trống (đang làm nữa chừng thì hết điện trở chưa mua kịp). Nhưng có lúc nó hoạt động lúc không ? Vậy có phải do không có trở treo trên P0,P1,P2 nên bị vậy k ?

                Cảm ơn các bạn .
                Công việc của bạn liên qua đến chân nào ( PIN ) thì chỉ cần chú ý đến chân đó. Và tùy vào mục đích cụ thể thì có thể bắt buộc phải treo hoặc không. Các cổng P1,P2,P3 bên trong đã có trở treo sẵn nên không cần (gọi là cổng hoặc PORT - không nên gọi là cảng ). Còn lại P0 thì dùng chân nào treo chân đấy.
                Bạn xem datasheet về cấu tạo PORT, mục đích treo trở là để xác định mức 0-1 ở đầu ra vì cổng ra nó chỉ có 1 con NPN với 1 điện trở kéo từ C lên Vcc. Ở P0 không có con trở này nên muốn có mức 1 xuất ra thì bạn phải treo thêm con trở vào. Các cổng khác có rồi nên không cần.

                Comment


                • #9
                  Cảm ơn bạn dương_act rất nhiều

                  Comment

                  Về tác giả

                  Collapse

                  vickyvu0684 Tìm hiểu thêm về vickyvu0684

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X