View Single Post
Old 09-10-2008, 07:12 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi love_ac View Post
Trong lập trình c:về thời gian delay có sự khác nhau giữa sử dụng hàm sẵn có delay_ms(time) và sử dụng timer để tạo ra thời gian trễ không.Xin các bạn giúp giải đáp
- Hàm delay_ms() thường đếm cho đủ số chu kỳ cần thiết để tạo thời gian trễ, trong thời gian này CPU bận rộn đếm thời gian, không làm được việc gì khác

- Dùng timer, kiểu thứ nhất: cho timer đếm thời gian, còn CPU liên tục kiểm tra xem đủ thời gian trễ hay chưa, như vậy CPU cũng bận rộn, không làm được việc gì khác

- Dùng timer, kiểu thứ hai: cho timer đếm thời gian, CPU thường xuyên kiểm tra xem đủ thời gian hay chưa, trong lúc vẫn thực hiện các công việc khác (chẳng hạn, trong vòng lặp có lệnh kiểm tra xem cờ tràn timer đã bật hay chưa)

- Dùng timer, kiểu thứ ba: cho timer đếm thời gian, chỉ khi nào đủ thời gian chờ thì mới báo hiệu cho CPU xử lý (dùng ngắt timer)

Dùng hàm delay_ms() có thể tạo độ trễ rất chính xác (không có sai lệch, nếu code được viết tốt và tần số thực thi lệnh đủ lớn). Dùng timer kiểu thứ ba cũng có thể tính toán để có độ trễ rất chính xác (không có sai lệch đến sai lệch 1 chu kỳ máy). Dùng timer kiểu thứ hai có thể kém chính xác hơn dùng timer kiểu thứ nhất. Dùng timer kiểu thứ nhất có thể đạt sai lệch 1 chu kỳ thực thi lệnh.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn