1. Hoạt động định thời (Timer/ Counter)
1.4. Các chế độ hoạt động
Các chế độ của timer được xác định bằng 4 bit trong thanh ghi TMOD, trong
1.4.1. Chếđộ 0
Chế độ 0 là chế độ 13 bit bao gồm 8 bit của thanh ghi THx và 5 bit của thanh ghi TLx còn 3 bit cao của thanh ghi TLx không sử dụng. Mỗi lần có xung đếm, giá trị
trong thanh ghi 13 bit tăng lên 1. Khi giá trị này thay đổi từ 1 1111 1111 1111b đến 0 thì bộđếm tràn làm cho TFx được đặt lên mức 1.
Do chế độ 0 sử dụng 13 bit nên giá trị đếm tối đa là 213= 8192. Chế độ này
được cung cấp nhằm mục đích tạo khả năng tương thích với 8048 và thường không
được sử dụng hiện nay.
Hình 3.1 – Chếđộ 0 của Timer/Counter
1.4.2. Chếđộ 1
Chếđộ 1 giống như chếđộ 0 nhưng sử dụng 16 bit bao gồm 8 bit của THx và 8 bit của TLx nên giá trịđếm tối đa là 216 = 65536. Như vậy, chếđộ 0 và chếđộ 1 giống nhau nhưng chỉ khác ở số bit đếm nên thông thường chế độ 0 không sử dụng mà chỉ
dùng chếđộ 1.
Khi bộ đếm tràn (giá trị trong cặp thanh ghi THx_TLx thay đổi từ 1111 1111 1111 1111b đến 0), cờ tràn TFx được set lên mức 1. Lưu ý rằng, khi timer tràn, giá trị
của các thanh ghi đếm là 0 (THx = 0 và TLx = 0) nên nếu muốn timer hoạt động tiếp thì phải nạp lại giá trị cho các thanh ghi THx và TLx.
1.4.3. Chếđộ 2
Chế độ 2 là chế độ 8 bit trong đó sử dụng thanh ghi TLx đế chứa giá trị đếm còn thanh ghi THx chứa giá trị nạp lại (do đó chế độ này được gọi là chế độ tự động nạp lại – autoreload).
Trong chếđộ 2, mỗi khi giá trị trong thanh ghi TLx thay đổi từ 1111 1111b đến 0 thì cờ TFx được set lên mức 1 đồng thời giá trị trong thanh ghi THx được chuyển vào thanh ghi TLx. Như vậy, giá trị đếm trong TLx và THx chỉ được nạp một lần khi khởi động timer (có thể không cần nạp cho TLx nhưng khi đó chu kỳ hoạt động đầu tiên của timer sẽ sai).
Chếđộ 2 sử dụng 8 bit đếm trong thanh ghi TLx nên giá trịđếm tối đa là 28 = 256.
Hình 3.3 – Chếđộ 2 của Timer/Counter
1.4.4. Chếđộ 3
Hình 3.4 – Chếđộ 3 của Timer/Counter
Chếđộ 3 sử dụng các thanh ghi TL0 và TH0 như các bộđịnh thời độc lập trong
đó TL0 điều khiển bằng các thanh ghi của timer 0 và TH0 điều khiển bằng các thanh ghi của tỉmer 1. Khi TL0 chuyển từ giá trị 1111 1111b đến 0 thì TF0 được đặt lên mức 1 còn TH0 chuyển từ 1111 1111b đến 0 thì TF1 được đặt lên mức 1. Lưu ý rằng trong chếđộ 3 (chỉ có trong Timer 0), Timer 1 không tác động đến cờ TF1 nên thường được
dùng để tạo tốc độ baud cho port nối tiếp (xem thêm phần 2 – cổng nối tiếp) hay dùng cho mục đích khác.
Chế độ này chỉ cho phép tác động đến cờ tràn TF1 thông qua xung đếm của dao động nội mà không đếm bằng dao động ngoài tại chân T1 đồng thời bit GATE1 (TMOD.7) không tác động đến quá trình đếm tại TH0.
1.5. Timer 2
Timer 2 là bộ định thời 16 bit (chỉ có trong họ 8x52). Giá trịđếm của timer 2 chứa trong các thanh ghi TH2 và TL2. Giống như timer 0 và timer1, timer 2 cũng hoạt
động như bộ định thời (timer) hay đếm sự kiện (counter). Chế độ định thời đếm bằng dao động nội, chế độ đếm sự kiện đếm bằng xung ngoài tại chân T2 (P1.0) và chọn chế độ bằng bit C/ T 2 của thanh ghi T2CON. Các thanh ghi điều khiển timer 2 bao
gồm: T2CON, T2MOD, RCAP2H, RCAP2L, TH2 và TL2.
Timer 2 có 3 chế độ hoạt động: capture (giữ), autoreload (tự động nạp lại) và tạo tốc độ baud (chọn chếđộ trong thanh ghi T2CON). Các bit chọn chế độ được mô tả như bảng 3.4. Bảng 3.4 – Chọn chếđộ trong Timer 2 RCLK TCLK CP/ RL 2 TR2 Chếđộ 0 0 0 1 Tựđộng nạp lại 16 bit 0 0 1 1 Giữ 16 bit X 1 X 1 Tạo tốc độ baud 1 X X 1 X X X 0 Ngưng