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

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

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

Chương 7: CHƯƠNG TRÌNH ĐẾM PHÚT
- GIÂY HIỂN THỊ Ở 4 LED
I. Mục đích u cầu: biết cách viết chương trình đếm phút giây,
cách kiểm tra chương trình đếm.
II. Trình tự thực hiện:
1. Giải thuật:
Begin
Khởi tạo vùng nhớ lưu trữ biến đếm hàng
chục, đơn vò của phút, giây = 00
Khởi tạo vùng nhớ lưu trữ mã 7 đoạn từ 0
đến 9
Giải mã hàng chục, đon vò của phút giây
(từ mã nhò phân sang mã 7 đoạn)
End
Delay và hie
ån thò đúng 1s
Tăng biến đếm
hàng chục,đơn vò
giây-so sánh với 60
Đ
S
Tăng biến đếm
hàng chục,đơn vò
phút-so sánh với 60
S
Đ
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 chương trình ở 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 phut giay
;su dung ngat timer t0 de dem chinh xac ve thoi gian
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
giay equ r2 ;gan bien dem giay la R2
phut equ r3 ;gan bien dem phut cho R3
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

main3: mov phut,#00h ;phut=00
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,#2,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
mov a,phut ;chuyen phut sang A
add a,#1 ;tang phut len 1
da a ;hieu chinh so BCD trong A
mov phut,a ;tra lai cho phut
cjne phut,#60h,main0 ;ss giay voi 60
sjmp main3 ;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
mov a,phut
anl a,#0fh ;xoa 4 bit cao hang chuc phut
movc a,@a+dptr;lay ma 7 doan
mov 25h,a ;cat ma vao o nho 20h
mov a,phut
anl a,#0f0h ;xoa 4 bit thap hang dvi phut
swap a ;chuyen 4 bit cao xuong vi tri
thap
movc a,@a+dptr;lay ma 7 doan hang chuc
mov 24h,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,#23h,ht1
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx
;chuong trinh con delay1
delay1: mov r7,#0fh
del11: djnz r7,del11
ret
end
5. Thực hiện các bước giống như bài chuẩn và xem kết quả
mạch có đếm đúng phút và giây hay không, nếu không
đúng th
ì hiệu chỉnh lại.
Chú ý: thời gian trong chương trình này giảm nhỏ để giúp kiểm tra
nhanh hàng phút, sau khi đếm đúng th
ì hãy hiệu chỉnh lại lệnh so
sánh bdn v
ới số 20 thì mạch sẽ đếm đúng thời gian.
III. Câu hỏi và bài tập ứng dụng:
1. Hãy điều chỉnh chương trình đếm phút giây để đếm BCD
từ 0000 đến 9999 hiển thị ở các led 5,6,7,8.
2. Hãy viết chương trình đếm số hex từ 0000H đến FFFFH.

×