การทำงานที่ดี และถูกต้องคือวาดแนวคิดออกมาเป็นโฟว์ชาร์ทก่อน
จึงจะรู้ที่มาที่ไปของคำสั่ง และแก้ไข+เพิ่มเติมได้ ในกรณีที่มันทำงานไม่ถูกต้องตามที่เราคิด
กรณีนี้ผมเคยทำ ตอนที่หัดทำใหม่ๆ ทำไฟกระพริบเล่น แล้วมีสวิทช์กด ให้เลือกค่าต่างๆได้
เ่ช่น เลือกรูปแบบการกระพริบ เลือกความเร็วในการกระพริบ
หลักการตามโฟว์ชาร์ทที่ได้แนบมาคือ
ให้สร้างตัวแปรขึ้นมา 2 ตัว
ตัวแปร sw_temp0 เอาไว้เก็บค่าการกดสวิทช์จาก portA.F0
ตัวแปร sw_temp1 เอาไว้เก็บค่าการกดสวิทช์จาก portA.F1
ส่วนที่ 1
เป็นการทำงานเก็บค่าการกดสวิทช์ไว้ในตัวแปร
ถ้าดูเงื่อนไขแล้ว ค่าของตัวแปรจะมีค่าได้ 2 ค่าคือ 0 กับ 1
ส่วนที่ 2
เป็นการนำค่าของตัวแปร มาเป็นเงื่อนไขในการแสดงผล
ถ้าค่าของตัวแปรเป็น 0 หลอดไฟก็จะไม่ติด
ถ้าค่าของตัวแปรเป็น 1 หลอดไฟก็จะติดดับ สลับกันไปทีละ 500 ms
แล้ววนลูปการทำงาน
โฟว์ชาร์ทนี้เป็นแค่แนวทางของการเขียนโปรแกรมรับค่าคำสั่งจากการกดสวิทช์
ใช้งานได้จริง แต่มีข้อเสียคือ
1. ถ้าหลอดกระพริบพร้อมกัน จะกระพริบไม่ต่อเนื่อง
2. เวลากดสวิทช์ ต้องรอจังหวะวนลูป
3. ...
ต่อไปการทำงานได้จริง ต้องทำแยกเป็นฟังก์ชั่นย่อย
ทำงานแต่ละหน้าที่กัน หรือจะกำหนดให้ portB ต่อกับสวิืทช์
แล้วเลือกการใช้งานแบบอินเตอร์รัพ จากการกดสวิทช์
http://www.4shared.com/get/69E388bY/pic_test_sw.html