Hallo
Die Taster können auch gegen GND schalten:
(ungetestet)Code:// // ATMega644 // lcd-routines.c, lcd-routines.h // #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <stdlib.h> #include "lcd-routines.h" uint8_t temp; int main(void) { DDRD = 0x00; // Pins sind Eingang PORTD = 0x0f; // mit aktiviertem PullUp, Taster schalten nach GND // Initialisierung des LCD // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken // verschwunden sein lcd_init(); lcd_string("LCD Start !!!"); _delay_ms(100); //Gibt einem die moeglichckeit zu lesen was auf dem LCD steht temp = PIND & 0b00001111; // Status der Tasten einlesen while(1) { if((PIND & 0b00001111) != temp) // Hat sich was geändert? { temp = PIND & 0b00001111; // Ja, deshalb neuen Status merken ... lcd_clear(); // ... und ausgeben switch(temp) { case 0b1110: lcd_string("Das ist Taste 0"); break; case 0b1101: lcd_string("Das ist Taste 1"); break; case 0b1011: lcd_string("Das ist Taste 2"); break; case 0b0111: lcd_string("Das ist Taste 3"); break; default: lcd_string("Taste druecken"); } } } return(0); }
Gruß
mic







Zitieren


Lesezeichen