Professional Documents
Culture Documents
C5 Timers
C5 Timers
C5 Timers
Điều khiển bằng bit GATE(bit 7 và bit 3 trong thanh ghi TMOD)
Đặt GATE=1→Timerx chỉ chạy khi TRx=1 và =1
( 0 = 3.2, 1 = 3.3)
Như vậy Timerx dừng khi TRx=0 hoặc =0
Hình 5.5: Mô hình điều khiển tổng quát cho Timer1 mode 1
Giáo trình Vi Xử Lý Lưu Phú 18
5.6 Chạy,dừng và điều khiển timer
Tóm tắt mô hình điều khiển chạy/dừng và nguồn xung timer CK cho Timer1 như
hình 5.5(tương tự cho Timer0 với các bit điều khiển tương ứng)
Nguồn xung timer CK
/ = 0: định thì,timer CK=Fosc/12(Fosc=12Mhz,TtimerCK=1µs)
/ = 1: đếm sự kiện,timer CK= xung ngõ vào T1=P3.5(fmax=500Khz,
Fosc=12Mhz)(Timer0 ngõ vào T0=P3.4)
Điều khiển chạy/dừng
GATE=0: TR1=1: chạy; TR1=0 : dừng(đặt/xóa TR1 bằng mềm)
GATE=1: TR1=1, 1 = 3.3 = 1: chạy; TR1=0 hoặc 1=0:
dừng(đặt/xóa GATE bằng mềm,đặt/xóa 1 bằng cứng hay mềm)
(Timer0 TR0 và 0 = 3.2)
Xung vuông đối xứng f=10Khz,thời gian mức 1=thời gian mức 0=50µs
Sử dụng Timer0 mode 2 giá trị đặt trước là -50→timer báo tràn sau 50 xung đếm=50µs
ORG 8100
MOV TMOD,#02H ; Timer0 mode 2 tự động nạp lại
MOV TH0,#-50 ;giá trị đặt trước
MOV TL0,TH0 ;đếm đúng từ vòng đầu
SETB TR0 ;chạy Timer0
LOOP: JNB TF0,LOOP ;chờ báo tràn
CLR TF0 ;xóa cờ báo tràn
CPL P1.0 ;đảo bit sau 50µs
SJMP LOOP ;lập vòng lại
END
Giáo trình Vi Xử Lý Lưu Phú 27
5.9 Các ví dụ ứng dụng timer
Sử dụng Timer0 mode 2 tự động nạp lại nên không cần dừng timer để nạp lại giá
trị đặt trước
Dòng lệnh LOOP: JNB TF0,LOOP tương đương như JNB TF0,$ lặp vòng tại chỗ
chờ báo tràn.Chỗ này CPU phải chờ TF0=1 nên chưa thấy rõ tác dụng của Timer.
Nhưng ở chương ngắt ta sẽ thấy không cần phải chờ như vậy,CPU có thể làm
công việc khác!
Khi TF0=1 timer báo tràn,phải xóa cờ TF0 để nhận dạng lần báo tràn kế tiếp!
Do phần cứng tự động nạp lại giá trị đặt trước,timer vẫn luôn chạy nên chu kỳ
xung ra rất chính xác!