Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

wysyłanie 16 bitowej zmiennej

SACZI
-
-
Posty: 21
Rejestracja: 21 mar 2004, o 18:51
Lokalizacja: Iwonicz Zdrój, woj podkarpackie
Kontaktowanie:

wysyłanie 16 bitowej zmiennej

Postautor: SACZI » 5 cze 2004, o 20:08

W jaki sposób wysłać zmienną 16 - bitową z 51 do PC, aby w PC odebrana była jako liczba.
Zmienna ma dokładnie 12 bitów znaczących (pochodzących z pomiaru ADC).
Załatwia mi to bezproblemowo funkcja printf, ale kod programu ma 4 kB.
Funkcja, w której operuje bezpośrednio na rejestrach może wysłac mi tylko 8-bitów; oto jej kod:

Kod: Zaznacz cały

TI = 0; SBUF = znak; while (TI ==0); TI = 0;


W jaki sposób skleić te 12 bitów, abym mógł je na kompie odczytać jako liczba.
I jeszcze jedna sprawa, istnieje jakaś biblioteczne funkcja konwertująca liczby binarne na całkowite ?

Guru
-
-
Posty: 250
Rejestracja: 30 cze 2003, o 13:26
Lokalizacja: Kraków

Postautor: Guru » 7 cze 2004, o 05:39

Co tylko 4k kodu, zeby wyslac 2 bajty? :lol: :lol: :lol:
A jezeli chodzi o sklejenie tego w kompie to w Bascomie sie tego nie da zrobic.
Alez liczby binarne sa calkowite.

GasM
-
-
Posty: 92
Rejestracja: 4 lut 2004, o 11:57

Postautor: GasM » 7 cze 2004, o 07:25

nie rozumiem chyba dobrze problemu. Jeżeli chcesz przesłać zmienną 2 bajtową to podziel ją na 2 bajty, prześlij osobno i w kompie sklej.

zm_int as WORD
zmienna1 as BYTE
zmienna2 as BYTE

//program

zmienna1 = (zm_int/256)
zmienna2 = zm_int - (zmienna1*256)

a w PC

zm_int = (zmienna1*256) + zmienna2

SACZI
-
-
Posty: 21
Rejestracja: 21 mar 2004, o 18:51
Lokalizacja: Iwonicz Zdrój, woj podkarpackie
Kontaktowanie:

Postautor: SACZI » 7 cze 2004, o 15:42

Piszę w C Keil. Problem pośrednio juz rozwiązałem. Wysyłam sobie dane do PC, a w nim zrobiłem funkcję, która mi "skleja" te 2 bajty w jedno.

PS W jaki sposób przeprowadzać analizy programu pod kątem szybkości wykonania, czasu trwania funkcji ... itd

Wybaczcie taki natłok banalnych pytań, ale nie jestem elektronikiem ani informatykiem. Przyszło mi napisać oprogramowanie na procesor x52 i w jakiś sposób musze to zrobić. Uczę się od zera, efekty jakieś przychodzą, ale z bólami ...

GasM
-
-
Posty: 92
Rejestracja: 4 lut 2004, o 11:57

Postautor: GasM » 8 cze 2004, o 07:29

najprościej na zegarze. przed rozpoczęciem obliczania funkcji zerujesz i włączasz. obliczasz funkcje, po skończonych obliczeniach wyłączasz zegar i odczytujesz wartość.
potem przeliczasz wartość, ilość cykli, czas.

Wróć do „8051”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 32 gości