Tải bản đầy đủ (.pdf) (5 trang)

viết chương trình điều khiển 8 led sáng dồn, chương 3 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (142.6 KB, 5 trang )

Chương 3: CHƯƠNG TRÌNH DELAY
SỬ DỤNG TIMER
I. Mục đích yêu cầu: biết cách tính toán các thông số delay của
timer để viết các chương tr
ình delay chính xác.
II. Trình tự thực hiện:
1. Kết nối mạch theo trình tự :
- Dùng bus dây kết nối port 1 với một trong bốn PINHD
của dãy 32 led.
- G
ắn vi điều khiển vào đế nạp 40 pin ( socket ) ở modul
nạp của hệ thống 2 .
2. Khởi động phần mềm, mở File mới và đặt tên file. Vd:
bai1_6
3. Vi
ết chương trình với tên file vừa đặt :
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
; chuong trinh sang tat port1 su dung timer lam bo dinh thoi delay
65536 micro giay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
org 0000h
b61: mov p1,#00h
lcall delay ; delay 65536 micro giay
mov p1,#0ffh
lcall delay
sjmp b61
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
; chuong trinh con delay 65535 micro giay


;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
delay: clr tf0 ; xoa co ngat cua timer 0
mov tl0,#0 ; nap 0 vao TL0
mov th0,#0 ; nap 0 vao TH0
mov tmod,#01 ; khoi tao timer T0 mode 1 dem 16
bit
setb tr0 ; cho phep timer 0 bat dau dem
xung
del1 : jnb tf0,del1 ; kiem tra co tran
ret
end
Gi
ải thích : bài sáng tắt port1 trên giống như bài đã làm trước
đây chỉ khác là thay chương tr
ình delay bằng một chương trình sử
dụng timer để việc tính toán thời gian dễ dàng hơn.
Với chương trình trên thì timer T0 sẽ đếm từ gía trị nạp ban
đầu 0000H đến 100000H [tức cờ tr
àn bằng 1 – các số về 0000H ->
k
ết thúc 1 chu kỳ đếm] kết quả số xung đếm được là 10000H –
0000H = 10000 (65536) xung và m
ỗi xung có chu kì 1 micro giây
nên lưựng thời gian mà timer T0 đếm được là 65536 micro giây.
4. Thực hiện các bước giống như trên và xem kết quả.
III.
Bài tập ứng dụng:
1. Hãy vi
ết chương trình sáng tắt port 2 sử dụng timer làm

b
ộ định thời delay 5 giây.
2. Hãy viết chương trình giống trên nhưng delay 10 giây.
3. Tương tự h
ãy viết chương trình delay 1 giờ.
IV. Bài tập mẫu:
Để đếm lượng thời gian nhỏ hơn ta hãy tham khảo bài mẫu
dưới đây:
; chuong trinh sang tat port1 su dung timer lam bo dinh thoi delay
250 micro giay
org 0000h
b62: mov p1,#00h
lcall delay ; delay 65535 micro giay
mov p1,#0ffh
lcall delay
sjmp b62
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
; chuong trinh con delay 250 micro giay
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
delay: clr tf0 ; xoa co ngat cua timer 0
mov tl0,#06h ; nap 05 vao TL0
mov th0,#0FFh ; nap FF vao TH0
mov tmod,#01 ; khoi tao timer T0 mode 1 dem 16
bit
setb tr0 ; cho phep timer 0 bat dau dem
xung
del1 : jnb tf0,del1
ret

end
Gi
ải thích : lượng thời gian của bài này chỉ có 250 micro
giây, vì giá trị ban đầu nạp cho timer là FF05H nên khi đếm đến
10000H kết quả xung đếm được 10000H – FF06H = 00FA (250)
và m
ỗi xung có chu kỳ 1 micro giây nên lượng thời gian mà timer
T0 đếm đượclà 250 micro giây.
Chú ý: với các chương trình điều khiển led sáng với thời gian
trể nhỏ thì led sáng mờ nhưng không chóp tắt như các bài ta đã viết
ở tr
ên. Trong phần tính toán chúng ta chưa tính toán các lệnh trong
chương tr
ình con delay.
Mu
ốn viết chương trình với các khoảng thời gian lớn hơn thì
ph
ải thêm thanh ghi ví dụ muốn viết delay 5 giây thì ta viết
chương tr
ình trình con delay 50 000 µs = 50ms và cho chúng thực
hiện 100 lần.

×