Ansicht:   

#158374

Mr. Teflon

26.08.2009, 19:18:00

C - Zählschleife funktioniert nicht wie gedacht ? (pc.coding)

Hallo,

ich komme nicht mehr mit warum das nicht funktioniert wie gedacht.
Ich habe 2 Zähler eingebaut, die abwechselnd bis 100 zählen sollen.

Laut meiner Überlegung müßte es eigentlich so funktionieren.

Am Anfang ist z1 = 100, 1. Schleife wird solange immer wieder durchlaufen bis z2 = 100 ist, dann springt das Programm in die 2. Schleife, z1 wird nebenbei genullt, und durchläuft diese solange bis z1 = 100 ist und z2 wird jetzt erst auf 0 zurückgesetzt. Jetzt wird wieder die 1. Schleife solange durchlaufen bis z2 = 100 ist usw.
Funktioniert jedoch so nicht.
Wo ist mein Denkfehler?

Das soll die Anzeigedauer bestimmter Werte sein und während diese angezeigt werden, sollen ständig aktuelle Werte zur Anzeige gebracht werden. Deshalb möchte ich im Hauptprogramm keine festen Warteschleifen verwenden. Das würde außerdem den Rest des Programms zusätzlich ausbremsen.


// --- Variablen Definition ------
   long z1 = 100;		// Zähler 1
   long z2 = 0;			// Zähler 2


// --- Zähler 1 ------
void Zaehler_1 (void)
{
   z1=z1+1;
}		 
// --- Zähler 2 ------
void Zaehler_2 (void)
{
   z2=z2+1;
}		 
// -----------------------------------------------------------------------

// ***   Hauptprogramm   ************************
void main(void)
{
while (1)				//  Loop  \\\\
   {
	
	if(z1 = 100)
		{  
									
		AD6_on_LCD_COM(); 	            // Aufruf zur \"Temp. Berechnung & Ausgabe auf LCD\" & COM
	
		if(z2 = 100)
			z2 = 0;
			
		Zaehler_2();	
		}     
		
 
	if(z2 = 100)
		{   
		            
	        AD4_on_LCD_COM(); 		     // Aufruf zur Temp. Berechnung & Ausgabe auf LCD und COM 
		
		if(z1 = 100)
			z1 = 0;
			
		Zaehler_1();	
   		}  
  
		  
    }
}

--
___________
Tschau
Mr. Teflon

#158389

Bard

26.08.2009, 20:50:37

@ Mr. Teflon

C - Zählschleife funktioniert nicht wie gedacht ?

> Funktioniert jedoch so nicht.
> Wo ist mein Denkfehler?
>

>
> if(z1 = 100)
> {

Vergleich mit ==

#158543

Mr. Teflon

27.08.2009, 22:58:32

@ Bard

C - Zählschleife funktioniert nicht wie gedacht ?

> > Funktioniert jedoch so nicht.
> > Wo ist mein Denkfehler?
> >
>
> >
> > if(z1 = 100)
> > {
>
> Vergleich mit ==

Hallo,

genau das war der Fehler. Ich bin das noch nicht gewohnt ...

Danke!

--
___________
Tschau
Mr. Teflon

#158751

Solderdot

30.08.2009, 15:07:10

@ Mr. Teflon

C - Zählschleife funktioniert nicht wie gedacht ?

Hi,
erzeugt Dein Compiler da nicht eine Warning? Stell mal die Warning-Sensitivität auf den Maximalwert und gewöhne Dir gleich an, Code zu schreiben, der keine Warnings beim compilieren erzeugt.
Gruß
-- Solderdot

#158771

MudGuard zur Homepage von MudGuard

München,
30.08.2009, 18:12:14

@ Mr. Teflon

C - Zählschleife funktioniert nicht wie gedacht ?

> void Zaehler_1 (void)
> {
> z1=z1+1;

z1++;

(dafür ne extra Funktion zu bauen ist ziemlicher Overhead ...)

> z2=z2+1;
z2++;
(s.o.)

> while (1) // Loop \\\\
> {
>
> if(z1 = 100)

Daß hier == stehen muß, wurde ja schon gesagt.

Daß das hier trotzdem compiliert, liegt daran, daß der Wert der Zuweisung der zugewiesene Wert ist, dieser wird dann auf bool umgewandelt (0 ergibt false, alles andere ergibt true)

Hier steht also im Grunde genommen:

z1 = 100;
if (true)
blabla...

--
[image]
MudGuard
O-o-ostern

#158815

Mr. Teflon

30.08.2009, 21:25:13

@ MudGuard

C - Zählschleife funktioniert nicht wie gedacht ?

> > void Zaehler_1 (void)
> > {
> > z1=z1+1;
>
> z1++;
>
> (dafür ne extra Funktion zu bauen ist ziemlicher Overhead ...)
>
> > z2=z2+1;
> z2++;
> (s.o.)
>
> > while (1) // Loop \\\\
> > {
> >
> > if(z1 = 100)
>
> Daß hier == stehen muß, wurde ja schon gesagt.
>
> Daß das hier trotzdem compiliert, liegt daran, daß der Wert der Zuweisung
> der zugewiesene Wert ist, dieser wird dann auf bool umgewandelt (0 ergibt
> false, alles andere ergibt true)
>
> Hier steht also im Grunde genommen:
>
> z1 = 100;
> if (true)
> blabla...

Hallo,

das die Funktion überflüssig ist sehe ich ein. Ursprünglich war an der Stelle mehr gedacht. Das ist der Rest davon. Kann ich ändern.

Ich verstehe aber nicht warum jetzt von einem \"Compilerfehler\" die Rede sein soll wie Solderdot schon schreibt. Soll der warnen wegen der langen Programmunterbrechung? Verstehe nicht ganz was gemeint ist.

--
___________
Tschau
Mr. Teflon

#158816

Mr. Teflon

30.08.2009, 21:29:26

@ Solderdot

C - Zählschleife funktioniert nicht wie gedacht ?

Hallo,

> erzeugt Dein Compiler da nicht eine Warning? Stell mal die
> Warning-Sensitivität auf den Maximalwert

Wenn ich wüßte wo werde ich das machen. Das ist eine C Entwickungsumgebung für einen Mikro-Controller.

> und gewöhne Dir gleich an, Code zu schreiben, der keine Warnings beim compilieren erzeugt.

Bist ein kleiner Witzbold - was?
Dann wäre ich oder ein anderer der alles was er programmiert fehlerfrei tippt ein sagenhafter Profi. Ne mein Guter, den Menschen gibts nicht.

--
___________
Tschau
Mr. Teflon

#159021

Solderdot

01.09.2009, 10:27:57

@ Mr. Teflon

C - Zählschleife funktioniert nicht wie gedacht ?

Hi,
> > und gewöhne Dir gleich an, Code zu schreiben, der keine Warnings beim
> compilieren erzeugt.
>
> Bist ein kleiner Witzbold - was?
> Dann wäre ich oder ein anderer der alles was er programmiert fehlerfrei
> tippt ein sagenhafter Profi. Ne mein Guter, den Menschen gibts nicht.
da habe ich mich wohl ein wenig missverständlich ausgedrückt. Ich meinte, wenn Dein Code eine Warning erzeugt, der Ursache dafür auf den Grund gehen und den Code derart zu modifizieren, dass die Warning verschwindet. Auf Anhieb ist das sicherlich ein schweres Unterfangen :)
Grüßchen
-- Solderdot

#159022

Solderdot

01.09.2009, 10:33:52

@ Mr. Teflon

C - Zählschleife funktioniert nicht wie gedacht ?

Hi,
> Ich verstehe aber nicht warum jetzt von einem \"Compilerfehler\" die Rede
> sein soll wie Solderdot schon schreibt. Soll der warnen wegen der langen
> Programmunterbrechung? Verstehe nicht ganz was gemeint ist.
Moderne Compiler erkennen typische Programmierfehler und sagen bescheid, indem sie eine Warning erzeugen. Eine Zuweisung in einer Abfrage ist so ein Fall.
Gruß
-- Solderdot

#159198

Mr. Teflon

02.09.2009, 18:26:07

@ Solderdot

C - Zählschleife funktioniert nicht wie gedacht ?

Hallo,

ach\'so. Alles klar.  :-)
Ich habe mal nach einer Warneinstellmöglichkeit im Compilter gesucht, aber noch keine gefunden.

--
___________
Tschau
Mr. Teflon

Ansicht:   
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz