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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=28&amp;t=2234&amp;mode</id>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-02-01T09:40:45+01:00</updated>
<published>2013-02-01T09:40:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26494#p26494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26494#p26494"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26494#p26494"><![CDATA[
[syntax=asm][/syntax]jak dotąd chyba najbliżej mojego problemu jest (rezsurmar) , otóż jeszcze inaczej nazwę to tak :<br />macro ma spowodować umieszczenie w tablicy flash gotowej mapy bitowej &quot;okna&quot; zbudowanej na podstawie pełnego zestawu<br />czcionek dostępnego tylko i wyłącznie preprocesorowi !!!.<br /><br /> A jeszcze inaczej, ze szczegółami- uprzedzam bardzo rozwlekle , używając &quot;nędzy, nędz wszelakich== edytor macr w AVR Studio4&quot;<br />takie sobie dziwaczenie, skutecznie tworzy gotową ,zainicjowaną całkiem przyzwoitą structurę ze wskaźnikami ,zmiennymi bitowymi i co tam jeszcze..<br />// z góry informuję iż wiem, że te makra tylko liczą, gdybym wiedział jak &quot;sortować i wyłuskiwać&quot; to bym tego wątku nie założył,<br /> tylko &quot;machnął&quot; w AVRS4, skopiował i po problemie, jednak przesiadam się właśnie na super inteligenta == C , więc chce odpowiedź na postawione pytanie jakoś uzyskać ...<br /> oto dłużyzna - za to skrajnie prosta, która powinna wyjaśnić jakiej techniki szukam.<br /><br />ps. poniżej <br /><br /> &quot;.equ&quot; ==&gt;  robi tyle co  #define<br /><br />.macro NAZWA ==&gt;  to ciało makra , też niczego nie robi , opisuje tylko mechanizm co ma zrobić preprocesor gdy napotka<br />dyrektywę .set  a po niej wymienioną nazwę NAZWA. - &quot;ciało kończy się dyrektywą .endmacro<br /><br />.set   NAZWA   ==&gt; tutaj właśnie podaję &quot;argumenty&quot; dla maszynki o nazwie NAZWA wymienionej po .macro , to to dopiero produkuje w PC-cie jakąś nową wartość dla identyfikatora NAZWA.<br /><br />.db NAZWA , .dw NAZWA  ==&gt; tutaj  owa wartość z PC-ta czytaj preprocesora jest formatowana na 1,2,4 bajty itd.<br /><br />aby zatem utworzyć teraz tablicę z &quot;moją mapą bitową&quot; niekonieczne jednoelementową zamiast wypisywać żmudnie wszystkie elementy , piszę tylko nazwę macra , po tym podaję argumenty ( w tym przykładzie ) jest to text który chcę umieścić w oknie,<br /> a preprocesor podmienia mój tekst na ciąg bitowy zależny od zadeklarowanej czcionki !!!<br /><br />Tak naprawdę to nie robi nic innego niż normalnie gdy nie ma macra, wtedy domyślnie podstawia pod litery mojego tekstu<br />kody ascii , więc jak zmusić go aby zamiast kodów ascii podstawił wzory bitowe czcionek ????????????? oczywiście dużo dłuższe niż jednobajtowy kod ascii.<br /><br /><br />uwaga &quot;;&quot; robi za znak komentarza - do końca linii  !!!<br /><br />ps. trzykroć dołączałem plik , nie łyka , zatem wprost text poniżej:<br />;================================================================================================<br />;                   numery bitów kolejnych atrybutów ekranu i pola<br />;================================================================================================<br />.equ Tryb_Pr= 0;nakaz obsł. klawiszy trybów pracy , STOP jest zawsze obsługiwany<br />.equ Select_On= 1;nakaz obsługi &lt;&gt; bo Soft_Key jest do 10 szt<br />.equ Mpk_On= 2;ten ekran jest multiplikowany /inna obsługa<br />.equ Ekran_On= 3;usunąć po aktualizacji<br />.equ Edit_On= 4;bit włączonej edycji<br />.equ Pas_I= 5;numer bitu hasła I-to samo w HiByte  dla potwierdzenia uprawnień<br />.equ Pas_II= 6;numer bitu hasła II<br />.equ Pas_III= 7;numer bitu hasła III<br /><br />.equ Rec_Ekr_Tab= 18;długość rekordu opisu jednego ekranu<br />;=================================================================================================<br />;            opis drzewa ekranów 30 rekordów po   18 bajtów dla każdego ekranu<br />;=================================================================================================<br />;stałe dla przeunięcia ZH:ZL w tablicy Ekr_Tab<br />.equ E_Nr= 0; 0-wy bajt= numer własny ekranu<br />.equ E_Atr= 1; 1-szy bajt= Atrybuty ekranu  <br />;.equ E_PDom = 2; 2-gi bajt = Nr Domyślnego pola <br />.equ E_K13= 2; 2-gi bajt  = Nr domyślnego komunikatu dla tego ekranu<br />.equ E_SKmax= 3; 3-ci bajt = Liczba Pól/ F1 do F_SKmax dla SKey /Zwykłe Ekrany do 9,a Mpk do 255<br />.equ E_Var_L= 4; 4-ty bajt = low(adres zmiennej)<br />.equ E_Var_H= 5; 5-ty bajt = high(adres zmiennej)<br />.equ E_SKey= 6; 6-ty bajt = numer Soft_Key-text dla krotności =0<br />.equ E_ESC= 7; 7-ty bajt = numer ekranu po naciśnięciu ESC<br />.equ E_F1= 8; 8-ty bajt = numer ekranu po naciśnięciu F1<br />.equ E_F2= 9; 9-ty bajt = numer ekranu po naciśnięciu F2<br />.equ E_F3= 10; 10-ty bajt = numer ekranu po naciśnięciu F3<br />.equ E_F4= 11; 11-ty bajt = numer ekranu po naciśnięciu F4<br />.equ E_F5= 12; 12-ty bajt = numer ekranu po naciśnięciu F5<br />.equ E_F6= 13; 13-ty bajt = numer ekranu po naciśnięciu F6<br />.equ E_F7= 14; 14-ty bajt = numer ekranu po naciśnięciu F7<br />.equ E_F8= 15; 15-ty bajt = numer ekranu po naciśnięciu F8<br />.equ E_F9= 16; 16-ty bajt = numer ekranu po naciśnięciu F9<br />.equ E_F10= 17; 17-ty bajt = numer ekranu po naciśnięciu F10<br /><br />;============================================================================================<br />;numery bitów dla bajtu atrybutów Pola<br />;============================================================================================<br />.equ Pole_On= 0;Pole Włączone/wyłączone<br />.equ Litery_On= 1;nakaz obsługi  liter dla wartości pola<br />.equ Mode_On= 2;Mode_On  nakaz obsługi klawiszy zmieniających tryby pracy<br />.equ Edit_Prh= 3;zakaz Edycji pola<br />;.equ Edit_On= 4;bit włączonej edycji<br />;.equ Pas_I= 5;numer bitu hasła I-te bity maskują uprawnienia z ekranu<br />;.equ Pas_II= 6;numer bitu hasła II    -ustawione na 1 nadpisują uprwnienia ekranu <br />;.equ Pas_III= 7;numer bitu hasła III-ustawione na 0 przejmują uprawnienia ekranu<br /><br />.equ Rec_Pola_Tab= 24 ;długość rekordu pola<br />;===================================================================================================<br />;   Opis Pól ekranu w 22 bajtach po 36 rekordów dla każdego ekranu= 792 bajty na ekran<br />;===================================================================================================<br />.equ P_Atr= 0; 0-wy bajt  = Atrybuty Pola<br />.equ P_Lg= 1; 1-szy bajt  = ilość znaków pola/długość oraz typ pola = hasło , data , czas itp<br />.equ P_K13 = 2; 2-gi bajt  = Numer komunikatu dla linii L_13<br />.equ P_SK= 3; 3-ci bajt  = Nr.SK_Fld do podświetlenia na linii SK_Shf (Soft_Key's)<br />.equ P_Prv= 4; 4-ty bajt  = Pole poprzednie<br />.equ P_Nxt= 5; 5-ty bajt  = Pole następne<br />.equ P_TxL= 6; 6-ty bajt  = Low(Początek_Pola) na ekranie tekstowym<br />.equ P_TxH= 7; 7-my bajt  = high(Poczatek_Pola):wskaźnik do pamięci VideoRam<br />.equ P_GrL= 8; 8-my bajt  = low początek pola na ekranie graficznym<br />.equ P_GrH= 9; 9-ty bajt  = high początek pola na ekranie graficznym<br />.equ P_VRL= 10;10-ty bajt  = LoByte adresu zmiennej związanej z tym polem<br />.equ P_VRH= 11;11-ty bajt  = HiByte adresu zmiennej w RAM<br />.equ P_VR3= 12;12-ty bajt  = Byte3 adresu zmiennej w RAM + Ukryj_znaki &lt;&lt;4<br />.equ P_VEL= 13;13-ty bajt  = Lo Byte adresu w EEPROM<br />.equ P_VEH= 14;14-ty bajt  = Hi Byte adresu w EEPROM<br />.equ P_VLL= 15;15-ty bajt  = Lo Byte minimalnej wart. Zmiennej pola<br />.equ P_VLH= 16;16-ty bajt  = Hi Byte<br />.equ P_VL3= 17;17-ty bajt  = Byte3<br />.equ P_VHL= 18;18-ty bajt  = Lo Byte minimalnej wart. Zmiennej pola<br />.equ P_VHH= 19;19-ty bajt  = Hi Byte<br />.equ P_VH3= 20;20-ty bajt  = Byte3<br />.equ P_VTp= 21;21-ty bajt  = Typ Zmiennej dla tego pola<br />.equ P_STp= 22;22-gi bajt  = Typ Pola&quot;String&quot; lub wyświetlanego tekstu<br />.equ P_Rez= 23;23-i  bajt  = rezerwa<br /><br />.dseg<br />;.org 2000<br /> DummyVar:  .byte 10; pusta nieużywana zmienna Ram<br />.eseg<br />Dum_VarE:.byte 4 ; pusta nieużywana zmienna EEPROM na adresie 0x00-0x03<br />.cseg<br /><br />.if Tablice_Ekr_Single ==1<br /><br />JMP  Start_Test<br /><br />.endif<br /><br />;=====================================================================================================<br />;Tablica Atrybutów Ekranu - te atr. są nadrzędne nad atr. Pól<br />;bit 7 6 5 4 3 2 1 0<br />;0b  0 0 0 0 0 0 0 0<br />; | | | | | | | |<br />; | | | | | | |  - 1= obsługuj klawisze trybu pracy (01 do 07) ,nie dot.:F1 do F5,&lt;&gt;, STOP ,&lt;,&gt;<br />; | | | | | |  --- 1= nakaz obsługi &lt;&gt; bo Soft_Key jest więcej niż 5 szt<br />; | | | | |  ------1=;ten ekran jest multiplikowany /inna obsługa <br />; | | | |  --------1= ust. na &quot;0&quot; ukrywa ekran przed wyświetleniem<br />; | | |  ----------1= bit włączonej edycji<br />; | |  ------------1= żądaj hasła dostępu poziom I  /Użytkownik<br />; |  --------------1= żądaj hasła dostępu poziom II/Nadzór Techn.<br />;  ----------------1= żądaj hasła dostępu poziom III/Serwis PLC<br /><br /><br /><br /><br />;=====================================================================================================<br />;===============Set_Ekran macro obliczające dane dla tabeli Ekr_Tab ==================================<br />;=====================================================================================================  <br />.macro Set_Ekran<br />.set Tryb= @1 *1<br />.set Funkc= @2 *2 + Tryb<br />.set Extend= @3 *4 + Funkc<br />.set F6_On= @4 *8 + Extend<br />.set Ed_On= @5 *16 + F6_On<br />.set Has_I= @6 *32 + Ed_On<br />.set Has_II= @7 *64 + Has_I<br />.set Has_III= @8 *128 + Has_II<br />.set Ekran  = ((Has_III &lt;&lt; 8) +@0 )<br />.dw  Ekran ;bajt 0 NrEkranu,bajt 1= Atrybuty<br />.set Ekran = ((@9 &lt;&lt; 8) + @11)<br />.dw Ekran;  bajt2 Domyślne Pole i bajt 3= W-krotność ekranu<br />.set Ekran  = (@23) <br />.dw Ekran ;bajt 4= low(zmienna),bajt 5=high(zmienna)<br />    .set Ekran=((@12&lt;&lt;8) + @10)<br />.dw Ekran ;bajt 6=nr.Soft_Key,bajt 7 = Ekr. dla ESC<br />    .set Ekran=((@14&lt;&lt;8) + @13)<br />.dw  Ekran ;bajt 8= Ekr dla F1 i bajt 9= Ekr dla F2<br />    .set Ekran=((@16&lt;&lt;8) + @15)<br />.dw  Ekran ;bajt 10= Ekr dla F3 i bajt 11= Ekr dla F4<br />    .set Ekran=((@18&lt;&lt;8) + @17)<br />.dw  Ekran ;bajt 12= Ekr dla F5 i bajt 13= Ekr dla F6<br />    .set Ekran=((@20&lt;&lt;8) + @19)<br />.dw  Ekran ;bajt 14= Ekr dla F7 i bajt 15= Ekr dla F8<br />    .set Ekran=((@22&lt;&lt;8) + @21)<br />.dw  Ekran ;bajt 16= Ekr dla F9 i bajt 17= Ekr dla F10<br />.endmacro<br />.cseg<br />Ekr_Tab:;Atrybuty ekranów 540 bajtów = 30 ekranów x 18 bajtów  na ekran<br />;=========Ekran_0 do Ekran_29  ===========================            <br />;            @0-Nr.Ekranu<br />;           |   @1-Tryb_Pr   obsługuj klawisze trybu pracy (01 do 07)<br />;           |  |  @2-Select_on   to jest końcowy ekran w drzewie menu,przyciśnięcie F1-F5 zatwierdza wybór Ekranu do pracy<br />;           |  | |  @3-Mpk_On   ten ekran jest multiplikowany /inna obsługa<br />;           |  | | |  @4-Ekran_On   ;ust. na &quot;0&quot; ukrywa ekran przed wyświetleniem<br />;           |  | | | |  @5-Edit_On<br />;           |  | | | | |  @6-Pass1<br />;           |  | | | | | |  @7-Pass2<br />;           |  | | | | | | |  @8-Pass3<br />;           |  | | | | | | | |    @9-SKmax ,ilość opcji od F1-do Fmax<br />;           |  | | | | | | | |  |    @10-Linia Tx_SoftKey wymagana przez ten ekran<br />;           |  | | | | | | | |  |   |    @11-Domyślny komunikat K13<br />;           |  | | | | | | | |  |   |   |   @12-Ekr dla ESC<br />;           |  | | | | | | | |  |   |   |  |   @13-Ekr dla F1  , wpis 77 oznacza koniec wyboru ekr. i przełączenie do wyboru pola do edycji<br />;           |  | | | | | | | |  |   |   |  |  |   @14-Ekr dla F2<br />;           |  | | | | | | | |  |   |   |  |  |  |   @15-Ekr dla F3<br />;           |  | | | | | | | |  |   |   |  |  |  |  |   @16-Ekr dla F4<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |   @17- Ekr dla F5<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |   @18 - Ekr dla F6<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |   @19 -Ekr dla F7<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |   @20 -Ekr dla F8<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |  |   @21-Ekr dla F9<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |  |  |   @22-Ekr dla F10<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |  |  |  |   @23-zmienna ekranu\<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |  |  |  |  |<br />;           |  | | | | | | | |  |   |   |  |  |  |  |  |  |  |  |  |  |  |  |<br /> Set_Ekran  0 ,0,1,0,1,1,0,0,0,  4,  2,17, 0, 1, 2, 3, 4, 5, 5, 5, 5, 5, 0,0x0008;E_00-Powitalny Systemu<br /> Set_Ekran  1 ,1,1,0,1,1,0,0,0,  1,  4,18, 0, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7,(Lst_Hasla);E_01-Powit.Gr.Ustawienia Główne<br /> Set_Ekran  2 ,1,1,0,1,1,0,0,0,  3,  6,18, 0, 8, 9,10,11,11,11,11,11,11,11,0x0008;E_02-Powit.Gr.Praca<br /> Set_Ekran  3 ,1,1,0,1,1,0,0,0,  3,  8,18, 0,12,13,14,15,15,15,15,15,15,15,0x0008;E_03-Powit.Gr.Maszyna<br /> Set_Ekran  4 ,1,1,0,1,1,0,0,0,  2, 10,18, 0,16,17,18,18,18,18,18,18,18,18,0x0008;E_04-Powit.Gr.SERWIS<br /> Set_Ekran  5 ,1,1,0,1,0,0,0,0,  4, 12,18, 0,19,20,21,22,23,23,23,23,23,23,0x0008;E_05-Powit.Programowanie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 1 lut 2013, o 09:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2013-02-01T08:25:14+01:00</updated>
<published>2013-02-01T08:25:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26492#p26492</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26492#p26492"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26492#p26492"><![CDATA[
Koledze chodzi zapewne o instrukcje warunkowe preprocesora.<br />Czyli coś na kształt twoich bibliotek Mirku, czyli np. potrzebujemy funkcję lcd_home(); no to bach w pliku przy odpowiedniej opcji wpisujemy '1' zamiast '0' a nie tworzymy całego ciała programu.<br />Czyli musiało by to być na <br />[syntax=c]<br />#if a tu warunek jej pojawienia się<br />Tu definicja czcionki<br />#endif<br />[/syntax]<br />Tak sobie to wyobrażam, tylko nie wiem jak to zautomatyzować.<p>Statystyki: Napisane przez Gość — 1 lut 2013, o 08:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-01T01:39:25+01:00</updated>
<published>2013-02-01T01:39:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26490#p26490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26490#p26490"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26490#p26490"><![CDATA[
Tzn ja jednak sobie tego nie mogę wyobrazić sorki. Nie mówię że masz jakiś zły pomysł ale go nie rozumiem niestety <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />Ja w pixel factory po prostu generuję sobie właśnie całe pliki *.c z definicjami wybranych czcionek i te dołączam sobie do programu. Zresztą możesz przecież pobrać sobie wersję DEMO tego programu i zobaczyć jak to robię. Dostajesz na wyjściu cały gotowy komplet plików, który wystarczy dołączyć do projektu i masz czcionki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 lut 2013, o 01:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-02-01T10:26:51+01:00</updated>
<published>2013-02-01T01:02:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26488#p26488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26488#p26488"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26488#p26488"><![CDATA[
hej &quot;mirek&quot; właśnie chodzi o to aby zdefiniować dosłownie i tylko zdefiniować , ale użyć wyłącznie jako wzorca z którego pobrane<br />zostaną tylko te potrzebne i tylko te potrzebne w napisach podanych jako &quot;argument&quot; dla makro  w efekcie końcowym stworzą rzeczywiste &quot;stringi we flash&quot; .<br /> Co do istoty rzecz polega na dostępności dla preprocesora całego zestawu czcionek ,po to aby stworzyć ciągi wynikowe i w dodatku<br />przeorganizowane tak jak pisałem zakładając WĄTEK. Pierwsze skojarzenie przyszło mi do głowy z Twoim programem - tylko rzuciłem na niego okiem - właśnie do budowania czcionek Pixel.. ja od dawna używam SG bitmap Font Editor i zrobienie czcionek nie jest większym problemem.<br /><br /><br />inaczej: czcionki wszystkie mają być dostępne w całości tylko dla preprocesora  , w kodzie programu mają znaleźć się tylko<br />napisy utworzone na podstawie dostępnych preprocesorowi wszystkich czcionek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 1 lut 2013, o 01:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-01T00:46:31+01:00</updated>
<published>2013-02-01T00:46:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26483#p26483</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26483#p26483"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26483#p26483"><![CDATA[
oj jp_elek ale powiedz (bo może nie rozumiem) co to za pomysł aby definiować czcionki za pomocą #define ??? <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> czy to nie jakieś nieporozumienie dość straszne ??? (ale uprzedzam może nadal nie rozumiem o co tobie chodzi dokładnie)<br /><br />przecież czcionki tzn jedynie słuszny sposób umieszczania czcionek to właśnie definicja tablic w C, tablic we Flash jak piszesz czyli:<br /><br />[syntax=c]const uint8_t czcionka[] PROGMEM = {<br />  0xA4, 0xB3, 0x3f, 0x44,<br />  0xd7, 0x93, 0x ..........<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 lut 2013, o 00:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-02-01T00:41:05+01:00</updated>
<published>2013-02-01T00:41:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26481#p26481</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26481#p26481"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26481#p26481"><![CDATA[
hej,<br />Zatem , co zostanie wpisane po takiej dyrektywie<br />#define A1 0x27<br />#define A2 0x3F<br />no i z pewnością nic nie zostanie wpisane dopóki gdzieś nie użyję choćby:<br />u=A1 // prościej tego nie wyrażę ...<br />Oczywiście rozpisanie każdej czcionki na trzy #define jest delikatnie ujmując nieco męczące,<br /> zatem moim zdanie potrzeba <br />a. cały opis czcionek umieścić w jednym , kilku co najwyżej #define<br />a potem zmajstrować kolejne kilka makr które użyją tego pierwszego kramu aby z niego wyciągnąć to co potrzebne ..<br />Weź za punkt wyjścia choćby Mirka sposób sklejania nazw dla PORT(x) , SPORT(x) itd<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 1 lut 2013, o 00:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-02-01T00:27:20+01:00</updated>
<published>2013-02-01T00:27:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26478#p26478</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26478#p26478"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26478#p26478"><![CDATA[
Nie zaraz zaraz,<br />Jeżeli jako #define wpiszesz czcionki to one i tak zajmą miejsce w pamięci programu... Nic za darmo nie ma <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><br />A korzystanie z tych plików jest banalne. Wystarczy że użyjesz plików nagłówkowych a w nich będą znajdowały się dyrektywy #define <br /><br />tak jak pisałem: dobra książka do C/C++ lub porządny kurs internetowy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 1 lut 2013, o 00:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-02-01T00:00:07+01:00</updated>
<published>2013-02-01T00:00:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26475#p26475</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26475#p26475"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26475#p26475"><![CDATA[
Hej <br />Nie zrozumieliśmy się , chodzi właśnie o to ,aby korzystając z pliku w którym właśnie jako #define są wpisane czcionki,<br />- to niczego jeszcze nie umieszcza we flash , Jednak, jeśli da się zmajstrować makro wyłuskujące potrzebne ciągi z tych<br />stałych &quot;dosłownych ?&quot;, i dopiero efekt działania napisanego makra wpisać jako wartość ciągu const char PROGMEM[....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 1 lut 2013, o 00:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[staneq]]></name></author>
<updated>2013-01-31T23:25:09+01:00</updated>
<published>2013-01-31T23:25:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26473#p26473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26473#p26473"/>
<title type="html"><![CDATA[Re: macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26473#p26473"><![CDATA[
Czy chodzi Ci o makra typu #define?<br /><br />To są makrodefinicje preprocesora i są używane przed kompilacją, i służą tylko i wyłącznie:<br /><ul>Wyłączaniu/załączaniu fragmentów kodu z kompilacji (dyrektywa #if, #ifndef #eif)<br />Dołączaniu plików nagłówkowych (#include)<br />Definiowaniu (sic) stałych (#define)<br /></ul>Czy o czymś zapomniałem? (pisze z pamięci)<br /><br />Zapewne chodziło by Ci o dyrektywe #define aby zdefiniować czcionki?<br /><br />Co do pilnowania &quot;szerokości okna&quot; to tu cię zasmucę. Jak już pisałem makra używane są przez preprocesor PRZED kompilacja a więc nie mają najmniejszego wpływu na to co się dzieje podczas wykonywania programu (tzn nie da się makrem napisać funkcji tak aby odpowiadała na naciśnięcie klawisza itp).<br /><br />Apo drugie jak by to miało oszczędzić pamięć typu FLASH? skoro to co zdefiniujesz i tak musi być gdzieś zapisane i tak, to jest w pamięci programu FLASH <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Widzę że musisz poczytać sobie o obszarach pamięci mikroprocesorów (RAM, FLASH i EEPROM)<br /><br /><br />-------<br />edit<br /><br />A może chodzi Ci o funkcje? <br />To polecam niebieską książeczkę. Albo dowolną DOBRĄ książke do podstaw C/C++<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=770">staneq</a> — 31 sty 2013, o 23:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-01-31T22:34:41+01:00</updated>
<published>2013-01-31T22:34:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26469#p26469</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26469#p26469"/>
<title type="html"><![CDATA[macro gdzie szukać]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2234&amp;p=26469#p26469"><![CDATA[
albo się powtarzam albo przed chwilą mnie wyautowało , <br /><br />   Mam pytanie gdzie szybko doszkolić się w konstruowaniu macr ???<br />Mam taki problem , chcę nieco oszczędzić flash, oraz na czasie wykonania procesora.<br />Na wyświetlaczu ze sterownikiem UC1608 chce używać przygotowanej dużej czcionki , <br /> czcionka każdego znaku to powiedzmy trzy grupy po 10 bajtów , aby uniknąć zapisywania całej tablicy<br />do flash, chcę zapisać tam gotowe napisy ale w taki sposób aby najpierw były tam &quot;górne&quot; 10-tki bajtów<br />znaków całego tekstu , potem środkowe, potem jeszcze niższe , aż cały tekst zostanie wyświetlony .<br />  Chodzi o prostą rzecz, procesor ma wyświetlać &quot;całe okno&quot; sukcesywnym czytaniem kolejnych adresów<br />flash jako ciąg od pierwszego do ostatniego. Jedynym co musi jeszcze zrobić funkcja to tylko pilnować szerokości <br />&quot;okna&quot; i zmienić adres zapisu gdy osiągnie ostatnią prawą pozycję .<br />Myślę że powód jest poważny takiego postawienia sprawy , gdyż dopiero zaczynam z C , i póki co<br />najczęściej tylko rozpaczam jak funkcje pożerają cykle procesora bez , zmiłuj się ...<br /> Zatem ,  proszę o radę, jak ewentualnie skuteczniej podejść do sprawy , i gdzie znaleźć więcej materiałów<br />o regułach tworzenia macr.??<br /> <br />J.P<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 31 sty 2013, o 22:34</p><hr />
]]></content>
</entry>
</feed>