<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ต่อคับ
ช่วยแก้ให้ดูหน่อยได้ไหม่ครับ
ผมติดตร้งนี้มาหลายวันแล้วครับ กลัวว่าโปรเจคผมจะไม่ทันคับ ขอช่วยหน่อยครับ ขอบคุณมากครับ...
}
}
ช่วยดูให้หน่อยครับ
#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ต่อคับ
ช่วยแก้ให้ดูหน่อยได้ไหม่ครับ
ผมติดตร้งนี้มาหลายวันแล้วครับ กลัวว่าโปรเจคผมจะไม่ทันคับ ขอช่วยหน่อยครับ ขอบคุณมากครับ...
}
}