🌱 Bài 12: Tìm hiểu về 8051 Timer Mode 0

🌱 Bài 12: Tìm hiểu về 8051 Timer Mode 0

    Bài viết này sẽ tìm hiểu về Timer Mode 0 trong vi điều khiển 8051. Bạn có thể tham khảo thêm Bài viết về Timer!

    Với bit M1:M0 = 0:0, Timer hoạt động ở chế độ 0 - 13-bit Timer.

    Để hiểu cách thức hoạt động của Timer, bạn cần tham khảo phần cứng của nó trong tài liệu MCS51 - User Manual, chương 5-13 tại: http://web.mit.edu/6.115/www/document/8051.pdf

Mô tả Timer trong vi điều khiển 8051

    Mô tả chi tiết về Timer trong 8051 như hình dưới đây:

  • Chọn dạng đếm thời gian Timer hoặc đếm sự kiện Counter bằng cách đặt bit C/T bằng 0 hoặc 1. Bộ Timer trong 8051 được cấp xung = tần số thạch anh/12
  • Kích hoạt bộ đếm bằng cách đặt TRx = 1 (Gate = 0 hoặc INTx = 1).
  • Thanh ghi 8 bit THx và 5 bit thấp của TLx tạo thành một bộ đếm 13 bit. 13 bit này sẽ đếm từ 0 -> giá trị đã đặt, với dải đếm từ 0 đến 8191.
  • Khi Timer đạt đến giá trị đặt (tràn timer), cờ TFx = 1. Dùng cờ này để biết khi nào timer tràn và tạo trễ thời gian khác chính xác.

Tính trễ thời gian = Thanh ghi 13-bit

    Ví dụ, để tạo trễ 1ms với thạch anh ngoài 12MHz:

- Qua bộ /12, clock timer = 12MHz/12 = 1MHz, chu kỳ máy = 1/1MHz = 1us.

    Để đạt 1ms, cần đếm 1000 lần. Tính chính xác giá trị nạp như sau: (max - count) +1 + thời gian trễ hàm.

    Ví dụ tính giá trị nạp: Giá trị nạp = (8191 - 1000) + 1 + 10 = 7202 = 0x1C22

    👉 Thanh ghi THx = 0x1C, TLx = 0x22.

Thực hiện một hàm trễ thời gian

    Để tạo trễ 1ms với Timer 0 - Mode 0, thực hiện các bước sau:

  • Đặt giá trị cho thanh ghi TMOD để chọn Mode 0 - Timer 0 (TMOD = 0x00).
  • Tính toán và nạp giá trị cho THx và TLx (TL0 = 0x02, TH0 = 0xE1).
  • Bắt đầu Timer bằng cách đặt TRx = 1 (TR0).
  • Kiểm tra khi cờ TFx = 1 để biết khi Timer đếm xong: while (TF0 == 0);
  • Khi Timer tràn, dừng Timer bằng cách reset TRx = 0.
  • Xóa cờ báo TFx = 0.

Cách sử dụng

    Hàm delay bằng Timer có thể sử dụng giống như hàm delay thông thường, nhưng chính xác hơn, dễ kiểm soát hơn, và trong thời gian delay, MCU vẫn có thể làm những việc khác.

    Code ví dụ:

>>>>>> Follow ngay <<<<<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊

Chúc các bạn học tập tốt 😊

Đăng nhận xét

Mới hơn Cũ hơn