View Single Post
Old 15-03-2010, 07:18 PM   #11
pk178
Đệ tử 5 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 100
:
Chào bạn !!!

Mình cũng đã từng phải lập trình để tạo menu kiểu này. Thuật toán của mình như sau :

+ Phím menu nối vào 1 chân ngắt, của vxl, khi nào ấn menu -> xuất hiện ngắt -> bạn đặt 1 cờ tương ứng, giả sử lần đầu tiên xuất hiện ngắt, bạn đặt cờ có giá trị là 1, lần thứ 2 xuất hiện ngắt, bạn đặt cờ có giá trị là 2.

+ Chương trình chính sẽ liên tục kiểm tra trạng thái của cờ này để đưa ra chương trình con tương ứng với giá trị của cờ.

Cách làm trên có ưu điểm là nếu sau này bạn muốn mở rộng thêm các chức năng của chương trình như thêm các menu chẳng hạn, thì chỉ việc đặt thêm 1 cờ và 1 chương trình con tương ứng, chương trình cũ ko bị ảnh hưởng => dễ dàng cho việc nâng cấp firmware !

Hơn nữa chương trình trong ngắt như vậy sẽ ko quá dài, bạn ko bị gặp phải lỗi tràn stack (trước mình đã phải khổ sở với lỗi này)

Nói thật là mình cũng ko có đủ kiên nhẫn để đọc chương trình của bạn, hihi, mình nghĩ các bạn khác cũng thế nên ít người phản hồi lại cho bạn. Hơn nữa, bạn nên đưa thuật toán ra cho mọi người thảo luận thôi, chứ post cả code lên mạng thế kia thì đôi khi có những tình huống ko hay lắm hihi.

Thân ái !
pk178 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn