Kostenloser Elektrotechnik VIDEO-Kurs


mit VIDEO-Reihen zu den Themen:
Grundlagen der Elektrotechnik
Gleichstromnetze und Berechnungsverfahren
Wechselstrom und Drehstromnetze
Elektrische Maschinen
Regelungstechnik
Digitaltechnik
Mikrocontrollertechnik und C-Programmierung


Variablenzuweisung und modulo-Funktion



Bei 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 .]


Hat Dir der Artikel geholfen? - Dann hilf dem Artikel ;-)

Variablenzuweisung und modulo-Funktion:
1 Star2 Stars3 Stars4 Stars5 Stars
5,00 von 5 Punkten, basieren auf 2 abgegebenen Stimmen.
Stimme jetzt ab ! (auf die Sternchen klicken)
Loading ... Loading ...




Ähnliche Artikel

Folgende Artikel aus der gleichen Kategorie könnten Dich ebenfalls interessieren:

Variablenzuweisung – Teil 2 In der Programmiersprache C hat man viele Möglichkeiten die Befehle abzukürzen. C hat daher leider ...

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...

Funktionen in C, Globale und lokale Variablen Was wären Funktionen doch langweilig, wenn sie immer nur das gleiche machen würden. Um Programme eff...

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 ...

{ 11 Kommentare… sie unten lesen oder einen hinzufügen }

Willi

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

Wolfgang Bengfort

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

Willi

Danke für den Hinweis. Nun funktioniert es einwandfrei.
Schönes Wochenende.
Willi

Häring Heinrich

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”);
}
}

Wolfgang Bengfort

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 …

Mischa

i=5;
j=2;
while (1) {
j=j%i;
printf(“j:%d\n”,j);
j++;
}

Asgedom

Was habe ich falsch gemacht
int i,m;
i=5; m=0;
while(1)
{
m=i%5;
i=i+1;
printf(“m= %dn”, m)
}

Asgedom

ich habe doch meinen Fehler gefunden. Bei mir funktioniert das Programm.

danke!

Wolfgang Bengfort

Super, und weiterhin viel Spaß und Erfolg mit dem Kurs.

Leo

Hallo,
ich hab die Aufgabe jetzt so Programmiert:

while(1)
{
i=P1;
i=k+1;
k=i%5;
printf(“k=%d\n”,k);
getchar();
}

jetzt muss ich ja für jede Zahl eine Taste drücken. Gibt es ein Befehl wo ich einmal den Block druchlaufen lasse und erst danach eine Taste drücke für den nächsten druchlauf?

PS: Toller Kurs

Wolfgang Bengfort

Hallo Leo,
ja da kannst Du z.B. mit einer if-Abfrage machen.
Dazu kommen wir noch später im Kurs.

Einen Kommentar hinterlassen