Cho Fck = 8 MHz, 1MC = 125 ns. Đoạn lệnh sau khởi động Timer1 làm việc ở mode nào?
asm
Sao chépChỉnh sửa
LDI R17,0
STS TCCR1A,R17
LDI R17,$43
STS TCCR1B,R17
Đáp án đúng: D
Đầu tiên, ta phân tích đoạn code:
- LDI R17,0\nSTS TCCR1A,R17
: Ghi giá trị 0 vào thanh ghi TCCR1A. Điều này có nghĩa là các bit COM1A1, COM1A0, COM1B1, COM1B0, WGM11, WGM10 đều bằng 0.
- LDI R17,$43\nSTS TCCR1B,R17
: Ghi giá trị 0x43 (0b01000011) vào thanh ghi TCCR1B. Điều này có nghĩa là các bit ICNC1, ICES1, WGM13, WGM12, CS12, CS11, CS10 có giá trị lần lượt là 0, 1, 0, 0, 0, 1, 1.
Từ đó, ta suy ra:
- WGM13 = 0, WGM12 = 0, WGM11 = 0, WGM10 = 0: Timer1 hoạt động ở chế độ NORMAL.
- CS12 = 0, CS11 = 1, CS10 = 1: Prescaler là 64. Do đó, CLK_T1 = 64 / Fck = 64 / 8MHz = 8µs.
- ICES1 = 1: Tín hiệu bắt ngõ vào kích khởi cạnh lên.
Vậy, Timer1 hoạt động ở chế độ NORMAL, CLK_T1 = 8 µs, tín hiệu bắt ngõ vào kích khởi cạnh lên.