ช่วยดูให้หน่อยครับ

กระทู้คำถาม
 <16F877.h>
#fuses HS,NOWDT,BROWNOUT,PUT,NOLVP
#use delay(clock=40000000)
#include <lcd.c>

#define use_portb_kbd  
#include <kbd.c>

//======================================
void main()
{
      char k;
  
      set_tris_b(0xFF);                                                                  //keypad_port_b
      set_tris_c(0);                                                                        //  led_port_c
      
      lcd_init();                                                                          //lcd_port_d
      kbd_init();

      port_b_pullups(TRUE);  // Need to pull up the keypad row pins       //keyped_port _b เชื่อมต่อกับ lcd
      
      output_low(PIN_C1);      ดวงที่1  สีเขียวเติดเมื่อกดคำตอบถูก(กดปุ่มตามที่กำหนดเช่น รอการกดเลข4ไฟติดเมื่อกดเลข4)                                 // เริ่มต้นให้ไฟ3ดวงดับ  
    
      output_low(PIN_C2);     ดวงที่2(ไฟดวงนี้ติดถ้าไม่ได้กกดเลข4 คือไฟสีแดงติดเพราะกดคำตอบผิด)
      output_low(PIN_C3);    ดวงที่3 (ไฟสีเหลือง ติดทุกที่ที่กดปุ่มทุกปุ่ม)
      
      lcd_putc(k);
      lcd_gotoxy(4,1);
      lcd_putc("\fwelcome...");                             //  เริ่มต้นให้มันแสดงว่ายินดีต้อนรับ
      delay_ms(20);
      lcd_putc("\f");                                           //ลบคำยินดีต้อบรับออกไป
      lcd_gotoxy(2,1);
      lcd_putc("2 3 4 5 6 7");                              //แสดงแม่เลข แม่2-แม่12
      lcd_gotoxy(2,3);
      lcd_putc("8 9 10 11 12");
      
         while(TRUE)                                                          
  {
    k=kbd_getc();
                 ///คำสั่งชุดที่1//

    if ( k!=0)                                            //ถ้าปุ่มถูกกดไฟดวงที่3ติดเสมอ
             {
               output_high(PIN_C3);
                  delay_ms(5);
                     output_low(PIN_C3);              
                        }  
            
                        if(k=='2')                                                //เมื่อขึ้นแม่ที่ต้องการแล้ว (ในที่นี้เลือกแม่ 2)กดปุ่ม2
                      {
                         lcd_putc('\f');  
                         lcd_putc("2*2");                                   // ให้โชตัวเลขแม่2เป็น2*2
                        
                      }    
                        else if((k>='2'|| k=='1'))                      //         ถ้ากดตัวเลขที่ไม่ใช่เลข2ที่กำหนดไว้ให้ไฟสีแดงติด ถือว่าผิด
                     {
                         output_high(PIN_C2);
                         delay_ms(5);
                         output_low(PIN_C2);
                
                      }      
                //แล้วต้องใช้คำสั่งwhile แบบไหนเพื่อให้มันทำคำสั่งแบบนี้ไปหลายๆชุดคับฝฝ                                      
             ///สิ้นสุดชุดคำสั่งที่1///
           {
          เริ่มคำสั่งชุดที่2


        สิ้นสุดคำสั่งชุดที่2
           }                                          
              whileแบบไหนครับเพื่อดูว่าจิงแล้วออกจากคำสั่งชุดนี้ไปทำชุดที่3ต่อคับ
                                      

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