Hàm delay_ms

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • handsome3746
    Đệ tử 1 túi
    • May 2010
    • 20

    #1

    Hàm delay_ms

    Mấy huynh cho em hỏi tí nha...mới học pic nên mong mấy huynh chỉ bảo giùm em.
    em dùng ccs để xuất tín hiệu làm đèn chớp tắt ở chân C1...Đoạn code như sau:

    #include <18f4620.h>
    #BYTE PORTC=0xf82
    #byte TRISC=0xf94
    #use delay (clock=20000000)

    void main()
    {
    TRISC=0x00;
    PORTC=0x00;
    WHILE(TRUE)
    {
    output_high(PIN_C1);
    delay_ms(1000);
    output_low(PIN_C1);
    delay_ms(1000);
    }
    }

    khi mô phỏng trên proteus thì đúng là đèn sáng 1 giây sau đó tắt 1 giấy...
    nhưng khi làm mạch thật thì không phải là 1 giây mà là 5-6 giây gì đó...
    em không hiểu tại sao...
    mấy huynh bỏ ra vài phút giúp em nha...
    Thạch anh em dùng là 20Mhz như trong code...
    cảm ơn mấy huynh trước nha.
  • phatcddt08a
    Đệ tử 5 túi
    • Dec 2010
    • 101

    #2
    tốt nhất là dùng ngắt timer để làm chuẩn hơn

    Comment

    • lionking
      Đệ tử 3 túi
      • May 2011
      • 47

      #3
      Nguyên văn bởi handsome3746 View Post
      Mấy huynh cho em hỏi tí nha...mới học pic nên mong mấy huynh chỉ bảo giùm em.
      em dùng ccs để xuất tín hiệu làm đèn chớp tắt ở chân C1...Đoạn code như sau:

      #include <18f4620.h>
      #BYTE PORTC=0xf82
      #byte TRISC=0xf94
      #use delay (clock=20000000)

      void main()
      {
      TRISC=0x00;
      PORTC=0x00;
      WHILE(TRUE)
      {
      output_high(PIN_C1);
      delay_ms(1000);
      output_low(PIN_C1);
      delay_ms(1000);
      }
      }

      khi mô phỏng trên proteus thì đúng là đèn sáng 1 giây sau đó tắt 1 giấy...
      nhưng khi làm mạch thật thì không phải là 1 giây mà là 5-6 giây gì đó...
      em không hiểu tại sao...
      mấy huynh bỏ ra vài phút giúp em nha...
      Thạch anh em dùng là 20Mhz như trong code...
      cảm ơn mấy huynh trước nha.
      thêm dòng này vào phần khai báo thử xem: #fuses HS,NOWDT

      Comment

      • hcmut.khoamaisi
        Đệ tử 4 túi
        • Dec 2009
        • 79

        #4
        Vấn đề là thạch anh của bạn ghi 20Mhz nhưng co đúng như vậy không!đồ mua ngoài chợ nhật tảo thì có trời mới biết!code ổn không vấn đề gì!mạch thật chạy gần đúng( chỉ sai thời gian!)
        Bạn thay con thạch anh khác thử xem,nếu không được thì đó là do lỗi PIC,lỗi linh kiện.....hay là do cái lỗi vặt vãnh nào đó(chỉ có trời mới biết)và đừng nên tìm hiểu thêm nữa sẽ mất thời gian,lựa cái khó hơn mà làm !đừng quá cầu toàn mọi thứ!
        My blog: http://autumnneverreturn.blogspot.com/
        Đối thủ khó chiến thắng nhất là bản thân !!!

        Comment

        • handsome3746
          Đệ tử 1 túi
          • May 2010
          • 20

          #5
          vì em cần điều khiển động cơ không hồi tiếp nhưng cần độ chính xác tương đối... chỉ xuất led mà xuất không chính xác thì sao xuất pwm chính xác được hả anh... mong anh giup đỡ...

          Comment

          • handsome3746
            Đệ tử 1 túi
            • May 2010
            • 20

            #6
            cảm ơn bác lionking nha...em làm đc rồi...vậy mà mò cả ngày không ra..

            Comment

            • phatcddt08a
              Đệ tử 5 túi
              • Dec 2010
              • 101

              #7
              sao kỳ vậy ta bạn không khai báo dòng fuse làm sau có thể chạy được mạch thật. không có dòng fuse làm sao nạp vào mà pic chạy dc.cái này đọc vậy.mình tưởng là bạn chạy mạch thật thì phải có dòng fuse chứ

              Comment

              • handsome3746
                Đệ tử 1 túi
                • May 2010
                • 20

                #8
                mình chạy mạch thật vẫn sáng led mà,chỉ có điều thời gian không đúng 1 giây thôi... có thêm #fuses cấu hình cho thạch anh mình là HS nên chạy đúng 1 giây...

                Comment

                Working...