Below is the program i am using to interface keypad. Can someone help me understand what is wrong in this code. I can only see "#" being displayed.
#ifndef F_CPU #define F_CPU 1000000UL // 1 MHz clock speed #endif #define D0 eS_PORTB0 #define D1 eS_PORTB1 #define D2 eS_PORTB2 #define D3 eS_PORTB3 #define D4 eS_PORTB4 #define D5 eS_PORTB5 #define D6 eS_PORTB6 #define D7 eS_PORTB7 #define RS eS_PORTD5 #define EN eS_PORTD7 #define RW eS_PORTD6 // #define KEYPAD PORTC //KEYPAD IS ATTACHED ON PORTC #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include "lcd.h" uint8_t key,keypressed; void main() { DDRB = 0xFF; DDRD = 0xFF; int i; Lcd8_Init(); DDRC|= 0XF0; PORTC|= 0X0F; _delay_ms(5000); while(1) { for(i=0;i<10;i++){ if (PINC!=0b11111111)//in any of column pins goes high execute the loop { // int i; // char num[8] = "*PINC"; // unsigned char keypressed = 0; // // for ( i = 0; i < 8; ++i ) // keypressed |= (num[i] == '1') << (7 - i); if (PINC==0b00010001) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("1");//if row1 and column1 is high show “1” } if (PINC==0b00010010) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("4");// if row1 and column2 is high show “4” } if (PINC==0b00010100) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("7");// if row1 and column3 is high show “7” } if (PINC==0b00011000) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("*");//if row1 and column4 is high show “*” } if (PINC==0b00100001) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("2");// if row2 and column1 is high show “2” } if (PINC==0b00100010) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("5");// if row2 and column2 is high show “5” } if (PINC==0b00100100) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("8");// if row2 and column3 is high show “8” } if (PINC==0b00101000) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("0");// if row2 and column4 is high show “0” } if (PINC==0b01000001) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("3"); } if (PINC==0b01000010) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("6"); } if (PINC==0b01000100) { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("9"); } if (PINC==0b01001000); { Lcd8_Set_Cursor(0,0); Lcd8_Write_String("#"); } } else PINC == 0b11111111; return 0; } } }