🌱 Bài 11. 8051 Timers
8051 có 2 Timers/counters hoạt động với tần số clock. Timers/counters có thể được sử dụng để tạo trễ thời gian, đếm sự kiện, …
👉👉 Timer cần clock để hoạt động. 8051 không có dao động nội => cần cấp dao động từ thạch anh ngoài từ 2 chân XTAL1 và XTAL2.
Khác với các dòng vđk khác, clock cho timer trong 8051 được đưa từ thạch anh ngoài qua một bộ chia 12, và gọi là tần số chu kỳ máy.
🧐 Ví dụ: Nếu thạch anh 12MHz thì clock = 12/12 = 1MHz, một chu kỳ máy sẽ có thời gian 1/1MHz = 1us.
👉👉 8051 có 2 bộ Timer 16-bit là Timer0 (T0) và Timer1 (T1). Mỗi timer sẽ được đếm bằng 2 thanh ghi 8 bit.
Một số thanh ghi được sử dụng để làm việc với Timer:
👉👉Thanh ghi TMOD (Timer Mode Register)
Dùng để cài đặt chế độ hoạt động cho 2 timer, 4 bit thấp dành cho timer0, còn 4 bit cao là của timer1 (hình dưới).
- Bit 7, 3 – Gate:
Gate = 1 cho phép timer chỉ khi chân INT0/INT1 = 1 và TR0/TR1 = 1.
Gate = 0 cho phép timer khi TR0/TR1 = 1. - Bit 6, 2 – C/T (Counter/Timer): bit = 1 -> Counter, bit = 0 -> Timer.
- Bit 5:4 & 1:0 – M1:M0: (Mode Select Bit): Dùng để chọn 1 trong 4 mode trong bảng dưới.
Các chế độ hoạt động Timer
- Mode 0 (timer 13-bit), M1:M0 = 0:0, 8 bit THx & 5 bit TLx.
- Mode 1 (timer 16-bit), M1:M0 = 0:1.
- Mode 2 (timer 8-bit tự động nạp lại), M1:M0 = 1:0, TLx tự động nạp lại giá trị của THx mỗi khi TLx tràn.
- Mode 3 (timer chia nhỏ), M1:M0 = 1:1, bộ timer 16-bit sẽ chia thành 2 bộ 8 bit.
👉👉 Thanh ghi TCON (Timer Control Register)
Chứa các cờ timer và cờ ngắt.
- Bit 7 – TF1 (Timer 1 Overflow Flag):
TF1 = 1, timer1 sẽ tràn (chạy đến max và trở về 0).
TF1 = 0, tràn không xảy ra. - Bit 6 – TR1 (Timer 1 Run Control Bit): TR1 = 1, chạy timer1, TR1 = 0, dừng timer1.
- Bit 5, 4 – TF0, TR0: Tương tự với Timer 1.
- Bit 3 – IE1 (External Interrupt 1 Edge Flag):
IE1 = 1, ngắt ngoài 1 xảy ra.
IE1 = 0, ngắt ngoài 1 đang được xử lý. - Bit 2 – IT1 (External Interrupt1 Trigger Type Select Bit):
IT1 = 1, ngắt xảy ra trên INT1 khi có xung sườn xuống.
IT1 = 0, ngắt xảy ra trên INT1 khi có mức thấp xảy ra. - Bit 1, 0 – IE0, IT0: Tương tự với INT0.