<?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=22831&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2020-01-29T21:00:18+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=22831&amp;mode</id>
<entry>
<author><name><![CDATA[Mateo]]></name></author>
<updated>2020-01-29T20:59:30+01:00</updated>
<published>2020-01-29T20:59:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224428#p224428</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224428#p224428"/>
<title type="html"><![CDATA[Re: Wysyłanie połowy bajtu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224428#p224428"><![CDATA[
No tak i już stała się jasność. Dzięki za pomoc. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6107">Mateo</a> — 29 sty 2020, o 20:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gizmo5418]]></name></author>
<updated>2020-01-29T21:00:18+01:00</updated>
<published>2020-01-29T20:36:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224427#p224427</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224427#p224427"/>
<title type="html"><![CDATA[Re: Wysyłanie połowy bajtu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224427#p224427"><![CDATA[
To jest zwykła operacja and, czyli po kolei mamy:<br />[syntax=c]data &amp; 0b00000001       // (1&lt;&lt;0)<br />data &amp; 0b00000010       // (1&lt;&lt;1)<br />data &amp; 0b00000100       // (1&lt;&lt;2)<br />data &amp; 0b00001000       // (1&lt;&lt;3)[/syntax]<br /><br />Jeżeli dany bit w zmiennej <strong>data</strong> ma wartość 1, to wystawiana jest &quot;1&quot; na danym pinie, w przeciwnym wypadku ustawiane jest &quot;0&quot; na danym pinie.<br /><br />Chcąc w ten sposób wysłać całą wartość 8-bitową, to operację musimy powtórzyć dwa razy.<br />Za pierwszym razem wysyłane są młodsze 4 bity. Następnie wartość zmiennej <strong>data</strong> należy przesunąć o 4 bity w prawo<br />[syntax=c]data&gt;&gt;4[/syntax]<br />i ponownie wykonać operację sprawdzania czterech młodszych bitów.<br /><br />Biorąc więc ta Twoją przykładową liczbę <strong>0b01010000</strong> Będziemy mieć:<br />[syntax=c]0b01010000 &amp; 0b00000001   = 0 pin_D4 = 0    // (1&lt;&lt;0)<br />0b01010000 &amp; 0b00000010    = 0, pin D5 = 0    // (1&lt;&lt;1)<br />0b01010000 &amp; 0b00000100     = 0, pin D6 = 0  // (1&lt;&lt;2)<br />0b01010000 &amp; 0b00001000      = 0, pin D7 = 0 // (1&lt;&lt;3)<br /><br />0b01010000 &gt;&gt; 4 = 0b00000101<br /><br />0b00000101 &amp; 0b00000001  = 1, pin D4 = 1<br />0b00000101 &amp; 0b00000010  = 0, pin D5 = 0<br />0b00000101 &amp; 0b00000100  = 1, pin D6 = 1<br />0b00000101 &amp; 0b00001000  = 0, pin D7 = 0[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1967">gizmo5418</a> — 29 sty 2020, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mateo]]></name></author>
<updated>2020-01-29T20:08:29+01:00</updated>
<published>2020-01-29T20:08:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224425#p224425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224425#p224425"/>
<title type="html"><![CDATA[Wysyłanie połowy bajtu LCD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22831&amp;p=224425#p224425"><![CDATA[
Cześć,<br /><br />Panowie pomóżcie mi dokładnie zrozumieć fragment kodu z książki Pana Mirka. A mianowicie: <br /><br />[syntax=c]//----------------------------------------------------------------------------------------<br />//<br />// Wysłanie połówki bajtu do LCD (D4..D7)<br />//<br />//----------------------------------------------------------------------------------------<br />static inline void lcd_sendHalf(uint8_t data)<br />{<br />if (data&amp;(1&lt;&lt;0)) PORT(LCD_D4PORT) |= (1&lt;&lt;LCD_D4); else PORT(LCD_D4PORT) &amp;= ~(1&lt;&lt;LCD_D4);<br />if (data&amp;(1&lt;&lt;1)) PORT(LCD_D5PORT) |= (1&lt;&lt;LCD_D5); else PORT(LCD_D5PORT) &amp;= ~(1&lt;&lt;LCD_D5);<br />if (data&amp;(1&lt;&lt;2)) PORT(LCD_D6PORT) |= (1&lt;&lt;LCD_D6); else PORT(LCD_D6PORT) &amp;= ~(1&lt;&lt;LCD_D6);<br />if (data&amp;(1&lt;&lt;3)) PORT(LCD_D7PORT) |= (1&lt;&lt;LCD_D7); else PORT(LCD_D7PORT) &amp;= ~(1&lt;&lt;LCD_D7);<br />}[/syntax]<br /><br />Proszę tylko o zrozumienie bo pewnie problem jest banalnie prosty. A tyczy się to przesunięciom bitowym. <br /><br />Chcąc wysłać do wyświetlacza informację np. 0x50; Czyli bitowo: 0b01010000;<br /><br />To jak będzie wyglądała dana dla każdej lini D4 do D7. <br /><br /><br />Albo prościej, nie rozumiem do końca tej częśći kodu:<br /><br />[syntax=c]data&amp;(1&lt;&lt;0)   //D4<br />data&amp;(1&lt;&lt;1)   //D5<br />data&amp;(1&lt;&lt;2)   //D6<br />data&amp;(1&lt;&lt;3)   //D7[/syntax]<br /><br /><br />Więc jeśli data będzie miała wartość: 0b01010000;  to jak będzie wyglądała informacja na lini D4 do D7 po przesunięciu bitowym.<br />Chyba, że ja coś zaczynam mieszać to proszę was o wyjaśnienie co się dzieję krok po kroku bo już dostaję białej gorączki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6107">Mateo</a> — 29 sty 2020, o 20:08</p><hr />
]]></content>
</entry>
</feed>