Hi,

Wil in C51 een int naar string omzetten om deze vervolgend
op een LCD weer te geven.

Weet alleen niet meer hoe ik een inttostring doe?
Schaam schaam schaam

Kan iemand me ff helpen?

Ik ben niet bekend met C51, maar standaard C functies om van int naar string te gaan zijn 'itoa' en 'sprintf'.

ik heb geen ervaring met C51 maar als dat gewoon ANSI C is kan je het volgende doen:


int INTEREGER;
unsigned char STRING[4];
unsigned char i;
int MASK = 0xFF

for(i=0;i<4;MASK<<=8){
  STRING[i]=(MASK&INTEGER)>>(i*8);
}

en mss nog wel netter


while(i^0x4?(string[i++]=(integer&mask)>>(i<<0x3)):0)mask<<=0x8;

wat ons dan wel weer erg dicht bij


 while(_^0x4?(j[_++]=(i&__)>>(_<<0x3)):0)__*=0x100;

brengt :)

maar zoals je ziet kan je het dus simpel met een mask doen

[Bericht gewijzigd door xantus op ]

Hey,

itoa bestaat niet in C51.
Ik ben er ondertussen achtergekomen dat het ook sprintf
werkt. Probleem opgelost, kan weer verder!

Bedankt voor de hulp!

nooit in c51 geschreven, maar ik heb wel voor de atmega wat gebakken.

je kunt bijvoorbeeld het getal 1203 op je lcd kwakken.

wat je doet is eerst de lengte bepalen van je integer waarde, in dit geval 4. je pakt het getal. dit DEEL je door 1000 (zorg dat je GEEN reele getallen krijgt). je houd dus een integer over van (in dit geval) 1. hier tel je de bijbehoorden ascii waarde bij op (gloof 41 ofzo uit me hoofd). Dan pak je weer het hele getal. hiervan doe je de MODULES (% procent teken) daar blijft 203 van over, dit DEEL je weer door 100, en je houd 2 over. zo ga je verder tot je alle getallen hebt.

Je kunt dan de ascci waardes een-voor-een op het lcd toveren.

Wat je ook kunt doen is via log10 werken, dit is een kortere functie, maar weet niet of dit handig is in c51

Suc6