Thông báo

Collapse
No announcement yet.

Thắc mắc nhỏ về hàm delay dùng vòng lặp trong C

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

  • Thắc mắc nhỏ về hàm delay dùng vòng lặp trong C

    Khi tạo hàm delay khoảng 1s mình thấy có tài liệu viết như sau:
    void delay()
    {
    unsigned int t;
    for(t=0;t<33000;t++);
    }
    nhưng thời gian delay thực là khoảng 1,2s. Mình muốn tìm 1 gtrị gần đúng hơn 33000 nên đã cho giảm dần. Khi chạy debug thì thấy thế này:

    với gtri 37768 thì thời gian delay khoang 1,2s

    với gtri 37767 (chỉ giảm 1 đơn vị) thì thời gian delay khoang 0,16s
    Tại sao lại có sự khác biệt lớn như vậy. Các bác ai biết giải thích hộ. THANKS.
    Mình đã nạp và chạy thử trên mạch cho con led nhấp nháy thì đúng là có sự khác biệt.
    Last edited by 1m1fan; 09-07-2009, 18:40.

  • #2
    Hàm delay của bạn sao có thể tạo ra thời gian trễ ~ 1s được?
    Để tính toán được tương đối của hàm delay bạn cần biết giá trị thạch anh mình dùng => xác định chu kỳ máy, thời gian để thực hiện 1 vòng lặp.
    Xem chi tiết ở đây

    Comment


    • #3
      Nguyên văn bởi Multi System Xem bài viết
      Hàm delay của bạn sao có thể tạo ra thời gian trễ ~ 1s được?
      Để tính toán được tương đối của hàm delay bạn cần biết giá trị thạch anh mình dùng => xác định chu kỳ máy, thời gian để thực hiện 1 vòng lặp.
      Xem chi tiết ở đây
      em dùng thạch anh 12MHz bác ạ --> chu kì máy 1us
      Còn hàm delay thì em tham khảo ở đây (cũng dùng TA 12MHz). Em cũng thử tính thời gian thực hiện 1 vòng for nhưng với các giá trị nạp vào khac nhau thì cũng cho ra các khoảng thời gian thực hiện 1 vòng lặp khác nhau chênh lệch đáng kể
      Last edited by 1m1fan; 11-07-2009, 12:02.

      Comment

      Về tác giả

      Collapse

      1m1fan Tìm hiểu thêm về 1m1fan

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

      Collapse

      Đang tải...
      X