Kód: Vybrať všetko
#define F_CPU 16000000UL
#include "lcd.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
#include <stdbool.h>
#define KEYPAD_DDR DDRA
#define KEYPAD_PORT PORTA
#define KEYPAD_PIN PINA
uint8_t keypressed()
{
uint8_t row,column;
KEYPAD_PORT |= 0b00001111;
for(column=0;column<4;column++)
{
KEYPAD_DDR &= ~(0b11111111);
KEYPAD_DDR|=(0b00010000<<column);
for(row=0;row<4;row++)
{
if(!(KEYPAD_PIN & (0b00000001<<row)))
{
return (row*4+column);
}
}
}
return 255;
}
void main(void)
{
InitLCD(LS_NONE);
char znak;
while(1)
{
_delay_ms(1000);
znak = keypressed();
LCDWriteIntXY(0,0,znak,3);
}
}
-klávesa 1 zobrazuje adresu 1, má být 0
-klávesa 2 zobrazuje adresu 2, má být 1
-klávesa 3 zobrazuje adresu 3, má být 2
-klávesa A zobrazuje adresu 0 střídavě s 255, má být 3
-klávesa 5 zobrazuje adresu 5 střídavě se 4, má být 5
-klávesa 6 zobrazuje adresu 6 střídavě se 4, má být 6
-klávesa B zobrazuje adresu 4 střídavě se 7, má být 7