RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Help!!! Hàm thời gian trong C!!!

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • gianuakkk
    Thành viên mới
    • Aug 2012
    • 8

    #1

    Help!!! Hàm thời gian trong C!!!

    Mình đang lập trình cho VĐK AT89S52 bằng Keil-C. Có bạn nào biết cách tạo một hàm để lấy thời gian chạy song song với chương trình không (không phải hàm delay). Khi thực thi chương trình, lúc nào cần sẽ lấy giá trị thời gian từ hàm đó. Các hàm thời gian trong thư viện time.h chỉ lấy thời gian đến giây thôi, còn mình muốn lấy đến milli hoặc micro giây. Mong mọi người giúp đỡ
  • caonhan_2004
    Thành viên tích cực
    • Nov 2009
    • 146

    #2
    Nguyên văn bởi gianuakkk Xem bài viết
    Mình đang lập trình cho VĐK AT89S52 bằng Keil-C. Có bạn nào biết cách tạo một hàm để lấy thời gian chạy song song với chương trình không (không phải hàm delay). Khi thực thi chương trình, lúc nào cần sẽ lấy giá trị thời gian từ hàm đó. Các hàm thời gian trong thư viện time.h chỉ lấy thời gian đến giây thôi, còn mình muốn lấy đến milli hoặc micro giây. Mong mọi người giúp đỡ
    Bạn dùng timer của 89S52 làm việc này. vì timer trên nó chạy độc lập, khong giống như delay bằng các vòng lặp vi xử lý không thể làm được việc khác khi delay.

    Comment

    • gianuakkk
      Thành viên mới
      • Aug 2012
      • 8

      #3
      Nguyên văn bởi caonhan_2004 Xem bài viết
      Bạn dùng timer của 89S52 làm việc này. vì timer trên nó chạy độc lập, khong giống như delay bằng các vòng lặp vi xử lý không thể làm được việc khác khi delay.
      Ứng dụng timer của 89s52 mình đã được học rồi nhưng chỉ học hai chế độ mode 0 và 1 để tạo hàm delay với thời gian chính xác thôi. đếm tối đa 65536 xung là tràn rồi. Bạn có thể cho mình đoạn code ví dụ được không? có phải dùng timer ở mode 2 để đếm nạp lại không?

      Comment

      • caonhan_2004
        Thành viên tích cực
        • Nov 2009
        • 146

        #4
        Nguyên văn bởi gianuakkk Xem bài viết
        Ứng dụng timer của 89s52 mình đã được học rồi nhưng chỉ học hai chế độ mode 0 và 1 để tạo hàm delay với thời gian chính xác thôi. đếm tối đa 65536 xung là tràn rồi. Bạn có thể cho mình đoạn code ví dụ được không? có phải dùng timer ở mode 2 để đếm nạp lại không?
        ở mode 0 bạn có thể sử dụng ngắt tràn , sau đó nạp lại giá trị cho timer bằng phần mềm ( nạp trong trình phục vụ ngắt). ví dụ bạn khởi tạo timer với chu kỳ ngắt là 10ms chẳng hạn. bây giờ bạn muốn làm một việc C sau 100ms. Bạn sẽ khai báo một biến i, ban đầu i =0, trong trình phục vụ ngắt thì tăng i (i++), kiểm tra nếu (i==10) , thực hiện công viec C, rùi lại gán i=0; Vậy bạn đã có thời gian tương đối chính xác sau 100ms để làm việc C

        Comment

        • condonhan
          Thành viên tích cực
          • Apr 2012
          • 233

          #5
          timer intterup mode auto reload đó bác

          Comment

          • gianuakkk
            Thành viên mới
            • Aug 2012
            • 8

            #6
            cảm ơn các bạn nhiều Mình làm được rồi (y)

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...