Dobrý den, před nedávnem jsem se dotazoval jak nastavit AD převod u PIC 18f97J60. Nakonec se mi to podařilo a převod funguje. Bohužel se objevil další problém. Výsledek z převodníku proženu funkcí a získám číslo ve formátu např. float. Potom bych chtěl toto číslo vypsat na displej (2 řádkový dispej 2 x 16 ). Obsluhu displeje mám vyřešenou. Bráním se použít funkci sprintf na převod na “string”. Udělal jsem si svoji funkci na tento převod…
char Text1[20];
void f_to_a(char *ch,float c,unsigned char m)
{
unsigned int i,nasobek=1;
char buf[20];
float cislo=c;
int des;
for (i = 0; i < m; i++)
{
nasobek*=10;
}
des=(int) cislo;
itoa(des,buf);
strcpy(ch,buf);
if (m)
{
cislo-=des;
des=(int)((cislo+0.5/nasobek)*nasobek);
strcat(ch,(char *)"."); //problem
itoa(des,buf);
strcat(ch,buf);
}
}
f_to_a(Text1,floatcislo,2);
strcpy((char *)LCDText,Text1);
LCDUpdate();
problém nastává s instrukcí strcat(ch,(char *)".") Na displeji se objeví správná celá část čísla, ale tečka a desetinná část nikoliv. místo toho pár “paznaků”. Bez onoho inkriminovaneho řádku funkce funkguje, jen jsou obě části neodděleny (příklad: 2232…chci 22.32)Nejsem si vědom nějaké výrazné chyby. Překladač nehlásí error ani warning. Poradíte někdo. Asi je to stupidní dotaz, ale už nějak nevím co dělám vlastně špatně.
Děkuji
administrator: přejmenováno z "funkce strcat"