[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