Thông tin tài liệu:
Hướng dẫn sử dụng Kit 89Bài 5 :Dùng ngắt timer viết ứng dụng LED RIVERMụ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à 1s5.1 Kết nối phần cứngGạ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...
Nội dung trích xuất từ tài liệu:
Hướng dẫn sử dụng Kit 89 - Bài 5 Hướng dẫn sử dụng Kit 89Bài 5 : Dùng ngắt timer viết ứng dụng LED RIVERMụ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.7chuyể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ớilà 1s5.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 1biế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ạngthá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 intduration) đã 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