JavaScript is required

Cho chương trình sau:

DELAY:

MOV TMOD, #01H

LOOP:

MOV TH0, # HIGH(-500)

MOV TL0, #LOW(-500)

SETB TR0

JNB TF0, $

CLR TR0

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ỳ 1000mS trên chân P1.0

B.

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

C.

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

D.

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

Trả lời:

Đáp án đúng: C


Chương trình sử dụng Timer 0 ở chế độ 1 (16-bit timer) để tạo độ trễ. Giá trị -500 được nạp vào TH0 và TL0, nghĩa là bộ đếm sẽ đếm từ 65536 - 500 = 65036. Với xung clock của vi điều khiển là 12MHz, và bộ chia trước là 12 (do không khai báo bộ chia khác), tần số clock đầu vào timer là 1MHz. Như vậy, thời gian để timer đếm từ 65036 đến 65535 (tràn) là (65536 - 65036) / 1MHz = 500µs. Đoạn chương trình sau khi hết thời gian delay thì đảo trạng thái chân P1.0. Như vậy, chu kỳ của sóng vuông trên chân P1.0 sẽ là 2 * 500µs = 1000µs = 1ms. Vậy đáp án đúng là C.

Câu hỏi liên quan