tailieunhanh - Lập trình cho bộ đếm/ bộ định thời trong 8051

8051 có hai bộ định thời/ bộ đếm. 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ộ BVĐK. Trong chương 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? | Trước khi kết thúc chương ta cần bàn thêm về trường hơpợ khi bít GATE = 1trong thanh ghi TMOD. Tất cả những gì chúng ta vừa nói trong chương này đều giả thiết GATE = 0. Khi GATE = 0 thì bộ định thời được khởi động bằng các lệnh “SETB TR0” và “SETB TR1” đối với Timer0 và Timer1 tương ứng. Vậy điều gì xảy ra khi bít GATE = 1? Như ta có thể nhìn thây trên hình và thì nếu GATE = 1 thì việc khởi động và dừng bộ định thời được thực hiện từ bên ngoài qua chân và đối với Timer0 và Timer1 tương ứng. Mặc dù rằng TRx được bật lên bằng lệnh “SETB TRx” thì cũng cho phép ta khởi động và dừng bộ định thời từ bên ngoài tại bất kỳ thời điểm nào thông qua công tắc chuyển mạch đơn giản. Phương pháp điều khiển phần cứng để dừng và khởi động bộ định thời nay có thể có rất nhiều ứng dụng. Ví dụ, chẳng hạn 8051 được dùng trong một sản phẩm phát báo động mỗi giây dùng bộ Timer0 theo nhiều việc khác. Bộ Timer0 được bật lên bằng phần mềm qua lệnh “SETB TR0” và nằm ngoài sự kiểm soát của người dùng sản phẩm đó. Tuy nhiên, khi nối một công tắc chuyển mạch tới chân ta có thể dừng và khởi động bộ định thời gian bằng cách đó để tắt báo động.