Bộ
đếm/ bộ định thời trong 8051
Mục tiêu
Kết
thúc bài học này, bạn sẽ nắm được:
Ø Bộ đếm, bộ định
thời là gì?
Ø Các thanh ghi
liên quan
Ø Cách thức hoạt
động của bộ đếm/bộ định thời
Ø Các bước lập
trình bộ đếm/bộ định thời
Giới
thiệu
Bộ đếm/Bộ định
thời: Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm
các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộ
đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm đi 01
đơn vị (trong chế độ đếm lùi/đếm xuống).
Xung nhịp đưa
vào đếm có thể là một trong hai loại:
Ø
Xung
nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên
trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử dụng
xung nhịp loại này, người ta gọi là các bộ
định thời (timers). Do xung nhịp
bên loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác.
Ø
Xung
nhịp bên ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức 0-1
và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng
chuyền, đếm xe ra/vào kho bãi…
Một khái niệm
quan trọng cần phải nói đến là sự kiện “tràn”
(overflow). Nó được hiểu là sự kiện
bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và quay trở về giá
trị 0. Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương với FF trong hệ
Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit.
8051
có 02 bộ đếm/bộ định thời. Chúng có thể được dùng như các bộ định thời để tạo một bộ trễ thời gian hoặc như các bộ đếm để đếm các sự kiện xảy ra bên
ngoài bộ VĐK. Trong bài này chúng ta sẽ tìm hiểu về cách lập trình cho chúng
và sử dụng chúng như thế nào. Phần 1
là Lập trình bộ định thời, và phần 2
là Lập trình cho bộ đếm.
1. Các bộ định thời của 8051
8051
có hai bộ định thời là Timer 0 và Timer 1, ở phần này chúng ta bàn về các
thanh ghi của chúng và sau đó trình bày cách lập trình chúng như thế nào để tạo
ra các độ trễ thời gian.
1.1 Các thanh ghi cơ sở của bộ định thời
Cả
hai bộ định thời Timer 0 và Timer 1 đều có độ dài 16 bit được truy cập như hai thanh ghi
tách biệt byte thấp và byte cao. Chúng ta sẽ bàn riêng về từng
thanh ghi.
1.1.1 Các thanh ghi của bộ Timer 0
Thanh
ghi 16 bit của bộ Timer 0 được truy
cập như byte thấp và byte cao:
Ø
Thanh
ghi byte thấp được gọi là TL0 (Timer0
Low byte).
Ø
Thanh
ghi byte cao được gọi là TH0 (Timer0
High byte).
Các
thanh ghi này có thể được truy cập, hoặc được đọc như mọi thanh ghi khác
chẳng hạn như A, B, R0, R1, R2 v.v...
Hình 1: Các thanh ghi
của bộ Timer 0






