http://www.electoday.com/bbs/viewthread.php?tid=18266&extra=page%3D2Clock on 7Segment
http://www.youtube.com/v/WT70QdA_3k0♥ ช่วงหลังๆมานี่ผมเริ่มเข้าใจการเขียนโปรแกรมแบบ state machine หรือ mutitask มากขึ้น
ผมเลยลองเขียนโปรแกรมง่ายๆโดยให้ความสำคัญกับ Human interface เป็นหลัก
คือการตอบสนองการสั่งงานจากผู้ใช้ได้ราบรื่นพร้อมกับทำงานอื่นๆไปได้โดยไม่สดุด
♥ ตัวอย่างที่ผมเสนอนี้คือการตั้งค่าเวลาพร้อมๆกับสแกน7เซ็กเม็น+กระพริบ+ฐานเวลา
ที่ทำงานไปพร้อมๆกัน โดยอาศัย Timer0 เพียงตัวเดียว
♦♦♦ รายละเอียดโปรแกรม ♦♦♦
♥ แต่ละหลักสามารถสั่งกระพริบได้อิสระโดยสั่งผ่าน
BLINKDIGIT1,BLINKDIGIT2,BLINKDIGIT3,BLINKDIGIT4,
ความถี่ของการกระพริบปรับได้ที่ BlinkInterval โดยเวลาที่ใช้
จะได้ไม่เกิน ms = 5*255
การคุม DOT คุมผ่าน DOT1,DOT2,DOT3,DOT4,
♥ ในขณะตั้งค่านั้นจะสั่งให้ 7เซ็กเม็นหยุดกระพริบชั่วครู่เพื่อจะได้มอง
ตัวเลขได้ถนัด คือ function BlinkDisMoment เมื่อเรียก function นี้
7เซ็กเม็นจะหยุดกระพริบ1วินาทีหลังจากนั้นจะกลับมากระพริบตามเดิม
ถ้า BLINKDIGIT1,BLINKDIGIT2,BLINKDIGIT3,BLINKDIGIT4, ยังถูกเซต
โดยค่าของการหน่วงอยู่ที่ BLINKOVF และ BLINKENABLE เป็นตัวเปิดปิด
การกระพริบแบบรวม
♥ ในโหมดปรกติสามารถกดดูเวลาในหลักวินาทีได้และไม่สามารถตั้งเวลาได้ในโหมดนี้
โดยมี MODESWITCH เป็นตัวกำหนด
♥ Clock Base เป็นแค่การแสดงให้เห็นการทำงานต่างๆเท่านั้น เวลาที่ได้จึงมีความ
คลาดเคลื่อนอยู่ ควรนำไปปรับใช้กับ DS1307