logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Nie działa program zmieniony w procedurę AVR.

mlfox85 10 Paź 2009 12:37 840 3
REKLAMA
  • #1 7110827
    mlfox85
    Poziom 10  
    Witam

    wykonałem program do zamiany tablicy znaków w zmienna double, a następnie zamieniłem go w procedurę i niestety program działa a procedura nie. Pomóżcie znaleźć błąd.

    kod programu
    
    for (b=0; b<16; b++)
            {
    		if (speed[(15-b)]==0x00)	{z=15-b;}	// wyszukiwanie konca tablicy
    		if (speed[(15-b)]=='.')	{w=15-b;}  // wyszukiwanie przecinka
    	}
    	
    	for (b=0; b<w; b++)
            {
    	newspeed=(newspeed*10)+speed[b]-0x30; //zapis czesci przed przecinkiem
    	}
    	for (b=w+1; b<z; b++)
                    {  
    		newspeed2=speed[b]-0x30;
    		for (y=0; y<(b-w); y++)
                    {
    			newspeed2= newspeed2/10;  //ustawienie właściwej ilosci miejsc
                                                                    // za przecinkiem 
    		}
    		newspeed=newspeed+newspeed2; //zapis za przecinkiem
    	}
    


    kod procedury
    
    double chartab_to_double(unsigned char tab[16])
    {
    	char n,m,j,u;
    	double wynik,wynik2;
    	for (n=0; n<16; n++){
    		if (tab[(15-n)]==0x00)	{m=15-n;}		
    		if (tab[(15-n)]=='.')	{j=15-n;}
    	}
    	for (n=0; n<j; n++){
    	wynik=(wynik*10)+tab[n]-0x30;
    	}
    	for (n=j+1; n<m; n++){
    		wynik2=tab[n]-0x30;
    		for (u=0; u<(n-j); u++){
    			wynik2= wynik2/10;
    		}
    		wynik=wynik+wynik2;
    	}
    	return(wynik);
    }
    


    tak wywołuję procedurę
    
    newspeed = chartab_to_double(speed);
    


    newspeed - double
    speed - char[16]

    P.s. wiem ze są do tego funkcje ale nie umiem ich wykorzystać mimo lektury elektrody.
  • REKLAMA
  • REKLAMA
  • #3 7110924
    mlfox85
    Poziom 10  
    dzięki za pomoc, ale i tak chciałbym wiedzieć czemu ta procedura nie działa
  • #4 7111096
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Przede wszystkim warto by było czaem poczytać warningi. Zmienna wynik jest niezainicjalizowana, więc na dzień dobry wszystko działa źle.

    Reszta jest napisana tak nieczytelnie i bezsensownie, że nawet nie chce mi się myśleć, ale jestem prawie pewny, że masz coś pomieszane z pozycją kropki i końcem łańcucha. Przy przeliczaniu ułamkowej części też nie wygląda to zbyt dobrze, więc nie będę się wgłębiał.

    4\/3!!
REKLAMA