[elektro] PIC C18 probléma

Lajos Rancz lajos.rancz at gmail.com
Mon Feb 9 09:52:37 CET 2015


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]


More information about the Elektro mailing list