[elektro] Bináris reprezentáció C-ben

hg12345 hg12345 at freemail.hu
Wed Jan 17 19:19:22 CET 2018


 Hi,

van erre nagyon jó, C és fordító és gépfüggetlen megoldás :-)
érdemes megnézni a SEGGER cég font konverterét! (Ingyenesen letölthető, a ST, NXP és még néhány cég fejlesztő rendszere tartalmazza az EMLIB-et.

pl:   "4" karakter, szerintem elég szemléltes

GUI_CONST_STORAGE unsigned char acGUI_Fonta00000000_0034[ 10] = { /* code 0034, DIGIT FOUR */
  ____X___,
  ___XX___,
  ___XX___,
  __X_X___,
  __X_X___,
  _X__X___,
  _X__X___,
  XXXXXX__,
  ____X___,
  ____X___};

fenti stringek értelemezése:

#define ____X____    itt lehet akár egy másik bitenkénti függvény vagy egy konstans. (
a define szerencsésebb mert egyszer a generáló #define meghatározod, innen kezdeve a letett konstans már a porthoz lehet igazítani....

Szerintem könnyen megérthető, az elv másra is használható!


pl:  
-------- Eredeti levél --------
Feladó: Bali Zoltan < eltexto at freemail.hu (Link -> mailto:eltexto at freemail.hu) >
Dátum: 2018 január 17 18:31:54
Tárgy: Re: [elektro] Bináris reprezentáció C-ben
Címzett: elektro at tesla.hu (Link -> mailto:elektro at tesla.hu)
 
Speciel, most led bar-t(10bit) vezérelek éppen,
ehhez nem is kell a bitminta, na de egy led mátrixnál
már kellhet.
Ja, azért jó lett volna a fenti esetben is, mert a
HW tervezés rákényszerített a sorrend, felborítására,
én meg bedőltem, és a könnyebbnek tűnő megoldást
választottam, majd SW-ből megoldom... Persze most a
runtime rovására maszkolok(itt jól jött volna), rotálok,
manipulálok, hogy a kívánt sorrend visszaálljon.
Üdv.  Zoli
2018.01.17. 17:57 keltezéssel, elight írta:
> Bingó!
> Ez nekem is sokszor jól jött! :-)
> pl.:
> Nemrég készítettem grafikus nyomtatás emulátort
> tesztelési céllal karakteres képernyőre hőpapíros cucchoz.
> ( Van olyan hogy nem jó olvashatatlan a hőpapír
>    legalább a monitoron a javításig látható legyen
>  mit is nyomtatott  volna. Itt a fejlécet a progi
>    éppen egy bit tömbből veszi. )
> Szóval tényleg lehet olyan, hogy kell az a  bitminta!
>
>
> Üdv István
>
>
> 2018-01-17 17:49 keltezéssel, Topybear írta:
>> Egyedi karakterek definiálásakor megfizethetetlen, hogy a bitmaszk
>> kirajzolja a mintát. :)
>>
>> Topy
>>
>>> Hali!
>>>
>>> Egyébként, azon gondolkodtam, hogy mikor van legtöbbször erre
>>> szükség és
>>> arra jutottam, hogy valójában ritkán van szükség közvetlenül
>>> bitmintákat
>>> megadni a kódban.
>>> Általában akkor akarunk megadni bitmimtát, ha valami
>>> vezérlőregiszterben
>>> kell dolgokat beállítani.
>>> De akkor meg meg sokkal olvashatóbb kódot ad a
>>>
>>> #define IT_EN (1<<7)  // vagy 0x80 vagy 0200
>>> #define OVF_DIS (1<<6) // vagy 0x40 vagy 0100
>>> stb..
>>>
>>> majd
>>>
>>> TM2CTL = IT_EN | OVF_DIS;
>>>
>>> mintha azt írnánk, hogy TM2CTL=B11000000;  // netán 0xc0 vagy 0300
>>>
>>> Egyrészt a kód olvashatóbb, kevésbé lehet elgépelni és utána órákig
>>> keresni, hogy az adott periféria miért nem úgy megy, ahogy akarjuk. Az
>>> értékeket a fordító fordítási időben kiszámolja, tehát nincs semmiféle
>>> veszteség ahhoz képest, mintha beírnánk kézzel.
>>> Másrészt ha más kontrolleren esetleg kicsit máshogy vannak a bitek,
>>> akkor
>>> elég a .h fájlban cserélni. Harmadrészt ilyenkor (ha olyan a hw) az
>>> egyes
>>> biteket szépen manipulálhatjuk olvashatóan , mint pl. TM2CTL=TM2CTL &
>>> ~IT_EN ;
>>>
>>> Tehát ha kulturált kódot ír az ember, akkor valójában ritkán van
>>> szükség
>>> arra, hogy bitmintákat aggasson a kódba. Ha meg mégis van, mert más
>>> okból
>>> kellenek mágikus konstansok, azokat meg megint illik defineként vagy
>>> konstansként egy helyen leírni, és utána nevén nevezve használni,
>>> szintén
>>> olvashatóság és karbantarthatóság szempontjából.
>>> Szóval szerintem nagy szükség nincs is arra, hogy teleszórhassam a
>>> kódot
>>> B001101110101110101 jellegű dolgokkal.
>>>
>>> Szabolcs
>>>
>>>
>>> 2018. január 17. 16:17 Bali Zoltan írta, <eltexto at freemail.hu>:
>>>
>>>> Bezony!
>>>>
>>>> Üdv.  Zoli
>>>>
>>>>
>>>> 2018.01.17. 14:52 keltezéssel, FuzArn írta:
>>>>
>>>>> Csinalni kell egy #define-os makrot ra, es egymas melle pakolni a 8
>>>>> biteseket. Amugy sem latnal at 32db 0-1-t egymas mellett, csak
>>>>> praktikusan
>>>>> 8-asaval tagolva.
>>>>>
>>>>>
>>>>>
>>>>> A.
>>>>>
>>>>> On 2018. Jan 17., at 13:47, Balla Zoltán <sdrlab at yandex.ru> wrote:
>>>>>> 2018.01.17. 12:26 keltezéssel, Moravcsik Szilárd írta:
>>>>>>
>>>>>>> Esetleg kis programot írni (BASIC, Python, stb.) és azzal
>>>>>>> legeneráltatni?
>>>>>>>
>>>>>> Az működne..., de 32 bit esetén valami irdatlan nagy file lenne a
>>>>>> vége!
>>>>>>
>>>>>> Zoli
>>>>>>
>>>>>> -----------------------------------------
>>>>>>           elektro[-flame|-etc]
>>>>>>
>>>>> -----------------------------------------
>>>>>             elektro[-flame|-etc]
>>>>>
>>>>
>>>> -----------------------------------------
>>>>           elektro[-flame|-etc]
>>> -----------------------------------------
>>>            elektro[-flame|-etc]
>>
>>
>> -----------------------------------------
>>          elektro[-flame|-etc]
>
> -----------------------------------------
>          elektro[-flame|-etc]
-----------------------------------------
elektro[-flame|-etc]


More information about the Elektro mailing list