Tải bản đầy đủ (.pdf) (2 trang)

Hướng dẫn sử dụng Kit 89 - Bài 5 ppsx

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 (240.51 KB, 2 trang )

Hướng dẫn sử dụng Kit 89
Bài 5 : Dùng ngắt timer viết ứng dụng LED RIVER

Mục đích:
Nắm vững ngắt timer.
Sử dụng ngắt timer để viết ứng dụng LED RIVER.
Yêu cầu:
Viết chương trình led river đơn giản, 1 led chạy từ P0.0 sang P1.1, đến P0.7
chuyển sang P3.7, P3.6. Khi tới P3.0 thì trở về P0.0. Thời gian chuyển qua trạng thái mới
là 1s

5.1 Kết nối phần cứng
Gạt switch 1 lên ON để kích hoạt Port 1 (các led đơn).
Gạt switch 2 lên ON để kích hoạt Port 3 (các led đơn và nút nhấn).
5.2 Viết chương trình
Đối với led chạy như yêu cầu, ta thấy có 16 trạng thái của P1 và P3 như sau
P0.0 sáng : P1 = 0x01, P3 = 0x00
P0.1 sáng : P1 = 0x02, P3 = 0x00
……
P0.7 sáng : P1 = 0x80, P3 = 0x00
P3.7 sáng : P1 = 0x00, P3 = 0x80
P3.6 sáng : P1 = 0x00, P3 = 0x40
……
P3.0 sáng : P1 = 0x00, P3 = 0x01
Như vậy, ta sẽ khai báo 2 mảng, mỗi mảng 16 phần tử cho P1 và P3, rồi cho 1
biến index tự động tăng lên sau 1s, khi index bằng 16 thì gán lại index bằng 0, để quá
trình được lặp lại.
Đối với led river có nhiều trạng thái hơn, bạn chỉ cần khai báo ra tất cả các trạng
thái vào 1 mảng, rồi lần lượt định kì xuất nó ra.
Việc delay gi
ữa các trạng thái, ta sẽ sử dụng lại hàm delay_ms(unsigned int


duration) đã làm ở bài thí nghiệm trước.
Đối với yêu cầu của bài led river này, chúng tôi chỉ sử dụng 1 mảng 16 phần tử
dùng cho cả 2 Port. Index của P1 sẽ tăng dần từ 0 đến 15, Index của P3 sẽ giảm dần từ 15
đến 0.

//led_river : mảng 16 phần tử
//INDEX_MAX = 16
//duration = 1000ms
while(1)
{
P3 = led_river[INDEX_MAX - index-1];
P1 = led_river[index++];
if(index == INDEX_MAX)
index = 0;
BKIT HARDWARE CLUB – www.bkit4u.com
41
Hướng dẫn sử dụng Kit 89
delay_ms(duration);
}
Chi tiết code của bài thí nghiệm này, bạn xem thêm trong thư mục Bài 5 trong CD
đi kèm.
BKIT HARDWARE CLUB – www.bkit4u.com
42

×