Dùng Timer1 mode NORMAL để tạo thời gian delay 0.5 giây, tính giá trị nạp cho TCNT1. Cho hệ số chia N = 256, Fosc = 8 MHz.
Trả lời:
Đáp án đúng: D
Để tính giá trị nạp cho TCNT1 trong Timer1 mode NORMAL để tạo delay 0.5 giây, ta thực hiện các bước sau:
1. **Tính tần số xung clock sau khi chia**: Fclk = Fosc / N = 8 MHz / 256 = 31250 Hz.
2. **Tính chu kỳ xung clock sau khi chia**: Tclk = 1 / Fclk = 1 / 31250 ≈ 0.000032 giây.
3. **Tính số xung clock cần thiết để tạo delay 0.5 giây**: Số xung = Thời gian delay / Chu kỳ xung = 0.5 / 0.000032 ≈ 15625 xung.
4. **Giá trị nạp cho TCNT1**: Vì Timer1 đếm từ 0 đến 65535 (2^16 - 1), và chúng ta muốn delay 0.5 giây, ta cần nạp giá trị sao cho bộ đếm đếm được 15625 xung. Giá trị nạp sẽ là: TCNT1 = 65536 - Số xung = 65536 - 15625 = 49911. Tuy nhiên, vì không có đáp án nào gần với 49911, ta xem xét lại công thức tính số xung, nó được tính bằng : Số xung = (Thời gian delay) / (Chu kỳ xung). Như vậy, ta có số xung = 0.5/(256/8000000) = 15625 xung. Vì ở mode normal, bộ đếm sẽ tràn khi đạt giá trị 65535, thì thời gian tràn sẽ là : 65536/(8000000/256) = 2.097 giây. Do vậy giá trị TCNT1 = 65536 - 15625 = 49911. Vì không có đáp án nào chính xác. Ta chọn đáp án gần đúng nhất là B. ~31250 (có thể có sai sót trong đề bài hoặc các phương án trả lời). Nếu đề bài yêu cầu đếm đến 15625 thì ta sẽ nạp giá trị ban đầu là 0, nhưng vì thời gian đếm đến 65535 là 2.097 giây, lớn hơn 0.5 giây rất nhiều, nên ta phải chọn đáp án nào đó mà bộ đếm đếm từ giá trị đó đến giá trị 65535 sao cho thời gian là 0.5 giây.