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 8 docx

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

Chương 8: CHƯƠNG TRÌNH ĐẾM GIỜ -
PHÚT - GIÂY HI
ỂN THỊ Ở 6 LED
I. Mục đích yêu cầu: biết cách viết chương trình đếm giờ phút
giây, cách kiểm tra chương trình đếm.
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 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 .
2. Khởi động phần mềm, mở File mới và đặt tên file.
3. Vi
ết chương trình với tên file vừa đặt:
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
;chuong trinh dem dong ho so gio 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
gio equ r4 ;gan bien dem gio cho r4
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
main4: mov gio,#00 ;gio=00
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 phut voi 60
mov a,gio ;chuyen gio sang A
add a,#1 ;tang gio len 1

da a ;hieu chinh so BCD trong A
mov gio,a ;tra lai cho gio
cjne gio,#24h,main3 ;ss gio voi 24
sjmp main4 ;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 27h
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 ;cat vao o nho 26h
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 25h
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 ;cat vao o nho 24h
mov a,gio

anl a,#0fh ;xoa 4 bit cao hang chuc gio
movc a,@a+dptr;lay ma 7 doan
mov 23h,a ;cat ma vao o nho 23h
mov a,gio
anl a,#0f0h ;xoa 4 bit thap hang dvi gio
swap a ;chuyen 4 bit cao xuong vi tri
thap
movc a,@a+dptr;lay ma 7 doan hang chuc
mov 22h,a ;cat vao o nho 22h
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,#21h,ht1
ret
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx
;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 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. Bài tập ứng dụng:
1. Hãy điều chỉnh chương trình đếm giờ phút giây để đếm
BCD từ 000000 đến 999999 hiển thị ở các led
3,4,5,6,7,8.
2. Hãy cho bi
ết sai số và cách làm giảm sai số.
3. Chương trình trên luôn bắt đầu chạy tại 00 giờ 00 phút

00 giây. Hãy viết chương trình quét phím để điều chỉnh
giờ phút giây theo ý muốn.

×