#define F_CPU 16000000UL #include #include #include void init_display(); void init_keypad(); void init_timer0(); 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; init_display(); init_keypad(); init_timer0(); // initialize timer0 sei(); // enable global interrupts // loop forever while(1) { if(buffcnt!=0) { LCDline[kbdcnt+16] = kbdbuff[buffend]; buffcnt--; buffend = (buffend+1)&0x03; kbdcnt = (kbdcnt+1) & 0x0F; LCDline[kbdcnt+16] = ' '; } } // 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<