#include #include #include #define LCD_Port PORTB //PORTB fürs LCD muss im Hauptprogramm noch deklariert werden #include "E:\Eigene Dateien\Dropbox\Atmel AVR\AVR Programme\1aVorlagen\lcd_tools2.c" #define keypad_port PORTD #define port PIND #define F_CPU 4000000UL // Systemtakt in Hz - Definition als unsigned long beachten // Ohne ergeben sich unten Fehler in der Berechnung //Frequenzvorteiler anpassen je nach MHZ Zahl unsigned int keypad_uebergeben=30; // #include "E:\Eigene Dateien\Dropbox\Atmel AVR\AVR Programme\1aVorlagen\keypad 3x12.c" //muss hier weit unten stehen, weil oben erst noch Variablen hierfür deklariert werden müssen keypad_wert_einlesen(void) { unsigned keypad=0; keypad_port |= 0b00001110; //Ausgänge auf High keypad_port &= 0b11111100; // //PC1 auf Masse ziehen keypad=20; //prüfen, ob PC 4,5,6 oder 7 einen Low-Pegel aufweisen if( !(PIND & 0b00010000) ) { keypad=1; //lcd_gotopos(1,1);lcd_writetext("1"); // lcd_gotopos(2,1);lcd_writezahl(keypad); } if( !(port & 0b00100000) ) { keypad=4; //lcd_gotopos(1,1);lcd_writetext("4"); } return keypad; } int main(void) //zur Konfiguration des Test- Programms { DDRB=0xff; //LCDPORT als Ausgang DDRD = 0b00001110; //3 als Ausgang PORTD |= 0b11110000; char keypad_wert=0; char i=0; uint16_t min_wert=0; lcd_ini(); for (i=0; i<200;i=i+2) { do { keypad_wert=keypad_wert_einlesen(); } while (keypad_wert==20); lcd_writezahl(2,19-i, keypad_wert); //gebe den eingelesen WErt aus } }