Thông báo

Collapse
No announcement yet.

Giúp về hàm delay...

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

  • Giúp về hàm delay...

    các anh chị cho e hỏi là e dung Pic 16f684 nhưng sao viết lệnh e sử dụng lệnh Delay_ms ....mà sao k có tác dụng vậy???cụ thể là khi thay đổi biến trở e muốn trễ 5s sau đó mới thay đổi giá trị ra led nhưng sao nó cứ thay đôi ngay luôn.hic.các anh xem lệnh rồi giúp e nhé.e cảm ơn
    http://www.youtube.com/watch?v=CPptXWInNH4&feature=youtu.be

    int8 adc;


    set_adc_channel(0);
    delay_us(10);
    set_tris_c(0);
    set_tris_a(0000001);


    while(1){

    ADC=READ_ADC();
    if(adc<21){
    output_c(0x06);
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<42){

    output_c(0x00); //XUAT 0
    Output_bit(pin_a2,1);
    DELAY_MS(5000);
    }
    else if(adc<63){
    output_c(0x39); //XUAT1
    Output_bit(pin_a2,1);
    DELAY_MS(5000);
    }
    else if(adc<84){
    output_c(0x24); // xuat 2
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<105){
    output_c(0x30); // xuat 3
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<127){
    output_c(0x19); // xuat 4
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<148){
    output_c(0x12); // xuat 5
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<169){
    output_c(0x02); // xuat 6
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<190){
    output_c(0xF8); // xuat 7
    Output_bit(pin_a2,1);
    DELAY_MS(5000);
    }
    else if(adc<211){
    output_c(0x00); // xuat 8
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    else if(adc<232){
    output_c(0x10); // xuat 9
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }
    ELSE {
    output_c(0x0E); // xuat f
    Output_bit(pin_a2,0);
    DELAY_MS(5000);
    }

    }

    }
    ghi chú: e đã khai báo đầy đủ #use delay ........ e cung đã thử đặt lệnh delay ngay sau lệnh while nhưng vẫn k dc hic

  • #2
    thu kiểu này xem
    while(1){

    ADC=READ_ADC();
    DELAY_MS(5000);
    if(adc<21)
    {
    output_c(0x06);
    Output_bit(pin_a2,0);
    }
    TamPhieuLuuKy@yahoo.com
    092 2838 712 --->>

    Comment


    • #3
      Nguyên văn bởi superhieu1 Xem bài viết
      thu kiểu này xem
      E cảm ơn anh.e làm như a nói nhưng k được mà đèn led sáng số 8 k thay đổi luôn.nhưng khi e đưa lệnh delay 5s xuống cuối vòng lặp while thi co trễ dc 1s....e tăng thời gian lên hoặc dùng 2 lệnh delay liên tiếp nó vẫn trễ 1s thui.hic.cơ bản là lệnh delay k có tác dụng nhưng e k bít tại sao??

      Comment


      • #4
        bạn mô phỏng hay mạch thực
        và chú ý khi báo thạch anh giữa code và thạch anh thực
        nếu đc bạn có thể gói gọn file code và file mô phỏng quăng lên đây tui chữa giúp, chứ tra hỏi kiểu này lâu lắm, có thể liên hệ yahoo
        TamPhieuLuuKy@yahoo.com
        092 2838 712 --->>

        Comment


        • #5
          Mình không biết là bạn sử dụng chường trình dịch gì & giá trị 5000 trong hàm DELAY_MS(5000) trình dịch có hiểu ko (một số trình dịch cũ nó chỉ giới hạn tới khoảng 150 thôi)
          bạn thay DELAY_MS(5000) bằng dòng này thử xem sao:
          for (int i = 0; i < 50; i++)
          {
          DELAY_MS(100)
          }

          Comment


          • #6
            khai báo thêm #ocs ?M

            Comment


            • #7
              Nguyên văn bởi thuanbk1989 Xem bài viết
              các anh chị cho e hỏi là e dung Pic 16f684 nhưng sao viết lệnh e sử dụng lệnh Delay_ms ....mà sao k có tác dụng vậy???cụ thể là khi thay đổi biến trở e muốn trễ 5s sau đó mới thay đổi giá trị ra led nhưng sao nó cứ thay đôi ngay luôn.hic.các anh xem lệnh rồi giúp e nhé.e cảm ơn
              http://www.youtube.com/watch?v=CPptXWInNH4&feature=youtu.be

              Code:
              int8 adc;
               
               
                 set_adc_channel(0);
                 delay_us(10);
                 set_tris_c(0);
                 set_tris_a(0000001);
                     
                  
                while(1){   
                        
                       ADC=READ_ADC();
                          if(adc<21){
                          output_c(0x06);
                          Output_bit(pin_a2,0);
                          DELAY_MS(5000);
                          }
                          else if(adc<42){
                       
                          output_c(0x00); //XUAT 0
                          Output_bit(pin_a2,1);
                           DELAY_MS(5000);
                          }
                          else if(adc<63){
                            output_c(0x39); //XUAT1
                            Output_bit(pin_a2,1);
                            DELAY_MS(5000);
                          }
                          else if(adc<84){
                             output_c(0x24);      // xuat 2
                             Output_bit(pin_a2,0);
                           DELAY_MS(5000);
                          }
                          else if(adc<105){
                              output_c(0x30);     // xuat 3
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                          else if(adc<127){
                              output_c(0x19);     // xuat 4
                              Output_bit(pin_a2,0);
                               DELAY_MS(5000);
                          }
                          else if(adc<148){
                              output_c(0x12);     // xuat 5
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                          else if(adc<169){
                              output_c(0x02);     // xuat 6
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                          else if(adc<190){
                              output_c(0xF8);     // xuat 7
                              Output_bit(pin_a2,1);
                              DELAY_MS(5000);
                          }
                          else if(adc<211){
                              output_c(0x00);     // xuat 8
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                          else if(adc<232){
                              output_c(0x10);     // xuat 9
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                          ELSE {
                              output_c(0x0E);     // xuat f
                              Output_bit(pin_a2,0);
                              DELAY_MS(5000);
                          }
                      
                }
                
              }
              ghi chú: e đã khai báo đầy đủ #use delay ........ e cung đã thử đặt lệnh delay ngay sau lệnh while nhưng vẫn k dc hic
              đoạn code này thấy đúng rồi, không biết đoạn trên thì sao. bạn xem lại cài thạch anh trong proteus đúng chưa.
              bạn nói bạn khai báo #use delay đầy đủ, vậy biết là nó như thế nào, nó có đúng không. bạn nên post toàn bộ code và file mô phỏng, nếu ai đó rảnh rỗi sẽ sửa code và mô phỏng giúp bạn luôn.

              Comment


              • #8
                Cảm ơn các anh....e làm dc rùi hjhj Lý do là e dùng lệnh Set_tris_a(00000001) là k đúng mà phải là Set_tris_a(0b00000001).nhưng không hiểu sao e biên dịch k báo lỗi...e dùng Pic C cmpiler .cảm ơn mọi người

                Comment


                • #9
                  đôi khi là lỗi vu vơ hehe
                  Be quan. Plz contact through email:

                  Comment


                  • #10
                    bạn nên xem lại về chuyển đổi các hệ số nhé, 00000001 tức là 1 trong decimer tương đương ob00000001
                    TamPhieuLuuKy@yahoo.com
                    092 2838 712 --->>

                    Comment


                    • #11
                      Vâng.cảm ơn anh

                      Comment

                      Về tác giả

                      Collapse

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

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

                      Collapse

                      Đang tải...
                      X