Skocz do zawartości

[C] Umieszczenie części kodu w funkcji


Jeżyk-1

Pomocna odpowiedź

Witam. Chciałem dostosować kod z ćwiczenia 5 kursu:

http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=8

do swoich potrzeb ale że jestem początkujący to coś mi nie idzie 🙂

Chciałem część kodu wstawić w funkcję:


void wys_tem(void)
{
/* Funkcja 'ds18b20_ConvertT' wysyła do układu ds18b20 
polecenie pomiaru */ 
if(ds18b20_ConvertT())
{

/* 750ms - czas konwersji */
_delay_ms(750);

/* Odczyt z układu ds18b20, dane zapisywane są w tablicy ds18b20_pad. 
Dwie pierwsze pozycje w tablicy to kolejno mniej znaczący bajt i bardziej 
znaczący bajt wartość zmierzonej temperatury */ 
ds18b20_Read(ds18b20_pad);

/* Składa dwa bajty wyniku pomiaru w całość. Cztery pierwsze bity mniej
znaczącego bajtu to część ułamkowa wartości temperatury, więc całość
dzielona jest przez 16 */ 
temp = ((ds18b20_pad[1] << 8) + ds18b20_pad[0]) / 16.0 ;

/* Formułuje komunikat w tablicy 'str' */
sprintf(str,"%4.1f\xdf""C", temp);

/* Wyświetla tytuł */ 
LCD_LOCATE(0,1);
lcd_puts("tempe: ");
/* Wysyła komunikat do wyświetlacza */
LCD_LOCATE(8,1);
lcd_puts(str); 


}
}

a w funnkcji głównej tylko jego odnośnik :


int main(void)
{

/* Zmienna przechowuje aktualną wartość temperatury */ 
double temp;
/* W tablicy zapisywane będą dane odczytane z układu ds18b20 */
unsigned char ds18b20_pad[9];

/* Funkcja inicjalizuje wyświetlacz */
lcd_init();
/* Włącza wyświetlanie */
LCD_DISPLAY(LCDDISPLAY); 
/* Czyści ekran */
LCD_CLEAR; 


wys_tem();

}

Ale kompilator zwraca mi różne błędy. Pewnie wina jest że funkcja ma zły typ i parametr funkcji albo wymagana jest gdzieś zmienna globalna 🙁

może ktoś podpowiedzieć jak powinno być to ruszyło?

Link do komentarza
Share on other sites

Ale kompilator zwraca mi różne błędy.
Warto te błędy czytać, zazwyczaj mówią właśnie co jest nie tak. Jeśli ich nie rozumiesz, wrzuć na forum, będzie łatwiej sprawdzić.

Tak na pierwszy rzut oka, nie masz zadeklarowanych zmiennych temp i str.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

No tak mało wiem jak to poprawić

oto kod błędu :

Compiling C: main.c
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o 
main.c: In function 'wys_tem':
main.c:38: error: 'ds18b20_pad' undeclared (first use in this function)
main.c:38: error: (Each undeclared identifier is reported only once
main.c:38: error: for each function it appears in.)
main.c:43: error: 'temp' undeclared (first use in this function)
main.c: In function 'main':
main.c:82: warning: unused variable 'ds18b20_pad'
main.c:80: warning: unused variable 'temp'
make.exe: *** [main.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:02
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.