Fehlersuche im Code für ATmega 8

Gast #3146036
Lesenswert?

Hallo,

ich steige gerade wieder neu in die Programmierung von µCen ein und 
wollte einfach mal eine einfache Anwendung testen. Leider komme ich 
nicht darauf, was ich falsch mache - wahrscheinlich seh ich nur den Wald 
vor lauter Bäumen nicht - vielleicht kann mir jemand von euch kurz 
helfen.

Ich benutze das aTeVal Board von eHajo mit einem ATmega8A mit folgender 
Pin-Belegung: PD2, PD3, PD4 Taster, die auf Ground schalten, PD5, PD6 
LEDs

Was jetzt will ich einfach nur realisieren, dass die LED1 leuchtet, wenn 
ich den Taster1 drücke und die LED2 leuchtet, wenn ich den Taster2 
drücke.

Mein LED Test funktioniert ohne Probleme, ein anderes Beispiel mit den 
Tastern hat auch funktioniert. Nur dieses mal leuchten nach meinem LED 
Test beide LEDs dauerhaft.

Vielen Dank für euere Hilfe!

Vg Dane

1
 
2
#define F_CPU 8000000UL     /* 8MHz */
3
 
4
#include <avr/io.h>
5
#include <util/delay.h>
6
 
7
// Prototypen
8
void long_delay(uint16_t);
9
 
10
// Defines:
11
#define LED1    (1<<PD6)
12
#define LED2    (1<<PD5)
13

14
#define Tas1    (1<<PD2)
15
#define Tas2    (1<<PD3)
16
#define Tas3    (1<<PD4)
17
 
18
void long_delay(uint16_t ms)
19
{
20
  for(; ms>0; ms--)
21
  _delay_ms(1);
22
}
23
 
24
void main()
25
{
26

27
 
28
  // LED-Pins als Ausgang definieren
29
  DDRD |= LED1 | LED2;
30
  // Taster-Pins als Eingänge definieren (Pullups-Zuschalten)
31
  DDRD |= Tas1 | Tas2 | Tas3;
32
 
33
  //LED Test
34
  PORTD |= LED1;
35
  long_delay(100);
36
  PORTD &= ~LED1;
37
  
38
  PORTD |= LED2;
39
  long_delay(100);
40
    PORTD &= ~LED2;
41
  
42
  
43
  while(1)
44
  {
45
    
46
    
47
    if (!(PIND & Tas1))
48
    {
49
      PORTD |= LED1;
50
    }
51
    else
52
    {
53
      PORTD &= ~LED1;
54
    }
55
    
56
    
57
    if (!(PIND & Tas2))
58
    {
59
      PORTD |= LED2;
60
    }
61
    else
62
    {
63
      PORTD &= ~LED2;
64
    }
65
    
66
    
67
    }
68
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren