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 5 potx

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

Chương 5: CHƯƠNG TRÌNH ĐẾM TỪ 00
ĐẾN 60 HIỂN THỊ TR
ÊN 2 LED
I. Mục đích u cầu: làm quen với cách viết chương trình đếm và
sau khi th
ực hành xong sinh viên có thể viết các chương trình đếm
với số đếm tùy ý.
II. Trình tự thực hiện:
1. Giải thuật:
G
iải mã BCD của giây sang 7 đoạn
Delay và hiển thò
Đ
S
Khởi tạo giây =00
Giây = 60
Tăng giây lên 1 đơn vò
end
Begin
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 len tu 00 den 60 hien thi tren 2 led cua 8 led
quet
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
giay equ r2 ;gan bien dem giay la R2
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
mov tmod,#01h ;timer0: mod 1 - dem 16 bit
mov dptr,#0200h ;dptr quan ly vung ma 7 doan
main: mov giay,#00h ;giay=00
main1: lcall gma
lcall delay_hthi ;goi chtr con delay co hien thi
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 main ;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
delay_hthi:mov 7fh,#10h
del2: clr tr0
mov th0,#00
mov tl0,#00
setb tr0
clr tf0
del1: lcall hthi
jnb tf0,del1
djnz 7fh,del2
ret
;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
xxxx
;chuong trinh con delay1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxx
delay1: mov r7,#0fh
del11: djnz r7,del11
ret
end
5. Thực hiện các bước giống như các bài chuẩn cho đến khi
m
ạch đếm đúng từ 00 đến 59.
III. Câu hỏi và bài tập ứng dụng:
1. Tại sao phải chèn chương trình con hiển thị vào chương
trình con delay? Hãy thử bỏ lệnh gọi chương trình con
hi
ển thị trong chương trình con delay và cho nó vào
chương trình chính sau lệnh gọi chương trình con delay rồi
cho biết kết quả như thế nào?
2. Hãy vi
ết chương trình đếm lên từ 00 đến 99 thì làm như
thế nào?

3. Hãy vi
ết chương trình đếm xuống từ 60 về 00 thì làm như
thế nào?

×