Zitat Zitat von radbruch Beitrag anzeigen
Hallo

Die Taster können auch gegen GND schalten:

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);
}
(ungetestet)

Gruß

mic
Ja das kannst du natürlich auch machen
Nur er muss sich halt für eine Methode entscheiden . Was halt nicht funktioniert ist (egal wie er den Taster beschaltet hat) den Pin auf 1 setzt und dann nach 1 abfragt.