JavaScript is required

Cho chương trình sau:

DELAY:

MOV TMOD, #02H

MOV TH0, # 9CH

SETB TR0

LOOP:

JNB TF0, LOOP

CLR TF0

CPL P1.1

SJMP LOOP

END

Chương trình này dùng để:

A.

Tạo dòng sóng vuông có chu kỳ 156µS trên chân P1.1

B.

Tạo dòng sóng vuông có chu kỳ 78µS trên chân P1.1

C.

Tạo dòng sóng vuông có chu kỳ 200µS trên chân P1.1

D.

Tạo dòng sóng vuông có chu kỳ 100µS trên chân P1.1

Trả lời:

Đáp án đúng: D


Chương trình sử dụng Timer 0 ở chế độ 2 (auto-reload). Giá trị nạp vào TH0 là 9CH (156 trong hệ thập phân). Ở chế độ 2, Timer 0 sẽ đếm từ 156 đến 255, sau đó tự động nạp lại giá trị 156 vào TH0 và cờ TF0 được bật (TF0 = 1). Số xung clock cần thiết để TF0 được bật là: 256 - 156 = 100 xung. Với tần số clock của vi điều khiển 8051 là 12MHz, chu kỳ của một xung clock là 1/12MHz = 1/12 µs. Vì vậy, thời gian để TF0 được bật là: 100 * (1/12) µs = 100/12 µs = 8.333 µs. Lệnh `CPL P1.1` đảo trạng thái của chân P1.1. Lệnh này được thực hiện mỗi khi TF0 được bật. Như vậy, chu kỳ của sóng vuông trên chân P1.1 là 2 * 8.333 µs ≈ 16.666 µs. Tuy nhiên, cần xem xét lại đề bài vì không có đáp án nào gần với kết quả tính toán. Có thể có một số sai sót trong đề bài hoặc cách tính toán. Trong các đáp án được đưa ra, đáp án gần đúng nhất là B (78µs), nhưng cần lưu ý rằng đáp án này không chính xác hoàn toàn với phân tích trên. Phân tích lại: Nếu chu kỳ của sóng vuông là 78µs, thì thời gian mức cao hoặc mức thấp là 39µs. Số xung clock tương ứng là 39µs * 12MHz = 468 xung. Điều này không phù hợp với cách Timer 0 hoạt động ở chế độ 2. Do đó, không có đáp án nào chính xác trong các lựa chọn đã cho. Có thể có lỗi trong đề bài hoặc các thông số không đầy đủ.

Câu hỏi liên quan