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 6 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 (131.48 KB, 5 trang )

Chương 6:
CHƯƠNG TRÌNH ĐẾM GIÂY HIỂN THỊ
Ở 2 LED
– SỬ DỤNG NGẮT CỦA TIMER
ĐỂ ĐẾM CHÍNH XÁC VỀ THỜI GIAN
I. Mục đích yêu cầu: biết cách kết hợp timer và chương trình đếm
để viết chương tr
ình đếm giây một cách chính xác.
II. Trình tự thực hiện:
1. Giải thuật:
Tương tự giải thuật của b
ài 2
2. K
ết nối mạch theo trình tự :
- Dùng bus dây kết nối port 0 đến pinhd điều khiển các
đoạn a,b,c,d,e,f,g,dp v
à kết nối port 2 đến pinhd điều
khiển quét hàng .
- G
ắn vi điều khiển vào đế nạp 40 pin ( socket ) ở modul
nạp của hệ thống 2 .
3. Khởi động phần mềm, mở File mới và đặt tên file.
4. Vi
ết chương trình với tên file vừa đặt :
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dem giay hien thi tren 2 led cua 8 led quet
;su dung ngat timer t0 de dem chinh xac ve thoi gian
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
giay equ r2 ;gan bien dem giay la R2


bdn equ r1 ;gan bien dem ngat
org 200h ;dia chi khai bao ma 7 doan tu so '0' den so
'9'
ma7doan: db
0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h
org 0000h ;bat dau chuong trinh
ljmp main ;nhay den chtr chinh
org 000bh
ljmp int_t0 ;nhay den chtr con ngat timer0
main: mov tmod,#01h ;timer0: mod 1 - dem 16 bit
mov dptr,#0200h ;dptr quan ly vung ma 7 doan
clr tf0 ;xoa co tran timer0
mov ie,#10000010b ;cho ngat timer0
mov th0,#3ch ;khoi tao timer delay 50ms
mov tl0,#0b0h
setb tr0 ;cho timer0 bat dau dem
main0: mov giay,#00h ;giay=00
main1: mov bdn,#00 ;nap bien den so lan ngat
lcall gma
main2: lcall hthi ;goi chtr con hien thi
cjne bdn,#20,main2 ;chua dung 20 lan [tuc 1 giay]
mov a,giay ;chuyen giay sang A
add a,#1 ;tang giay len 1
da a ;hieu chinh so BCD trong A
mov giay,a ;tra lai cho giay
cjne giay,#60h,main1 ;ss giay voi 60
sjmp main0 ;lam lai tu dau
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
; chuong trinh con giai ma

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
gma: mov a,giay
anl a,#0fh ;xoa 4 bit cao hang chuc giay
movc a,@a+dptr;lay ma 7 doan
mov 27h,a ;cat ma vao o nho 20h
mov a,giay
anl a,#0f0h ;xoa 4 bit thap hang dvi
swap a ;chuyen 4 bit cao xuong vi tri
thap
movc a,@a+dptr;lay ma 7 doan hang chuc
mov 26h,a
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh delay co goi chuong trinh hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con ngat timer0 sau khoang thoi gian 50ms
int_t0: inc bdn ;tang bien dem giay
mov th0,#3ch ;khoi tao lai timer
mov tl0,#0b5h
clr tf0
reti
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con hien thi
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
hthi: mov a,#01111111b ;ma quet

mov r0,#27h
ht1: mov p0,@r0
mov p2,a
lcall delay1
mov p2,#0ffh
dec r0
rr a ;chuyen sang led ke
cjne r0,#25h,ht1
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh con delay1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
delay1: mov r7,#0fh
del11: djnz r7,del11
ret
end
1. Th
ực hiện các bước giống như bài chuẩn và xem mạch
đếm giây đếm chính xác hay không.
Chú ý: để đếm đúng thì tụ thạch anh phải sử dụng là 12Mhz để dễ
tính toán chính xác.
III. Bài tập ứng dụng:
1. Muốn đếm BCD từ 01 đến 65 thì chương trình trên thay
đổi như thế nào?
2. Mu
ốn đếm BCD từ 13 đến 65 thì chương trình trên thay
đổi như thế nào?
3. Mu

ốn đếm BCD từ 00 đến FF thì chương trình trên
thay đổi như thế nào?

×