Trình tự thực hiện: 1.Giải thuật:

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 45 - 47)

1. Giải thuật: 2. Kết nối mạch theo trình tự : NGÀY : SỐ TIẾT : LỚP : MSSV : THỰC HÀNH VI ĐIỀU KHIỂN BÀI SỐ : 3-2

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. CỦA TIMER ĐỂ ĐẾM CHÍNH XÁC VỀ THỜI GIAN.

Giải mã BCD của giây sang 7 đoạn

hiển thị

Đ

S Khởi tạo timer 0 ngắt sau thời gian 50ms đểø tăng biến đếm ngắt Cho phép ngắt

Biến đếm ngắt = 20

Tăng giây lên 1 đơn vị

end Begin Đ S Giây = 60 Giây = 00 End_ngắt Begin_ngắt

Khởi tạo lại các thông số delay cho timer Tăng biến đếm ngắt

- Dùng bus dây kết nối port 2 đến pinhd điều khiển quét hàng từ T0 đến T7. 3. Khởi động phần mềm và biên soạn chương trình sau.

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh dem len tu 00 den 60 hien thi tren 2 led cua 8 led quet

;su dung ngat timer t0 de dem chinh xac ve thoi gian

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx giay equ r2 ;gan bien dem giay la R2

bdn equ r1 ;gan bien dem ngat quet equ p2

led7 equ p0

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; chuong trinh chinh

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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,#ma7doan ;dptr quan ly vung ma 7 doan clr tf0 ;xoa co tran

mov IE,#10000010B ;cho phep timer0 ngat mov TH0,#high(-50000) ;khoi tao timer delay 50ms mov TL0,#low(-50000)

setb tr0 ;cho phep timer 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 ljmp main0 ;lam lai tu dau

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ; chuong trinh con giai ma

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;CHUONG TRINH CON NGAT TIMER0 SAU KHOANG THOI GIAN 50MS

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx int_t0: inc bdn ;tang bien dem giay len 1

mov TH0,#high(-50000) ;khoi tao timer delay 50ms mov TL0,#low(-50000)

clr TF0 reti

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con hien thi

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx hthi: mov a,#01111111b ;ma quet

mov r0,#27h ht1: mov led7,@r0 mov quet,a lcall delay1 mov quet,#0ffh dec r0

rr a ;chuyen sang led ke cjne r0,#25h,ht1

ret

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay1

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay1: mov r7,#0fh

djnz r7,$ ret

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;khai bao ma 7 doan tu so '0' den so '9'

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ma7doan: db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h,90h

end

4. 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.

Một phần của tài liệu Tài liệu Các bài thực hành về vi điều khiển pdf (Trang 45 - 47)