Thông báo

Collapse
No announcement yet.

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

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

  • 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 .

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

    Comment


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

      Comment


      • #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


        • #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


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

            Comment


            • #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


              • #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


                • #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


                  • #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


                    • #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...
                      X