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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-06-01T20:25:33+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=18482&amp;mode</id>
<entry>
<author><name><![CDATA[Scynk]]></name></author>
<updated>2017-06-01T20:25:33+01:00</updated>
<published>2017-06-01T20:25:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=190160#p190160</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=190160#p190160"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=190160#p190160"><![CDATA[
Cześć <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Takie coś chyba też powinno działać:<br /><br />[syntax=c]cy4=licznik%10; //jednosci<br />licznik/=10;<br />cy3=licznik%10; //dziesiatki<br />licznik/=10;<br />cy2=licznik%10; //setki<br />licznik/=10;<br />cy1=licznik%10; //tysiace[/syntax]<br /><br />Gdyby to nie były 4 osobne zmienne, tylko np. jakaś tablica to możnaby to wtedy jedną pętlą załatwić <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=14271">Scynk</a> — 1 cze 2017, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-28T20:00:14+01:00</updated>
<published>2017-05-28T20:00:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189913#p189913</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189913#p189913"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189913#p189913"><![CDATA[
No tak, schrzaniłem to.  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br />[syntax=c]cy1 = licznik / 1000;         // tysiące (ilosc tysiecy)<br />cy2 = (licznik % 1000) / 100; // setki ( reszta z dzielenia przez 1000)<br />cy3 = (licznik % 100) / 10;   // dziesiątki ( reszta z dzielenia przez 100)<br />cy4 = licznik % 10;           // jedności ( reszta z dzielenia przez 10)[/syntax]<br /><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=11549">Daro69</a> — 28 maja 2017, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[goommis]]></name></author>
<updated>2017-05-28T19:22:14+01:00</updated>
<published>2017-05-28T19:22:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189910#p189910</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189910#p189910"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189910#p189910"><![CDATA[
<div class="quotetitle">Daro69 napisał(a):</div><div class="quotecontent"><br />Witam,<br />a nie wygodniej tak ?<br />[syntax=c]cy1 = licznik/1000; // tysiące (ilosc tysiecy)<br />        cy2 = licznik%1000; // setki ( reszta z dzielenia przez 1000)<br />        cy3 = licznik%100 ; // dziesiątki ( reszta z dzielenia przez 100)<br />        cy4 = licznik%10; // jedności ( reszta z dzielenia przez 10)[/syntax]<br />a dalej<br />[syntax=c]if ( SW2_DOWN ) { kasowanie licznika <br />            LED_ON;<br />            licznik=0;<br />        }[/syntax]<br />i jeszcze<br />[syntax=c]if ( SW1_DOWN ) {       // Naciśnięcie przycisku 1<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                     timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                     if(licznik&lt;9999)  licznik++;  else licznik=0;  // Inkrementacja licznika (o jedności) i zerowanie<br />            }<br />    }<br /><br />if ( SWX_DOWN ) {       // Naciśnięcie przycisku 2<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                     timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                     if(licznik)  licznik--;  else licznik=9999;  // dekrementacja licznika (o jedności) i wartosc 9999<br />            }<br />    }[/syntax]<br />może tak jakoś ?<br /></div><br />Tym sposobem wyświetla trzy cyfry jednocześnie a do tyłu też pokazuje jakieś głupoty.<br />Ale nie ma się co zrażać. Pomału się coś wymyśli.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16224">goommis</a> — 28 maja 2017, o 19:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2017-05-28T18:50:56+01:00</updated>
<published>2017-05-28T18:50:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189908#p189908</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189908#p189908"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189908#p189908"><![CDATA[
Witam,<br />a nie wygodniej tak ?<br />[syntax=c]cy1 = licznik/1000; // tysiące (ilosc tysiecy)<br />        cy2 = licznik%1000; // setki ( reszta z dzielenia przez 1000)<br />        cy3 = licznik%100 ; // dziesiątki ( reszta z dzielenia przez 100)<br />        cy4 = licznik%10; // jedności ( reszta z dzielenia przez 10)[/syntax]<br />a dalej<br />[syntax=c]if ( SW2_DOWN ) { kasowanie licznika <br />            LED_ON;<br />            licznik=0;<br />        }[/syntax]<br />i jeszcze<br />[syntax=c]if ( SW1_DOWN ) {       // Naciśnięcie przycisku 1<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                     timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                     if(licznik&lt;9999)  licznik++;  else licznik=0;  // Inkrementacja licznika (o jedności) i zerowanie<br />            }<br />    }<br /><br />if ( SWX_DOWN ) {       // Naciśnięcie przycisku 2<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                     timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                     if(licznik)  licznik--;  else licznik=9999;  // dekrementacja licznika (o jedności) i wartosc 9999<br />            }<br />    }[/syntax]<br />może tak jakoś ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 28 maja 2017, o 18:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[goommis]]></name></author>
<updated>2017-05-28T18:42:10+01:00</updated>
<published>2017-05-28T18:42:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189907#p189907</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189907#p189907"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189907#p189907"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Funkcja dodawania jak i odejmowania może być ta sama - wystarczy zmienić znak tego co modyfikuje twoją zmienną <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" /><br /></div><br />No właśnie nie bardzo bo wychodzą głupoty. Ale może to ja coś źle robię.<br />Tak to próbowałem rozwiązać.<br />[syntax=c]if ( SW3_DOWN ) {       // Naciśnięcie przycisku 1<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                licznik1--;    // Inkrementacja licznika1 (jedności)<br />                if ( licznik1 == 0 ) {<br />                    licznik1 = 10;       //zerowanie licznika1 po osiągnięciu wartości 10<br />                    licznik2--;         //Inkrementacja licznika2 co każde 10 odliczeń licznik1 (dziesiątki)<br />                }<br />                if ( licznik2 == 0 ) {<br />                    licznik2 = 10;       //zerowanie licznika2 po osiągnięciu wartości 10<br />                    licznik3--;         //Inkrementacja licznika3 co każde 10 odliczeń licznik2 (setki)<br />                }<br />                if ( licznik3 == 0 ) {<br />                    licznik3 = 10;       //zerowanie licznika3 po osiągnięciu wartości 10<br />                    licznik4--;         //Inkrementacja licznika4 co każde 10 odliczeń licznik3 (tysiące)<br />                }<br />                //Zerowanie wszystkich liczników po osiągnięciu przez licznik4 wartości 10 (9999 na wyświetlaczu)<br />                if ( licznik4 == 0 ) {<br />                    licznik1 = 10;<br />                    licznik2 = 10;<br />                    licznik3 = 10;<br />                    licznik4 = 10;<br />                }<br />            }<br />        }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16224">goommis</a> — 28 maja 2017, o 18:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-05-28T18:34:43+01:00</updated>
<published>2017-05-28T18:34:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189904#p189904</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189904#p189904"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189904#p189904"><![CDATA[
Funkcja dodawania jak i odejmowania może być ta sama - wystarczy zmienić znak tego co modyfikuje twoją zmienną <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=1922">SylwekK</a> — 28 maja 2017, o 18:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[goommis]]></name></author>
<updated>2017-05-28T18:24:46+01:00</updated>
<published>2017-05-28T18:24:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189903#p189903</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189903#p189903"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189903#p189903"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />To teraz jako drugie ćwiczenie zastosuj timery programowe zamiast &quot;delay&quot; w tym programie aby stał się nieblokujący. Zapewniam, że czym wcześniej to zrobisz tym mniej stracisz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /></div><br />Zrobiłem jak kolega radził i pozbyłem się tego &quot;paskudnego delaya&quot; jak to pan Mirek mawia <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Konfiguracja timera programowego nie była taka straszna jak się za pierwszym razem wydawało.<br />Program teraz ma za zadanie za każdym naciśnięciem przycisku SW2 zwiększać wartość licznika1 i wystawiać wynik na wyświetlaczu. Po osiągnięciu przez licznik1 wartości 10 jest on zerowany i następuje zwiększenie o 1 licznika2, co odpowiada za wyświetlenie dzięsiątek. Podobnie podobnie z licznikiem s tylko, że tutaj jego wartość jest zależna od licznika2, i wyświetlane są setki.<br />Tak samo licznik4 i wyświetlane są tysiące. Po osiągnięciu przez licznik 4 wartości 9999, liczniki są zerowane i z powrotem wyświetlane są zera. Przyciskiem SW2 powodujemy &quot;ręczny&quot; reset liczników i powrót do wyświetlania zer.<br />Następny krok to dodanie odliczania do tyłu, jednak będzie to wymagało chyba przebudowy całego programu i wymyślenia jakiejś funkcji, która by odpowiadałem za wyświetlanie wyników. Póki co nie mam jakiegoś sensownego pomysłu, ale wszystko przed nami.<br />Zamieszczam kod programu.<br />[syntax=c]/*<br />* main.c    ATmega32A    F_CPU = 16000000 Hz<br />*<br />* Created on: 25.05.2017<br />*     Author: Goommis<br />*/<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LED.h&quot;<br /><br />#define LED (1&lt;&lt;PD0)    // Dioda LED<br />#define BUZZ (1&lt;&lt;PD1)   // Buzzer<br />#define SW_PIN1 (1&lt;&lt;PD4)    // Przycisk1<br />#define SW_PIN2 (1&lt;&lt;PD5)    // Przycisk2<br />#define SW_PIN3 (1&lt;&lt;PD6)    // Przycisk3<br />#define SW_PIN4 (1&lt;&lt;PD7)    // Przycisk4<br />#define LED_ON PORTD &amp;= ~(LED)    // Podanie stanu niskiego na diodę - załączenie<br />#define LED_OFF PORTD |= (LED)    // Podanie stanu wysokiego na diode - wyłączenie<br />#define BUZ_ON PORTD &amp;= ~(BUZZ)   // Załączanie buzzera<br />#define BUZ_OFF PORTD |= (BUZZ)   // Wyłączenie buzzera<br />#define SW1_DOWN !(PIND &amp; SW_PIN1)    // Sprawdzenie stanu niskiego na pinach PD4-PD7<br />#define SW2_DOWN !(PIND &amp; SW_PIN2)<br />#define SW3_DOWN !(PIND &amp; SW_PIN3)<br />#define SW4_DOWN !(PIND &amp; SW_PIN4)<br /><br />volatile uint16_t timer; //Timer programowy<br />volatile uint16_t licznik1, licznik2, licznik3, licznik4; //Liczniki odpowiedzialne za wyświetlanie odpowiednich cyfr<br /><br />int main( void ) {<br /><br />    // Konfiguracja portów<br />    DDRD = LED | BUZZ;<br />    PORTD |= LED | BUZZ;<br />    DDRD &amp;= ~( SW_PIN1 | SW_PIN2 | SW_PIN3 | SW_PIN4 );<br />    PORTD |= SW_PIN1 | SW_PIN2 | SW_PIN3 | SW_PIN4;<br /><br />    // Konfiguracja timera<br />    TCCR2 |= ( 1 &lt;&lt; WGM21 );//Tryb CTC<br />    TCCR2 |= ( 1 &lt;&lt; CS22 );//Preskaler 64<br />    OCR2 = 249;<br />    TIMSK = ( 1 &lt;&lt; OCIE2 ); //Zezwolenie na przerwania Compare Match<br /><br />    //inicjalizacja wyświetlacza<br />    LED_init();<br /><br />    //Zezwolenie na przerwania<br />    sei();<br /><br />    while ( 1 ) {<br /><br />        cy1 = licznik4; // tysiące<br />        cy2 = licznik3; // setki<br />        cy3 = licznik2; // dziesiątki<br />        cy4 = licznik1; // jedności<br /><br />        //reset wyswietlacza po wciśnięciu SW2<br />        if ( SW2_DOWN ) {<br />            LED_ON;<br />            licznik1 = 0;<br />            licznik2 = 0;<br />            licznik3 = 0;<br />            licznik4 = 0;<br />        }<br />        if ( SW1_DOWN ) {       // Naciśnięcie przycisku 1<br />            LED_ON;            // Potwierdzenie naciśnięcia przycisku<br />            if ( !timer ) {    //Timer programowy<br />                timer = 150;    //Program odczekuje 150 ms, żeby użytkownik zdążył puścić przycisk<br />                licznik1++;    // Inkrementacja licznika1 (jedności)<br />                if ( licznik1 == 10 ) {<br />                    licznik1 = 0;       //zerowanie licznika1 po osiągnięciu wartości 10<br />                    licznik2++;         //Inkrementacja licznika2 co każde 10 odliczeń licznik1 (dziesiątki)<br />                }<br />                if ( licznik2 == 10 ) {<br />                    licznik2 = 0;       //zerowanie licznika2 po osiągnięciu wartości 10<br />                    licznik3++;         //Inkrementacja licznika3 co każde 10 odliczeń licznik2 (setki)<br />                }<br />                if ( licznik3 == 10 ) {<br />                    licznik3 = 0;       //zerowanie licznika3 po osiągnięciu wartości 10<br />                    licznik4++;         //Inkrementacja licznika4 co każde 10 odliczeń licznik3 (tysiące)<br />                }<br />                //Zerowanie wszystkich liczników po osiągnięciu przez licznik4 wartości 10 (9999 na wyświetlaczu)<br />                if ( licznik4 == 10 ) {<br />                    licznik1 = 0;<br />                    licznik2 = 0;<br />                    licznik3 = 0;<br />                    licznik4 = 0;<br />                }<br />            }<br />        }<br /><br />        else {<br />            LED_OFF; // Wygaszenie diody po puszczeniu przycisku<br />        }<br />    }<br />}<br /><br />ISR( TIMER2_COMP_vect ) {<br />    uint16_t x;<br />    x = timer;<br />    if ( x )timer = --x;<br />}[/syntax]<br />P.S. Buzzer na razie nie jest używany bo wkurza <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16224">goommis</a> — 28 maja 2017, o 18:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2017-05-25T16:45:50+01:00</updated>
<published>2017-05-25T16:45:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189782#p189782</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189782#p189782"/>
<title type="html"><![CDATA[Re: Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189782#p189782"><![CDATA[
To teraz jako drugie ćwiczenie zastosuj timery programowe zamiast &quot;delay&quot; w tym programie aby stał się nieblokujący. Zapewniam, że czym wcześniej to zrobisz tym mniej stracisz <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=1922">SylwekK</a> — 25 maja 2017, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[goommis]]></name></author>
<updated>2017-05-25T16:25:05+01:00</updated>
<published>2017-05-25T16:25:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189780#p189780</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189780#p189780"/>
<title type="html"><![CDATA[Mój pierwszy jakkolwiek użyteczny program.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18482&amp;p=189780#p189780"><![CDATA[
Witam wszystkich.<br />Od pewnego czasu jestem szczęśliwym posiadaczem Bluebooka.<br />Przeczytałem wszystko od deski do deski, więc przyszła pora na ćwiczenia praktyczne.<br />Zrobiłem kilka przykładów z książki no i utknąłem w martwym punkcie.<br />Myślę sobie &quot;No fajnie, umiem włączyć i wyłączyć diodę, umiem oprogramować obsługę przycisków, czy też wyświetlać cyferki na wyświetlaczu LED. Tylko co z tego?&quot;<br />Dzisiaj dostałem natchnienia i postanowiłem połączyć to co potrafię w jedną całość.<br />Tak oto powstał &quot;nowatorskie&quot; urządzenie pozwalające na nastawienie dowolnej liczby z zakresu od 0 do 9999.<br />Wstawiam tutaj kod programu, biblioteka LED.h napisana według przykładu z książki.<br />Co sądzicie koledzy o moich wypocinach?<br />[syntax=c]/*<br /> * main.c    ATmega32A    F_CPU = 16000000 Hz<br /> *<br /> * Created on: 25.05.2017<br /> *     Author: Goommis<br />*/<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LED.h&quot;<br /><br /><br />#define LED (1&lt;&lt;PD0)    // Dioda LED<br />#define SW_PIN1 (1&lt;&lt;PD4)    // Przycisk1<br />#define SW_PIN2 (1&lt;&lt;PD5)    // Przycisk2<br />#define SW_PIN3 (1&lt;&lt;PD6)    // Przycisk3<br />#define SW_PIN4 (1&lt;&lt;PD7)    // Przycisk4<br />#define LED_ON PORTD &amp;= ~(LED)    // Podanie stanu niskiego na diodę - załączenie<br />#define LED_OFF PORTD |= (LED)    // Podanie stanu wysokiego na diodę - wyłączenie<br />#define SW1_DOWN !(PIND &amp; SW_PIN1)    // Sprawdzenie stanu niskiego na pinach PD4-PD7<br />#define SW2_DOWN !(PIND &amp; SW_PIN2)<br />#define SW3_DOWN !(PIND &amp; SW_PIN3)<br />#define SW4_DOWN !(PIND &amp; SW_PIN4)<br /><br />uint8_t liczba1=0;<br />uint8_t liczba2=0;<br />uint8_t liczba3=0;<br />uint8_t liczba4=0;<br /><br />int main( void ) {<br /><br /><br /><br />    DDRD = LED;<br />    PORTD |= LED;<br /><br />    DDRD &amp;= ~ (SW_PIN1|SW_PIN2|SW_PIN3|SW_PIN4);<br />    PORTD |= SW_PIN1|SW_PIN2|SW_PIN3|SW_PIN4;<br /><br />    //inicjalizacja wyświetlacza<br />    LED_init();<br /><br />    cy1=10; // liczba 10 reprezentuje wygaszone segmenty<br />    cy2=10;<br />    cy3=10;<br />    cy4=10;<br /><br />    sei();<br /><br />    while(1) {<br /><br /><br />        if(SW1_DOWN){   // Naciśnięcie przycisku 1<br />        LED_ON;         // Potwierdzenie naciśnięcia przycisku<br />        _delay_ms(150);<br />        cy1=liczba1;<br />        liczba1++;      // Inkrementacja wartości zmiennej<br />        if(liczba1==11)liczba1=0;  // Zerowanie wartości zmiennej<br />        }<br />        if(SW2_DOWN){   // Naciśnięcie przycisku 2<br />        LED_ON;<br />        _delay_ms(150);<br />        cy2=liczba2;<br />        liczba2++;<br />        if(liczba2==11)liczba2=0;<br />        }<br />        if(SW3_DOWN){     // Naciśnięcie przycisku 3<br />        LED_ON;<br />        _delay_ms(150);<br />        cy3=liczba3;<br />        liczba3++;<br />        if(liczba3==11)liczba3=0;<br />        }<br />        if(SW4_DOWN){     // Naciśnięcie przycisku 4<br />        LED_ON;<br />        _delay_ms(150);<br />        cy4=liczba4;<br />        liczba4++;<br />        if(liczba4==11)liczba4=0;<br />        }<br /><br />        else (LED_OFF);   // Wygaszenie diody po puszczeniu przycisku<br />    }<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16224">goommis</a> — 25 maja 2017, o 16:25</p><hr />
]]></content>
</entry>
</feed>