Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 lis 2024, o 04:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 10 gru 2021, o 21:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Witam.
Mam problem z przeliczaniem liczby DEC na postać binarną BIN.
Potrzebuję przeliczyć liczbę np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na poszczególne wartości bitów np.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jest na pewno prosty sposób jak można przy pomocy języka C to zrobić ?
coś tak zacząłem próbować :D
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzie robię błąd bo żle przelicza :(
Może innym prostszym sposobem używając przesunięcia bitowego?
Czy zamienić zmienną liczbę na char liczba[8]; i wyciągać z tablicy poszczególne elementy ?



Ostatnio edytowano 10 gru 2021, o 21:46 przez AKSELINEK, łącznie edytowano 4 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 21:34 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 546
Pomógł: 27

kalkulator w win ma taką opcję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 22:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Samemu możesz obliczyć np. tak 13 to będzie dwójkowo:

13/ 2 = 6 i 1 reszty
6/2 = 3 i 0 reszty
3/2 = 1 i 1 reszty
1/2 = 0 i 1 reszty

Zapisujemy reszty od końca 1101.
Ale tak jak napisał kolega wyżej włączasz kalkulator w WIN-dzie w trybie "programisty".


Autor postu otrzymał pochwałę

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 22:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Tak tak kalkulator obliczy .
Ja odczytuję liczbę dec z pamięci eprrom aby potem zamienić na wartość binarną ponieważ poszczególne bity określają zapis ośmiu parametrów.
Kalkulatorem to to obliczam super :D
Ale chcę programem .
Podpowiedź jest super z tymi resztami tylko jakie operatory w języku C określą że jest reszta czy nie ma ?

Myślę użyć pętli for.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 10 gru 2021, o 22:53 przez AKSELINEK, łącznie edytowano 3 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 22:41 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2583
Pomógł: 128

Poczytaj o maskach.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 22:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Masz racje z tym maskowaniem sposób jest na pewno prosty , że banalny ale spróbuję przez pętlę.
Nawet dla poćwiczenia języka c i mojego umysłu :)
Tylko jak określić w języku C spełnienie warunku że reszty nie ma czyli liczba się dzieli bez reszty i przejmujemy wartość 0 albo że jest w/w reszta i przyjmujemy warunek 1 ?

Zapytam inaczej bo może nie dokładnie zadałem pytanie .
Dwa warunki :

Liczba dzieli się przez 2 bez reszty to uint8_t zmienna=0;
Liczba nie dzieli się przez 2 i jest reszta to uint8_t zmienna=1;

Jak określić to przy pomocy języka C ? :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2021, o 23:39 
Offline
Użytkownik

Dołączył(a): 13 maja 2014
Posty: 135
Pomógł: 11

Witam
Poczytaj o operatorze % w języku C.

Pozdrawiam
Janusz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2021, o 01:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Tak trochę poczytałem i wymyśliłem tak. :D

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

l
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tylko czy na pewno będzie dobrze??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2021, o 11:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

A ja nie do końca pojmuję, z czym masz problem.
Jeżeli chcesz uzależnić program od parametrów, to robisz to przez maskowanie.
Jeśli chcesz wyświetlić na LCD, to któraś z funkcji do wyświetlania ma chyba opcję wyświetlania w BIN (albo to w delphi było).
--------------- EDIT:
To jednak nie w delphi i nie w funkcji do wyświetlania. Funkcja itoa przyjmuje jako trzeci argument podstawę systemu, w jakim ma być wyświetlane (2-BIN, 10-dziesiętny, 16-HEX...). No i dalej już wyświetlanie jako tekst.
--------------- EDIT koniec;
A w Twoim rozwiązaniu widzę dwa błędy (a nawet trzy).
W przeliczaniu licznik pętli ustawiasz od 7, nie 8. Tablica ośmioelementowa ma indeksy od 0 do 7 (to samo dotyczy wyświetlania).
Dlaczego na wyświetlaczu wyświetlasz co drugi znak?
I w Twoim rozwiązaniu będziesz miał wyrównanie do prawej strony (np. 7 nie będziesz miał 00000111, tylko 111 (a dalej same zera).

I albo obliczanie albo wyświetlanie masz w złą stronę (sprawdziłem :) )



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2021, o 12:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Prościej będzie sposobem jaki ci podsunął kolega Marhef.
Do programu dołącz bibliotekę
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A później w kodzie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i dalej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2021, o 19:54 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

AKSELINEK napisał(a):
Ja odczytuję liczbę dec z pamięci eprrom

Przecież liczby w pamięci EEPROM są zapisywane w postaci binarnej, więc nic nie trzeba przeliczać.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2021, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2017
Posty: 551
Pomógł: 0

Jeszcze raz kolegom bardzo dziękuję za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO