Thông báo

Collapse
No announcement yet.

Vì sao phải sử dụng ngắt?

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

  • Vì sao phải sử dụng ngắt?

    Em còn hơi mơ hồ nên hỏi vậy?
    Vì sao phải sử dụng ngắt? có thể dùng phím thay cho ngắt ngoài được không? những trường hợp nào thì dùng ngắt?

  • #2
    Vì sao phải dùng ngắt? .
    Ví dụ nhé: cậu có biết phản xạ có điều kiện của con Dog không? Khi nó đã quen cậu thì khi muốn cho ăn hoặc gọi nó thì chỉ cần thổi sáo là nó biết và chạy đến rùi. Đó chính là một hình thức ngắt đó. Bình thường nó cứ chạy nhảy bình thường, nằm ngủ, đi lung tung, .. . Nhưng khi cậu gọi thì nó bỏ hết rùi đến chỗ cậu. Khi ăn xong thì nó lại hoạt động theo bình thường nó vẫn làm thôi.

    Chứ chẳng nhé, nó cứ đứng chờ "măm măm" cả ngày à . Hay là cứ 10 phút lại quay về chỗ để thức ăn xem có thức ăn không à? (polling). Bạn hiểu được cái đó thì đã hiểu được tại sao dùng ngắt rùi đó. Và bạn cứ nghĩ là trong ngày con chó còn có nhiều phản xạ có điều kiện khác nữa nếu nó cứ chờ thì sao ???

    Dùng phím hay không dùng phím là không quan trọng, đó là phần bên ngoài còn bản chất có dùng ngắt ngoài hay không là do config của bạn trong chip.Ngắt ngoài trên một chân xác định là sự thay đổi sườn xung trên chân đó cơ mà.

    Những trường hợp nào thì dùng ngắt thì bạn đọc lại phần trên nhé.

    Chúc bạn thành công.
    Technical sale at WT Microelectronics S'pore
    Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
    Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

    Comment


    • #3
      Nguyên văn bởi ngohaibac Xem bài viết
      Vì sao phải dùng ngắt? .
      Dùng phím hay không dùng phím là không quan trọng, đó là phần bên ngoài còn bản chất có dùng ngắt ngoài hay không là do config của bạn trong chip.Ngắt ngoài trên một chân xác định là sự thay đổi sườn xung trên chân đó cơ mà.

      Chúc bạn thành công.
      Em ví dụ thế này: em lập trình để khi có một phím được nhấn thì thực hiện 1 việc, nếu không có phím nào thì cứ chờ. Như thế có phải là ngắt không?

      Comment


      • #4
        Nguyên văn bởi Puppy Xem bài viết
        Em ví dụ thế này: em lập trình để khi có một phím được nhấn thì thực hiện 1 việc, nếu không có phím nào thì cứ chờ. Như thế có phải là ngắt không?
        Với cách của em có nhiều cách làm , có thể dùng ngắt hoặc hỏi vòng ( if ) chẳng hạn .
        --- việc dùng ngắt cho ta cảm giác con VDK làm được nhiều việc cùng 1 thời điểm ( thực chất trong 1 thời điểm nó chỉ làm 1 việc thôi ).

        VD về ngắt như này : Mình đang đánh games , mẹ gọi và sai " mày đi ra chợ mua cho tao mớ rau " .

        Thế tức là ngắt đã xảy ra . mình chạy ù ra chợ , mua rau ( thực hiện công việc - thực hiện lệnh trong ngắt) . mua xong về nhà ngồi đánh điện tử tiếp . ( làm tiếp việc đang dang dở lúc nãy " đánh game " )
        Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

        Comment


        • #5
          Nguyên văn bởi Puppy Xem bài viết
          Em ví dụ thế này: em lập trình để khi có một phím được nhấn thì thực hiện 1 việc, nếu không có phím nào thì cứ chờ. Như thế có phải là ngắt không?
          Chờ hay không không quan trọng, hoặc bạn làm việc gì đó khác, không phải chờ phím nhá! chờ phím thì còn gì là ngắt!

          Comment


          • #6
            Dùng ngắt khi bạn muốn chương trình của mình đọc chính xác 1 thời điểm nào đó mà không cần đứng tại đó xét, chương trình của chúng ta vân cứ làm 1 việc khác mà không cần quan tấm đến nó. Khi có ngắt thì chương trình đang chạy ngưng lại và chương trình phục vụ ngắt hoạt động.
            Ví dụ ta viết chương trình cho việc xuất led theo phương pháp quét ( quét liên tục.) Khi có phím nhấn thì tăng giá trị xuất led lên:
            Lúc đó ta chỉ việc quét led thôi còn việc có phím hay không thì có chương trình phục vụ ngắt làm việc rồi.
            Nhưng bây giờ lập trình có những kỹ thuật xử lý mà không cần dùng ngắt nưa. Và tôi trước giờ rất ghét dùng ngắt.

            Comment


            • #7
              Nguyên văn bởi big_sky Xem bài viết
              Nhưng bây giờ lập trình có những kỹ thuật xử lý mà không cần dùng ngắt nưa.
              Bạn cho ví dụ cụ thể đi!
              Ví dụ bây giờ bạn làm việc phục vụ encoder đếm chiều dài chẳng hạn, vừa phải hiện thị lên LED 7 đoạn bằng phương pháp quét bạn sẽ không sử dụng ngắt thế nào! hihi
              Last edited by natra2k2; 23-12-2006, 19:33.

              Comment


              • #8
                Nguyên văn bởi queduong Xem bài viết
                Với cách của em có nhiều cách làm , có thể dùng ngắt hoặc hỏi vòng ( if ) chẳng hạn .
                --- việc dùng ngắt cho ta cảm giác con VDK làm được nhiều việc cùng 1 thời điểm ( thực chất trong 1 thời điểm nó chỉ làm 1 việc thôi ).

                VD về ngắt như này : Mình đang đánh games , mẹ gọi và sai " mày đi ra chợ mua cho tao mớ rau " .

                Thế tức là ngắt đã xảy ra . mình chạy ù ra chợ , mua rau ( thực hiện công việc - thực hiện lệnh trong ngắt) . mua xong về nhà ngồi đánh điện tử tiếp . ( làm tiếp việc đang dang dở lúc nãy " đánh game " )
                bác que duong vui tín quá

                Comment


                • #9
                  wao ! mình khoái kỹ thuật mới của big_sky rồi đó , bạn pót phần trả lời cho natra và mình cùng hiểu với nhá
                  Chính thức phát hành mạch điều khiển LED FireStar1
                  Yêu mến tất cả anh em dientuvietnam.net

                  Comment


                  • #10
                    Nguyên văn bởi thaithienanh Xem bài viết
                    wao ! mình khoái kỹ thuật mới của big_sky rồi đó , bạn pót phần trả lời cho natra và mình cùng hiểu với nhá
                    chắc chỉ bốc phét thôi ,nói không phải "sky bỏ qua nhé"

                    Comment


                    • #11
                      [QUOTE
                      Nhưng bây giờ lập trình có những kỹ thuật xử lý mà không cần dùng ngắt nưa. Và tôi trước giờ rất ghét dùng ngắt.[/QUOTE]

                      bốc phét là cái chắc khakha
                      thế bác biết ý nghĩa của việc sử dụng ngắt là thế nào không mà nói kỳ cục vậy.
                      thứ 1:
                      như chúng ta đã biết tại 1 thời điểm chỉ có một lệnh được CPU thực hiện vì thế chương trình chúng ta bao giờ cũng là xử lý nối tiếp hết không thể song song được.
                      chính xử dụng ngat nó sẽ tạo ra được hiệu ứng xử lý song song các lệnh một cách tương đối nếu chương trình ngắt thỏa điều kiện thời gian thực hiện xong hàm ngắt là rất nhỏ so với thời gian thực hiện chương trình chính
                      thứ 2:
                      khi ta lập trình có những sự kiện ta không thể biết được lúc nào thì xảy ra chính ngắt giúp ta tự động kiểm tra lúc này ta có thể làm những việc khác nữa
                      thứ 3:
                      nếu với những ứng dụng nhỏ thì bạn không cần dùng ngắt mà có thể sử dụng các vòng lặp để xử lý kiểm tra các sự kiện nhưng với chương trình lớn chắc chắn phải dùng rối
                      thứ 4:
                      tại sao AVR lại có nhiều nguồn ngắt hơn 89 nhỉ và tại sao người ta lập trình Windows lại phải dùng ngắt nhỉ. hehe
                      Cty TNHH Cơ Điện tử Hiệp Phát.
                      ------------------------------------------
                      Trần Hoàng Giang
                      11-04-1985

                      Mobil: 0905 438 533

                      Comment


                      • #12
                        Nguyên văn bởi irf540 Xem bài viết
                        [QUOTE
                        chính xử dụng ngat nó sẽ tạo ra được hiệu ứng xử lý song song các lệnh một cách tương đối nếu chương trình ngắt thỏa điều kiện thời gian thực hiện xong hàm ngắt là rất nhỏ so với thời gian thực hiện chương trình chính
                        Em chơi trong hàm ngắt một thằng delay khoảng 1 phút thì nó sẽ thế nào? trong thời gian này hàm main (chương trình chính) có làm cái gì không?

                        Comment


                        • #13
                          Nguyên văn bởi Puppy Xem bài viết
                          Em chơi trong hàm ngắt một thằng delay khoảng 1 phút thì nó sẽ thế nào? trong thời gian này hàm main (chương trình chính) có làm cái gì không?
                          ko, lúc này chương trình chính sẽ bị ngắt, hàm delay sẽ bị ngắt!

                          Comment


                          • #14
                            Nguyên văn bởi natra2k2 Xem bài viết
                            ko, lúc này chương trình chính sẽ bị ngắt, hàm delay sẽ bị ngắt!
                            sao hàm delay lại ngắt? em muốn khi xãy ra ngắt thì thực hiện một lệnh sau đó delay rồi thực hiện một lệnh nữa sau đó quay về chương trình chính. nếu delay cũng ngắt thì con gì để nói nữa.

                            Comment


                            • #15
                              Đề nghị bạn Puppy đọc kĩ lại các bài viết trong box này trước khi đặt nhiều câu hỏi quá amatuer nhé.

                              Bạn nên nghiên cứu lại về cấu trúc, các timer, .. cách dùng ngắt của 8051 đi nhé.

                              Trong ngắt mà lại còn dùng tiếp delay thì cũng hơi có vấn đề nho nhỏ là cũng chưa tiết kiệm CPU đâu. Ví dụ ngắt bạn dùng có chu kì là 1s mà thời gian thực hiện hàm ngắt lại gần 1s (do có thêm delay) thì dùng ngắt làm gì?? và CPU còn thực hiện thêm dc gì nữa không nhỉ?

                              Bạn nên tạo một ngắt timer 1ms rồi dùng biến static đếm sự kiện ngắt và thực hiện các việc khác nhau theo bội của 1ms nhé. Như thế có thể làm được khá nhiều việc.

                              Bạn nên đọc kĩ nhé. Vì vấn đề này có nhiều người bàn trong box này rùi. Bạn mà cứ hỏi như thế sẽ đến lúc không có ai muốn trả lời cho bạn đâu. Hãy luôn suy nghĩ và suy nghĩ, hãy đọc cẩn thận vào.

                              Chúc bạn thành công.
                              Technical sale at WT Microelectronics S'pore
                              Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                              Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X