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 để:
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.





