Stefan H. schrieb:
> Außerdem ist das Ausgangssignal zu den LEDs Pulsförmig(Rechteckspannung)
> aber ich möchte ein kontinuierliches Hi. Wie bekomme ich das hin?
Indem du zu allererst mal zur Kentniss nimmst, dass ein µC Programm
immer eine Hauptschleife braucht, in der man das Programm 'gefangen'
hält. Du willst auf keinen Fall haben, dass die Programmausführung aus
main() jemals wieder heraus kommt.
Ein µC Programm sieht konzeptionell immer so aus
1 | int main()
|
2 | {
|
3 |
|
4 | mache alle Initialisierungen
|
5 | konfiguriere die Hardware
|
6 |
|
7 | while( 1 ) { die Hauptschleife
|
8 |
|
9 | hier kommt dann die Programmlogik selber rein
|
10 |
|
11 | }
|
12 | }
|
und innerhalb der Hauptschleife spielt sich dann die eigentliche
Programmlogik ab. Zum Beispiel könnte man dort den Zustand des Pins mit
der Taste mit dem Zustand vom unmittelbar vorhergehenden Durchlauf
vergleichen. Wenn sich die beiden unterscheiden, dann hat offenbar
jemand auf die Taste gedrückt. Bleibt er dann auf der Taste drauf, dann
wird in weiterer Folge bei den Durchläufen durch die Schleife
festgestellt, dass sich der Zustand ab da dann nicht mehr verändert. Bis
dann eben der Benutzer die Taste wieder loslässt.
Also im Prinzip
1 | int main()
|
2 | {
|
3 |
|
4 | ....
|
5 |
|
6 | alt = wie ist der jetzige Tastenzustand
|
7 |
|
8 | while( 1 ) {
|
9 |
|
10 | neu = wie ist der jetzige Tastenzustand
|
11 |
|
12 | if( alt != neu ) {
|
13 |
|
14 | holla, da hat wer an der Taste gefummelt
|
15 | Entweder gedrückt oder losgelassen.
|
16 |
|
17 | if( neu == gedrückt )
|
18 | mach was, wenn die Taste niedergedrückt wurde
|
19 |
|
20 | else
|
21 | die Taste wurde offenbar gerade losgelassen.
|
22 | Bearbeite diesen Fall
|
23 |
|
24 | alt = neu;
|
25 | }
|
26 | }
|
27 | }
|