.
Chế độ 1
Trong chế độ 1,bộ Timer dùng cả hai thanh ghi TH và TL để chứa giá trị đếm, vì vậy chế độ này còn được gọi là chế độ định thời 16bit. Bit MSB sẽ là bit D7 của TH còn bit LSB là D0 của TL.
Hình 2.10. Hoạt động của Timer0 và Timer1 ở chế độ 1
Hình 2.10. mô tả hoạt động của các Timer ở chế độ 1: Nguồn xung clock được đưa tới Timer từ một trong cách phụ thuộc vào bit C/#T trong thanh ghi TMOD.
+ Nếu C/#T=1, xung clock sẽ được lấy từ bên ngoài qua chân Tx(T0,T1,T2). + Nếu C/#T=0, xung clock sẽ được lấy từ bộ chia tần trong chip,tần số của xung ở đây là 1/12 tần số của dao động thạch anh.
Nguồn xung clock trên sẽ được điều khiển để đưa tới các Timer bằng các bit: TR,GATE và mức logic trên các chân INTx.
+ Nếu TRx=0, các Timer sẽ bị cấm mà không cần quan tâm tới GATE và mức logic trên các chân INTx ( thể hiện bằng cổng “AND”).
+ Nếu TRx=1, các Timer sẽ hoạt động khi hoặc là bit GATE=0 hoặc là bit GATE=1 và trên chân /INTx có mức logic 1.
Với chế độ 1, giá trị lớn nhất mà các Timer chứa được là 65535, khi đếm quá giá trị này sẽ xảy ra tràn, khi cờ tràn TF sẽ được đặt =1. Sau khi xảy ra tràn, nếu muốn Timer tiếp tục đếm, chương trình phải có câu lệnh nạp lại giá trị khởi tạo sau khi đã dừng Timer bằng cách xóa bit TR.
Chế độ 2
Hình 2.11. Hoạt động của Timer0 và Timer1 ở chế độ 2
Trong chế độ 2, bộ Timer dùng TL để chứa giá trị đếm và TH để chứa giá trị nạp lại vì vậy chế độ này được gọi là chế độ tự nạp lại 8 bit. Sau khi đếm quá 255 sẽ xảy ra tràn,khi đó TF được đặt bằng 1 đồng thời giá trị của Timer tự động được nạp lại bằng nội dung của TH.
Với nguồn xung clock,cách điều khiển Timer ở chế độ 2 hoàn toàn giống chế độ 1.
Chế độ 3
Hình 2.12. Hoạt động của Timer0 ở chế độ 3
Trong chế độ 3, Timer0 được tách thành hai bộ Timer hoạt động độc lập, chế độ này sẽ cung cấp cho bộ vi điều khiển thêm bộ Timer nữa.
Bộ Timer thứ nhất với nguồn xung clock được lấy từ bộ chia tần trên chip hoặc từ bộ tạo xung bên ngoài qua chân T0 tùy thuộc vào giá trị của bit C-/T0. Việc
điều khiển hoạt động của bộ thứ nhất do bit GATE, bit TR0 và mức logic trên chân INT0 ( giống chế độ 0,1,2 ).
Giá trị đếm của Timer được chứa trong TL0, khi xảy ra tràn, cờ TF0=1 và gây ra ngắt do Timer0 (nếu được đặt).
Bộ Timer thứ hai với nguồn xung clock được lấy từ bộ chia tần trên chip. Việc điều khiển hoạt động của bộ thứ hai chỉ là việc đặt giá trị của bit TR0. Giá trị đếm của Timer được chứa trong TH0, khi xảy ra tràn, cờ TF1=1 và gây ra ngắt do Timer1(nếu được đặt).
Khi Timer0 được tách thành hai Timer 8 bit thì Timer1 vẫn có thể hoạt động bình thường ở các chế độ 0,1,2, tuy nhiên khi xảy ra tràn cờ TF1 không được thiết lập bằng 1. Như vậy trong trường hợp này Timer1 chỉ có thể sử dụng cho các ứng dụng không cần đến ngắt(TF1=1), chẳng hạn như tạo tốc độ baud cho port nối tiếp.
2.5.3.2. Các chế độ của Timer 2
Timer 2 có 3 chế độ hoạt động là chế độ thu nhận (Captuer), chế độ tự nạp lại (auto – reload) và chế độ cung cấp tốc độ baud cho cổng nối tiếp (Baud Rate Generator). RCLK + TCLK TR2 CP/#RL2 CHẾ ĐỘ 0 0 0 X 0 1 X X 1 1 1 0
16-bit Auto-reload: 16 bit tự nạp lại. 16-bit Capture: 16bit thu nhận
Baud Capture: cung cấp tốc độ baud (off)