<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Bitweise Manipulation</title>
	<atom:link href="http://et-tutorials.de/1908/bitweise-manipulation/feed/" rel="self" type="application/rss+xml" />
	<link>http://et-tutorials.de/1908/bitweise-manipulation/</link>
	<description>Eletrotechnik verstehen durch Video Tutorials</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:09:57 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>Von: Wolfgang Bengfort</title>
		<link>http://et-tutorials.de/1908/bitweise-manipulation/comment-page-1/#comment-384</link>
		<dc:creator>Wolfgang Bengfort</dc:creator>
		<pubDate>Thu, 08 Apr 2010 10:39:06 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1908#comment-384</guid>
		<description>Hallo Christian,
Zu Frage 1: 
Wenn Du das Bit nicht zurücksetzt, dann wird im nächsten Schleifendurchlauf der Betrag noch einmal addiert, und in allen folgenden auch..

Frage 2: 
Wenn beispielsweise ein 10Ct und ein 5Ct eingeworfen wurde, dann darfst Du nach der Bearbeitung des 5Ct Stücks auch nur dieses Bit zurücksetzen und nicht den gesamten Port  gleich Null setzen, sonst würde die Information für das 10Ct Stück verloren gehen.

Frage 3: 
Mit einer switch-case Abfrage ist das Problem nur über Umwege zu lösen. Mach hier keinen Sinn.</description>
		<content:encoded><![CDATA[<p>Hallo Christian,<br />
Zu Frage 1:<br />
Wenn Du das Bit nicht zurücksetzt, dann wird im nächsten Schleifendurchlauf der Betrag noch einmal addiert, und in allen folgenden auch..</p>
<p>Frage 2:<br />
Wenn beispielsweise ein 10Ct und ein 5Ct eingeworfen wurde, dann darfst Du nach der Bearbeitung des 5Ct Stücks auch nur dieses Bit zurücksetzen und nicht den gesamten Port  gleich Null setzen, sonst würde die Information für das 10Ct Stück verloren gehen.</p>
<p>Frage 3:<br />
Mit einer switch-case Abfrage ist das Problem nur über Umwege zu lösen. Mach hier keinen Sinn.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Christian</title>
		<link>http://et-tutorials.de/1908/bitweise-manipulation/comment-page-1/#comment-383</link>
		<dc:creator>Christian</dc:creator>
		<pubDate>Thu, 08 Apr 2010 10:22:51 +0000</pubDate>
		<guid isPermaLink="false">http://et-tutorials.de/?p=1908#comment-383</guid>
		<description>Hallo Wolfgang,
das Programm funktioniert :-)

Du schreibst in der Aufgabenstellung „Wichtig ist, dass nach einer Bitauswertung nicht der gesamte Port zurückgesetzt wird, sondern nur das im Programm ausgewertete Bit. 

Frage 1: Warum sollte ich das ausgewertete Bit zurücksetzen? Es wird doch im nachfolgenden Programm nicht mehr benötigt?

Frage 2: Genügt es wirklich  ein Bit zurück zu setzen?
Müsste man nicht das ursprüngliche Bitmuster wieder herstellen?
Z.B. 	Merker1 = P1;
	If (P1&amp;0x01)
		{…
		}
	P1=Merker1;

Frage 3: Ich hab bei meinen Lösungsversuchen zunächst versucht das Problem mit einer case (P1&amp;0x01): Anweisung zu lösen. Hat nicht funktioniert. Kann man in einer case Abfrage keine „Funktion“ abfragen?

Viele Grüße
Christian 

Meine Lösung 


while(1)
{
  P1=0;			// Port P1 wird auf den Wert 0 gesetzt

printf(&quot;Bitte ein Getränk auswählen \n k für Kaffe \n e für Espresso \n c für Cappuchino \n&quot;); 
zeichen = getchar();		//Wartet auf eine Eingabe
	
		switch (zeichen)
			{
			case &#039;k&#039;:
			printf(&quot;\n Sie haben Kaffee gewählt \n&quot;);
			Preis = 30;		  //Preis für Kaffee 30 Cent
			break; 

			case &#039;e&#039;:
			printf(&quot;\n Sie haben Espresso gewählt \n&quot;);
			Preis = 40;		  //Preis für Espresso 40 Cent
			break;

			case &#039;c&#039;:
			printf(&quot;\n Sie haben Cappuchino gewählt \n&quot;);
			Preis = 50;		  //Preis für Cappuchino 50 Cent
			break;
			}
					while (Preis-Betrag &gt;0)
					{
					Restbetrag=Preis-Betrag;
						printf(&quot;Bitte werfen Sie %d Cent ein \n&quot;,Restbetrag);
						getchar();
					
							if (P1&amp;0x01)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=1);
														}
							if (P1&amp;0x02)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=2);
														}
							if (P1&amp;0x04)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=5);
														}
							if (P1&amp;0x08)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=10);
														}
							if (P1&amp;0x10)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=20);
														}
							if (P1&amp;0x20)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=50);
														}
							if (P1&amp;0x40)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=100);
														}
							if (P1&amp;0x80)
							{
							printf(&quot;Betrag: %d Cent \n&quot;, Betrag+=200);
														}
							P1=0;
					
					   }
				if (Preis-Betrag &lt;=0)
				Betrag = 0;
				printf(&quot;\n Einen schönen Tag&quot;);
				zeichen=0;
				getchar();</description>
		<content:encoded><![CDATA[<p>Hallo Wolfgang,<br />
das Programm funktioniert <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Du schreibst in der Aufgabenstellung „Wichtig ist, dass nach einer Bitauswertung nicht der gesamte Port zurückgesetzt wird, sondern nur das im Programm ausgewertete Bit. </p>
<p>Frage 1: Warum sollte ich das ausgewertete Bit zurücksetzen? Es wird doch im nachfolgenden Programm nicht mehr benötigt?</p>
<p>Frage 2: Genügt es wirklich  ein Bit zurück zu setzen?<br />
Müsste man nicht das ursprüngliche Bitmuster wieder herstellen?<br />
Z.B. 	Merker1 = P1;<br />
	If (P1&amp;0&#215;01)<br />
		{…<br />
		}<br />
	P1=Merker1;</p>
<p>Frage 3: Ich hab bei meinen Lösungsversuchen zunächst versucht das Problem mit einer case (P1&amp;0&#215;01): Anweisung zu lösen. Hat nicht funktioniert. Kann man in einer case Abfrage keine „Funktion“ abfragen?</p>
<p>Viele Grüße<br />
Christian </p>
<p>Meine Lösung </p>
<p>while(1)<br />
{<br />
  P1=0;			// Port P1 wird auf den Wert 0 gesetzt</p>
<p>printf(&#8220;Bitte ein Getränk auswählen \n k für Kaffe \n e für Espresso \n c für Cappuchino \n&#8221;);<br />
zeichen = getchar();		//Wartet auf eine Eingabe</p>
<p>		switch (zeichen)<br />
			{<br />
			case &#8216;k&#8217;:<br />
			printf(&#8220;\n Sie haben Kaffee gewählt \n&#8221;);<br />
			Preis = 30;		  //Preis für Kaffee 30 Cent<br />
			break; </p>
<p>			case &#8216;e&#8217;:<br />
			printf(&#8220;\n Sie haben Espresso gewählt \n&#8221;);<br />
			Preis = 40;		  //Preis für Espresso 40 Cent<br />
			break;</p>
<p>			case &#8216;c&#8217;:<br />
			printf(&#8220;\n Sie haben Cappuchino gewählt \n&#8221;);<br />
			Preis = 50;		  //Preis für Cappuchino 50 Cent<br />
			break;<br />
			}<br />
					while (Preis-Betrag &gt;0)<br />
					{<br />
					Restbetrag=Preis-Betrag;<br />
						printf(&#8220;Bitte werfen Sie %d Cent ein \n&#8221;,Restbetrag);<br />
						getchar();</p>
<p>							if (P1&amp;0&#215;01)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=1);<br />
														}<br />
							if (P1&amp;0&#215;02)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=2);<br />
														}<br />
							if (P1&amp;0&#215;04)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=5);<br />
														}<br />
							if (P1&amp;0&#215;08)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=10);<br />
														}<br />
							if (P1&amp;0&#215;10)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=20);<br />
														}<br />
							if (P1&amp;0&#215;20)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=50);<br />
														}<br />
							if (P1&amp;0&#215;40)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=100);<br />
														}<br />
							if (P1&amp;0&#215;80)<br />
							{<br />
							printf(&#8220;Betrag: %d Cent \n&#8221;, Betrag+=200);<br />
														}<br />
							P1=0;</p>
<p>					   }<br />
				if (Preis-Betrag &lt;=0)<br />
				Betrag = 0;<br />
				printf(&quot;\n Einen schönen Tag&quot;);<br />
				zeichen=0;<br />
				getchar();</p>
]]></content:encoded>
	</item>
</channel>
</rss>

