Forum: Mikrocontroller und Digitale Elektronik Tastercode ATMega8, AVR


von Olaf H. (Gast)


Lesenswert?

Hallo,
ich bin ein richtiger Anfänger mit Atmel Studio.

Ich schreibe zurzeit ein kleines Programm, wo sich LED's auf Knopfdruck 
einschalten sollen. Die Lampen gehen Problemlos ein und aus, nur weiß 
ich den Code für den Taster nicht. Dieser liegt auf PB0.

Könnt ihr mir einen einfachen Code zeigen, wie der Taster ein Licht 
anmacht, wenn man ihn drückt? Es wäre vorteilhaft wenn dieser schon auf 
den PORT PB0 ausgelegt wäre.

Vielen Dank im Vorraus

von Thomas F. (igel)


Lesenswert?


von Olaf H. (Gast)


Lesenswert?

Das hat mir leider kein Stück weiter geholfen :(
if (!(PINB & (1<<PB0)))
  {
    PORTB |= (1<<PB0);
    _delay_ms(2000);
    PORTC &= ~ (1<<PC2);
  }


  else {
    turnLedOn(BIT_6,1);
    turnLedOn(BIT_7,1);

   }

habe es jetzt so, wenn ich den Taster drücke, gehen die LED's für 2 
sekunden aus

von Karl H. (kbuchegg)


Lesenswert?

Olaf H. schrieb:
> Das hat mir leider kein Stück weiter geholfen :(

Das von dir gepostete ist ja auch kein vollständiged Programm

1
#include <avr/io.h>
2
3
int main()
4
{
5
  DDRC |= ( 1 << PC2 );     // an PC2 hängt die Lampe. Daher den Pin
6
                            // auf Ausgang stellen
7
8
  PORTB |= ( 1 << PB0 );    // An PB0 hängt ein Taster, der nach GND schaltet
9
                            // daher an diesem Pin den Pullup einschalten
10
11
  while( 1 ) {
12
13
    if( !( PINB & (1 << PB0) ) )
14
      PORTC |= ( 1 << PC2 );
15
    else
16
      PORTC &= ~( 1 << PC2 );
17
  }
18
}

das ist einfach nur eine Zusammensetzung aus den Elementen der 
Bitoperationen und dem Wissen, was man im DDR Register machen muss 
um einen Pin auf Ausggang zu kriegen, bzw. Taster an den µC 
angeschlossen werden

AVR-GCC-Tutorial

Ob deine Lampe an geht, wenn du den Taster drückst, oder aus, kann ich 
nicht sagen, weil ich  nicht weiß, ob dazu der Ausgangspin auf 1 gehen 
muss oder auf 0. Aber im Falle des Falles die Logik umdrehen, wirst du 
ja wohl noch alleine hinkriegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.