pic a C

Andrej Jancura aj.hwlist na gmail.com
Pondělí Leden 14 17:43:09 CET 2013


No ja Vam rad poradim, pretoze viem, ze ako rychlo ste k tomu prisli,
tak rychlo to aj zabudnete.   :)

A.

2013/1/14 Miroslav Draxal <evik na volny.cz>:
> Samosebo, tyhle lehké konstrukce jsou v programu použity. Jenom přemýšlím,
> "že bych se naučil něco nového" ono to hledat na netu či v literatuře jde,
> ale přiznám se, jsem líný to hleda, raději se zeptám "chytrých hlav" Míra
>
>
>
> From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On
> Behalf Of Andrej Jancura
> Sent: Monday, January 14, 2013 3:32 PM
>
>
> To: HW-news
> Subject: Re: pic a C
>
>
>
> Aha az teraz som si vsimol ten return... dajte ho prec, a vyhodnoti
>
>
> Vam to cely byte naraz.
>
> A.
>
>
> Dňa 14. január 2013 15:27, Andrej Jancura <aj.hwlist na gmail.com> napísal/a:
>> Dobry den,
>>
>> skuste ten ChangeDateTime nadefinovat ako union, kde budete mat
>> polozku ChangeDateTime.Byte a ten date potom ako parameter pre switch,
>> Switch (DateTime.changeDateTime.Byte)... mohlo by to vygenerovat dve
>> instrukcie
>>
>> movwf   DateTime.changeDateTime.Byte, f
>> btfss    Status,Z
>>
>> Pokial to chcete cez bit test file skip instrukcie, tak musite ist len
>> cez if(DateTime.changeDateTime.New10ms). Neviem ci switch podporuje
>> bitove operandy, ale skor nie.
>>
>> Majte vzdy na pamati, ako ma ten vysledny kod vyzerat v asembleri,
>> potom to relativne lahko prepisete do C, teda uz optimalizovaneho C.
>>
>> Ja osobne by som ten kod napisal takto (trochu sa s tym treba pohrat)
>>
>> if(DateTime.changeDateTime.Byte == 0)
>>    return;
>> else
>> { if(DateTime.changeDateTime.New10ms)
>>    { add_10ms(); return;}
>>   if(DateTime.changeDateTime.New100ms)
>>    { add_100ms(); return;}
>> ...
>>
>> Myslim, ze to vygeneruje kratsi kod, ako ked pouzijete switch(Byte),
>> case... switch je implemntovany ako postupny xor a jump.
>>
>> A.
>>
>>
>> 2013/1/14 Miroslav Draxal <evik na volny.cz>:
>>> Dobrý den,
>>>
>>> Tak zase zápis.
>>>
>>>
>>>
>>> typedef struct {
>>>
>>>     unsigned newHalfSec : 1; // nová půlsekunda
>>>
>>>     unsigned newSec : 1; // nová sekunda
>>>
>>>     unsigned newMinuta : 1; // nová minuta
>>>
>>>     unsigned newHodina : 1; // nová hodina
>>>
>>>     unsigned new10ms : 1; // nových 10ms
>>>
>>>     unsigned new20ms : 1;//nových 20ms
>>>
>>>     unsigned new100ms : 1;//nových 100ms
>>>
>>>     unsigned HodinyStop : 1; //zastaví běh hodin
>>>
>>> } _changeDateTime;
>>>
>>>
>>>
>>> typedef struct {
>>>
>>>     char rok;
>>>
>>>     char mesic;
>>>
>>>     char den;
>>>
>>>     char den_tyden;
>>>
>>>     char hodin;
>>>
>>>     char minut;
>>>
>>>     char sekund;
>>>
>>>     char counter; // kolikrát za 1sekundu dojde k přerušení
>>>
>>>     uint * pDenNazev; // ukazatel na paměťový prostor s názvem dnu
>>>
>>>     _changeDateTime changeDateTime;
>>>
>>> } _DateTime;
>>>
>>>
>>>
>>> _DateTime DateTime;
>>>
>>>
>>>
>>> Jak do Switch zapsat něco takového viz níže. Zase nějak přes pointery?
>>>
>>>
>>>
>>> Switch (DateTime.changeDateTime)
>>>
>>> {
>>>
>>> Case . new10ms:
>>>
>>>                ....
>>>
>>>                Break;
>>>
>>> Case ....
>>>
>>> }
>>>
>>>
>>>
>>> Míra
>>>
>>>
>>>
>>> __________ Informace od ESET NOD32 Antivirus, verze databaze 7890
>>> (20130114)
>>> __________
>>>
>>> Tuto zpravu proveril ESET NOD32 Antivirus.
>>>
>>> http://www.eset.cz
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 7891 (20130114)
> __________
>
>
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
>
>
> __________ Informace od ESET NOD32 Antivirus, verze databaze 7891 (20130114)
> __________
>
>
> Tuto zpravu proveril ESET NOD32 Antivirus.
>
> http://www.eset.cz
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list