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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-23T15:56:16+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7522&amp;mode</id>
<entry>
<author><name><![CDATA[ifrook]]></name></author>
<updated>2014-06-23T15:56:16+01:00</updated>
<published>2014-06-23T15:56:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85495#p85495</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85495#p85495"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85495#p85495"><![CDATA[
Jesteś Kozak... działa jak trzeba, żadnych błędów, pozazdrościć:P<br />Szczerze to trochę mnie odstraszyłeś <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3649">ifrook</a> — 23 cze 2014, o 15:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-06-22T17:15:06+01:00</updated>
<published>2014-06-22T17:15:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85383#p85383</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85383#p85383"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85383#p85383"><![CDATA[
Zamiast tych kulawych i blokujących rozwiązań z delayami proponuje inne rozwiązanie. Pisane na szybko ale bez żadnego delaya w pętli głównej i całkowicie nieblokujące<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />// ************* definicje dla preprocesora<br />// dioda LED1<br />#define LED_PIN1 (1&lt;&lt;PC1) // definicja pinu do którego podłączona jest dioda1<br />#define LED_TOG1 PORTC ^= LED_PIN1 // makrodefinicja – zmiana stanu diody<br /><br />// dioda led2<br />#define LED_PIN2 (1&lt;&lt;PC2)// definicja pinu do którego podłączona jest dioda2<br />#define LED_TOG2 PORTC ^= LED_PIN2 // makrodefinicja – zmiana stanu diody<br />#define LED_PIN2OFF PORTC |= (LED_PIN2) // wyłączenie diody 2 gdy zapala sie dioda 1  PORTC &amp;= ~(LED_PIN2)<br />#define LED_OFF PORTC |= LED_PIN2<br />#define LED_ON PORTC &amp;= ~LED_PIN2<br /><br />// klawisz K1<br />#define KEY_PIN1 (1&lt;&lt;PC3)<br /><br />// klawisz K2<br />#define KEY_PIN2 (1&lt;&lt;PC4)<br /><br /><br />void przycisk1(void);<br />void przycisk2(void);<br /><br />void key_press(uint16_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) );<br /><br />//tablica czasów on/off diody led 2<br />//i tablica stanów diody led 2<br />uint8_t czas&#91;&#93;={ 100, 100, 100, 100, 20, 20, 20, 20, 20, 20, 20, 20, 20 };<br />uint8_t stan&#91;&#93;={ 1,   0,   1,   0,   0,  1,  0,  1,  0,  1,  0,  1,  0  };<br /><br />//timer programowy<br />volatile uint16_t Timer1;<br /><br />//mnienne na potrzeby obsługi klawisza<br />uint16_t key_lock1, key_lock2;<br /><br />uint8_t wlacz_led2;<br /><br /><br />// ** pętla główna main()<br />int main(void)<br />{<br />// ****** inicjalizacja *********<br />DDRC |= LED_PIN1; // kierunek pinu PC7 – wyjściowy<br />PORTC |= LED_PIN1; // wyłączenie diody LED1<br />DDRC &amp;= ~KEY_PIN1; // kierunek pinu PC6 - wejściowy<br />PORTC |= KEY_PIN1; // podciągnięcie pinu do VCC<br />DDRC|= LED_PIN2;// kierunek pinu PC1 – wyjściowy<br />PORTC |= LED_PIN2;// wyłączenie diody LED2<br />DDRC &amp;= ~KEY_PIN2;// kierunek pinu PC2 - wejściowy<br />PORTC |= KEY_PIN2;// podciągnięcie pinu do VCC<br /><br />//konfiguracja Timer2 - timery programowe, tyknięcie timera co 10ms<br />//taktowanie procesora 8MHz<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb CTC<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20);// preskaler = 1024<br />OCR2 = 78;// dodatkowy podział przez 78 (rej. przepełnienia)<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />uint8_t idx = 0;<br />_delay_ms(5);    //opóźnienie aby zdążyło się ustabilizować napięcie na pinach klawiszy<br /><br />sei();<br /><br />// ****** pętla główna programu *********<br />while(1)<br />{<br />//nieblokująca obsługa przycisków<br />key_press(&amp;key_lock1, &amp;PINC, KEY_PIN1, przycisk1);<br />key_press(&amp;key_lock2, &amp;PINC, KEY_PIN2, przycisk2);<br /><br /><br />if( !(PINC &amp; LED_PIN1) )//jeśli dioda 1 świeci<br />{<br />if(wlacz_led2)//jeśli jest zezwolenie na pracę led 2<br />{<br />if(!Timer1)        //jeśli timer doliczył do zera<br />{<br />if(stan&#91;idx&#93; == 1) LED_ON;<br />else LED_OFF;<br /><br />Timer1 = czas&#91;idx&#93;;//nakręć timer wartością z tabeli czas<br /><br />idx++;<br />//jeśli idx większe lub równe ilości elementów w tablicy czas<br />//to wyzeruj wartość idx - cykl zacznie się od nowa<br />if( idx &gt;= sizeof(czas) ) idx = 0;<br /><br />}<br />}<br />}else//jeśli dioda 1 nie świeci<br />{<br />LED_PIN2OFF;//wyłacz diodę led 2<br />idx = 0;//wyzeruj idx aby następny cykl zaczął się od nowa<br />wlacz_led2 = 0;//wyłącz zezwolenie na pracę led 2<br />}<br /><br /><br /><br />}<br /><br />}<br />//******************************************************** koniec main()<br /><br />void przycisk1(void)<br />{<br />LED_TOG1;<br />}<br /><br />void przycisk2(void)<br />{<br />wlacz_led2 ^= 1;//włącz lub wyłącz zezwolenie na miganie led2<br />}<br /><br />void key_press(uint16_t * klock, volatile uint8_t * KPIN, uint8_t key_mask, void (*kfun)(void) )<br />{<br />        register uint8_t key_press = (*KPIN &amp; key_mask);<br /><br />        if( !*klock &amp;&amp; !key_press )<br />        {<br />                *klock=50000;<br /><br />                // reakcja na PRESS (wcinięcie przycisku)<br />                if(kfun) kfun();<br /><br />        } else if( *klock &amp;&amp; key_press ) (*klock)++;<br />}<br /><br /><br />ISR(TIMER2_COMP_vect)<br />{<br />uint16_t n;<br /><br />n = Timer1;/* 100Hz Timer1 */<br />if (n) Timer1 = --n;<br /><br />}[/syntax]<br />Proponuje ci iść tą drogą zamiast stosować delaye. Bo więcej z tego szkody niż pożytku.<br /><br />No i daj sobie spokój z obsługa klawiszy taką jaką miałeś. Mirek przedstawił taką a nie inną na początku Bluebooka tylko po to aby każdy początkujący mógł ją zrozumieć. A do tak prostych zastosowań lepiej stosować te z Mirka bloga.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 22 cze 2014, o 17:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KoWaL]]></name></author>
<updated>2014-06-22T15:14:21+01:00</updated>
<published>2014-06-22T15:14:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85373#p85373</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85373#p85373"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85373#p85373"><![CDATA[
Pamiętaj też że np. podczas _delay_ms(xxx) mogą nie działać klawisze ponieważ to zatrzymuje program na dany okres czasu. (przynajmniej u mnie przez to kiedyś nie działało)<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />Jak zrobisz przycisk z funkcją break; to przytrzymaj go dłużej i zobacz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2114">KoWaL</a> — 22 cze 2014, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-06-22T15:10:42+01:00</updated>
<published>2014-06-22T15:10:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85372#p85372</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85372#p85372"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85372#p85372"><![CDATA[
Bo z pętli nieskończonej nie wyjdziesz ot tak sobie. Tam możesz wejść przerwaniem. Musisz to zrobić inaczej. Te zapalanie diod zrób jako procedurę i wykonuj ją sprawdzając czy nie robi się coś co ma przerwać te procedurę. Jeśli tak to wtedy wyjdziesz spokojnie z pętli na własne życzenie <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=1425">WoodPaker</a> — 22 cze 2014, o 15:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ifrook]]></name></author>
<updated>2014-06-22T14:23:59+01:00</updated>
<published>2014-06-22T14:23:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85370#p85370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85370#p85370"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85370#p85370"><![CDATA[
hmm, no tak, problem w tym że nie wiem czemu ale gdy dioda 2 wpada w pętle to nie jestem w stanie zmienić stanu 1 a to jest mi potrzebne aby wprowadzić instrukcje 'break' ;/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3649">ifrook</a> — 22 cze 2014, o 14:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[David]]></name></author>
<updated>2014-06-21T19:16:33+01:00</updated>
<published>2014-06-21T19:16:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85293#p85293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85293#p85293"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85293#p85293"><![CDATA[
możesz użyć komendy break<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1402">David</a> — 21 cze 2014, o 19:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ifrook]]></name></author>
<updated>2014-06-21T18:13:59+01:00</updated>
<published>2014-06-21T18:13:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85278#p85278</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85278#p85278"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85278#p85278"><![CDATA[
Faktycznie, zapomniałem zamknąć &quot;}&quot; i wyszły jakieś dziwy, teraz jest ok, ale powstał nowy problem, ponieważ pętla wykonuje się cały czas nie mogę jej wyłączyć, rozumiem że wykonywaną pętle nieskończoną mogę przerwać w każdym jej momencie tylko przerwaniem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3649">ifrook</a> — 21 cze 2014, o 18:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-06-21T15:17:05+01:00</updated>
<published>2014-06-21T15:17:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85257#p85257</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85257#p85257"/>
<title type="html"><![CDATA[Re: jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85257#p85257"><![CDATA[
[syntax=c]/*<br />     * main.c<br />     *<br />     *  Created on: 01-06-2014<br />     *      Author: bartek<br />     */<br />    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />     <br />     <br />    // ************* definicje dla preprocesora<br />    // dioda LED1<br />    #define LED_PIN1 (1&lt;&lt;PC1) // definicja pinu do którego podłączona jest dioda1<br />    #define LED_TOG1 PORTC ^= LED_PIN1 // makrodefinicja – zmiana stanu diody<br />     <br />    // dioda led2<br />     <br />    #define LED_PIN2 (1&lt;&lt;PC2)// definicja pinu do którego podłączona jest dioda2<br />    #define LED_TOG2 PORTC ^= LED_PIN2 // makrodefinicja – zmiana stanu diody<br />    #define LED_PIN2OFF PORTC |= (LED_PIN2) // wyłączenie diody 2 gdy zapala sie dioda 1  PORTC &amp;= ~(LED_PIN2)<br />    #define LED_OFF PORTC |= LED_PIN2<br />    #define LED_ON PORTC &amp;= ~LED_PIN2<br />     <br />    // klawisz K1<br />    #define KEY_PIN1 (1&lt;&lt;PC3)<br />    #define KEY_DOWN1 !(PINC &amp; KEY_PIN1)<br />     <br />     <br />    // klawisz K2<br />     <br />    #define KEY_PIN2 (1&lt;&lt;PC4)<br />    #define KEY_DOWN2 !(PINC &amp; KEY_PIN2)<br />     <br />     <br />     <br />    int klawisz_wcisniety1(void); // deklaracja funkcji<br />    int klawisz_wcisniety2(void);<br />     <br />    // ** pętla główna main()<br />    int main(void)<br />    {<br />    // ****** inicjalizacja *********<br />    DDRC |= LED_PIN1; // kierunek pinu PC7 – wyjściowy<br />    PORTC |= LED_PIN1; // wyłączenie diody LED1<br />    DDRC &amp;= ~KEY_PIN1; // kierunek pinu PC6 - wejściowy<br />    PORTC |= KEY_PIN1; // podciągnięcie pinu do VCC<br />    DDRC|= LED_PIN2;// kierunek pinu PC1 – wyjściowy<br />    PORTC |= LED_PIN2;// wyłączenie diody LED2<br />    DDRC &amp;= ~KEY_PIN2;// kierunek pinu PC2 - wejściowy<br />    PORTC |= KEY_PIN2;// podciągnięcie pinu do VCC<br />     <br />     <br />    // ****** pętla główna programu *********<br />            while(1)<br />            {<br />                    if( klawisz_wcisniety1() ) // jeśli klawisz wciśnięty<br />                    {<br />                            LED_TOG1; // zmień stan diody na przeciwny<br />                            _delay_ms(200); // pauza 200ms<br />                    }<br />     <br />                    if( !(PINC &amp; LED_PIN1) )<br />                            {<br />                            if( klawisz_wcisniety2() ) // jeśli klawisz wciśnięty<br />                                    {<br />     <br />     <br />                                  while(1){<br />                                    LED_ON;<br />                                    _delay_ms(1000);<br />                                    LED_OFF;<br />                                    _delay_ms(1000);<br />                                    LED_ON;<br />                                    _delay_ms(1000);<br />                                    LED_OFF;<br />                                    _delay_ms(1000);<br />                                    LED_OFF;<br />                                    _delay_ms(200);<br />                                    LED_ON;<br />                                    _delay_ms(200);<br />                                    LED_OFF;<br />                                    _delay_ms(200);<br />                                    LED_ON;<br />                                    _delay_ms(200);<br />                                    LED_OFF;<br />                                    _delay_ms(200);<br />                                    LED_ON;<br />                                    _delay_ms(200);<br />                                    LED_OFF;<br />                                    _delay_ms(200);<br />                                    LED_ON;<br />                                    _delay_ms(200);<br />                                    LED_OFF;<br />                                    _delay_ms(200);<br />                                    } //Na pewno taka pętla nie działa?<br />     <br />     <br />                                    }<br />     <br />                            }<br />     <br />     <br />     <br />            }<br />     <br />    }<br />    //******************************************************** koniec main()<br />     <br />    // definicja funkcji<br />    int klawisz_wcisniety1(void)<br />            {<br />                    if( KEY_DOWN1 ) // klawisz wciśnięty ?<br />                    {<br />                            _delay_ms(80); // czas drgań styków<br />                            if( KEY_DOWN1 ) 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 />    int klawisz_wcisniety2(void)<br />            {<br />                    if( KEY_DOWN2 ) // klawisz wciśnięty ?<br />                    {<br />                            _delay_ms(80); // czas drgań styków<br />                            if( KEY_DOWN2 ) 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 />            }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 21 cze 2014, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ifrook]]></name></author>
<updated>2014-06-21T15:12:17+01:00</updated>
<published>2014-06-21T15:12:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85256#p85256</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85256#p85256"/>
<title type="html"><![CDATA[jak dodać pętle nieskończoną]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7522&amp;p=85256#p85256"><![CDATA[
Witam, mam taki kod:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 01-06-2014<br /> *      Author: bartek<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br /><br />// ************* definicje dla preprocesora<br />// dioda LED1<br />#define LED_PIN1 (1&lt;&lt;PC1) // definicja pinu do którego podłączona jest dioda1<br />#define LED_TOG1 PORTC ^= LED_PIN1 // makrodefinicja – zmiana stanu diody<br /><br />// dioda led2<br /><br />#define LED_PIN2 (1&lt;&lt;PC2)// definicja pinu do którego podłączona jest dioda2<br />#define LED_TOG2 PORTC ^= LED_PIN2 // makrodefinicja – zmiana stanu diody<br />#define LED_PIN2OFF PORTC |= (LED_PIN2) // wyłączenie diody 2 gdy zapala sie dioda 1  PORTC &amp;= ~(LED_PIN2)<br />#define LED_OFF PORTC |= LED_PIN2<br />#define LED_ON PORTC &amp;= ~LED_PIN2<br /><br />// klawisz K1<br />#define KEY_PIN1 (1&lt;&lt;PC3)<br />#define KEY_DOWN1 !(PINC &amp; KEY_PIN1)<br /><br /><br />// klawisz K2<br /><br />#define KEY_PIN2 (1&lt;&lt;PC4)<br />#define KEY_DOWN2 !(PINC &amp; KEY_PIN2)<br /><br /><br /><br />int klawisz_wcisniety1(void); // deklaracja funkcji<br />int klawisz_wcisniety2(void);<br /><br />// ** pętla główna main()<br />int main(void)<br />{<br />// ****** inicjalizacja *********<br />DDRC |= LED_PIN1; // kierunek pinu PC7 – wyjściowy<br />PORTC |= LED_PIN1; // wyłączenie diody LED1<br />DDRC &amp;= ~KEY_PIN1; // kierunek pinu PC6 - wejściowy<br />PORTC |= KEY_PIN1; // podciągnięcie pinu do VCC<br />DDRC|= LED_PIN2;// kierunek pinu PC1 – wyjściowy<br />PORTC |= LED_PIN2;// wyłączenie diody LED2<br />DDRC &amp;= ~KEY_PIN2;// kierunek pinu PC2 - wejściowy<br />PORTC |= KEY_PIN2;// podciągnięcie pinu do VCC<br /><br /><br />// ****** pętla główna programu *********<br />while(1)<br />{<br />if( klawisz_wcisniety1() ) // jeśli klawisz wciśnięty<br />{<br />LED_TOG1; // zmień stan diody na przeciwny<br />_delay_ms(200); // pauza 200ms<br />}<br /><br />if( !(PINC &amp; LED_PIN1) )<br />{<br />if( klawisz_wcisniety2() ) // jeśli klawisz wciśnięty<br />{<br /><br /><br /><br />LED_ON;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(1000);<br />LED_ON;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br /><br /><br />}<br /><br />}<br /><br /><br /><br />}<br /><br />}<br />//******************************************************** koniec main()<br /><br />// definicja funkcji<br />int klawisz_wcisniety1(void)<br />{<br />if( KEY_DOWN1 ) // klawisz wciśnięty ?<br />{<br />_delay_ms(80); // czas drgań styków<br />if( KEY_DOWN1 ) 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 />int klawisz_wcisniety2(void)<br />{<br />if( KEY_DOWN2 ) // klawisz wciśnięty ?<br />{<br />_delay_ms(80); // czas drgań styków<br />if( KEY_DOWN2 ) 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 />}[/syntax]<br /><br /><br />generalnie chciałbym aby ta część<br />[syntax=c]LED_ON;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(1000);<br />LED_ON;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(1000);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);<br />LED_ON;<br />_delay_ms(200);<br />LED_OFF;<br />_delay_ms(200);[/syntax]<br />wpadała w pętle, próbowałem z while(1) przed pierwszym delay ale nie zdaje to rezultatu ;/<br />czy może zmienić coś w samej funkcji if( klawisz_wcisniety2() ) poprzedzającą ten kawałek kodu?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3649">ifrook</a> — 21 cze 2014, o 15:12</p><hr />
]]></content>
</entry>
</feed>