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
Lesezeichen