Ja. Schön.
Jetzt hast du aber die Regeln ein wenig verändert. Du hast einen Art
Notstop eingeführt, nach dessen Betätigung der Haupttaster an PC0 keine
Funktion mehr haben soll
Also
1 | int main()
|
2 | {
|
3 | int NotstopActivated;
|
4 |
|
5 | ...
|
dieser Notstop ist natürlich am Anfang abgeschaltet (0 ist aus, 1 ist
ein)
Also
1 | int main()
|
2 | {
|
3 | int NotstopActivated;
|
4 |
|
5 |
|
6 | ...
|
7 |
|
8 | NotstopActivated = 0;
|
9 |
|
10 | ...
|
11 |
|
12 | while(1)
|
13 | {
|
14 | ....
|
Damit kommen wir zur Logik:
Wenn darf bzw. soll das Licht brennen. Es darf nur dann brennen wenn der
Eingang1 (PC0) betätigt wird UND der Notstop noch nicht betätigt wurde.
Ob der Notstop betätigt wurde sagt und die Variable NotstopActivated.
Solange die 0 ist, ist alles in Ordnung. Also
1 | int main()
|
2 | {
|
3 | int NotstopActivated;
|
4 |
|
5 |
|
6 | ...
|
7 |
|
8 | NotstopActivated = 0;
|
9 |
|
10 | ...
|
11 |
|
12 | while(1)
|
13 | {
|
14 | if( Eingang1 && NotstopActivated == 0 )
|
15 | Ausgang;
|
16 | else
|
17 | AUS;
|
Was wissen wir noch über die Logik.
Na, sobald der PC1 betätigt wird, soll das als Notstop gelten und alle
Aktivität am Pin eingestellt werden. Dazu reicht es, das Flag
entsprechend zu stellen, denn darin wird ja festgehalten ob der Notstop
betätigt wurde
1 | int main()
|
2 | {
|
3 | int NotstopActivated;
|
4 |
|
5 |
|
6 | ...
|
7 |
|
8 | NotstopActivated = 0;
|
9 |
|
10 | ...
|
11 |
|
12 | while(1)
|
13 | {
|
14 | if( Eingang1 && NotstopActivated == 0 )
|
15 | Ausgang;
|
16 | else
|
17 | AUS;
|
18 |
|
19 | if( Eingang2 )
|
20 | NotstopActivated = 1;
|
21 | }
|
22 | }
|