Mình có một code về bàn phím 4*4 nhờ mọi người giúp!
mạch đây

code này mình nạp vào mạch thì chạy đc, nhưng bị lỗi ở phím hiến số 9! vào cái nó hiên j ngay số 9! Tuy nhiên mô phỏng protues lại ko chạy!
Code này mình cũng thấy rất khó hiểu, ai có thể giúp mình với
mạch đây

Code:
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT
#FUSES HS
#FUSES NOPUT
#FUSES NOPROTECT
#FUSES NODEBUG
#FUSES NOBROWNOUT
#FUSES NOLVP
#FUSES NOCPD
#FUSES NOWRT
#use delay(clock=20000000)
#include <lcd_lib_4bit.c>
void quetphim_hienthi()
{ PORTB = 0b111111110 ; if (RB4==0) { delay_ms(50);
while(RB4==0) continue ;
delay_ms(20);
lcd_putcmd(0x01);
LCD_PutChar('0') ;
} ;
if (RB5==0) { delay_ms(50);
while(RB5==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('3') ;
} ;
if (RB6==0) { delay_ms(50);
while(RB6==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('6') ;
} ;
if (RB7==0) { delay_ms(50);
while(RB6==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('9') ;
} ;
PORTB = 0b111111101 ; if (RB4==0) { delay_ms(50);
while(RB4==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('1') ;
} ;
if (RB5==0) { delay_ms(50);
while(RB5==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('4');
} ;
if (RB6==0) { delay_ms(50);
while(RB6==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('7');
} ;
PORTB = 0b111111011 ; if (RB4==0) { delay_ms(50);
while(RB4==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('2') ;
} ;
if (RB5==0) { delay_ms(50);
while(RB5==0) continue ;
delay_ms(20); lcd_putcmd(0x01);
LCD_PutChar('5') ;
} ;
if (RB6==0) { delay_ms(50);
while(RB6==0) continue ;
delay_ms(20);lcd_putcmd(0x01);
LCD_PutChar('8') ;
} ;
}
#int_RB
void ngat_RB(void)
{quetphim_hienthi();}
void main(void)
{
TRISD=0x00;
RD2=0;
set_tris_B(0xF0);
lcd_Init();
lcd_putcmd(0x01);
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(1)
{PORTB = 0xF0 ;}
}
Code này mình cũng thấy rất khó hiểu, ai có thể giúp mình với

Comment