CHƯƠNG TRÌNH ĐẾM PHÚ T GIÂY HIỂN THỊ Ở 4LED.

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 48 - 51)

III. Câu hỏi và bài tập ứng dụng:

CHƯƠNG TRÌNH ĐẾM PHÚ T GIÂY HIỂN THỊ Ở 4LED.

Phút = 00

Khởi tạo vùng nhớ lưu mã 7 đoạn, ngắt

Giải mã phút giây, biến đếm ngắt = 00 Hiển thị

Tăng giây-so sánh với 60 Đ S S Đ begin giây = 00

Tăng phút -so sánh với 60

end Biến đếm ngắt = 20 Đ S 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

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. - 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, biên soạn chương trình sau:

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh dem phut giay

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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 quet equ p2

led7 equ p0

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 mov 22h,#0ffh

mov 25h,#0ffh

clr tf0 ;xoa co bao ngat MOV IE,#10000010B ;cho phep timer ngat MOV TH0,#high(-50000) ;khoi tao timer delay 50ms MOV TL0,#low(-50000)

setb tr0 ;cho timer 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,#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 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 ljmp main3 ;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

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

mov a,phut

anl a,#0fh ;xoa 4 bit cao hang chuc phut movc a,@a+dptr ;lay ma 7 doan

mov 24h,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 23h,a

ret

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx int_t0: INC bdn ;TANG BIEN DEM GIAY

MOV TH0,#high(-50000) ;khoi tao lai cho 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,#22h,ht1

ret

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay1

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx delay1: mov r7,#0fh

djnz r7,$ ret

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

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ư 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ú ý: có thể giảm giá trị so sánh của biến bdn bằng 1 để 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.

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. - 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. 2. Khởi động phần mềm, soạn thảo chương trình sau: (adsbygoogle = window.adsbygoogle || []).push({});

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh dem dong ho so gio phut giay

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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 quet equ p2

led7 equ p0

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 22h,#0ffh

mov 25h,#0ffh

mov tmod,#01h ;timer0: mod 1 - dem 16 bit mov dptr,#ma7doan ;dptr quan ly vung ma 7 doan clr tf0 ;xoa co tran timer 0

mov ie,#10000010B ;cho phep timer 0 ngat

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

setb tr0 ;cho phep 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,#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

NGÀY : SỐ TIẾT : LỚP : MSSV : THỰC HÀNH VI ĐIỀU KHIỂN BÀI SỐ : 3-4

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 48 - 51)