to kolejna mała seria hmm cykl mini poradników ale dla totalnie początkujących a może nawet dla osób, które w ogóle nigdy nie mają zamiaru programować czy też zajmować się elektroniką itp. Za to w szkole mają zajęcia na temat liczb binarnych i muszą zrozumieć o co chodzi, muszą nauczyć się ich konwersji na liczby dziesiętne a także w drugą stronę. Tego tematu nie poruszałem w mojej niebieskiej książce (Bluebooku) ponieważ wydawał mi się zbyt oczywisty, no i myślałem że KAŻDY zna tak prosty sposób na posługiwanie się konwersją liczb binarnych. Tymczasem w wyniku wielu próśb od czytelników i początkujących a także w wyniku sprawdzenia chociażby kilku pierwszych lepszych poradników w internecie czy też podręczników do gimnazjum, okazuje się - że temat ten można podać albo w strasznie (jak dla mnie i dla wielu pewnie) trudny sposób - czyli tylko czysta teoretyczna matematyka z mnóstwem działań, potęgowaniem, mnożeniem, dzieleniem, dodawaniem i odejmowaniem - podczas gdy można to (tak mi się wydaje) pokazać prościej a przede wszystkim PRAKTYCZNIE. W praktycznym zastosowaniu ... na ciekawych przykładach a nie tylko teorii - co może spowodować że sposób obliczeń matematycznych trafi o wiele lepiej i łatwiej do każdego, podkreślam każdego ucznia ;) i nie tylko ucznia. Bo z tego co mi wiadomo z maili na naukę informatyki i programowania NIGDY nie jest za późno i wielu moich czytelników rozpoczyna tą przygodę w bardzo zaawansowanym wieku z czego się bardzo cieszę i jest mi nawet bardzo miło - że to odbywa się również dzięki mojej niebieskiej książce, że udaje mi się zarażać tą tematyką osoby bez żadnego podziału na kategorie wiekowe ....
zapraszam na pierwszą część mini poradnika - o konwersji binarnej do decymalnej ;)
drugi mini odcinek o konwersji dziesiętnej do binarnej
;)
Wyszło mi CC w HEX i ╠ w ASCII ;-)
OdpowiedzUsuńFrancja, elegancja, dziękuję
OdpowiedzUsuńKonwersje w tą stronę pamiętam jeszcze z działań na Spectrum i zabawą z układami z serii UCY74xxx, ale w odwrotną t już zapomniałem. Czekam na przypomnienie w odwrotną stronę :)
OdpowiedzUsuńSuper metoda. Teraz jestem jak uP . Wielke dzieki za poradnik.
OdpowiedzUsuńDo tej pory myślałem, że najłatwiejszą metodą jest dzielenie przez podstawę systemu czyli w tym przypadku 2 a jednak jest jeszcze prostsza i szybsza metoda. DZIĘKI WIELKIE.
OdpowiedzUsuńPanie Mirku czy pojawią się zestawy uruchomieniowe w sklepie? Bo od dłuższego czasu prawie nic nie można kupić. Pozdrawiam
OdpowiedzUsuńJuż od tego poniedziałku lub wtorku pojawi się niewielka partia zestawów, proszę obserwować sklep internetowy.
UsuńNo Panie Mirku jak wytłumaczy mi Pan zapis liczb ujemnych, ułamkowych, i ujemnych ułamkowych to będzie Pan Gość :) Pozdrawiam.
OdpowiedzUsuńAle bomba
OdpowiedzUsuńKsiążkowa metoda książkową, a ja i tak używam tej, którą tu Pan
OdpowiedzUsuńMirek przedstawił.
Życie trzeba sobie ułatwiać.Takie jest moje zdanie.
Świetny poradnik.
Panie Mirku, czakamy na kolejne "skróty" bin->hex->bin.
Pozdrawiam,Piotr.
Witam ,chciałbym wyświetlić czas na LCD i potrzebuję zamienić zmienne "godziny" ,"minuty" ,"sekundy" na DEC ,bo mam taką funkcję biblioteczną wyświetlającą cyfrę dziesiętną.
OdpowiedzUsuńzmienne są typami uint_8.
Jakiego polecenia użyć ,bo chyba się trochę zakręciłem i nie do końca rozumiem ,pozdrawiam.
Tobie pewnie chodzi z kolei o kodowanie BCD ;) ... to jeszcze nieco inny standard zapisu liczb .... ale masz przykłady na to w mojej niebieskiej książce przecież :
Usuńhttp://atnel.pl/mikrokontrolery-avr-jezyk-c.html
posiadasz już ją może ?
Tak ,patrzałem strona 284 ,ale jest tam jeszcze jakiś uint8_bufor[3] ,którego nie za bardzo rozumiem. Możesz wyjaśnić.
OdpowiedzUsuńJak już to
Usuńuint8_t bufor[3]
jest to bufor właśnie na sekundy, minuty i godziny, do wczytywania z RTC albo do zapisywania do RTC. Po prostu 3 bajty po kolei w pamięci RAM.
czyli nie musze go stosować ,moge tym poleceniem zamienić zmienna na inna zmienna dec i od razu wyswietlic na LCD. Tak na raty kazda po kolei ,np. zmienna "sekundy" -> polecenie konwersji "sekundy_dec" , (druga zmienna) ,nastepnie poleceniem LCD wyswietlić "secundy_sec"
OdpowiedzUsuńsekundy = bcd2dec (sekundy_dec);
Lcd(.....funkcja wyswietlająca znak DEC)
Rozumiem ,ze nie ma opcji ,by zamienić sekundy na sekundy_dec ,bez dodatkowej zmiennej typu własnie bufor lub jakas temp.
Taki zapis byłby błedny?
sekundy = bcd2dec( sekundy);
Lcd(.....funkcja wyswietlająca znak DEC)
Metoda jest świetna. Pamiętam jeszcze ze szkoły jak się tego uczyłem i była to czarna magia. Teraz pracuję jako konserwator żurawii i uczę się programowania dla kaprysu. Jednak dzięki panu panie Mirku wydaje mi się to tak proste, że widzę nawet miejsce na zastosowanie mikrokontrolerów w mojej pracy. Pozdrawiam.
OdpowiedzUsuń