TỰA BÀ I: CHƯƠNGTRÌNH ĐẾM GIÂY HIỂN THỊ Ở2 LED – SỬ DỤNG NGẮT

Một phần của tài liệu điều khiển Led đơn (Trang 25 - 28)

ỨNG DỤNG HỆ THỐN GI ĐIỀU KHIỂN LED 7 ĐOẠN

TỰA BÀ I: CHƯƠNGTRÌ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.

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

hiển thị

Đ

S Khởi tạo ngắt timer 0

Sử dụng delay dùng timer 50 ms và tăng biến đếm 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

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 các transistor quét hàng.

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:

;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

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 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 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 sjmp 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

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

MOV TH0,#3CH ;khoi tao lai timer MOV TL0,#0B5H

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

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay1

delay1: mov r7,#0fh djnz r7,$

ret

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

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

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?

I. Mục đích yê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: 180 NGÀY : SỐ TIẾT : LỚP : MSSV : THỰC HÀNH VI ĐIỀU KHIỂN BÀI SỐ : 2-3

Một phần của tài liệu điều khiển Led đơn (Trang 25 - 28)

Tải bản đầy đủ (DOC)

(96 trang)
w