AtTiny25 Status zurücksetzetn

#4017357
Lesenswert?

Nabend,
Ich möchte enen Taster auswerten und damit Relais schalten.
Jetzt blicke ich nicht dadurch, wo ich "oldstate" zurücksetzten muss. 
Könnt ihr mir helfen?


MfG
Jonas
Angehängte Dateien:
#4017365
Lesenswert?

[c]bit oldstate;                   // Merker

void main()
{

     DDB0_bit = 0;              // Setze Eingang
     DDB1_bit = 1;              // Setzte Ausgang
     DDB2_bit = 1;              // SEtze Ausgang

     oldstate = 0;


do {
    if (Button(&PINB, 0, 1, 0)) {              // Taster abfagen
    oldstate = 1;
    }

    if (oldstate && Button(&PINB, 0, 1, 1)) {

    PORTB = PORTB | (1 << DDB1);               // Relais 1 ein
    Delay_ms(2000);
    PORTB = PORTB | (1 << DDB2);               // Relais 2 ein
    Delay_ms(2000);
    DDB2_bit = 0x00;                           // Relais 1 aus
    Delay_ms(2000);
    DDB1_bit = 0x00;                           // Relais 2 aus
    }

    } while(1);

} [c]
Gast #4017369
Lesenswert?

ich würde sagen so:
1
bit oldstate;                   // Merker
2

3
void main()
4
{
5

6
     DDB0_bit = 0;              // Setze Eingang
7
     DDB1_bit = 1;              // Setzte Ausgang
8
     DDB2_bit = 1;              // SEtze Ausgang
9

10
     oldstate = 0;
11

12

13
do {
14
    if (Button(&PINB, 0, 1, 0)) {              // Taster abfagen
15
    oldstate = 1;
16
    }
17

18
    if (oldstate && Button(&PINB, 0, 1, 1)) {
19

20
       PORTB = PORTB | (1 << DDB1);               // Relais 1 ein
21
       Delay_ms(2000);
22
       PORTB = PORTB | (1 << DDB2);               // Relais 2 ein
23
       Delay_ms(2000);
24
       DDB2_bit = 0x00;                           // Relais 1 aus
25
       Delay_ms(2000);
26
       DDB1_bit = 0x00;                           // Relais 2 aus
27
       oldstate  = 0;
28
       }
29

30
    } while(1);
31

32
}
#4017393
Lesenswert?

[c]
bit oldstate;                   // Merker

void main()
{

     DDB0_bit = 0;              // Setze Eingang
     DDB1_bit = 1;              // Setzte Ausgang
     DDB2_bit = 1;              // SEtze Ausgang

     oldstate = 0;


do {
    if (Button(&PINB, 0, 0, 1)) {              // Taster abfagen
    oldstate = 1;
    }

    if (oldstate && Button(&PINB, 0, 0, 0)) {

       PORTB = PORTB | (1 << DDB1);               // Relais 1 ein
       Delay_ms(2000);
       PORTB = PORTB | (1 << DDB2);               // Relais 2 ein
       Delay_ms(2000);
       PORTB = PORTB | (0 << DDB2);               // Relais 1 aus
       Delay_ms(2000);
       PORTB = PORTB | (0 << DDB1);               // Relais 2 aus
       oldstate  = 0;
       }

    } while(1);

}
[c]



So schaltet er garkeine Relais mehr aus. Nurnoch ein.
Gast #4017396
Lesenswert?

Jonas W. schrieb:
> So schaltet er garkeine Relais mehr aus. Nurnoch ein.

ja weil man so auch kein bit löschen kann!

1
void main()
2
{
3

4
     DDB0_bit = 0;              // Setze Eingang
5
     DDB1_bit = 1;              // Setzte Ausgang
6
     DDB2_bit = 1;              // SEtze Ausgang
7

8
     do {
9
          if ( Button(&PINB, 0, 0, 0)) {
10
             PORTB |= (1 << DDB1);               // Relais 1 ein
11
             Delay_ms(2000);
12
             PORTB |= (1 << DDB2);               // Relais 2 ein
13
             Delay_ms(2000);
14
             PORTB &= ~(1 << DDB2);               // Relais 1 aus
15
             Delay_ms(2000);
16
             PORTB &= ~(1 << DDB1);               // Relais 2 aus
17
          }
18
    } while(1);
19
}

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