Tải bản đầy đủ

cách tính dlay dùng timer vi xử lý

Cấu trúc tạo DELAY dùng Timer.
Để tạo ra một độ trễ thời gian dùng timer của bộ định thời thì cần phải thực hiện các bước
dưới đây:
1. Nạp giá trị TMOD cho thanh ghi báo độ định thời nào (Timer0 hay Timer1) được sử
dụng và chế độ nào được chọn.
Chú ý: Timer 0 : 01h
Timer 1: 10h
Cả 2: 12h
2. Nạp các thanh ghi TL và TH với các giá trị đếm ban đầu.
3. Khởi động bộ định thời.
4. Duy trì kiểm tra cờ bộ định thời TF bằng một vòng lặp để xem nó được bật lên 1
không. Thoát vòng lặp khi TF được lên cao.
5. Dừng bộ định thời.
6. Xoá cờ TF cho vòng kế tiếp.
7. Ret ( kết thúc chương trình con)

Chương Trình như sau:
Delay:
MOV TMOD,#01H (TIMER 0 )
MOV TH0,#GIATRI
MOV TL0,#GIATRI

SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET

TÍNH TOÁN GIÁ TRỊ NẠP CHO TIMER
Có công thức tính tần số :
F = 1/12 x F(thạch anh)
=> chu kì máy : T =1/F
Ta thường dùng thạch anh: 12M và 11.0592M ta tìm đc tần số dựa vào công thức trên.


Các bước để tìm các giá trị của các thanh ghi TH và TL:
1. Chia thời gian trễ cần thiết cho T( chu kì tính ở bước trên) ta được giá trị là :
n = tgian/T
Chú ý: Thạch anh 12mhz => T = 1us
Thạch anh 11.0592 => T= 1.085us
Đối với thạch anh 12mhz bỏ qua luôn bước 1.
2. Thực hiện 65536 - n với n là giá trị thập phân nhận được từ bước 1.
3. Chuyển đổi kết quả ở bước 2 sang số Hex: ta có YYXX là giá trị Hexa ban đầu cần
phải nạp vào các thanh ghi bộ định thời.
4. Đặt TL = XX và TH = YY.
Vd1: tính thời gian trễ để nạp vào TH0,TL0, với F=12mhz và thời gian trễ 50ms
Giải.
B1. Bỏ qua vì : n= 50000us/1us = 50000us.
B2.
65536 – 50000 = 15536
B3. Chuyển 15536 => hexa : 3cb0
B4. Đặt 3C =TH0, B0= TL0.
Vd2: tính thời gian trễ để nạp vào TH0,TL0, với F=11.0592mhz và thời gian trễ 50ms
Giải.
B1. n= 50000us/1.085us = 46083us.
B2.
65536 – 46083= 19453
B3. Chuyển 19453 => hexa :4bfd
B4. Đặt 4b =TH0, fd= TL0.




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×