Thông báo

Collapse
No announcement yet.

Đố vui về PIC, các câu đố cực vui và cực hay... hehe..

Collapse
This topic is closed.
X
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #46
    Nguyên văn bởi CHIBANG
    Vậy thì vẫn chưa đap ứng đưoc sự ham hiểu biết của mỗ. Mỗ muốn đáp án đúng.. khà khà...
    Không nghĩ thêm được Bác ơi...Nhưng bác phán hộ em một câu...Chương trình đấy có chạy không????
    theo em nghĩ...nếu mà set được GIE trong chương trình ngắt thì ...chương trình của em có chạy.
    chết em xin lỗi ...em copy paste loạn cả lên...em có sửa lại ngắt 1 2 3 ở trên roài.
    Last edited by tienvnu; 18-10-2005, 00:35.

    Comment


    • #47
      Có chạy, nhưng:
      +Bất kể thế nào cũng nhảy vào ngắt sau. CŨng là ưu tiên nhưng là kiểu ưu tiên: hậu sinh khả úy.
      +Coi chừng tràn stack.
      Mà cứ hỏi bài thế này thì lộ hết cả đáp án... khà.. khà.. sau lần này thì tại hạ sẽ mai danh ẩn tích cho tới khi có đáp án đúng.
      -------------------

      Comment


      • #48
        Tại hạ vẫn còn có nhiều câu đố thú vị như trên về PIC. Khà khà... nhưng mà...mà...còn chờ các bậc cao tăng trả lời nốt câu này đã. He he...
        Last edited by CHIBANG; 18-10-2005, 00:49.
        -------------------

        Comment


        • #49
          Nguyên văn bởi CHIBANG
          Bác gợi ý để anh em suy nghĩ...đây cũng là bác giúp anh em tư duy ...Chứ bác chuồn bây giờ thì là bác đánh đố anh em rồi.
          Còn em nghĩ chương trình của em sợ là bị tràn nếu như là ngắt ngoài...ví dụ như dùng ngắt bằng cách ấn nút. Nhưng nếu em chỉnh phần cứng chỉ nhận một xung vào ngắt...hoặc như dùng nhiều ngắt như ngắt timer thì đố nó tràn được.

          Comment


          • #50
            Trời đất ...em nghĩ mãi ko biết có đúng không...các bác góp ý cái nhé:
            Chạy Main()
            đầu chương trình ngắt có lệnh GIE=0;
            Có ngắt thì đẩy lên stack0 và vào ngắt IN1 bật GIE (không có ngắt nữa thì như thường)
            Có ngắt nữa thì dừng IN1, đẩy địa chỉ lên stack1 và vào IN2
            Giả sử IN2 là một nút bấm có xung dài(bình thương GIE =0 thì không sao nhưng ở đây phải xử lý khi GIE=1 để stack khỏi tràn).
            A```(học anh BinhAnh cai hu'hu') GIE=1 lại Ngắt IN2 đẩy vào ngăn xếp stack2 và chạy lại chương trình ngắt từ đầu. Lúc này có thể dùng lệnh điều kiện để không chương trình ngắt nào được thực hiện. Buộc nó phải rút địa chỉ tại stack 2 ra và chạy từ đó...nhưng ngay ở lệnh này trong điều kiên thứ 2 GIE=1...xung Ngắt 2 vẫn đang tồn tại thì lại đẩy lên stack2 cứ như vậy stack2 sẽ được đẩy lên và rút ra cho đến khi kết thúc xung ... nghĩa là lần ngắt cuối cùng...khi không còn ngắt nữa thì sẽ rút stack2 thực hiện lệnh tại điều kiện 2 ...rồi rút stack1 thực hiện lệnh dang dở ở điều kiện 1...rôi rút stack0 để trở về main

            Comment


            • #51
              static bit I1=0,I2=0,I3=0;
              void interrupt tienvnu(void)
              {
              GIE=0;I1=!I1;
              if(IF1&&I1)
              {
              IF1=0;
              GIE=1;
              program1();
              I1=0;
              }
              I2=!I2;
              if(IF2&&I2)
              {
              IF2=0;
              GIE=1;
              program2();
              I2=0;
              }
              I3=!I3;
              if(IF3&&I3)
              {
              IF3=0;
              GIE=1;
              program3();
              I3=0;
              }
              I1=0;I2=0;I3=0;
              }
              void main() {}

              Đêm rồi đi ngủ đã...Các bác xem xét hộ chương trình của em...

              Comment


              • #52
                Not OK...
                -------------------

                Comment


                • #53
                  Nguyên văn bởi CHIBANG
                  Not OK...
                  Khà khà, bác CB dạo này làm các fan PIC đau cái đầu nhỉ, em vừa gửi đáp án về câu này cho bác để thõa tính tò mò của bác. Bác đọc rồi phán xét hộ em nhé. Em gửi lên hộp thư trên diễn đàn ấy. Mấy câu thì em thấy câu này của bác là khó nhất vì đơn giản là nó ko có trong datasheet thôi....

                  Comment


                  • #54
                    Nguyên văn bởi PPIICC
                    Khà khà, bác CB dạo này làm các fan PIC đau cái đầu nhỉ, em vừa gửi đáp án về câu này cho bác để thõa tính tò mò của bác. Bác đọc rồi phán xét hộ em nhé. Em gửi lên hộp thư trên diễn đàn ấy. Mấy câu thì em thấy câu này của bác là khó nhất vì đơn giản là nó ko có trong datasheet thôi....
                    Đúng là ko qua mặt được bác PPIICC, em vừa xem hộp thư trên diễn đàn, và he he... bác đáp án của bác hoàn toàn đúng. He he...bội phục, bội phục...
                    Em xin đính chính:câu trên ko dành cho các bác BinhAnh,Falleaf,PPIICC
                    -------------------

                    Comment


                    • #55
                      Thời gian thì ít mà bỏ thì không cam tâm, theo ngu ý của em thì code có thể như sau, viết cho 3 ngắt là timer0, int, onchange, với quyền ưu tiên lần lượt như trên. Việc kiểm tra

                      bit timer0=1;
                      bit int0=1;
                      bit rb=1;
                      void interrupt my_isr(void)
                      {
                      GIE=1;
                      if (TMR0IF & timer0)
                      {
                      timer0=0;
                      \\ goi chuong trình xử lý ngắt TMR0
                      timer0=1;
                      }
                      if (INTIF & int0 & !(TMR0IF))
                      {
                      int0=0;
                      \\ gọi chương trình xử lý ngắt INT
                      int0=1;
                      }
                      if (RBIF & rb & !(TMR0IF) & !(INTIF))
                      {
                      rb=0;
                      \\ goi chuon trinhg onchange
                      rb=1;
                      }
                      \\ gie tự động được set là 1
                      }

                      Anh CHIBANG cho đáp an đi, em nghĩ là em sai, mà ông anh học lên đai gì và tại bang nào nhỉ ?
                      Last edited by phamthaihoa; 18-10-2005, 16:12.

                      Comment


                      • #56
                        Nguyên văn bởi 4MD
                        ADCON1 là RPBU ???????
                        Không phải nhầm chỗ này. Bác Chi Bằng hỏi đúng chỗ mình băn khoăn nên mới trả lời thôi.
                        Sai chính tả. ADCON1 và RPBU. Chờ tin dspic của anh !

                        Comment


                        • #57
                          Vẫn chưa đúng... khà khà.. tràn stack ngay lập tức khi gặp bất cứ 1 ngắt bất kỳ nào.

                          Tại hạ là kẻ vô danh tiểu tốt, đâu dám xưng tên họ để các đại hiệp cười chế. Trong khi lưu lạc giang hồ, thấy Giang Nam cảnh đẹp, xem phong thủy thấy dientuviet.net là nơi đất lành chim đậu, sơn thủy hữu tình nên lưu lại và nhã hứng uốn 3 tấc lưỡi, họa đôi vần thơ.

                          Bảo trọng
                          -------------------

                          Comment


                          • #58
                            Nguyên văn bởi phamthaihoa
                            Thời gian thì ít mà bỏ thì không cam tâm, theo ngu ý của em thì code có thể như sau, viết cho 3 ngắt là timer0, int, onchange, với quyền ưu tiên lần lượt như trên. Việc kiểm tra

                            bit timer0=1;
                            bit int0=1;
                            bit rb=1;
                            void interrupt my_isr(void)
                            {
                            GIE=1;
                            if (TMR0IF & timer0)
                            {
                            timer0=0;
                            \\ goi chuong trình xử lý ngắt TMR0
                            timer0=1;
                            }
                            if (INTIF & int0 & !(TMR0IF))
                            {
                            int0=0;
                            \\ gọi chương trình xử lý ngắt INT
                            int0=1;
                            }
                            if (RBIF & rb & !(TMR0IF) & !(INTIF))
                            {
                            rb=0;
                            \\ goi chuon trinhg onchange
                            rb=1;
                            }
                            \\ gie tự động được set là 1
                            }

                            Anh CHIBANG cho đáp an đi, em nghĩ là em sai, mà ông anh học lên đai gì và tại bang nào nhỉ ?
                            Không xóa cờ ngắt thì làm sao được
                            To ChiBang: Bác chỉ giáo em điều này: đẩy vô stack và rút ra rồi lại đẩy vô...làm như thế có tràn ko???
                            Em kô nhìn thấy lỗi sai của em mới chết ạ.

                            Comment


                            • #59
                              Nguyên văn bởi tienvnu
                              rút ra rồi lại đẩy vô...làm như thế có tràn ko???
                              He he... rút ra, đẩy vô, rút ra... rồi lại đẩy vô... 1 lúc là tràn
                              Rất khó kiểm soát, tràn lúc nào ko biết
                              Bác thử đi... he he...
                              -------------------

                              Comment


                              • #60
                                Nguyên văn bởi CHIBANG
                                Vẫn chưa đúng... khà khà.. tràn stack ngay lập tức khi gặp bất cứ 1 ngắt bất kỳ nào.

                                Tại hạ là kẻ vô danh tiểu tốt, đâu dám xưng tên họ để các đại hiệp cười chế. Trong khi lưu lạc giang hồ, thấy Giang Nam cảnh đẹp, xem phong thủy thấy dientuviet.net là nơi đất lành chim đậu, sơn thủy hữu tình nên lưu lại và nhã hứng uốn 3 tấc lưỡi, họa đôi vần thơ.

                                Bảo trọng
                                Hà hà ... Độc cô cầu bại

                                Thôi ông anh cho đáp án đi, để đàn em mở rộng tầm mắt.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X