Vi điều khiển 8051 sở hữu hai bộ định thời và bộ đếm hoạt động dựa trên tần số xung nhịp. Bộ định thời/bộ đếm có thể được sử dụng để tạo độ trễ thời gian, đếm các sự kiện bên ngoài, v.v. Mỗi bộ định thời cần một xung nhịp để hoạt động và 8051 cung cấp xung nhịp này từ một tinh thể bên ngoài, đây cũng là nguồn xung nhịp chính cho bộ định thời. Mạch bên trong của vi điều khiển 8051 cung cấp một nguồn xung nhịp cho các bộ định thời bằng 1/12 tần số của tinh thể được gắn vào vi điều khiển, còn được gọi là tần số chu kỳ máy.
Ví dụ, giả sử chúng ta có tần số tinh thể là 11.0592 MHz thì vi điều khiển sẽ cung cấp tần số xung nhịp cho bộ định thời là 1/12, tức là:
Tần số xung nhịp bộ định thời = (Tần số dao động tinh thể) / 12 = (11.0592 MHz) / 12 = 921.6 KHz
Chu kỳ T = 1 / (921.6 kHz) = 1.085 μS
8051 có hai bộ định thời là Timer0 (T0) và Timer1 (T1), cả hai đều có độ rộng 16 bit. Vì 8051 có kiến trúc 8 bit, mỗi bộ định thời này được truy cập bởi hai thanh ghi 8 bit riêng biệt. Các thanh ghi này được sử dụng để tải giá trị đếm cho bộ định thời. 8051 có Thanh ghi Chế độ Bộ định thời (TMOD) và Thanh ghi Điều khiển Bộ định thời (TCON) để chọn chế độ hoạt động và mục đích điều khiển.
Thanh ghi TMOD
TMOD là một thanh ghi 8 bit được sử dụng để thiết lập chế độ bộ định thời cho Timer0 và Timer1. 4 bit thấp hơn được sử dụng cho Timer0 và 4 bit cao hơn được sử dụng cho Timer1.
Bit 7, 3 – GATE:
- 1: Kích hoạt Bộ định thời/Bộ đếm chỉ khi chân INT0/INT1 ở mức cao và TR0/TR1 được đặt.
- 0: Kích hoạt Bộ định thời/Bộ đếm khi TR0/TR1 được đặt.
Bit 6, 2 – C/T (Counter/Timer): Bit chọn Bộ đếm hoặc Bộ định thời
- 1: Sử dụng làm Bộ đếm
- 0: Sử dụng làm Bộ định thời
Bit 5:4 & 1:0 – M1:M0: Bit chọn chế độ Bộ định thời/Bộ đếm. Chức năng của các bit này được thể hiện trong bảng sau:
M1 | M0 | Chế độ | Hoạt động |
---|---|---|---|
0 | 0 | 0 (Chế độ bộ định thời 13-bit) | Bộ định thời/bộ đếm 13-bit, 8-bit của THx & 5-bit của TLx |
0 | 1 | 1 (Chế độ bộ định thời 16-bit) | Bộ định thời/bộ đếm 16-bit, THx ghép nối với TLx |
1 | 0 | 2 (Chế độ tự nạp lại 8-bit) | Bộ định thời/bộ đếm 8-bit (chế độ tự nạp lại), TLx nạp lại với giá trị được giữ bởi THx mỗi khi TLx tràn |
1 | 1 | 3 (Chế độ bộ định thời chia nhỏ) | Chia bộ định thời 16-bit thành hai bộ định thời 8-bit, tức là THx và TLx hoạt động như hai bộ định thời 8-bit |
Thanh ghi TCON trong vi điều khiển 8051
TCON là một thanh ghi điều khiển 8 bit, chứa các cờ ngắt và bộ định thời.
Ví dụ về chế độ hoạt động của timer trong 8051 MCU
Trong vi điều khiển 8051, chế độ 2 là chế độ bộ định thời tự động tải lại 8 bit. Trong chế độ này, chúng ta chỉ cần tải giá trị 8 bit vào THx. Khi bộ định thời bắt đầu, giá trị THx sẽ tự động được tải vào TLx và TLx bắt đầu đếm từ giá trị đó. Sau khi giá trị của TLx tràn từ 0xFF đến 0x00, cờ TFx sẽ được đặt và giá trị từ THx sẽ tự động được tải lại vào thanh ghi TLx. Đó là lý do tại sao chế độ này được gọi là chế độ tự động tải lại.
Ngắt bộ định thời trong vi điều khiển 8051
Sơ đồ minh họa quá trình ngắt của timer trong vi điều khiển 8051. Khi bộ đếm timer đạt giá trị tối đa và quay về 0, nó sẽ đặt cờ timer TFx. Điều này sẽ làm gián đoạn vi điều khiển 8051 để phục vụ chương trình phục vụ ngắt (ISR) nếu ngắt toàn cục và ngắt timer được kích hoạt.