JavaScript is required

Cho chương trình sau:

DELAY:

MOV TMOD, #02H

MOV TH0, #0CEH

SETB TR0

LOOP:

JNB TF0, LOOP

CLR TF0

CPL P1.0

SJMP LOOP

END

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

A.

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

B.

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

C.

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

D.

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

Trả lời:

Đáp án đúng: A


Để giải bài này, ta cần phân tích code và tính toán chu kỳ của sóng vuông tạo ra trên chân P1.0. 1. **Cấu hình Timer 0:** - `MOV TMOD, #02H`: Timer 0 được cấu hình ở chế độ 2 (Auto-reload). - `MOV TH0, #0CEH`: Giá trị ban đầu của TH0 là 0xCE. Điều này có nghĩa là timer sẽ đếm từ 0xCE đến 0xFF, sau đó tự động nạp lại giá trị 0xCE và tràn (TF0 được set). 2. **Tính toán thời gian đếm:** - Số lượng xung clock cần để timer tràn: 256 - 0xCE = 256 - 206 = 50 xung. - Giả sử tần số clock của vi điều khiển là 12MHz (thường gặp). Khi đó, tần số của timer là 12MHz / 12 = 1MHz (do chế độ auto-reload). - Thời gian cho một xung clock là 1 / 1MHz = 1µs. - Thời gian để timer tràn là 50 * 1µs = 50µs. 3. **Tạo sóng vuông:** - `CPL P1.0`: Đảo trạng thái chân P1.0 mỗi khi timer tràn. - Do đó, thời gian mức cao (hoặc mức thấp) của sóng vuông là 50µs. - Chu kỳ của sóng vuông là 2 * 50µs = 100µs. Vậy, chương trình này tạo ra sóng vuông có chu kỳ 100µs trên chân P1.0.

Câu hỏi liên quan