Thông báo

Collapse
No announcement yet.

Thắc mắc đơn giản về code C.

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

  • #16
    Nguyên văn bởi i0988305410 Xem bài viết
    Nếu hàm delay là hàm có sẵn rùi thì hai lệnh for ở trên để làm gì?
    Trong KeilC đâu có sẵn hàm delay. Do đó, người ta phải tự viết hàm delay, đó là hàm có 2 vòng for đấy.

    Comment


    • #17
      Tt

      Cách tính thời gian trễ là sao z mấy anh? Có phải lúc nào hai cái vòng lặp for đó cũng chạy hết 0.8us không mấy anh?
      Em đọc dc bên đây [Help] Cách tính thời gian trễ - Diễn đàn sinh viên Khoa ĐTVT nhưng còn mơ hồ lắm!

      Comment


      • #18
        Cách tính thời gian trễ là sao z mấy anh? Có phải lúc nào hai cái vòng lặp for đó cũng chạy hết 0.8us không mấy anh?
        Em đọc dc bên đây [Help] Cách tính thời gian trễ - Diễn đàn sinh viên Khoa ĐTVT nhưng còn mơ hồ lắm!

        Comment


        • #19
          Nguyên văn bởi Lenh Ho Xem bài viết
          Anh duong_act có thể giải thích tại sao ta không dùng timer để viết một chuơng trình định thời hay không? thanks anh nhiều
          Theo mình thì thế này :
          - Về độ chính xác : Dùng timer không thể nói là chính xác hơn dùng vòng lặp được. Dùng kiểu gì thì bản chất vẫn là cho vi điều khiển "chơi" trong n chu kì máy. Cái n này thì ta đều tính được chính xác.
          - Về độ phức tạp : Một hàm delay dùng timer sẽ phức tạp hơn hàm dùng vòng lặp thông thường nhiều. Để sử dụng được kiểu này theo mình kiểu gì cũng phải dùng đến ngắt của timer. Dùng được hàm delay này đương nhiên phải :
          -Khởi tạo ngắt timer. Cái này thì chắc chắn rồi. Nếu dùng timer thì chỉ có cách dùng ngắt để tăng hay giảm một số biến mục đích trì hoãn n chu kì máy.
          -Tốn 1 byte hoặc 2byte RAM để lưu tham số truyền vào từ hàm main và các hàm con cho việc tính thời gian delay. Với kiểu dùng for, while thì các biến của hàm sẽ được trả lại khi hàm này kết thúc. Với con VDK lắm tài nguyên có thể chấp nhận được chứ con 89C51 nó có 1 tẹo tài nguyên mà phung phí vậy và mất toi luôn 1 cái timer thì không được hay lắm.
          -Hàm delay phức tạp : Ta biết là timer sẽ chạy độc lập và chỉ có tác động vào quá trình xử lý khi có ngắt xảy ra. Khi thực hiện xong các câu lệnh trong hàm ngắt nó sẽ tiếp tục các câu lệnh bị gián đoạn. Như vậy trong hà delay lại cần 1 vòng lặp while (hoặc cái gì đó) để làm cho vdk " mắc kẹt tạm thời" khi timer nó đang tính delay. Nếu không thì sau khi ngắt timer nó thực thi xong thì vdk "sực" ngay các câu lệnh sau hàm delay thì chẳng còn ý nghĩa gì nữa.
          -Khó khăn khi phối hợp với các ngắt khác : Ngoài ngắt timer còn nhiều ngắt khác cần sử dụng đến. Khi đó ta lại phải tính toán ưu tiên của các ngắt để cho vdk nó chạy đúng. Ví dụ nếu dùng timer kết hợp rDA thì lại phải tính toán sao cho khi ngắt rDA xảy ra phải disable ngắt timer. Nếu không quá trình nhận dữ liệu của rDA có thể bị ngắt timer làm hỏng.
          Đấy là ý kiến của mình

          Comment

          Về tác giả

          Collapse

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

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

          Collapse

          Đang tải...
          X