#define F_CPU 16000000UL #include #include #include void init_display(); void init_keypad(); void init_timer0(); uint8_t getkey(uint8_t*); volatile uint8_t lcdptr=0, lcdcmd=0xC0, lcdoff=0; // volatile uint8_t buffcnt=0, buffstart=0, buffend=0, kbdbuff[4]; unsigned char LCDline[32]={"Keypad INT "}; // 0123456789ABCDEF0123456789ABCDEF const char LookUp[16] ={"0123456789ABCDEF"}; int main(void) { uint8_t kbdcnt=0, kbddata; init_display(); init_keypad(); init_timer0(); // initialize timer0 sei(); // enable global interrupts // loop forever while(1) { if(getkey(&kbddata)) { LCDline[kbdcnt+16] = kbddata; kbdcnt = (kbdcnt+1) & 0x0F; LCDline[kbdcnt+16] = ' '; } LCDline[13]= (PINE&0x01) + '0'; while((PINE&0x01)==0); // block execution } // while(1) } void init_display() { DDRA = 0xFF; PORTC &= 0xAF; DDRC |= 0x50; PORTC &= 0xBF; PORTA = 0x38; PORTC |= 0x10; PORTC &= 0xEF; PORTA = 0x0C; PORTC |= 0x10; PORTC &= 0xEF; PORTA = 0x01; PORTC |= 0x10;; PORTC &= 0xEF; _delay_ms(2); } void init_keypad() { EICRB |= (1< } void init_timer0() { TCCR0B |= (1<