RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

help-ngắt ngoài trong 8051

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • ngtiep189
    Thành viên chính thức
    • Mar 2012
    • 65

    #1

    help-ngắt ngoài trong 8051

    e có 3 thiết bị cần phục vụ ngắt ngoài.mà trong 89c51 chỉ có 2 ngắt ngoài.còn 1 thiết bị ko sử dụng đc ngắt.giờ e phải làm sao để xử lý đc tín hiệu của thiết bị còn lại này.các bác có thể cho e ý kiến với.
  • hoadang
    Thành viên tích cực
    • Jun 2010
    • 191

    #2
    thì bạn làm sao mà khi có ngắt là nó báo ngắt ( không cần biết ngắt của thằng nào) => sau đó xác định "đứa nào" gây ngắt => thực hiện trình phục vụ tương ứng cho "em nó"

    Comment

    • kidteam
      Thành viên tích cực
      • Nov 2010
      • 1633

      #3
      đúng đó
      vậy thôi mà

      Comment

      • ngtiep189
        Thành viên chính thức
        • Mar 2012
        • 65

        #4
        Nguyên văn bởi hoadang Xem bài viết
        thì bạn làm sao mà khi có ngắt là nó báo ngắt ( không cần biết ngắt của thằng nào) => sau đó xác định "đứa nào" gây ngắt => thực hiện trình phục vụ tương ứng cho "em nó"
        a có thể nói rõ hơn đc ko ah.vì e có 3 thiết bi ngoại vi nhưng chỉ có 2 thiết bị đc nối vào ngắt ngoài thui.còn 1 thiết bị nữa.mà mỗi 1 thiết bị có 1 trương chình phục vụ riêng

        Comment

        • ngtiep189
          Thành viên chính thức
          • Mar 2012
          • 65

          #5
          Nguyên văn bởi kidteam Xem bài viết
          đúng đó
          vậy thôi mà
          a có thể nói rõ cho e đc ko? e mới học về vdk nên còn kém

          Comment

          • kidteam
            Thành viên tích cực
            • Nov 2010
            • 1633

            #6
            thì mỗi khi xảy ra ngắt
            chú kiểm tra xem ngắt do cái gì gây ra
            phục vụ tương ứng

            Comment

            • ngtiep189
              Thành viên chính thức
              • Mar 2012
              • 65

              #7
              Nguyên văn bởi kidteam Xem bài viết
              thì mỗi khi xảy ra ngắt
              chú kiểm tra xem ngắt do cái gì gây ra
              phục vụ tương ứng
              e xin lỗi nha.nhưng thực sự là e chưa đc hiểu rõ lắm.2 thiết bị gắn vào chân ngăt ngoài của chân vdk thì ko nói.khi có ngăt xảy ra thì cờ ngăt xuất hiện nhảy đến trương trình phục vụ nó.còn thiết bị kia.giờ gắn vào chân nào của vdk và phải kiêm tra nó thế nào?e mới bắt đầu chuyển từ plc sang vdk.lên còn ngu ngu (hi)mong a giúp cho

              Comment

              • hoadang
                Thành viên tích cực
                • Jun 2010
                • 191

                #8
                thì bây giờ, bạn nghĩ thêm tí nữa, làm sao để nối được 3 cái ngắt mà chỉ cho ra một ngắt ( cho nên mới nói, ban đầu cứ có ngắt là ngắt, ko cần biết từ nguồn ngắt nào). 3 ngắt của bạn chỉ dùng một ngắt là được rồi,

                ngắt 1 ---->|----------|
                ngắt 2 ---->| hộp đen? |---> chân ngắt
                ngắt 3 ---->|----------|

                Comment

                • thientanvt
                  Thành viên tích cực
                  • Mar 2010
                  • 234

                  #9
                  như vầy nhé .
                  3 thiết bị cùng tác động vào 1 chân ngắt VD: ngắt 0 . Nhớ cách li không thôi là sai , rồi thì :
                  void ngắt 0 (){

                  if(thiết bị 0 == 0) thiết bi 0 ();
                  else if(thiết bị 1 == 0) thiết bi 1 ();
                  else if(thiết bị 2 == 0) thiết bi 2 ();
                  }
                  Quá rỏ rồi nhé , thân.

                  Comment

                  • ngtiep189
                    Thành viên chính thức
                    • Mar 2012
                    • 65

                    #10
                    Nguyên văn bởi thientanvt Xem bài viết
                    như vầy nhé .
                    3 thiết bị cùng tác động vào 1 chân ngắt VD: ngắt 0 . Nhớ cách li không thôi là sai , rồi thì :
                    void ngắt 0 (){

                    if(thiết bị 0 == 0) thiết bi 0 ();
                    else if(thiết bị 1 == 0) thiết bi 1 ();
                    else if(thiết bị 2 == 0) thiết bi 2 ();
                    }
                    Quá rỏ rồi nhé , thân.
                    e đã hiểu ra đc rùi.he.thanks anh nha.nhưng có vấn đề mới là.e viết bằng asm.kiểm tra nó bằng đoạn code như thế nào ah

                    Comment

                    • hoadang
                      Thành viên tích cực
                      • Jun 2010
                      • 191

                      #11
                      ASM hay C thì cũng là một lời giải như nhau, chỉ có điều bạn nói cho VĐK trên hai thứ tiếng khác nhau mà thôi!

                      Comment

                      • ngtiep189
                        Thành viên chính thức
                        • Mar 2012
                        • 65

                        #12
                        Nguyên văn bởi hoadang Xem bài viết
                        ASM hay C thì cũng là một lời giải như nhau, chỉ có điều bạn nói cho VĐK trên hai thứ tiếng khác nhau mà thôi!
                        dạ.e cũng biết là thế rùi.nhưng e mới làm quen với vdk thui.e chưa nghiên cứu sâu đc.còn nhiều vấn đề còn gà mờ lắm.cần đến sự giúp đỡ của mọi ng.
                        Trong bài này.thực sự e chưa biết viết trương trình làm sao để phân biệt đc các ngắt này.(bằng asm)các bác biết có thể chỉ giáo cho e đc ko ah.

                        Comment

                        • hoadang
                          Thành viên tích cực
                          • Jun 2010
                          • 191

                          #13
                          việc còn lại là của bạn chứ, bọn mình chỉ có gợi ý như vậy, có thế mới học được, chứ làm ra luôn thì còn học hành gì nữa.
                          trong ASM chúng ta có những lệnh sau kiểm tra bit: JC, JNC, JB, JNB, JBC
                          đấy, tiếp theo là đến lượt bạn nói cho uP hiểu điều bạn muốn làm

                          Comment

                          • ngtiep189
                            Thành viên chính thức
                            • Mar 2012
                            • 65

                            #14
                            Nguyên văn bởi hoadang Xem bài viết
                            việc còn lại là của bạn chứ, bọn mình chỉ có gợi ý như vậy, có thế mới học được, chứ làm ra luôn thì còn học hành gì nữa.
                            trong ASM chúng ta có những lệnh sau kiểm tra bit: JC, JNC, JB, JNB, JBC
                            đấy, tiếp theo là đến lượt bạn nói cho uP hiểu điều bạn muốn làm
                            mấy lệnh này thì e biết.e cũng suy nghĩ từ hum qua tới giờ vẫn ko có cách nào nếu đấu chung 3 thiết bị vào 1 chân và phân biệt thiết bị nào(bằng asm)e có tham khảo 1 số ng.cũng ko biết.nếu đấu nó vào 3 chân # nhau thì có thể dùng các lệnh trên để kiểm tra đc cái này thì e biết.cái này e tự học tự tìm hiểu lên hơi chậm mong các a có thể chỉ bảo

                            Comment

                            • hoadang
                              Thành viên tích cực
                              • Jun 2010
                              • 191

                              #15

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...