[elektro] PIC C18 probléma
elight
elight at gmail.hu
Mon Feb 9 10:19:08 CET 2015
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]
More information about the Elektro
mailing list