รบกวนช่วยผมเขียนโปรแกรม Microcontroller 7 Segment หน่อยครับ

ตอนนี้ผมเรียนด้วยไมโครรุ่น PIC16F887
คืออาจารย์ผมให้โจทย์มาว่า
"เขียนโปรแกรมควบคุม 7-Segment ให้แสดง 00-99 โดยเริ่มแสดง 00 จากนั้นรับค่าจะการกดสวิตย์(1 ครั้ง) รายละเอียดดังนี้
กดสวิตช์ที่ 1(SW0) ให้ 7 Segment แสดงเลขขึ้น 1 ค่า
กดสวิตช์ที่ 2(SW1) ให้ 7 Segment แสดงเลขลง 1 ค่า"
*หมายเหตุ* เมื่อแสดงถึงเลข 99 แล้วกดสวิตช์ที่ 1 ให้วนกลับมาที่ 00 ใหม่
เมื่อแสดง 00 แล้วกดสวิตช์ที่ 2 ให้แสดงเลข 00 เหมือนเดิมโดยไม่มีการเปลี่ยนแปลง

อันนี้คือวงจรที่ผมใช้ในโปรแกรม Proteus
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้

ใช้ Port C ขา 0 เป็น SW0
ใช้ Port C ขา 1 เป็น SW1
สวิตช์แบบ Active Low
ใช้ Port D เป็นหลักหน่วย
ใช้ Port B เป็นหลักสิบ

***อันนี้คือโปรแกรมที่ผมพยายามเขียนเอง รู้บ้าง มั่วบ้าง มันเพิ่มค่าได้ แต่ทำให้ลดไม่ได้
พอเวลาสลับกดสวิตช์ เหมือนค่ามันจะเกินไป 1 เสมอ เช่น ที่ 7-Segment ทั้ง 2 ตัว
แสดงเลข 35 กด SW0 ให้เพิ่ม เป็น 36 พอจะลดเป็น 35 ด้วยการกด SW1
มันจะขึ้น 37 ก่อน แล้วต้องกดอีกทีถึงจะเป็น 35 ผมงง จนปัญญามาก

[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้

ผมลองค้นในอินเตอร์เน็ตมันสามารถใช้ตัวแปร Array เพื่อแทนเลข 0-9 ได้
เช่น int num[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
แต่ผมใช้ไม่เป็น ลองทำดูมันก็ไม่ติด

ถ้าพี่ๆคนไหนว่าง รบกวนช่วยผมทำหน่อยนะครับ ผมปวดหัวมากๆ ขอบคุณครับ
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่