Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.5 Timer (Mạch định thời) - Bùi Minh Thành

Timer trong 8051
• 8051/8031 có hai timer 16 bit (T0 và T1), mỗi timer có bốn chế độ
hoạt động.
• Người ta sử dụng các timer để:
a) định khoảng thời gian,
b) đếm sự kiện hoặc
c) tạo tốc độ baud cho cổng nối tiếp có sẵn trong 8051/8031.
• Mỗi timer 16 bit có 16 tầng hay tầng cuối cùng chia tần số xung
nhịp cho 216=65536. Nguồn xung nhịp cho các timer là xung
vuông có tần số bằng 1/12 tần số xung nhịp cung cấp cho 8051.
• Trong các ứng dụng định khoảng thời gian, người ta lập trình
cho timer tràn ở một khoảng đều đặn và đặt cờ tràn timer lên 1.
Cờ được dùng để đồng bộ hóa hoặc đo thời gian trôi qua giữa
hai sự kiện (ví dụ: đo độ rộng xung).
• Đếm sự kiện được dùng để xác định số lần xảy ra của một sự
kiện hơn là đo khoảng thời gian trôi qua giữa các sự kiện. Một
“sự kiện” là bất cứ tác động bên ngoài nào có thể cung cấp một
chuyển tiếp 1 sang 0 từ chân T0, T1(ở P3) của 8051/8031.
• Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho
cổng nối tiếp có sẵn trong 8051/8031 
pdf 18 trang thamphan 27/12/2022 3200
Bạn đang xem tài liệu "Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.5 Timer (Mạch định thời) - Bùi Minh Thành", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_3_ho_vi_dieu_khien_8051_3_5_timer.pdf

Nội dung text: Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - 3.5 Timer (Mạch định thời) - Bùi Minh Thành

  1. Hiệu đính từ slide của thầy Hồ Trung Mỹ Bộ môn Điện tử - DH BK TPHCM CHƯƠNG 3 HỌ VI ĐIỀU KHIỂN 8051 1 3.4 Timer (Mạch định thời) 2
  2. Timer trong 8051 • 8051/8031 có hai timer 16 bit (T0 và T1), mỗi timer có bốn chế độ hoạt động. •Người ta sử dụng các timer để: a) định khoảng thời gian, b) đếm sự kiện hoặc c) tạo tốc độ baud cho cổng nối tiếp có sẵn trong 8051/8031. •Mỗi timer 16 bit có 16 tầng hay tầng cuối cùng chia tần số xung nhịp cho 216=65536. Nguồn xung nhịp cho các timer là xung vuông có tần số bằng 1/12 tần số xung nhịp cung cấp cho 8051. • Trong các ứng dụng định khoảng thời gian, người ta lập trình cho timer tràn ở một khoảng đều đặn và đặt cờ tràn timer lên 1. Cờ được dùng để đồng bộ hóa hoặc đo thời gian trôi qua giữa hai sự kiện (ví dụ: đo độ rộng xung). • Đếm sự kiện được dùng để xác định số lần xảy ra của một sự kiện hơn là đo khoảng thời gian trôi qua giữa các sự kiện. Một “sự kiện” là bất cứ tác động bên ngoài nào có thể cung cấp một chuyển tiếp 1 sang 0 từ chân T0, T1(ở P3) của 8051/8031. • Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho 5 cổng nối tiếp có sẵn trong 8051/8031. Các thanh ghi timer • Timer (T0/T1) của 8051 được tạo bởi 2 thanh ghi 8 bit. • Timer 0 (T0) được tạo bởi – TL0 vàTH0 (L=Low và H=High) –Truy cập chúng như các thanh ghi khác, TD: MOV TL0, #55H MOV R1, TH0 • Timer 1 (T1) được tạo bởi – TL1 and TH1 6
  3. Thanh ghi chế độ timer (TMOD) 9 Các chế độ hoạt động của timer 10
  4. Chế độ timer 16 bit (chế độ 1) •Chế độ 1 là chế độ timer 16 bit giống như chế độ 0, ngoại trừ lúc này timer hoạt động như timer 16 bit đầy đủ. • Tràn xảy ra khi có chuyển tiếp từ FFFFH sang 0000H trong số đếm và nó đặt cờ báo tràn timer lên 1. Timer tiếp tục đếm tiếp. •Cờ báo tràn là bit TFx trong TCON mà người ta có thể đọc ra hoặc ghi vào bằng phần mềm 13 Chế độ timer 8 bit tự nạp lại trị đầu (chế độ 2) •Chế độ 2 là chế độ tự động nạp giá trị đầu. Byte thấp của timer TLx làm việc như timer 8 bit trong khi đó byte cao của timer THx giữ giá trị cần nạp lại. •Khi bộ đếm tràn từ FFH sang 00H thì không những cờ timer được đặt lên 1 mà giá trị trong THx còn được nạp vào TLx, việc đếm tiếp tục từ giá trị này đến chuyển tiếp từ FFH sang 00H kế, và cứ tiếp tục như vậy. •Chế độ này tiện lợi vì tràn timer xảy ra theo những khoảng thời gian có chu kỳ một khi TMOD và THx đã được khởi tạo trị 14
  5. Các nguồn tạo xung nhịp • Có 2 nguồn xung nhịp, mà ta có thể chọn bằng cách ghi vào bit chọn bộ đếm/timer trong TMOD khi tạo các trị khởi động timer. •Một nguồn xung nhịp được dùng để định thì khoảng thời gian, còn nguồn kia để đếm sự kiện. 17 Định thì khoảng thời gian •Nếu C/T = 0, hoạt động timer liên tục được chọn và timer được cấp xung nhịp từ mạch dao động trên chip. Một tầng chia 12 được thêm vào để giảm tần số xung nhịp xuống giá trị thích hợp cho phần lớn các ứng dụng trong điều khiển. •Khi chọn hoạt động timer liên tục thì timer được sử dụng để định thì khoảng thời gian (interval timing). Các thanh ghi timer (TLx/THx) tăng nội dung thêm 1 cứ theo tần số là 1/12 tần số dao động trên chip; như vậy với thạch anh 12 MHz thì xung nhịp của timer là 1 MHz. • Tràn timer xảy ra cứ sau một số các xung nhịp cố định mà tùy theo giá trị đầu được nạp vào các thanh ghi TLx/THx 18
  6. Đặt chế độ làm việc – Cho timer chạy – Dừng timer TD: – Đặt chế độ làm việc MOV TMOD, #00010000B timer 1: Gate=0, C/T=0, M1M0=01 (mode 1) timer 0: Gate=0, C/T=0, M1M0=00 (mode 0) – Cho timer chạy SETB TR1 – Dừng timer CLR TR1 21 Chú ý khi có xài ngắt ngoài (TD: chếđộ1) 22
  7. Các bước để lập trình Timer mode 0 hay 1 1. Nạp trị cho TMOD 2. Nạp trị số cho các thanh ghi TL và TH 3. Cho timer chạy (SETB TR0 hay SETB TR1) 4. Kiểm tra/theo dõi cờ báo tràn timer (TF) Æ đợi đến khi cờ TF = 1 5. Dừng timer (CLR TR0 hay CLR TR1) 6. Xóa cờ TF 7. Quay về bước 2 25 Các bước để lập trình Timer mode 2 1. Nạp trị cho TMOD 2. Nạp trị số cho các thanh ghi TH 3. Cho timer chạy (SETB TR0 hay SETB TR1) 4. Kiểm tra/theo dõi cờ báo tràn timer (TF) Æ đợi đến khi cờ TF = 1 5. Dừng timer (CLR TR0 hay CLR TR1) 6. Xóa cờ TF 7. Quay về bước 3 26
  8. Thí dụ: Tạo sóng vuông trên chân P1.0 ORG 8000H LOOP: SETB P1.0 ; 1 MC NOP ; 1 MC NOP ; 1 MC CLR P1.0 ; 1 MC SJMP LOOP ; 2 MC SETB NOP NOP CLR SJMP SETB P1.0 1 us (One machine cycle) Tần số = 166.7 Khz ( 1/ 6 us ) TON = 3 us, TOFF= 3us Î duty cycle = TON/(TON+TOFF)= 50% (3/6) 29 Tạo sóng vuông 10 KHz ở chân P1.0 Tạo sóng vuông 10 KHz Tần số = 10KHz Æ chu kỳ T =1/10000 = 100 us TON = 50 us, TOFF= 50us Dùng mode 2 ( 8 bit mode ), vì khoảng thời gian < 256 us. ORG 8000H MOV TMOD, #02H ; chế độ tự nạp lại 8 bit MOV TH0, #-50 ; 256 – 50 = 206 SETB TR0 ; cho timer T0 chạy LOOP: JNB TF0, LOOP ; đợi timer T0 tràn CLR TF0 ; xóa cờ báo tràn CPL P1.0 ; đảo bit cổng SJMP LOOP ; lặp lại END 30
  9. TD: Giao tiếp buzzer (2/2) 33 Lập trình counter • Ở chế độ counter: TMOD, TH, TL giống như với timer •Các chế độ timer cũng giống • Tuy nhiên thay vì dùng tần số thạch anh, counter đếm xung từ bên ngoài đưa vào 8051. • Bit C/T trong TMOD quyết định nguồn xung nhịp. • Khi C/T = 1, counter đếm lên khi có xung đưa vào các chân T1 và T0 (ở P3) 34