<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=4589&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-10-27T08:00:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4589&amp;mode</id>
<entry>
<author><name><![CDATA[konrad1115]]></name></author>
<updated>2013-10-27T08:00:16+01:00</updated>
<published>2013-10-27T08:00:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54442#p54442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54442#p54442"/>
<title type="html"><![CDATA[Re: problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54442#p54442"><![CDATA[
OK dzięki już rozumiem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1926">konrad1115</a> — 27 paź 2013, o 08:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-10-26T23:52:39+01:00</updated>
<published>2013-10-26T23:52:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54430#p54430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54430#p54430"/>
<title type="html"><![CDATA[Re: problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54430#p54430"><![CDATA[
<strong>GwynBleidD</strong>  bit <br />0b1xxxxxxx  <br />0b1xxxxxxx <br />będzie jedynka<strong>1</strong><br />ale <br />0b0xxxxxxx<br />ob0xxxxxxx<br />będzie już 0<br />wpólny bit musi być wiekszy od 0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 26 paź 2013, o 23:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-10-26T21:54:27+01:00</updated>
<published>2013-10-26T21:54:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54409#p54409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54409#p54409"/>
<title type="html"><![CDATA[Re: problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54409#p54409"><![CDATA[
<a href="http://forum.atnel.pl/_obrazki/o/1824/17657cb11022f41a37d109b41fdf0752.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1824/17657cb11022f41a37d109b41fdf0752.png" alt="Obrazek" /></a><br /><br />Jest to tak zwana Algebra Boole'a.<br />Poczytaj. masz jakąś atmege i  diody przetestuj.<br />Więcej się nauczysz podczas tego niż myślisz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 26 paź 2013, o 21:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[konrad1115]]></name></author>
<updated>2013-10-26T21:32:09+01:00</updated>
<published>2013-10-26T21:32:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54408#p54408</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54408#p54408"/>
<title type="html"><![CDATA[Re: problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54408#p54408"><![CDATA[
mam jeszcze jedno pytanie wynikiem operacji #define key_down !(PINC &amp; key_pin) jest 10111111 czy 00000000 ????<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1926">konrad1115</a> — 26 paź 2013, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-10-26T19:07:01+01:00</updated>
<published>2013-10-26T19:07:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54394#p54394</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54394#p54394"/>
<title type="html"><![CDATA[Re: problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54394#p54394"><![CDATA[
[syntax=c]#define led_pin (1&lt;&lt;PC7)[/syntax]<br />Pod nazwą PC7 kryje się liczba 7, więc zostanie wykonane 1&lt;&lt;7, czyli 0b00000001 &lt;&lt; 7 np.<br /> 0b00000001&lt;&lt;0 = 0b00000001<br /> 0b00000001&lt;&lt;1 = 0b00000010<br /> 0b00000001&lt;&lt;2 = 0b00000100 itd.<br />[syntax=c]#define led_tog PORTC ^= led_pin[/syntax]<br />PORTC ^= led_pin to to samo co PORTC = PORTC ^ led_pin oraz PORTC = PORTC ^ 0b10000000<br />^ to operator bitowy, który ma taką tablicę prawdy:<br />0 ^ 0 = 0<br />0 ^ 1 = 1<br />1 ^ 0 = 1<br />1 ^ 1 = 0<br />Mówiąc krótko jak pierwszy z argumentów jest 1 to wynikiem jest przeciwna wartość drugiego argumentu i to jest robione powyżej tylko, że na wszystkich bitach np. 0b11110000 ^ 0b01010101 = 0b(1^0)(1^1)(1^0)(1^1)(0^0)(0^1)(0^0)(0^1) = 0b10100101, a skoro druga liczba to 0b10000000 to na przeciwny zamieniany jest najstarszy bit (pierwszy od lewej)<br />[syntax=c]#define key_down !(PINC &amp; key_pin)[/syntax]<br />Zacznijmy od tego co w nawiasie PINC &amp; key_pin  = PINC &amp; 0b01000000 to iloczyn logiczny, który ma taką tablicę prawdy:<br />0 &amp; 0 = 0 //0*0 = 0<br />0 &amp; 1 = 0<br />1 &amp; 0 = 0<br />1 &amp; 1 = 1<br />Jeżeli chociaż jeden z argumentów jest 0 to wynik jest 0. Wynik jest obliczany na wszystkich bitach np. 0b11110000 &amp; 0b01010101 = 0b01010000 i służy to tutaj do sprawdzenia stanu 6 bitu PINC, bo działanie 0byXyyyyyy &amp; 0b01000000 = 0b0X000000 i jak X = 1 to wynikiem jest 0b01000000, a jak X jest 0 to wynikiem jest 0b00000000. W języku C każda wartość większa od 0 to prawda, a 0 to fałsz zatem dla X = 1 wyrażenie w nawiasach jest prawdą, a dla X = 0 wynikiem wyrażenia w nawiasach jest fałsz.<br />! to negacja <em>logiczna</em>, czyli taka która traktuje liczbę jako całość (w porównaniu do operatorów bitowych, które działają na poszczególnych bitach) i zamienia prawdę na fałsz i na odwrót). Całkowity wynik jest jak widać zanegowany.<br />[syntax=c]DDRC |= led_pin;[/syntax]<br />Tablica prawdy dla sumy bitowej:<br />0 | 0 = 0 //0+0=0<br />0 | 1 = 1<br />1 | 0 = 1<br />1 | 1 = 1<br />Działanie wykonywane jest na wszystkich bitach np. 0b11110000 &amp; 0b01010101 = 0b11110101. Jak chociaż jeden z argumentów jest 1 to wynik jest 1. Wykorzystane jest to tutaj do ustawienia najstarszego bitu DDRC na 1, a pozostałe będą niezmienione. Nie musimy znać stanu tego bitu. Na pewno po tej operacji będzie 1.<br />[syntax=c]DDRC &amp;= ~key_pin;[/syntax]<br />Operator &amp; był omówiony. Kolejny ~służy do negacji wszystkich bitów np. ~0b11110000 = 0b00001111. W wyniku negacji bitowej key_pin otrzymamy ~0b01000000 = 0b10111111. Tutaj z kolei wykorzystane jest to do wyzerowania 6 bitu DDRC (pozostałe zostaną niezmienione). Nie musimy znać jego stanu, po tej operacji na pewno będzie 0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 26 paź 2013, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[konrad1115]]></name></author>
<updated>2013-10-26T17:33:30+01:00</updated>
<published>2013-10-26T17:33:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54383#p54383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54383#p54383"/>
<title type="html"><![CDATA[problem z operacjami na bitach w prostym programie c]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4589&amp;p=54383#p54383"><![CDATA[
witam mógłby ktoś opisać kolejne operacje bitowe bo troche się w tym gubie i nie moge sobie dać z tym rady<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//definicje<br />#define led_pin (1&lt;&lt;PC7)<br />#define led_tog PORTC ^= led_pin<br />#define key_pin (1&lt;&lt;PC6)<br />#define key_down !(PINC &amp; key_pin)<br /><br />int main (void)<br />{<br />DDRC |= led_pin;<br />PORTC |= led_pin;<br />DDRC &amp;= ~key_pin;<br />PORTC |= key_pin;<br /><br />while (1)<br />{<br />if (key_down)<br />{<br />_delay_ms(80);<br />if (key_down)<br />{<br />led_tog;<br />_delay_ms(200);<br />}<br />}<br />}<br />}[/syntax]<br /><br /><span style="color: #FF0000">Kody wklejamy przy pomocy syntax=c - Różowy J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1926">konrad1115</a> — 26 paź 2013, o 17:33</p><hr />
]]></content>
</entry>
</feed>