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
Gast
#4017360
kannst du nicht einfach den Quelltext posten, dann könnte man ihn editieren.
[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
ich würde sagen so:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
Das klappt nicht. Das programm läuft dann einmal durch und dann ist Ende. Es sollaber öfter klappen.
Gast
#4017376
Jonas W. schrieb: > Das klappt nicht. Das programm läuft dann einmal durch und dann ist > Ende. Es sollaber öfter klappen. keine Ahnung was du Funktion
1 | |
macht, gibt es dafür eine Doku? Vermutlich brauchst du nicht mal deinen Merker.
Der Button an Port B0 hat Standartmäßig ein 1 Signal und bekommt ein 0 Signal.
Gast
#4017386
Jonas W. schrieb: > Der Button an Port B0 hat Standartmäßig ein 1 Signal und bekommt ein 0 > Signal. irgendwie ist der code merkwürdig.
1 | |
wenn du es damit einschaltet, warum wird es dann komplett anders ausgeschalter?
1 | |
du schaltet damit den Port auf Eingang und nicht den Ausgang aus!!
[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
Jonas W. schrieb: > So schaltet er garkeine Relais mehr aus. Nurnoch ein. ja weil man so auch kein bit löschen kann!
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Ahhhhhh, jetzt klappt es. War falsch geschrieben. Danke :)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
