OK

Ich hab mal 2 LED's mit eingebunden, also beim Start sind beide LED's aus. Wen ich Taste 0 drücke Dan geht LED 1 an, wen ich Taste 1 drücke Dan geht LED 0 an.
Allerdings weis ich nicht ob die LED's beim STK500 nach GND schalten.
Hier hab ich mal den Code.


Code:
//
//    ATMega644
//    lcd-routines.c, lcd-routines.h, i2c.h
//
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#include <stdbool.h>
#include "lcd-routines.h"
#include "i2c.h"

int main(void) //Hauptschleife
{
    DDRA = 0xff; // Pins sind Ausgang
    PORTA = 0xff; // LED's Aus    

    DDRD = 0x00; // Pins sind Eingang
    PORTD = 0xff; // 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(500); //Gibt einem die moeglichckeit zu lesen was auf dem LCD steht
    
    lcd_clear();
    lcd_home();
    lcd_string(" Taste druecken"); 

        
TWI_init(FAKTOR, TEILER);

char temperatur; //Temperaturvariable
char einer; //Temperaturvariable einer
char zehner; //Temperaturvariable zehner
char Buffer[100];  //itoa Array 3 stelig
int i = 25; //Laufzeitvariable
                        
    while(1) //Programmschleife
    {

        
        temperatur = TWI_empf(ADRESSE_R); //Temperaturvariablen
        einer = ( temperatur % 10 ) + 48;
        zehner = ( temperatur / 10 ) + 48;

            if(!(PIND & (1<<PD0))) // Taste 0 an PORTD PD0
            {
            _delay_ms(10);
            
            PORTA = (1<<PD0); //LED0
            i++;
            lcd_setcursor( 0, 1);
            lcd_string("Aetzlaufzeit ");
            itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
            lcd_string( Buffer );
         
                while(!(PIND & (1<<PD0))); //Warte solange Taste noch getrückt ist.
                _delay_ms(10);
                
            }

            if(!(PIND & (1<<PD1))) // Taste 1 an PORTD PD1
            {
            _delay_ms(10);
            
            PORTA = (1<<PD1); //LED 1
            i--;
            lcd_setcursor( 0, 1);
            lcd_string("Aetzlaufzeit ");
            itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
            lcd_string( Buffer );

                while(!(PIND & (1<<PD1))); //Warte solange Taste noch getrückt ist.
                _delay_ms(10);
                   
            }

            if (dat2 >= 0b10000000)
            {
            lcd_setcursor( 0, 2);
            lcd_string("Temperatur ");    
            lcd_data(zehner);
            lcd_data(einer);
            lcd_string(",5C ");
            }

            else
            {
            lcd_setcursor( 0, 2);
            lcd_string("Temperatur ");    
            lcd_data(zehner);
            lcd_data(einer);
            lcd_string(",0C ");
            }

    }

    return(0);
}
Danke