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
Lesezeichen