Trích:
Nguyên văn bởi dark_electron
Hi,
Các bác cho em hỏi là trong chương trình của em thời gian đếm một số bằng thời gian quét 4 LED (5x4=20ms) hơi nhanh, có cách nào cho delay đếm khác với delay quét mà vẫn đảm bảo các LED sáng đều ko các bác?
Hix, chắc phải chuyển qua quét theo kiểu timer như bác Linh bày quá, quét kiểu lặp khó phối hợp cho chương trình làm việc khác quá đi.
|
Yêu cầu của bạn hoàn toàn thực hiện được.
Gọi Display() là hàm quét Led, thời gian là 20ms. Về cơ bản hàm main của bạn sẽ là
Code:
void main(){
// Khoi tao
//vong lap chinh
while(1){
updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
display();
Counter++;
}
}
Nếu bạn muốn thời gian đếm lâu hơn, bạn thêm một biến khác đếm số lần gọi hàm Display, khi đủ thì tăng biến đếm. Lấy ví dụ bạn muốn biến đếm 1s tăng 1 lần, thực hiện như sau.
Code:
void main(){
// Khoi tao
unsigned int NumCallDisplay = 0;
//vong lap chinh
Counter = 0;
updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
while(1){
Display();
if (++NumCallDisplay == 50) // So lan goi Display là 50 tương ứng 50x20ms = 1000ms = 1s
{ Counter++;
updateCounter(); // Ham nay chuyen gia tri Counter thanh dang du lieu cho Led
}
}
}
Chúc thành công.