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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-23T10:26:21+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2928&amp;mode</id>
<entry>
<author><name><![CDATA[pagosa747]]></name></author>
<updated>2013-04-23T10:26:21+01:00</updated>
<published>2013-04-23T10:26:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35035#p35035</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35035#p35035"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35035#p35035"><![CDATA[
Witam .<br />Algorytmy tak na prawdę nie są trudne ( czasem nieskończone diagramy odstraszają ) najważniejsze to odpowiedzieć na pytania :<br />co program ma robić i kiedy ?<br />Odpowiedzią na &quot;co ma robić ?&quot; są funkcje programu a odpowiedzią na &quot;kiedy ?&quot; to warunki wykonania tych funkcji . Prawidłowo formułując warunki można z powodzeniem napisać program bez goto czyli skoku bezwarunkowego .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=629">pagosa747</a> — 23 kwi 2013, o 10:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T10:09:28+01:00</updated>
<published>2013-04-23T10:09:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35034#p35034</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35034#p35034"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35034#p35034"><![CDATA[
Sam czytam do poduszki Algorytmy w C++ <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, no i podstawa Algorytmy + struktury danych = Programy i jeszcze Algorytmy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, taka przepastna książka <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />. <br />No miało się 5.0 z algorytmów dzięki tym cegłom.<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 10:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Markus]]></name></author>
<updated>2013-04-23T10:06:41+01:00</updated>
<published>2013-04-23T10:06:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35033#p35033</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35033#p35033"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35033#p35033"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />(...) Napisz gdzieś na kartce sobie algorytm po kolei co robi i staraj się zmienić tak by nie było goto...... (...)<br /></div><br /><br />Na moich studiach dobrze narysowany algorytm to była podstawa przed napisaniem kodu... tylko kiedy to było  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" />  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />   Są jakieś kursy albo ćwiczenia do rysowania algorytmów? Warto odświeżyć sobie pamięć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1055">Markus</a> — 23 kwi 2013, o 10:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-23T09:38:21+01:00</updated>
<published>2013-04-23T09:38:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35028#p35028</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35028#p35028"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35028#p35028"><![CDATA[
<div class="quotetitle">klonyyy napisał(a):</div><div class="quotecontent"><br />Co do książki= czytałem ją 10 miesięcy temu, jak widać nie dokładnie, ale pewnie niedługo przeczytam ją ponownie.<br /></div><br /><br />ooo jej, 10 mies temu to może i nawet dokładnie czytałeś, ale jak widzisz nasza pamięć RAM ludzka jest zawodna i ulotna, a nie mamy wbudowanego EEPROM'a <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> hahahaah Ja też bym pozapominał wiele rzeczy, a z książką tego typu techniczną - gdy np uczę się ostatnio JAVA to po prostu wciąż siedzę i ją wertuję gdy jestem w kodzie. Takich książek nie da rady raz przeczytać jak powieść - bo ta nasza pamięć .... eeeeh pamięć - tym bardziej u mnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ze sklerozą <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">klonyyy napisał(a):</div><div class="quotecontent"><br />W jaki sposób mogę pozbyć się instrukcji goto ?<br /></div><br /><br />dość proste , WUKASUJ każde goto, i postaraj się zrobić porządny ERASE mózgu żeby całkowicie zapomnieć, wtedy twoje neurony same będą szukać nowych rozwiązań i je znajdą - zapewniam cię <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> zresztą koledzy wyżej słusznie podpowiadają.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 kwi 2013, o 09:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T09:33:34+01:00</updated>
<published>2013-04-23T09:33:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35027#p35027</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35027#p35027"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35027#p35027"><![CDATA[
A chociaż by wykorzystując break, w while, case itp.<br />Musiał byś sobie jeszcze raz przemyśleć ten fragment kodu.<br />Napisz gdzieś na kartce sobie algorytm po kolei co robi i staraj się zmienić tak by nie było goto......<br /><br />No i tak to jest jak się w pracy, piszę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, Ledes był pierwszy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />..<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 09:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-04-23T09:31:35+01:00</updated>
<published>2013-04-23T09:31:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35026#p35026</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35026#p35026"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35026#p35026"><![CDATA[
Po prostu ją wywal. To samo uzyskasz dobierając odpowiednio instrukcje break, continue, ify<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 23 kwi 2013, o 09:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2013-04-23T09:32:17+01:00</updated>
<published>2013-04-23T09:26:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35024#p35024</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35024#p35024"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35024#p35024"><![CDATA[
<div class="codetitle"><b>Code:</b></div><div class="codecontent">Program:   10892 bytes (66.5% Full)<br />(.text + .data + .bootloader)<br /><br />Data:        507 bytes (49.5% Full)<br />(.data + .bss + .noinit)<br /><br />EEPROM:        7 bytes (1.4% Full)<br />(.eeprom)<br /><br /><br />Finished building: sizedummy<br /> </div><br /><br />Chyba nie wymaga komentarza <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Dzięki Wam wszystkim ! <br /><br />Co do książki= czytałem ją 10 miesięcy temu, jak widać nie dokładnie, ale pewnie niedługo przeczytam ją ponownie.<br /><br />W jaki sposób mogę pozbyć się instrukcji goto ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 23 kwi 2013, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T09:23:32+01:00</updated>
<published>2013-04-23T09:23:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35023#p35023</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35023#p35023"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35023#p35023"><![CDATA[
No fakt wywaliłem odrobinę funkcji (odkomentowałem) ale wszystkie napisy poszły w Flash i proszę taki wynik<br /><br />Device: atmega16<br /><br />Program:    2852 bytes (17.4% Full)<br />(.text + .data + .bootloader)<br /><br />Data:         84 bytes (8.2% Full)<br />(.data + .bss + .noinit)<br /><br />EEPROM:        7 bytes (1.4% Full)<br />(.eeprom)<br /><br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 23-04-2013<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br /><br />    #include &lt;avr/io.h&gt;<br />//    #include &quot;kbd4x4.h&quot;<br />    #include &lt;avr/pgmspace.h&gt;<br />    #include &lt;avr/eeprom.h&gt;<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br /><br />    #include &quot;LCD/lcd44780.h&quot;<br />    #include &quot;MK_USART/mkuart.h&quot;<br />//    #include &quot;funkcje.h&quot;<br /><br /><br />    #define EEMEM __attribute__((section(&quot;.eeprom&quot;)))<br />    #define WIB PORTA|=(1&lt;&lt;PA7);<br />    #define STPWIB  PORTA&amp;=~(1&lt;&lt;PA7);<br />    #define KEY_PIN (1&lt;&lt;PD3)<br />    #define KEY_DOWN !(PIND &amp; KEY_PIN)<br />    #define CZAS_WIB 30<br /><br />    char const PROGMEM tab1&#91;&#93; = {&quot;FLASH&quot;};<br />    char EEMEM tab2&#91;&#93; = {&quot;EEPROM&quot;};<br /><br />    volatile uint8_t pwm1, pwm2, pwm3;<br /><br /><br />    uint8_t lat;<br />    uint8_t b=-1;<br />    unsigned char l;<br />    uint8_t tab&#91;4&#93;;<br />    uint8_t ta&#91;4&#93;={0,1,2,15};<br /><br />    //int q&#91;35&#93;={0,1,0,1,1,0,1,/**/1,0,1,0,1,0,1,/**/0,1,0,1,0,0,1,/**/1,0,1,1,0,1,0,/**/1,0,0,1,0,1,0};<br />    //uint8_t g&#91;7&#93;;<br />    //uint8_t j;<br />    //uint8_t s,q0,q1,q2,q3,q4,q5,q6,q7;<br />    //uint8_t lvl,m0,m1,m2,m3,m4,m5,m6,m7;<br />    //uint8_t x=1;<br />    //uint8_t l1=13;<br />    //uint8_t cz=200;<br /><br /><br />    uint8_t backslash&#91;&#93;=<br />    {<br />    0b00000000,//back slash<br />    0b00010000,<br />    0b00001000,<br />    0b00000100,<br />    0b00000010,<br />    0b00000001,<br />    0b00000000,<br />    0b00000000<br />    };<br /><br />    uint8_t latarka&#91;&#93;=<br />    {<br />    0b00011111,//back slash<br />    0b00011111,<br />    0b00001110,<br />    0b00001110,<br />    0b00001110,<br />    0b00001110,<br />    0b00001110,<br />    0b00000000<br />    };<br /><br />    uint8_t pdkr&#91;&#93;=<br />    {<br />    0b00000000,//back slash<br />    0b00000000,<br />    0b00000000,<br />    0b00000000,<br />    0b00000000,<br />    0b00000000,<br />    0b00011111,<br />    0b00000000<br />    };<br /><br /><br />    unsigned char uart_rx( void )<br />    {<br />    while ( !(UCSRA &amp; (1&lt;&lt;RXC)) ); //poczekaj na dane<br />    return UDR;                                             // zwroc dane z bufora<br />    }<br /><br />    void uart_tx( unsigned char data )<br />    {<br /><br />    while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) ); //czekaj az bufor sie oprozni<br />    UDR = data;                             //wyslij dane<br />    }<br /><br />    uint8_t sw(void)<br />    {<br />            if( KEY_DOWN )                                  // klawisz wciśnięty ?<br />            {<br />                    _delay_ms(80);                          // czas drgań styków<br />                    if( KEY_DOWN ) return 1;        // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />            }<br /><br />            return 0;       // jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />    }<br /><br />    void wib(void)<br />    {<br />        WIB;<br />        _delay_ms(CZAS_WIB);<br />        STPWIB;<br />    }<br /><br />    void piotrek(void)<br />    {<br />                     WIB;<br />                      lcd_locate(0,0);<br />                      lcd_str_P(PSTR(&quot;Czesc Piotrek ;D&quot;));<br />                      _delay_ms(1000);<br />                      lcd_cls();<br /><br />                            if(lat==1)<br />                            {<br />                                    lcd_defchar(0x80, latarka);<br />                                    lcd_locate(1,15);<br />                                    lcd_str_P(PSTR(&quot;\x80&quot;));<br />                            }<br />                    STPWIB;<br /><br /><br />    }<br /><br />    //void jak_masz_na_imie(void)<br />    //{<br />    //      lcd_locate(0,0);<br />    //      lcd_str_P(PSTR(&quot;jak masz na imie&quot;);<br />    //      lcd_locate(1,0);<br />    //      lcd_str_P(PSTR(&quot;wpisz swoje imie&quot;);<br />    //      _delay_ms(1000);<br />    //      lcd_cls();<br />    //<br />    //}<br /><br />    void f_start(void)<br />    {<br />             y:<br />                lcd_cls();<br />                    lcd_locate(0,0);<br />                    lcd_str_P(PSTR(&quot;podaj haslo:&quot;));<br />                 uint8_t i=0;<br /><br />                            while(i&lt;4)<br />                            {<br />                                   // b=getkbd();<br /><br />                                    if(b&gt;=0 &amp;&amp; b&lt;255)<br />                                    {<br />                                            tab&#91;i&#93;=b;<br />                                            lcd_locate(1,i);<br />                                            lcd_str_P(PSTR(&quot;*&quot;));<br />                                                    i++;<br />                                                    _delay_ms(300);<br />                                    }<br />                            }<br />                       for(uint8_t a=0;a&lt;4;a++)<br />                       {<br />                               if(tab&#91;a&#93;==ta&#91;a&#93;)<br />                               {<br />                         if(a==3)piotrek();<br />                               }<br />                               else<br />                               {<br /><br />                                        lcd_locate(1,2);<br />                                            lcd_str_P(PSTR(&quot;*&quot;));<br />                                            lcd_cls();<br />                                            _delay_ms(50);<br />                                            lcd_locate(0,0);<br />                                            lcd_str_P(PSTR(&quot;zle haslo&quot;));<br />                                            _delay_ms(1000);<br />                                            lcd_cls();<br />                                            lcd_locate(0,0);<br />                                            lcd_str_P(PSTR(&quot;sproboj ponownie&quot;));<br />                                            _delay_ms(1000);<br />                                            goto y;<br />                                    }<br />                       }<br /><br />    }<br /><br /><br />    void haslo(void)<br />    {<br />      y:<br />            lcd_cls();<br />            lcd_locate(0,0);<br />            lcd_str_P(PSTR(&quot;haslo cwaniaku:&quot;));<br />             uint8_t i=0;<br /><br />                    while(i&lt;4)<br />                    {<br />                           // b=getkbd();<br /><br />                            if(b&gt;=0 &amp;&amp; b&lt;255)<br />                            {<br />                                    tab&#91;i&#93;=b;<br />                                    lcd_locate(1,i);<br />                                    lcd_str_P(PSTR(&quot;*&quot;));<br />                                            i++;<br />                                            _delay_ms(300);<br />                            }<br />                    }<br />               for(uint8_t a=0;a&lt;4;a++)<br />               {<br />                       if(tab&#91;a&#93;==ta&#91;a&#93;)<br />                       {<br />                             if(a==3);//jdarka(lat ,latarka, backslash );<br />                       }<br />                       else<br />                       {<br /><br />                                    lcd_locate(1,2);<br />                                    lcd_str_P(PSTR(&quot;*&quot;));<br />                                    lcd_cls();<br />                                    _delay_ms(50);<br />                                    lcd_locate(0,0);<br />                                    lcd_str_P(PSTR(&quot;zle haslo&quot;));<br />                                    _delay_ms(1000);<br />                                    lcd_cls();<br />                                    lcd_locate(0,0);<br />                                    lcd_str_P(PSTR(&quot;sproboj ponownie&quot;));<br />                                    _delay_ms(1000);<br />                                    goto y;<br />                            }<br />               }<br /><br />    }<br />    void uspienie(void)<br />    {<br />            lcd_cls();<br />            lcd_locate(0,0);<br />            lcd_str_P(PSTR(&quot;zablokowano&quot;));<br />            lcd_locate(1,0);<br />            lcd_str_P(PSTR(&quot;unlock - SHIFT+0&quot;));<br />            _delay_ms(700);<br />            lcd_cls();<br /><br />     uint8_t l=0;<br />            while(l&lt;1)<br />            {<br />             //b=getkbd();<br /><br />             if(b==0 &amp;&amp; KEY_DOWN )<br />             {<br />                  lcd_locate(0,0);<br />                  lcd_str_P(PSTR(&quot;Odblokowano&quot;));<br />                  _delay_ms(700);<br />                  f_start();<br />                  l++;<br />             }<br />             else if(b&gt;=0 &amp;&amp; b&lt;255)<br />             {<br />                    lcd_locate(1,0);<br />                    lcd_str_P(PSTR(&quot;unlock - SHIFT+0&quot;));<br />                    _delay_ms(700);<br />                    lcd_cls();<br /><br />             }<br /><br />            }<br /><br />    }<br /><br />    int main()<br />    {<br /><br />     DDRA|=(1&lt;&lt;PA7);<br />     PORTA&amp;=~(1&lt;&lt;PA7);<br /><br />     DDRD &amp;= ~KEY_PIN;              // kierunek pinu PC6 - wejściowy<br />     PORTD = 0xff;          // podciągnięcie pinu do VCC<br /><br />            lcd_init();<br /><br />            sei();<br /><br />            USART_Init( __UBRR );<br /><br />            f_start();<br />            uint8_t a=0;<br /><br /><br />            while(1)<br />            {<br /><br /><br />                      //uint8_t a=getkbd();<br /><br />             if(a==0 &amp;&amp; KEY_DOWN)<br />                      {<br />                      uart_puts(&quot;s&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;LATARKA OFF&quot;));<br />                              lcd_locate(0,16);<br />                              lcd_str_P(PSTR(&quot; &quot;));<br />                              lat=0;<br />                              wib();<br /><br />                      }<br /><br />             else if(a==1 &amp;&amp; KEY_DOWN)<br />                      {<br />                      uart_puts(&quot;t&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;LATARKA ON&quot;));<br />                              lcd_locate(0,0);<br />                              lcd_defchar(0x80, latarka);<br />                              lcd_locate(1,15);<br />                              lcd_str_P(PSTR(&quot;\x80&quot;));<br />                              lat=1;<br />                              wib();<br /><br />                      }<br />              else if(a==2 &amp;&amp; KEY_DOWN)<br />                      {<br />                      uart_puts(&quot;u&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;kut&quot;));<br />                              lcd_locate(0,0);<br />                              //lcd_defchar(0x80, kut);<br />                              lcd_locate(1,0);<br />                              lcd_str_P(PSTR(&quot;\x80&quot;));<br />                              wib();<br /><br />                      }<br /><br />              else if(a==4 &amp;&amp; KEY_DOWN)<br />                      {<br />                      uart_puts(&quot;x&quot;);<br /><br /><br />                      l=uart_getc();<br /><br />                  if(l=='3')<br />                  {<br />                      lcd_cls();<br />                      lcd_locate(1,0);<br />                      lcd_str_P(PSTR(&quot;reka pusta&quot;));<br />                      _delay_ms(500);<br /><br />                  }<br />                  else if(l=='4')<br />                  {<br />                      lcd_locate(1,0);<br />                      lcd_str_P(PSTR(&quot;trzymam&quot;));<br />                      _delay_ms(500);<br />                  }<br /><br />                              wib();<br />                      }<br />              else if(a==5 &amp;&amp; KEY_DOWN)<br />                      {<br />                      uart_puts(&quot;y&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;GRA&quot;));<br />                              //gra();<br />                              wib();<br />                      }<br />              else if(a==15 &amp;&amp; KEY_DOWN)<br />                      {<br /><br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Zablokowac ?&quot;));<br />                              lcd_locate(1,0);<br />                              lcd_str_P(PSTR(&quot;NIE-0&quot;));<br />                              lcd_locate(1,7);<br />                              lcd_str_P(PSTR(&quot;TAK-1&quot;));<br />                  uint8_t k=0;<br /><br />                                    while(k&lt;1)<br />                                    {<br />                            // b=getkbd();<br /><br />                             if(b==0)<br />                             {<br /><br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,0);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,1);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,2);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         _delay_ms(700);<br />                                            if(lat==1)<br />                                            {<br />                                                    lcd_defchar(0x80, latarka);<br />                                                    lcd_locate(1,15);<br />                                                    lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                            }<br />                                         k++;<br /><br />                             }<br />                             else if(b==1)<br />                             {<br /><br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,7);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,8);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         lcd_defchar(0x80, pdkr);<br />                                         lcd_locate(1,9);<br />                                         lcd_str_P(PSTR(&quot;\x80&quot;));<br />                                         _delay_ms(700);<br />                                         uspienie();<br />                                         k++;<br /><br /><br />                             }<br /><br />                                    }<br /><br /><br />                      }<br /><br />              else if(a==0)<br />                      {<br /><br />                               uart_puts(&quot;a&quot;);<br />                               lcd_locate(0,0);<br />                   lcd_str_P(PSTR(&quot;Zamykam chwytak&quot;));<br />                   wib();<br />                      }<br />                      else if(a==1)<br />                      {<br />                              uart_puts(&quot;b&quot;);<br />                              lcd_locate(0,0);<br />                  lcd_str_P(PSTR(&quot;Otwieram chwytak&quot;));<br />                  wib();<br />                      }<br /><br />                      else if(a==2)<br />              {<br />                      uart_puts(&quot;c&quot;);<br />                              lcd_locate(0,0);<br />                  lcd_str_P(PSTR(&quot;krece chwytakiem&quot;));<br />                              lcd_locate(1,0);<br />                  lcd_str_P(PSTR(&quot;w lewo&quot;));<br />                  wib();<br />              }<br /><br />                      else if(a==3)<br />              {<br />                      uart_puts(&quot;d&quot;);<br />                              lcd_locate(0,0);<br />                  lcd_str_P(PSTR(&quot;krece chwytakiem&quot;));<br />                              lcd_locate(1,0);<br />                  lcd_str_P(PSTR(&quot;w prawo&quot;));<br />                  wib();<br />              }<br /><br />                      else if(a==4)<br />                      {<br />                              uart_puts(&quot;e&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Chwytak gora&quot;));<br />                              wib();<br />                      }<br />                      else if(a==5)<br />                      {<br />                              uart_puts(&quot;f&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Chwytak dol&quot;));<br />                              wib();<br />                      }<br />                      else if(a==6)<br />                      {<br />                      uart_puts(&quot;g&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Ramie gora&quot;));<br />                      wib();<br />                      }<br />                      else if(a==7)<br />                      {<br />                      uart_puts(&quot;h&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Ramie dol&quot;));<br />                      wib();<br />                      }<br />                      else if(a==8)<br />                      {<br />                      uart_puts(&quot;i&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Zginam lokiec&quot;));<br />                      wib();<br />                      }<br />                      else if(a==9)<br />                      {<br />                      uart_puts(&quot;j&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Prostuje lokiec&quot;));<br />                      wib();<br />                      }<br />                      else if(a==10)<br />                      {<br />                      uart_puts(&quot;k&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Obracam ramie w &quot;));<br />                              lcd_locate(1,0);<br />                              lcd_str_P(PSTR(&quot;lewo&quot;));<br />                      wib();<br />                      }<br />                      else if(a==11)<br />                      {<br />                      uart_puts(&quot;l&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Obracam ramie w &quot;));<br />                              lcd_locate(1,0);<br />                              lcd_str_P(PSTR(&quot;prawo&quot;));<br />                      wib();<br />                      }<br />                      else if(a==12)<br />                      {<br />                      uart_puts(&quot;m&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Jade do przodu &quot;));<br />                      wib();<br />                      }<br />              else if(a==13)<br />                      {<br />                      uart_puts(&quot;n&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Jade do tylu&quot;));<br />                      wib();<br />                      }<br />              else if(a==14)<br />                      {<br />                      uart_puts(&quot;o&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Skrecam w lewo&quot;));<br />                      wib();<br />                      }<br />              else if(a==15)<br />                      {<br />                      uart_puts(&quot;p&quot;);<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;Skrecam w prawo&quot;));<br />                      wib();<br />                      }<br />              else if(a==16)<br />                      {<br />                      uart_puts(&quot;r&quot;);<br />                      wib();<br />                      }<br /><br />                      _delay_ms(20);<br />                      if(lat==1)<br />                      {<br />                              lcd_locate(0,0);<br />                              lcd_str_P(PSTR(&quot;                &quot;));<br />                              lcd_locate(1,0);<br />                              lcd_str_P(PSTR(&quot;               &quot;));<br />                      }<br />                      else if(lat==0)<br />                      {<br />                              lcd_cls();<br />                      }<br />                      STPWIB;<br /><br />            }<br /><br />    }[/syntax]<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-23T08:54:49+01:00</updated>
<published>2013-04-23T08:54:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35021#p35021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35021#p35021"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35021#p35021"><![CDATA[
<div class="quotetitle">rezasurmar napisał(a):</div><div class="quotecontent"><br />No i Mirek mnie ubiegł, a już przygotowywałem fajne porównanie rozmiaru kodu w zależności od użytych funkcji do wyświetlania na ekranie LCD <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Bo sam całkiem nie dawno z tym walczyłem.<br /></div><br /><br />No ale takie porównanie tego konkretnego kodu to byłaby fajna rzecz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nawet sam autor jeśli to zrobi to niech tu opisze ile RAMu ma zajęte przed (chociaż to już widzimy w zasadzie) a ile po <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Więc jeśli to skompilowałeś rezasurmar to podpowiedz nam już za wczasu bo aż sam jestem ciekaw <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 kwi 2013, o 08:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T08:53:01+01:00</updated>
<published>2013-04-23T08:53:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35020#p35020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35020#p35020"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35020#p35020"><![CDATA[
No i Mirek mnie ubiegł, a już przygotowywałem fajne porównanie rozmiaru kodu w zależności od użytych funkcji do wyświetlania na ekranie LCD <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Bo sam całkiem nie dawno z tym walczyłem.<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 08:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-23T08:46:52+01:00</updated>
<published>2013-04-23T08:46:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35019#p35019</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35019#p35019"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35019#p35019"><![CDATA[
Zobacz pan jak straszliwie DUŻO pamięci RAM po prostu marnujesz - bezpowrotnie marnujesz <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> a wspominam o tym w książce, że taki zapis:<br /><br />[syntax=c]lcd_str( &quot;Czesc Piotrek ;D&quot; );[/syntax]<br /><br />jest robiony przeze mnie tak na szybko ... i nie ma nic wspólnego z optymalizacją kodu, po prostu krócej się go pisze. Nie pamiętasz ? albo nie doczytałeś skąd funkcja lcd_str() bierze argumenty ? to przypomnę z pamięci RAM. <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> Zaczynasz już rozumieć zgrozę w twoim kodzie ??? każdy taki napis to wyrzucone w błoto bajty RAM ? a dlaczego wyrzucone w błoto ? no bo i tak chociaż byś nie chciał, muszą one przez kompilator być umieszczone w pamięci FLASH !!! żeby skądś się wzięły w tejże pamięci RAM <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> prawda ? samo nic się w ramie nie pojawi. Więc bidny kompilator nie dość że i tak musi te twoje napisy umieścić we FLASH to jeszcze co gorsze musi napisać kawałek kodu, który po starcie procka ale jeszcze przed twoją funkcją main() napełni te zmienne w pamięci RAM tymi tekstami .... więc pomyśl ile tracisz na takich zapisach gdy robisz nie mały testowy programik a już gotowy<br /><br />jak myślisz po co jest w książce opisana funkcja lcd_str_P() ???? (nie obraź się proszę ale wydaje mi się że jakoś ją przeczytałeś bardzo hmmm że tak powiem wyrywkowo i wybiórczo .... i stąd twoje problemy, co widać także po tym że nie budzi twojego zdziwienia fakt że zajętość pamięci RAM po kompilacji u ciebie jest ponad 100% !!!!!!  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />ale ok w książce jest jedno i drugie dokładnie opisane - ja przypomnę ci jednak tutaj - i może to skłoni cię do kolejnego czytania książki albo jej fragmentów żeby zawsze mieć pod ręką .... że zmień swoje zapisy tak:<br /><br />[syntax=c]lcd_str_P( PSTR( &quot;Czesc Piotrek ;D&quot;) );[/syntax]<br /><br />ale już sam doczytaj w książce KONIECZNIE: <br /><br />1. co to takiego jest to PSTR()<br />2. na temat stosu, jak nad nim panować i ile pamięci RAM warto utrzymywać po kompilacji<br /><br />ok?<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />O! kolega wyżej dobrze zauważył - WYWAL KAŻDY rozkaz goto ! i zapomnij o nim na całe życie programując w C - bo nawet jeśli poprawisz kod i będziesz miał więcej RAM'u to goto załatwi cię tak, że nawet 100% wolnego RAMU ci nie pomoże.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br /><div class="quotetitle">Ledes napisał(a):</div><div class="quotecontent"><br />Zajętość RAM-u nie powinna być większa niż 80% (podczas kompilacji). Inaczej spodziewaj się problemów ze stosem w trakcie działania programu.<br /></div><br /><br />To jest taka moja podpowiedź dla kogoś kto początkuje i jeszcze nie czuje się dobrze z tym jak panować nad stosem, gdy nie zna takich narzędzi do badania stosu jakie opisałem w Zielonej książce. Ale w trakcie praktyki programowania każdy dojdzie sam do tego, że ta zajętość spokojnie może być większa (OCZYWIŚCIE w zależności od własnego indywidualnego kodu) i może np wynosić nawet 90% albo i 95% <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ale mówię - to już jak się chociaż troszkę dłużej popraktykuje. <br /><br />A czasem gdy się mocno i świadomie korzysta ze stosu (gdy np ja bawię się warstwami na LCD), podczas tworzenia ala obiektów, albo przy korzystaniu z dynamicznego alkokowania pamięci RAM - może się okazać że np zajętość tej pamięci nie może przekroczyć nawet 70% .... Jak mówię - troszkę praktyki i każdy sam poczuje stos na własnej skórze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />no ale nigdy 100% albo jak w tym przypadku więcej niż 100% !<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 kwi 2013, o 08:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-04-23T08:42:17+01:00</updated>
<published>2013-04-23T08:42:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35018#p35018</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35018#p35018"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35018#p35018"><![CDATA[
[syntax=c]lcd_str_P(PSTR(&quot;napis&quot;));[/syntax]<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Panie drogi, a cóż robią goto w kodzie?<br />Toż to najłatwiejsza droga do tego aby mieć spaghetti code, jak to mawiał jeden z profesorów na moich studiach.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Zajętość RAM-u nie powinna być większa niż 80% (podczas kompilacji). Inaczej spodziewaj się problemów ze stosem w trakcie działania programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 23 kwi 2013, o 08:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2013-04-23T08:39:49+01:00</updated>
<published>2013-04-23T08:39:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35017#p35017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35017#p35017"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35017#p35017"><![CDATA[
Zamień wszystkie funkcje lcd_str<br />lcd_str(&quot;LATARKA ON&quot;);<br />na lcd_Pstr   Czy jakoś tak. Nie pamiętam tak na szybko. To zmniejszy ci o wiele wykorzystanie pamięci/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 23 kwi 2013, o 08:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2013-04-23T08:18:29+01:00</updated>
<published>2013-04-23T08:18:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35015#p35015</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35015#p35015"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35015#p35015"><![CDATA[
A jakie w tym przypadku są drogi optymalizacji:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &quot;kbd4x4.h&quot;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;MKUART/mkuart.h&quot;<br />#include &quot;funkcje.h&quot;<br /><br /><br />#define EEMEM __attribute__((section(&quot;.eeprom&quot;)))<br />#define WIB PORTA|=(1&lt;&lt;PA7);<br />#define STPWIB  PORTA&amp;=~(1&lt;&lt;PA7);<br />#define KEY_PIN (1&lt;&lt;PD3)<br />#define KEY_DOWN !(PIND &amp; KEY_PIN)<br />#define CZAS_WIB 30<br /><br />char PROGMEM tab1&#91;&#93; = {&quot;FLASH&quot;};<br />char EEMEM tab2&#91;&#93; = {&quot;EEPROM&quot;};<br /><br />volatile uint8_t pwm1, pwm2, pwm3;<br /><br /><br />uint8_t lat;<br />uint8_t b=-1;<br />unsigned char l;<br />uint8_t tab&#91;4&#93;;<br />uint8_t ta&#91;4&#93;={0,1,2,15};<br /><br />//int q&#91;35&#93;={0,1,0,1,1,0,1,/**/1,0,1,0,1,0,1,/**/0,1,0,1,0,0,1,/**/1,0,1,1,0,1,0,/**/1,0,0,1,0,1,0};<br />//uint8_t g&#91;7&#93;;<br />//uint8_t j;<br />//uint8_t s,q0,q1,q2,q3,q4,q5,q6,q7;<br />//uint8_t lvl,m0,m1,m2,m3,m4,m5,m6,m7;<br />//uint8_t x=1;<br />//uint8_t l1=13;<br />//uint8_t cz=200;<br /><br /><br />uint8_t backslash&#91;&#93;=<br />{<br />0b00000000,//back slash<br />0b00010000,<br />0b00001000,<br />0b00000100,<br />0b00000010,<br />0b00000001,<br />0b00000000,<br />0b00000000<br />};<br /><br />uint8_t latarka&#91;&#93;=<br />{<br />0b00011111,//back slash<br />0b00011111,<br />0b00001110,<br />0b00001110,<br />0b00001110,<br />0b00001110,<br />0b00001110,<br />0b00000000<br />};<br /><br />uint8_t pdkr&#91;&#93;=<br />{<br />0b00000000,//back slash<br />0b00000000,<br />0b00000000,<br />0b00000000,<br />0b00000000,<br />0b00000000,<br />0b00011111,<br />0b00000000<br />};<br /><br /><br />unsigned char uart_rx( void )<br />{<br />while ( !(UCSRA &amp; (1&lt;&lt;RXC)) ); //poczekaj na dane<br />return UDR;// zwroc dane z bufora<br />}<br /><br />void uart_tx( unsigned char data )<br />{<br /><br />while ( !( UCSRA &amp; (1&lt;&lt;UDRE)) ); //czekaj az bufor sie oprozni<br />UDR = data;       //wyslij dane<br />}<br /><br />uint8_t sw(void)<br />{<br />if( KEY_DOWN )// klawisz wciśnięty ?<br />{<br />_delay_ms(80);// czas drgań styków<br />if( KEY_DOWN ) return 1;   // jeśli wciśnięty?  zakończ funkcję - rezultat = 1<br />}<br /><br />return 0;// jeśli nie wciśnięty klawisz, zakończ funkcję, rezultat = 0<br />}<br /><br />void wib(void)<br />{<br />    WIB;<br />    _delay_ms(CZAS_WIB);<br />    STPWIB;<br />}<br /><br />void piotrek(void)<br />{<br /> WIB;<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Czesc Piotrek ;D&quot;);<br />  _delay_ms(1000);<br />  lcd_cls();<br /><br />if(lat==1)<br />{<br />lcd_defchar(0x80, latarka);<br />lcd_locate(1,15);<br />lcd_str(&quot;\x80&quot;);<br />}<br />STPWIB;<br /><br /><br />}<br /><br />//void jak_masz_na_imie(void)<br />//{<br />//lcd_locate(0,0);<br />//lcd_str(&quot;jak masz na imie&quot;);<br />//lcd_locate(1,0);<br />//lcd_str(&quot;wpisz swoje imie&quot;);<br />//_delay_ms(1000);<br />//lcd_cls();<br />//<br />//}<br /><br />void f_start(void)<br />{<br /> y:<br />    lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;podaj haslo:&quot;);<br />     uint8_t i=0;<br /><br />while(i&lt;4)<br />{<br />b=getkbd();<br /><br />if(b&gt;=0 &amp;&amp; b&lt;255)<br />{<br />tab&#91;i&#93;=b;<br />lcd_locate(1,i);<br />lcd_str(&quot;*&quot;);<br />i++;<br />_delay_ms(300);<br />}<br />}<br />   for(uint8_t a=0;a&lt;4;a++)<br />   {<br />   if(tab&#91;a&#93;==ta&#91;a&#93;)<br />   {<br />             if(a==3)piotrek();<br />   }<br />   else<br />   {<br /><br />    lcd_locate(1,2);<br />lcd_str(&quot;*&quot;);<br />lcd_cls();<br />_delay_ms(50);<br />lcd_locate(0,0);<br />lcd_str(&quot;zle haslo&quot;);<br />_delay_ms(1000);<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;sproboj ponownie&quot;);<br />_delay_ms(1000);<br />goto y;<br />}<br />   }<br /><br />}<br /><br /><br />void haslo(void)<br />{<br />   y:<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;haslo cwaniaku:&quot;);<br /> uint8_t i=0;<br /><br />while(i&lt;4)<br />{<br />b=getkbd();<br /><br />if(b&gt;=0 &amp;&amp; b&lt;255)<br />{<br />tab&#91;i&#93;=b;<br />lcd_locate(1,i);<br />lcd_str(&quot;*&quot;);<br />i++;<br />_delay_ms(300);<br />}<br />}<br />   for(uint8_t a=0;a&lt;4;a++)<br />   {<br />   if(tab&#91;a&#93;==ta&#91;a&#93;)<br />   {<br /> if(a==3)jdarka(lat ,latarka, backslash );<br />   }<br />   else<br />   {<br /><br />lcd_locate(1,2);<br />lcd_str(&quot;*&quot;);<br />lcd_cls();<br />_delay_ms(50);<br />lcd_locate(0,0);<br />lcd_str(&quot;zle haslo&quot;);<br />_delay_ms(1000);<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;sproboj ponownie&quot;);<br />_delay_ms(1000);<br />goto y;<br />}<br />   }<br /><br />}<br />void uspienie(void)<br />{<br />lcd_cls();<br />lcd_locate(0,0);<br />lcd_str(&quot;zablokowano&quot;);<br />lcd_locate(1,0);<br />lcd_str(&quot;unlock - SHIFT+0&quot;);<br />_delay_ms(700);<br />lcd_cls();<br /><br /> uint8_t l=0;<br />while(l&lt;1)<br />{<br />         b=getkbd();<br /><br />         if(b==0 &amp;&amp; KEY_DOWN )<br />         {<br />              lcd_locate(0,0);<br />              lcd_str(&quot;Odblokowano&quot;);<br />              _delay_ms(700);<br />              f_start();<br />              l++;<br />         }<br />         else if(b&gt;=0 &amp;&amp; b&lt;255)<br />         {<br />        lcd_locate(1,0);<br />        lcd_str(&quot;unlock - SHIFT+0&quot;);<br />        _delay_ms(700);<br />        lcd_cls();<br /><br />         }<br /><br />}<br /><br />}<br /><br />int main()<br />{<br /><br /> DDRA|=(1&lt;&lt;PA7);<br /> PORTA&amp;=~(1&lt;&lt;PA7);<br /><br /> DDRD &amp;= ~KEY_PIN;// kierunek pinu PC6 - wejściowy<br /> PORTD = 0xff;// podciągnięcie pinu do VCC<br /><br />lcd_init();<br /><br />sei();<br /><br />USART_Init( __UBRR );<br /><br />f_start();<br /><br /><br /><br />while(1)<br />{<br /><br /><br />  uint8_t a=getkbd();<br /><br />         if(a==0 &amp;&amp; KEY_DOWN)<br />  {<br />          uart_puts(&quot;s&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;LATARKA OFF&quot;);<br />  lcd_locate(0,16);<br />  lcd_str(&quot; &quot;);<br />  lat=0;<br />  wib();<br /><br />  }<br /><br />         else if(a==1 &amp;&amp; KEY_DOWN)<br />  {<br />          uart_puts(&quot;t&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;LATARKA ON&quot;);<br />  lcd_locate(0,0);<br />  lcd_defchar(0x80, latarka);<br />  lcd_locate(1,15);<br />  lcd_str(&quot;\x80&quot;);<br />  lat=1;<br />  wib();<br /><br />  }<br />          else if(a==2 &amp;&amp; KEY_DOWN)<br />  {<br />          uart_puts(&quot;u&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;kut&quot;);<br />  lcd_locate(0,0);<br />  lcd_defchar(0x80, kut);<br />  lcd_locate(1,0);<br />  lcd_str(&quot;\x80&quot;);<br />  wib();<br /><br />  }<br />          <br />          else if(a==4 &amp;&amp; KEY_DOWN)<br />  {<br />          uart_puts(&quot;x&quot;);<br /><br /><br />          l=uart_getc();<br /><br />              if(l=='3')<br />              {<br />              lcd_cls();<br />              lcd_locate(1,0);<br />              lcd_str(&quot;reka pusta&quot;);<br />              _delay_ms(500);<br /><br />              }<br />              else if(l=='4')<br />              {<br />              lcd_locate(1,0);<br />              lcd_str(&quot;trzymam&quot;);<br />              _delay_ms(500);<br />              }<br /><br />  wib();<br />  }<br />          else if(a==5 &amp;&amp; KEY_DOWN)<br />  {<br />          uart_puts(&quot;y&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;GRA&quot;);<br />  gra();<br />  wib();<br />  }<br />          else if(a==15 &amp;&amp; KEY_DOWN)<br />  {<br /><br />  lcd_locate(0,0);<br />  lcd_str(&quot;Zablokowac ?&quot;);<br />  lcd_locate(1,0);<br />  lcd_str(&quot;NIE-0&quot;);<br />  lcd_locate(1,7);<br />  lcd_str(&quot;TAK-1&quot;);<br />              uint8_t k=0;<br /><br />while(k&lt;1)<br />{<br />                 b=getkbd();<br /><br />                 if(b==0)<br />                 {<br /><br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,0);<br />            lcd_str(&quot;\x80&quot;);<br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,1);<br />            lcd_str(&quot;\x80&quot;);<br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,2);<br />            lcd_str(&quot;\x80&quot;);<br />            _delay_ms(700);<br />       if(lat==1)<br />       {<br />       lcd_defchar(0x80, latarka);<br />       lcd_locate(1,15);<br />       lcd_str(&quot;\x80&quot;);<br />       }<br />            k++;<br /><br />                 }<br />                 else if(b==1)<br />                 {<br /><br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,7);<br />            lcd_str(&quot;\x80&quot;);<br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,8);<br />            lcd_str(&quot;\x80&quot;);<br />            lcd_defchar(0x80, pdkr);<br />            lcd_locate(1,9);<br />            lcd_str(&quot;\x80&quot;);<br />            _delay_ms(700);<br />            uspienie();<br />            k++;<br /><br /><br />                 }<br /><br />}<br /><br /><br />  }<br /><br />          else if(a==0)<br />  {<br /><br />   uart_puts(&quot;a&quot;);<br />   lcd_locate(0,0);<br />               lcd_str(&quot;Zamykam chwytak&quot;);<br />               wib();<br />  }<br />  else if(a==1)<br />  {<br />  uart_puts(&quot;b&quot;);<br />  lcd_locate(0,0);<br />              lcd_str(&quot;Otwieram chwytak&quot;);<br />              wib();<br />  }<br /><br />  else if(a==2)<br />          {<br />          uart_puts(&quot;c&quot;);<br />  lcd_locate(0,0);<br />              lcd_str(&quot;krece chwytakiem&quot;);<br />  lcd_locate(1,0);<br />              lcd_str(&quot;w lewo&quot;);<br />              wib();<br />          }<br /><br />  else if(a==3)<br />          {<br />          uart_puts(&quot;d&quot;);<br />  lcd_locate(0,0);<br />              lcd_str(&quot;krece chwytakiem&quot;);<br />  lcd_locate(1,0);<br />              lcd_str(&quot;w prawo&quot;);<br />              wib();<br />          }<br /><br />  else if(a==4)<br />  {<br />  uart_puts(&quot;e&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Chwytak gora&quot;);<br />  wib();<br />  }<br />  else if(a==5)<br />  {<br />  uart_puts(&quot;f&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Chwytak dol&quot;);<br />  wib();<br />  }<br />  else if(a==6)<br />  {<br />          uart_puts(&quot;g&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Ramie gora&quot;);<br />          wib();<br />  }<br />  else if(a==7)<br />  {<br />          uart_puts(&quot;h&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Ramie dol&quot;);<br />          wib();<br />  }<br />  else if(a==8)<br />  {<br />          uart_puts(&quot;i&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Zginam lokiec&quot;);<br />          wib();<br />  }<br />  else if(a==9)<br />  {<br />          uart_puts(&quot;j&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Prostuje lokiec&quot;);<br />          wib();<br />  }<br />  else if(a==10)<br />  {<br />          uart_puts(&quot;k&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Obracam ramie w &quot;);<br />  lcd_locate(1,0);<br />  lcd_str(&quot;lewo&quot;);<br />          wib();<br />  }<br />  else if(a==11)<br />  {<br />          uart_puts(&quot;l&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Obracam ramie w &quot;);<br />  lcd_locate(1,0);<br />  lcd_str(&quot;prawo&quot;);<br />          wib();<br />  }<br />  else if(a==12)<br />  {<br />          uart_puts(&quot;m&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Jade do przodu &quot;);<br />          wib();<br />  }<br />          else if(a==13)<br />  {<br />          uart_puts(&quot;n&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Jade do tylu&quot;);<br />          wib();<br />  }<br />          else if(a==14)<br />  {<br />          uart_puts(&quot;o&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Skrecam w lewo&quot;);<br />          wib();<br />  }<br />          else if(a==15)<br />  {<br />          uart_puts(&quot;p&quot;);<br />  lcd_locate(0,0);<br />  lcd_str(&quot;Skrecam w prawo&quot;);<br />          wib();<br />  }<br />          else if(a==16)<br />  {<br />          uart_puts(&quot;r&quot;);<br />          wib();<br />  }<br /><br />  _delay_ms(20);<br />  if(lat==1)<br />  {<br />  lcd_locate(0,0);<br />  lcd_str(&quot;                &quot;);<br />  lcd_locate(1,0);<br />  lcd_str(&quot;               &quot;);<br />  }<br />  else if(lat==0)<br />  {<br />  lcd_cls();<br />  }<br />  STPWIB;<br /><br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 23 kwi 2013, o 08:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T07:37:49+01:00</updated>
<published>2013-04-23T07:37:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35013#p35013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35013#p35013"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35013#p35013"><![CDATA[
Zielona, nie niebieska <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /><br />No i patrzałeś, przeca zmienne w RAM to ci zajmują 130%, jak chcesz by to działało<br />toż stos nawet biedny procesor nie ma gdzie trzymać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /><br /><br />PS. Ja jak mi zmienne po kompilacji zajmują więcej niż 70% szukam możliwych dróg optymalizacji, albo zmieniam procka na większego.<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 07:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2013-04-23T07:33:37+01:00</updated>
<published>2013-04-23T07:33:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35012#p35012</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35012#p35012"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35012#p35012"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Program:   10772 bytes (65.7% Full)<br />(.text + .data + .bootloader)<br /><br />Data:       1299 bytes (126.9% Full)<br />(.data + .bss + .noinit)<br /><br />EEPROM:        7 bytes (1.4% Full)<br />(.eeprom)<br /><br /><br />Finished building: sizedummy<br /></div><br /><br />wynik kompilacji, a na książkę za chwilę zerknę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Ale chyba inna strona, bo na 325 jest sterowanie krokowcem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 23 kwi 2013, o 07:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-04-23T07:31:02+01:00</updated>
<published>2013-04-23T07:31:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35011#p35011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35011#p35011"/>
<title type="html"><![CDATA[Re: Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35011#p35011"><![CDATA[
Bez obejrzenia kodu to wróżenie z fusów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br /><br />Masz jakieś zasobnożerne biblioteki, typu printf?, obsługa float?.<br />W zielonej książce Mirka jest na 325stronie jak sprawdzać ile zajmuje stos na bieżąco <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />.<br />Ile ramu masz zajęte po kompilacji?<p>Statystyki: Napisane przez Gość — 23 kwi 2013, o 07:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[klonyyy]]></name></author>
<updated>2013-04-23T07:14:25+01:00</updated>
<published>2013-04-23T07:14:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35010#p35010</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35010#p35010"/>
<title type="html"><![CDATA[Problem z dużym kodem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2928&amp;p=35010#p35010"><![CDATA[
Witam !<br /><br />Mam pewien problem - napisałem dość duży kod bo aż na 10kb, jest to program na mege16, która steruje pilotem do platformy wielozadaniowej. Po dodaniu kilku bajerów typu jakaś prosta gra, program nie działa jak powinien - na wyświetlaczu krzaczki itp. Czy jest to wina stosu, i jak to rozpoznać (czy stos nadpisuje mi się w programie)? A moje drugie pytanie brzmi jak mogę rozwiązać problem z tak dużym programem ? I trzecie - jak używa się zmiennych globalnych w plikach nagłówkowych ?<br /><br />serdecznie pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=532">klonyyy</a> — 23 kwi 2013, o 07:14</p><hr />
]]></content>
</entry>
</feed>