Thông báo

Collapse
No announcement yet.

anh em trong diễn đàn cho em hỏi code lập trình như thế này sao lại bị sai trong ccs

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

  • anh em trong diễn đàn cho em hỏi code lập trình như thế này sao lại bị sai trong ccs

    void send_data()
    {
    int8 tam;
    for(tam=3;tam>=0;tam--)// lỗi :condition always true
    send1_i2c(dich[tam]);
    latch=1;
    delay_cycles(10);
    latch=0;
    }

  • #2
    Bạn thử đổi lại khai báo dòng 3 thành
    Code:
    unsigned char tam;
    Phần mềm tự do hoặc không dùng máy tính nữa !.

    Comment


    • #3
      vẫn bị lỗi anh ah
      cái này trong keil c thì chạy đúng. nhưng ccs thì báo lỗi

      Comment


      • #4
        em thay for(tam=3;tam>0;tam--) thì nó ko báo lỗi nữa. nhưng ko đúng yêu cầu của em.

        Comment


        • #5
          Nguyên văn bởi gacon29 Xem bài viết
          void send_data()
          {
          int8 tam;
          for(tam=3;tam>=0;tam--)// lỗi :condition always true
          send1_i2c(dich[tam]);
          latch=1;
          delay_cycles(10);
          latch=0;
          }
          Cái đó không phải lỗi mà là warning thôi. Bạn dùng kiểu dữ liệu int8 cho biến tam trong khi bạn lại so sánh điều kiện lớn hơn hoặc bằng 0. Dữ liệu int8 có giá trị từ 0 đến 255 nên biến tam của bạn không bao giờ có cơ hội nhỏ hơn 0. Vì thế cảnh báo condition always true xuất hiện. Tức là nó cảnh báo cái biểu thức tam >= 0 là luôn đúng trong mọi trường hợp.

          Bạn có thể khai báo lại như sau:

          Code:
          signed int8 tam;
          Lúc này biến tam là số nguyên có dấu, phạm vi giá trị từ -128 đến 127 là sẽ đáp ứng đoạn code của bạn.

          Comment


          • #6
            không có ai giúp em ah?

            Comment


            • #7
              thank. do mình đọc help nhầm. hii.

              Comment


              • #8
                Nguyên văn bởi gacon29 Xem bài viết
                void send_data()
                {
                int8 tam;
                for(tam=3;tam>=0;tam--)// lỗi :condition always true
                send1_i2c(dich[tam]);
                latch=1;
                delay_cycles(10);
                latch=0;
                }
                Trong trường hợp này bạn dùng hàm while sẽ thích hợp hơn. Chưa thấy ai dùng hàm for như thế.

                Comment


                • #9
                  Trong trường hợp này bạn dùng hàm while sẽ thích hợp hơn. Bạn thay int8 tam thành char tam xem được ko. Vì biến tam phải là giá trị âm thì mới thoát khỏi vòng for được.

                  Comment

                  Về tác giả

                  Collapse

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

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

                  Collapse

                  Đang tải...
                  X