ช่วยแก้ให้หน่อยครับ

กระทู้คำถาม
#include <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();
//////////  
    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);
                
                      }                                                
                                                                  //ปัญหาคือ... บันทัดตรงนี้ผมต้องการรอการกดคำตอบคือเลข4 เขียนอย่างไรคับ ผมเขียนแบบนี้while(k=='4');แต่มันไม่ได้ ช่วยแก่ให้หน่อยได้ไหม่คับว่าเขียนอย่างไรคับ      
              
                                            ส่วนตรงนี้ผมอยากให้ ให้lcdโช2*2แล้วรอการกดคำตอบ แล้วต้องสร้างตัวแปรให้lcdไหม่คับ สร้างเหมือนกับตัวแปรคีย์ เช่น b=lcd_putc();แบบนี้ไม่ เมื่อได้แล้วรอการกดคีย์เหมือนเดิมอีกเขียนอย่างไรคับ ช่วยแก้ให้หน่อยได้ไหม่ครับ
         ผมติดตร้งนี้มาหลายวันแล้วครับ กลัวว่าโปรเจคผมจะไม่ทันคับ ขอช่วยหน่อยครับ ขอบคุณมากครับ...
  }
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่