You are on page 1of 1

Một số hàm mẫu: Trong tất cả các ví dụ về LED, chúng ta đều sử dụng một chương trình con (CTC)

tạo
trễ, thường đặt tên là Delay. Chương trình con Delay được viết bằng cách tạo ra nhiều vòng lặp lồng
nhau, nhằm tiêu tốn thời gian. Khoảng thời gian bao nhiêu được tính dựa theo tần số thạch anh (Fxtal),
số vòng lặp, số lần gọi CTC. Chương trình con Delay có thời gian cố định: Delay:mov R7, #10 DL:mov
R6,#255 DL1:mov R5,#255 DL2:djnz r5,dl2 djnz R6,DL1 DJNZ R7, DL ret Mã nguồn 4-1. Delay Giá trị nạp
vào R7, R6, R5 có thể được thay đổi tùy thời gan yêu cầu. Chương trình con Delay có thời gian thay đổi
tùy lúc gọi: DelayX macro Tdelay local DL1,DL2,DL3 push 7 push 6 push 5 mov R7,#Tdelay DL1:mov
R6,#100 DL2:mov R5,#100 DL3:djnz R5, Dl3 djnz R6, Dl2 djnz R7, Dl1 pop 5 pop 6 pop 7 endm Ý tưởng là
viết CTC trong một MACRO, truyền tham số thời gian trễ vào tham số tại lúc gọi hàm. Như vậy, có thể
với mỗi lần gọi hàm khác nhau, chương trình con Delay sẽ được truyền thời gian khác nhau, và khoảng
thời gian trễ là như nhau. Mã nguồn 4-2. DelayX Bài giảng Chương 4 Vi xử lý - Vi điều khiển Ứng dụng
154 Bộ môn Kỹ thuật máy tính – Khoa Điện tử Trường ĐH Kỹ thuật Công nghiệp Nhấp nháy cả cổng P1:
Muốn LED nhấp nháy trên cổng P1, chúng ta tắt LED, trễ rồi bật LED, trễ. Sơ đồ như “Hình 4-1. Mạch
nhấp nháy LED đơn”, sơ đồ thuật toán và mã nguồn như hình dưới đây: org 0 start: mov P1,#0x00 call
delay mov P1,#0xff call delay jmp start delay:mov R7, #10 DL:mov R6,#255 DL1: mov R5,#255 DL2:djnz
r5,dl2 djnz R6,DL1 DJNZ R7, DL ret end Hình 4-3. Thuật toán: Nhấp nháy P1 Mã nguồn 4-3. Nhấp nháy
cổng

You might also like