[elektro] PIC C18 probléma
elight
elight at gmail.hu
Mon Feb 9 12:36:11 CET 2015
Húú,
bele keveredtem, !!!
akkor nem értem miért is kellene 0 val osztani
tizedesjegy konverziónál?
Üdv István
2015-02-09 12:18 keltezéssel, Lajos Rancz írta:
> Helló!
>
> Azért nem ad nullával való osztás exceptiont, mert nem nullával oszt hanem
> 10-el (nem úgy mint a citált kód).
>
> Üdv
>
> 2015. február 9. 12:09 elight írta, <elight at gmail.hu>:
>
>> Szia,
>>
>>
>> Ez nekem rendszer függvény, ( a fordítóhoz tartozó lib )
>> és elég jól tesztelhették,
>> mert még sohasem adott "0 osztás kivétel" eseményt..
>> még nulla bemenőadatra sem
>>
>> egyébként meg 0/bármi lazán kiszürhető
>>
>> if( value = 0 ) txt_buff = " 00,00";
>>
>> ha csak ennyi a gond,
>> és az else ágán hívod meg utána az osztást tartalmazó függvényt.
>>
>> Üdv István
>>
>>
>>
>>
>> Üdv István
>>
>>
>>
>>
>> 2015-02-09 11:20 keltezéssel, Lajos Rancz írta:
>>> Helló!
>>>
>>> Na de az IntToText függvényben jó ha van osztás, különben ciklus kell
>> hozzá
>>> (addig vonok le belőle tízet ciklusban míg 10-nél kisebb értéket kapok).
>>>
>>> Üdv
>>>
>>> 2015. február 9. 10:19 elight írta, <elight at gmail.hu>:
>>>
>>>> Szia ,
>>>>
>>>> ezért is kerülöm a printf-el ,
>>>> a hasonló maniulációkat..
>>>>
>>>> Szerintem ha fix tizedes kell kijelzésre , felesleges osztani
>>>> //--------------------------------------------
>>>> unsigned char txt_buff[ 8 ]
>>>> int value = 1228;
>>>>
>>>> IntToText( value , txt_buff ) // equ " 1288"
>>>>
>>>> txt_buff[ 7 ] = 0;
>>>> txt_buff[ 6] = txt_buff[ 5 ];
>>>> txt_buff[ 5] = txt_buff[ 4 ];
>>>> txt_buff[ 4] =',' ];
>>>>
>>>>
>>>> Prin_Txt ( txt_buff ) ; // equ " 12,88"
>>>> //------------------------------------------------------------
>>>> Kicit fapados, de minden körülmények között működött eddig.
>>>>
>>>> És kis pointerezéseel univerzálissá is varázsolható egy ilyen függvény
>>>> A printf-el régebben az is gondom volt , hogy sok erőforrást
>>>> feleslegesen elvisz.
>>>>
>>>> Üdv István
>>>>
>>>>
>>>>
>>>>
>>>> 2015-02-09 09:52 keltezéssel, Lajos Rancz írta:
>>>>> Helló!
>>>>>
>>>>> Nem tudom, hogy a PIC18 hogy reagál a nullával való osztásra, de ebben
>> a
>>>>> kódban elő tud fordulni:
>>>>> sprintf(data,"%02d",(unsigned char)(bedata % (bedata/100)));
>>>>>
>>>>> Ha bedata kisebb mint 100, akkor bedata % (bedata/100) nullával való
>>>>> osztáshoz vezet => valszeg exception.
>>>>>
>>>>> Üdv
>>>>>
>>>>> 2015. február 8. 23:48 Skandar Graun írta, <sgraun at gmail.com>:
>>>>>
>>>>>> Sziasztok!
>>>>>>
>>>>>> Van egy számom (pozíció), ami 200 000 -ig mehet fel.
>>>>>> Ezt a számot nekem LCD.re 100-al osztva kellene megjelenítenem, két
>>>>>> tizedessel.
>>>>>>
>>>>>> Kitaláltam egy módszert, ami már egy tizedessel múködött, de itt kissé
>>>>>> lehalt.
>>>>>> A program a következő:
>>>>>>
>>>>>> void decpont(unsigned long bedata, unsigned char pos)
>>>>>> {
>>>>>> SetDDRamAddr(pos);
>>>>>>
>>>>>> sprintf(data,"%4lu.",bedata/100);
>>>>>> putsXLCD(data);
>>>>>> while( BusyXLCD() );
>>>>>> SetDDRamAddr(pos+5);
>>>>>> sprintf(data,"%02d",(unsigned char)(bedata % (bedata/100)));
>>>>>> putsXLCD(data);
>>>>>> while( BusyXLCD() );
>>>>>> }
>>>>>>
>>>>>> A problémám, hogy az így számolt és megjelenített tizedesek elég
>> furcsa
>>>>>> viszonyban vannak a valósággal. Egy másik kijelzőn is meg van
>> jelenítve
>>>> az
>>>>>> érték, az jól számol, az LCD-n látható érték viszont hibás, a
>> tizedesek
>>>>>> eltérnek a valóságtól.
>>>>>> Mi nem jó a módszeremben, vagy mit tudnátok ajánlani helyette?
>>>>>> -----------------------------------------
>>>>>> 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