Variablenzuweisung und modulo-Funktion
Kategorien: MikrocontrollerBei dem Einsatz von Mikrocontrollern für Steuerungs- und Regelungsaufgaben geht es letztendlich um das Einlesen von Werten, das Berechnen von Werten und um die anschließende Ausgabe der neu berechneten Werte.
Wichtig ist hierbei, dass man die Werte, die entstehend speichern kann. Heute geht es darum, wie man den Variablen, die wir in der letzten Folge behandelt haben, Werte zuweist.
Variablenzuweisung
Neben der direkten Zuweisung, wie
- i=5;
- i=j;
- i=P1;
bei denen i,j Variablen sind und P1 für einen PORT steht, von dem man Werte von außen einlesen kann, sind auch Berechnungen, wie
- i=3+2;
- i=i+2;
- i=i*j;
möglich.
Das Rechnen mit Variablen wird in dem heutigen Video gezeigt.
Die modulo-Funktion
Im zweiten Teil geht es um die modulo-Funktion.
Mit Hilfe des modulo-Operators %, kann der Rest einer Division ausgegeben werden. Dieser Operator wird sehr häufig für zyklisches Zählen verwendet. Dies ist oft nötig, wenn eine bestimmte Tätigkeit n-mal durchgeführt werden soll.
Beispiel:
5 % 2 ergibt 1 (denn 5/2=2, Rest 1).
Ein Beispiel findet Ihr im Video.
Jetzt bist Du wieder an der Reihe.
Nutze die modulo-Funktion, um in der Endlosschleife while(1) Zahlen von 0 bis 4 auszugeben.
Die Ausgabe soll also folgendermaßen aussehen:
0
1
2
3
4
0
1
2
3
4
…
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]
|
Ähnliche Artikel
Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:
Keinen passenden
|
Synchroner Modulo 6 Vorwärts-/Rückwärtszählers mit JK-Master-Slave-Flipflops Eine häufige Aufgabenstellung, besonders auch im Zentral-Abitur an den Beruflichen Gymnasien in Bade...
Lösung für eine Funktion zur Münzeingabe Im heutigen Artikel möchte ich eine mögliche Lösung für die Aufgabe aus dem letzten Artikel, nämlich...
Funktionen in C, Parameterübergabe In der letzten Folge hatte ich bereits erläutert, wie Compiler und Linker und anschließend auch das ...
Bedingungen und Vergleiche In der heutigen Folge stelle ich das Vergleichen von Ausdrücken in Bedingungen vor. Bedingungen wer...



... dann hilft vielleicht 

Mein Name ist Wolfgang Bengfort. Ich bin Lehrer für Elektrotechnik und Technische Informatik und habe im September 2009 diese Seite gestartet. 
Hallo Wolfgang,
was habe ich hier falsch gemacht?
void main(void)
int i,j;
undsoweiter
while(1) {
i=5;
j=i%5;
printf(“j=%d\n”,j);
i=i+1
}
i wird dabei nicht um 1 incrementiert.
Es fehlt noch eine Begrenzung auf j=4, die muß ich mir noch überlegen.
Danke für Deine Hilfe.
Gruß Willi
Hallo Willi,
am Ende der while(1)-Schleife inkrementierst Du i.
Im ersten Befehl überschreibt Du aber i mit i=5; .
i ist also immer 5.
Viele Grüße
Wolfgang
Danke für den Hinweis. Nun funktioniert es einwandfrei.
Schönes Wochenende.
Willi
Hallo Herr Bengfort,
mein Name ist Heinrich Häring und ich besuche diese Internetseite weil mich die Elektronik wie Mikroprozesstechnik interessiert. Die Programierung ist für mich Neuland aber ich habe Spaß daran
und verbringe gerne meine Freizeit (die allerdings nicht allzu groß ist) am Computer.
Ich hoffe die Aufgabe die sie uns gestellt haben richtig gemacht zu haben.
Wenns besser oder schneller geht, bitte korrigieren. Danke !!
Wäre auch nicht schlecht zu überlegen, die while-schleife nach n-Durchgang zu stoppen.
#include
#include
main(){
int i;
while(1){
i=5;
i=i%5;
printf (“i=%d\n”,i);
i= i%5+1;
printf (“i=%d\n”,i);
i=i%5+1;
printf(“i=%d\n”,i);
i=i%5+1;
printf(“i=%d\n”,i);
i=i%5+1;
printf(“i=%d\n”,i);
system(“PAUSE”);
}
}
Hallo Heinrich Häring,
so war es eigentlich nicht gemeint.
Sie inkrementieren in jedem Befehl i und schreiben die gleiche Befehlsfolge 5 mal auf.
Elegenater und platzsparender (ein Mikrocontroler hat nur wenig Speicher) ist es, wenn man in der while-Schleife den Befehl 1x einträgt und dann die Schleife so programmiert, dass die Befehlsfolge in jeder Schleife mit den gewünschten Variablenwerten durchlaufen wird.
Willis Lösung hat z.B. diesen Ansatz.
In der Folge am Dienstag werde ich eine mögliche Lösung zeigen …
i=5;
j=2;
while (1) {
j=j%i;
printf(“j:%d\n”,j);
j++;
}