Trích:
Nguyên văn bởi love_ac
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,