Nạp vào chạy liền không đợi lệnh

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • kitty511
    Thành viên chính thức
    • Sep 2007
    • 76

    #1

    Nạp vào chạy liền không đợi lệnh

    while (BUT == 1)
    while (1)
    {
    // Place your code here
    LED= LED^1;
    delay_ms(1000);
    };
    }
    Em chạy mô phỏng bằng Proteus nhưng chẳng hiểu sao. không nhấn nút đèn cũng chớp tắt liên tục nhờ các anh giúp. có phải tại chương trình mô phỏng hay do lệnh sai .
  • enter88
    Thành viên tích cực
    • Nov 2008
    • 238

    #2
    Bạn xem lại code đi! Mô phỏng đơn giản thì proteus ko sai đâu

    Comment

    • linhk43
      Thành viên mới
      • Nov 2009
      • 4

      #3
      thêm dấu ; vào lệnh đầu đi xem có đc không

      Comment

      • achut
        Thành viên chính thức
        • Feb 2008
        • 67

        #4
        while (1)
        while (BUT == 1)
        {
        // Place your code here
        LED= LED^1;
        delay_ms(1000);
        };
        }

        đảo 2 dòng đầu lại xem tình hình thế nào bạn

        Comment

        • thiennv0109
          Thành viên tích cực
          • Dec 2010
          • 219

          #5
          - Yêu cầu của bạn cần là gì?
          1. Nhấn phím>> chớp led, Phím nhả>> Led tắt ngay lập tức???
          2. Nhấn phím>>nhả phím>>chớp led một lúc rồi tắt???
          - theo yêu cầu 1: viết giống của bạn achut nhé, mà khối while(1) nên có "{};" , thay "LED= LED^1;" bằng 2 dòng lệnh xen kẽ delay như ở dưới đây để tránh tình trạng mất kiểm soát trạng thái của led là tắt hay sáng khi ta nhả phím ( vì khoảng thời gian giữa các lệnh là rất nhỏ). Khi dùng một lệnh như của bạn, sẽ sảy ra trường hợp: khi thôi nhấn phím, led sẽ luôn sáng hoặc luôn tắt.

          while(1)
          {
          while(BUT==1)
          {
          // Place your code here
          LED= 0; // tắt led
          delay_ms(1000);
          LED=1; // sáng led
          delay_ms(1000);
          };
          };

          - Theo yêu cầu 2:
          while(1)
          {
          while(BUT==1)
          {
          while(BUT==1){};
          // Place your code here
          LED= 0; // tắt led
          delay_ms(1000);
          LED=1; // sáng led
          delay_ms(1000);
          };
          };

          - Nếu bạn thử code mà vẫn không được thì bạn nên kiểm tra lại mạch cách nối phím nhấn ( phím luôn ở mức logic "1" nên chưa nhấn lần nào nó sẽ chớp led liên tục)
          Chúc thành công!
          Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
          Gmail: -Mobile: 0989.194.472

          Comment

          • tadbkhn
            Thành viên chính thức
            • Sep 2010
            • 33

            #6
            Bạn dùng CodeVision hả?

            Comment

            • kitty511
              Thành viên chính thức
              • Sep 2007
              • 76

              #7
              Nguyên văn bởi tadbkhn Xem bài viết
              Bạn dùng CodeVision hả?
              Em dùng codevision....sao anh lại hỏi vậy lỗi gì vậy anh?

              Comment

              • Tien_minh_05
                Thành viên mới
                • Jul 2011
                • 28

                #8
                Gửi Code lên đi! Đã xác lập cổng vào/ra chưa?
                Dạy kèm thiết kế mạch: Orcad, Proteus, Altiudesign
                Dạy kèm lập trình C/Assembly cho 8051, AVR
                Nhận thiết kế mạch điện tử, đồ án tự động hóa.
                Email :

                Comment

                • Tien_minh_05
                  Thành viên mới
                  • Jul 2011
                  • 28

                  #9
                  Nguyên văn bởi kitty511 Xem bài viết
                  while (BUT == 1)
                  while (1)
                  {
                  // Place your code here
                  LED= LED^1;
                  delay_ms(1000);
                  };
                  }
                  Em chạy mô phỏng bằng Proteus nhưng chẳng hiểu sao. không nhấn nút đèn cũng chớp tắt liên tục nhờ các anh giúp. có phải tại chương trình mô phỏng hay do lệnh sai .
                  Thế này:
                  * lệnh While(but==1) điều này có thể luôn đúng lúc bật VĐK lên ( trong con AVR có trở treo thì phải )
                  * Thành ra: lệnh thứ 2 được thực hiện ngay sau đó: While (1){...}; đây là một lệnh lặp vô điều kiện, cái nút bấm bên trên kia không có tác dụng gì.
                  * Như vậy: có 2 chỗ cần xem lại:
                  - 1. Nút bấm thường kéo âm, và xác lập trở treo bên trong của AVR.
                  - 2. đổi đoạn code trên thành:

                  while(1)
                  {
                  while (but==1)
                  {
                  // Place your code here
                  LED= LED^1;
                  delay_ms(1000);
                  };
                  }
                  hoặc:
                  while(but==1){}
                  while (1)
                  {
                  // Place your code here
                  LED= LED^1;
                  delay_ms(1000);
                  };
                  Dạy kèm thiết kế mạch: Orcad, Proteus, Altiudesign
                  Dạy kèm lập trình C/Assembly cho 8051, AVR
                  Nhận thiết kế mạch điện tử, đồ án tự động hóa.
                  Email :

                  Comment

                  • hiep.vvan
                    Thành viên mới
                    • Dec 2012
                    • 14

                    #10
                    nối thêm mass sau nút ấn nhé.Vừa bị y như thế, ấn xong chân chip cứ giữ ở mức 1 nên vòng lặp vô điều kiện. Bạn phải nối nó với mass để nó chỉ lên 1 khi ấn nút thôi. Nhìn kỹ trong mô phỏng cũng thấy.

                    Comment

                    • duong_act
                      Thành viên tích cực
                      • Nov 2008
                      • 4903

                      #11
                      sửa lại như sau :
                      while(BUT==1);

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...