dziel FFFFFFFFFFFFF000 przez 00000AAAAAAAAAA - ucierpi nieco dokładność, ale jest to do wykonania na 64 bitach ALU. Wynik przesuń o 6 w prawo (otrzymasz 6 miejsc binarnych po przecinku, oczywiście przesunięcia dokonujesz modyfikując cechę wyniku). Generalnie dzielenie np liczb 32 bitowych na FPU odbywa się w rzeczywistości z wykorzystaniem 96 bitów,...
Witam !! zaczołem właśnie uczyć się programować w asemblerze i podcza pisania napotkałem na problem i nie umię go rozwiązać ?? pisałem programik dzielący 2 liczby wpisane 16 i wynik tez jest podawany szesnastkowo (nie można użyć .386) i program sie kompiluje nie ma błedów ale niestety cos nie działa ????? bardzo prosze o pomoc kompiluje za pomocą "tasm"...
Tak ale niestety niewiem jak takie operacje robic. Np dzielenia liczby 24 bitowej przez 16 bitową
Witam!!! Proszę o umieszczenie kodu układu dzielenia dwóch liczb 8 bitowych w języku vhdl. Z góry dziękuję. Pozdrawiam!!
Witam Czy ma ktos może gotową procedurę dzielenia liczb 24 bitowych przez 8 bitowe?? Z góry dzięki.
Tylko że jak pomnożę całość przez 10 to już nie zrobię tego na 8 bitach. Czy jak dziele 2 liczby inie dzielą się całkowicie to ustawiany jest jakiś bit lub kilka ? Poza tym nie mam zielonego pojęcia jak wyświetlić pojedynczą cyfrę na wyświetlaczy z jakiejś 3 cyfrowej liczby zapisanej w końcu w postaci hex. Zakres liczb przy podanym przeze mnie wzorze...
Najprościej to taki układ potęgujący na jednym scalaku możesz zrobić na jednej pamięci EPROM. Możesz wtedy zrobić potęgowanie liczb więcej niż 4 bitowych. Taka pamięć kosztuje kilka złotych. Jeżeli weźmiesz zapis w kolejnych bajtach na zasadzie młodszy starszy to możesz zapisać np. tak: w adresach od 0 do 255 zapisujesz resztę z dzielenia kwadratu liczby...
Dziś siedze całą noc nad tym jak wymyśleć algorym prostego dzielenia liczby 16bit przez liczbe 8bit ze wzracaniem reszty na procesor 8bit i szczeże mówiąc nic nie wymyśliłem.... Jedynym sensownym rozwiązaniem jest realizacja klasycznego sposobu dzielenia:( Moje pytanie brzmi... czy da sie jakoś inaczej zrealizować funkcje dzielenia?? np tak jak w mnożeniu...
Problem staje się prosty gdy możemy się posłużyć określeniem ogólnym "czas", jednak gdy mamy osobno minuty i godziny - jest inaczej. Procki nie operują na pojęciach ogólnych , tylko na liczbach i zapewniam Cię , że porównywanie liczb(nawet wielobajtowych) jest prostrze niż np. ich dzielenie. Więc może skupmy się jedynie na sposobie porównania dwóch...
Wszedzie szukam i nie moge znalezc, potrzebuje pojdzielic liczbe 16 bitowa przez 8 bitową w asemblerze Ostatecznie moze byc nawet 8 bit przez 8 bit, bez reszty, choc z reszta tez moze byc. Robie miernik prękości obrotej z enkodera (4096 na obrót). Licznik 16 bitowy zlicza impulsy, potem co 1sekunde wyzwala sie przerwanie ktore podzieli liczbe zliczonych...
Cze ! Opisowo wygląda to następująco: - w pętli, której warunkiem działania jest liczba16bit>0 przeprowadzasz dzielenie 16-to bitowe (mam taką procedurę) liczby16bit przez 10 - do reszty z dzielenia dodajesz 48 i masz kod ASCII cyfry (od końca) - pętla zakończy działanie gdy liczba16bit będzie równa 0 przykład: 65535/10=6553 (reszta=5) -> 5 6553/10=655...
Czasem musimy podzielić wartość zmiennej przez stałą, która NIE JEST całkowitą potęgą dwójki. Można chytrze wykorzystać wbudowaną w procesor mnożarkę. A nawet bez mnożarki sposób jest dobry, bo dzielenie jest przynajmniej dwa razy dłuższe i wolniejsze od mnożenia. Przyjmijmy, że chcemy dzielić bajt X przez stałą D. Znajdźmy „k”, największą...
No więc tak: (zakładam liczby w kodzie NKB (tj. bez znaku)) - ponieważ mnożysz liczby 4 bitowe więc wynik może być 8 bitowy: 15*15=225 (11100001) z tego wniosek, że akumulator wyjściowy powinien być 8 bitowy (2 sumatory 4 bitowe, 2 rejestry 4 bitowe pamiętające wynik) Wyjście sumatorów podajesz na wejście powyższych rejestrów, Na jedne z wejść np a0,a1,a2,a3,a4,a5,a6,a7...
bez urazy, kolego olekewaagata, zanim zaczniesz kogoś pouczać przeczytaj tekst ze zrozumieniem! ;)) Autor wątku miał problem z propagowaniem przeniesienia - moja odpowiedź dotyczy DOKŁADNIE zalecenia, jaką instrukcją uwzględnia się przeniesienie. A podany przeze mnie przykład dotyczy sumowania, z jakim ma problem autor - czyli dokładnie liczby _16bit_...
operacja DIV dzieli liczbę bez znaku znajdujące się w AX (wersja 8-bitowa), DX:AX(wersja 16-bitowa) EDX:EAX (wersja 32-bitowa) przez operand. IDIV dzieli liczbę ze znakiem znajdującą się w AX, DX:AX, EDX:EAX przez operand i umieszcza wynik dzielenia w AL/AX/EAX a resztę w AH/DX/EDX Odpowiadając wprost na pytanie - dzielenie przez 32-bitowy operand dzieli...
A ja bym proponował napisać w jakimś języku programowania (do takich prostych rzeczy wygodne są języki skryptowe, jak Tcl, czy Python, bo np. C wymaga kompilowania programu, co jest dużą niedogodnością, jeśli program ma być często poprawiany) symulację działania takiego układu, i sprawdzić: działanie pojedynczego modułu "sumatora" (i wypisać jego tabelę...
Witam Mam mały problem, potrzebuje dzielić liczbę 16 bitową, a rejestry są 8 bitowe. Jak się do tego zabrać?
Kolega z Łodzi to coś słyszał ale nie do końca pamięta. Pierwsza tablica, indeksowana starszym bajtem, słowa dwubajtowe (10 bitów tak naprawdę) to tablica zgrubnego dzielenia dla 256 liczb w postaci 0xNN00,(gotowe wyniki dzielenia) druga tablica, tak samo indeksowana, jednobajtowe elementy, to reszty z tego dzielenia. Jeżeli przedstawisz liczbę wejściową...
ok, już wyjaśniam - operacje bitowe wykonują się dużo szybciej niż dzielenie, przykładzik: liczba AND 255 - zerujemy wszystkie bity oprócz ostatnich ośmiu które pozostają bez zmian. Jest to odpowiednik reszty z dzielenia przez 256. przesunięcie bitowe w prawo jest odpowiednikiem części całkowitej z dzielenia przez jakąś potęgę dwójki - przesunięcie...
Pytanie tylko, dlaczego jego post znalazłem w koszu? Wiadomość skasowałem sam. racając do tematu: Informacja o znaku ujemnym zapisana jest zawsze na najstarszym bicie. Wrzucając liczbę 16-bitową do 32-bitowej, informacja o znaku już nie jest na ostatnim bicie, tylko na 16-stym, a LongInt ma tą informację na 32 bicie. Mam rację? Nawet jeśli mam, to...
Tu są procedury matematyczne dla '51: Dzielenie 32 bitowych przez 16 bitowe bez znaku, to procedura UDIV32, a ze znakiem DIV32. Pozdrawiam.
BoskiDialer: czy ta operacja: BajtH = Liczba >> 8; daje takie samo obciążenie dla procesora co branie liczby całkowitej z dzielenia przez 256? Pozdrawiam Klawo
Witam, powoli kończę modernizację swojej nawijarki do cewek i transformatorów, licznik liczby zwojów postanowiłem wykonać na mikrokontrolerze jak w tytule PIC16F877A. Właściwie wszystko sprzętowo działa, za to utknąłem na końcu programu, otóż licznik może zliczać do 65535 zwojów, wszystko wyświetlam na wyświetlaczu 2x16. Mój problem związany jest z...
Pomnóż liczbe dzieloną przez 10 i podziel jako liczbe 16 bitową, w dziesiętnym wyniku będziesz miał ostatnią cyfre liczby jako część dziesiętną (trzeba inaczej wyświetlić)
Dokładnie o to chodzi. Np. wpisując do pamięci typu ROM32Kx8 liczbę 16 bitową, (a ta pamięć ma 15 wejść adresowych) jak zrobić dzielenie 1 przez wprowadzoną liczbę? Proszę o jakieś dalsze wskazówki i ewentualny szkic. Błagam pomóżcie, bo czas mnie nagli. Czy ktoś to robił w programie Pspice?
Błąd powstaje gdy iloraz przekroczy dopuszczalną ilość bitów. W dzieleniu N-bitowym, iloraz musi się zmieścić w N-bitach (pamiętając, że dzielimy liczbę 2N-bitową przez N-bitową). Przykładowo dzielenie 16-bitowe (dx:ax) [syntax=asm]mov dx,0xFFFF ; dzielimy 0xFFFFFFFF mov ax,dx mov cx,1 ; przez 1 div cx;First chance exception: Address 0x0040190C Integer...
Musze zrobic cos takiego : (x/y)*2500 gdzie x - liczba 16 bitowa ktora bedzie sie zmieniac y - stala liczba FFFF (16 bit) i nie wiem jak to zrobic zeby obejsc dzielenie 32 bitowej liczby przez 16 bitowa. Bo jak np wykonam najpierw dzielenie x/y to bede mial liczbe przecinkowa a to chyba duzo gorzej.
Panowie... powiedzcie jak okroić powyższy kod. Wystarczy że podziele 16bitów przez wartosć 8 bitową, reszta to dla mnie strata czasu na którą sobie nie moge pozwolić w tym projekcie...
to jest niemal identycznie jak przy pisemnym dzieleniu liczb dziesiętnych. Musisz sobie tylko uświadomić np to że w 1000 liczba 110 mieści sie tylko 1 raz :) weźmy może prostszy (krótszy) przykład: 45/6=7,5 45d=101101b 6d=110b czyli 101101:110 Działanie wygląda tak: w czerwonej liczbie 1011 liczba 110 mieści się jeden raz (stąd czerwona jedynka na górze)...
Cześć, Dzięki za cenne podpowiedzi. Czyli nie będe tego robił na układach TTL (w sumie to by może i było możliwe, ale chyba bez sensu i stare rozwiązanie). Mam możliwość wykorzystania karty komputerowej z 16 wejściami cyfrowymi PCI 1711 firmy Advantech. Jednak na tej karcie jest tylko 16 wejść cyfrowych (oraz 16 wyjść cyfrowych). A tyle właśnie - 16...
Witam. Mam w zmiennej bitowej jakąś liczbę z zakresu 0-60, np. 34. Czy można tą liczbę rozbić na 2 cyfry - przypisując do pierwszej zmiennej bajtowej cyfrę 3, a do drugiej 4? Czy są jakieś instrukcje w Bascomie, czy muszę to robić za pomocą SELECT CASE: Proponowana metoda dzielenia zmiennej przez 10 (lub 100 , 1000 przy wiecej ilości cyfr), i stosowanie...
No to może tak: krok pierwszy - dzielimy liczbę 40-bitową przez 10000, używając wyłącznie dzielenia 32-bitowego: uint32_t x43 = ((uint32_t)b[4] << 8) + b[3]; // 16 bardziej znaczących bitów uint32_t x210 = ((uint32_t)b[2] << 16) + (b[1] << 8) + b[0]; // 24 mniej znaczące bity uint32_t xh = x43 * 1677 + (x43 * 7216 + x210) / 10000;...
No tak, ale to nie jest "operacja na bitach" (w znaczeniu że modyfikacja konkretnych i odizolowanych bitów), tylko "operacja bitowa na całej zmiennej". Takie uproszczenie zastosowałem [; 4\/3!!
nie do konca bo dana jest 16 bitowa. Miałem na myśli liczbę 8 bitową. Nie można iść na gotowe. Przed chwila napisałem, że nie chcę iść na gotowe, Wystarczy mi, jeśli ktoś przedstawi mi wskazówki jak rozwiązać problem.
tak,wiem, ale to mi zawsze 00 wyrzuca niezaleznie jakie tam wpise liczby. Probowalem juz rozne 3, 4-bajtowe :( :( Nich ktos sprawdzi u siebie ten kod i sprawdzi co zle robie :?
Nie wiem w takim razie w czym problem, to prosta matematyka. A procesor ma funkcje mnożenia i dzielenia 8bit wystarczy zrealizować rozszerzenie na 16bit. Tak ma 8bit, ale nie wiem jak optymalnie napisać np mnożenie dwóch liczb 16 bitowych, ma ktoś jakiś kod ?
Niestety, Twój schemat jest błędny. Do pełnego układu mnożenia 2 liczb 4-bitowych musisz użyć 16 iloczynów (to masz dobrze) i 12 sumatorów pełnych lub 10 pełnych i 2 bez wyjścia przeniesienia. Postaraj się o dostęp do książki Pieńkoś Turczyński "Układy cyfrowe TTL w systemach cyfrowych" i tam na stronie 349 masz rozrysowane jak to wszystko trzeba ze...
Zakładając, że posiadasz ok 9k wolnego flasha oraz chcesz efektywnie dzielić przez liczbę 12 bitową to możesz to zrobić w ok 4-6 cyklach (tak na oko) używając metody tablicowej. Oto pseudokod: [syntax=c] const unsigned int div_tab_w[78] = { (unsigned int)-1, /* nie dziel przez zero! */ /* wyliczone wartości dla x = 1 do 77 */ }; const unsigned short...
Możesz pomnożyć resztę przez 1000 a następnie znowu podzielić to przez dzielnik. 1 x 1000 = 1000 1000/16 = 62.5 Czyli otrzymasz 62 i 8 reszty. Można by pomnożyć przez 10000 uzyskując na koniec wynik 625 ale wtedy dzielenie przez większe liczby nie będzie działało bo reszta będzie duża i pomnożona przez 10000 nie zmieści się w 16-tu bitach.
Ma ono polegać tylko i wyłącznie na dzieleniu 16 bitowej wartości przez liczbe 100 (dziesietnie dla jasnosci). Czy jest szansa aby taka operacja zakończyła sie (po góra) kilkudziesięciu cyklach?. Standardowe dzielenie jest bardzo czasochłonne. Chodzi o AMS na 51ke
No ladnie. Sliczne procedurki. Twoja proc odnosnie dzielenia jest olbrzymia. Moja jest mniejsza. Moze by tak maly konkursik na procedurke dzielenia 16 bitowego w kilku kategoriach: szybkosci wykonywania, wielkosci kodu. dzielenie16_16: ;dzielenie 16 bitow przez 16 bitow ;we: r2 - H dzielna ; r3 - L dzielna ; r4 - H dzielnik ; r5 - L dzielnik...
Witam, Mam taki problem - napisałem sobie procedury do obsługi wyświetlacza LCD, nie mogę tylko poradzić sobie z wyświetleniem na LCD zawartości rejestru (16 bitowy). Procesor ATmega 8. Próbowałem takie coś: void pisz_int(unsigned int t) { unsigned char bufor[20]; itoa(t,bufor,10); pisz_text(bufor); } ale nie...
No właśnie tutaj jest też problem, liczbę 8-bitową podziele, gorzej z 10-bitową bo trzeba działać na dwóch rejestrach. Z tym dzieleniem wzoruję się na kodzie z postu [url=]Link
Jak w asemblerze (Pentium) uzyskać resztę z dzielenia liczby 64 bitowej przez 32 bitową, iloraz mnie nie interesuje. DIVL owszem działa, ale tylko wtedy gdy iloraz jest mniejszy niż 2^32 Asembler mojego kompilatora nie lubi DIV RAX. Nie dodałem, że liczba 64 bitowa jest iloczynem dwu 32 bitowych. Znak "%" to reszta z dzielenia (mod) Aby obliczyć: (a*b)...
problem polega na tym że nie mam pomysłu jak to matematycznie rozwiązać. Myślałem, żeby skorzystać z DPTR i robić dzielenie przez 16. Ale dzielenie wykonuje się na Acc. Rozpisywałem sobie 16 bitowa liczbę na kartce i nie mam pomysłu jakby podzielić ja na dwie 8 bitowe i zliczyć.
Rajszym, ale czy aby na pewno Delta dąży do - 0.5 dla liczb naturalnych? Nie. W tym przypadku Delta nie dąży ani do 0, ani do 0,5 tylko osiąga wartość 0 lub 0,5 w zależności od parzystości/nieparzystości kolejnych liczb Fibonacciego. Jednak błąd względny (trzymajmy się tego nazewnictwa) błyskawicznie zmierza w kierunku 0 i nie ma tu żadnych wątpliwości....
Szkoda, że nikt (ze studentów) nie wpadł na to, że wystarczy jedna funkcja, by przedstawić wczytaną wartość w dowolnym systemie pozycyjnym. Chodziło tu o uzmysłowienie sobie ("odkrycie"), że wartość liczby nie jest trwale związana z jej reprezentacją i nie ma znaczenia to, jak liczba jest fizycznie reprezentowana w pamięci komputera. Dlatego było tak...
Ogólnie to możesz zrobić tak, że puszczasz pętlę, która liczbę dziesiętną dzieli przez 2 i resztę zapisuje jako kolejne bity. Np. Mamy liczbę 11, dzielimy przez 2, otrzymujemy 5 i resztę 1, znów dzielimy przez 2, otrzymujemy 2 i resztę 1, dzielimy przez 2 i mamy 1 i resztę 0, znów dzielimy przez 2 i mamy 0, resztę 1. Stąd 11dec=1011bin (zapisujemy kolejne...
DZIESTYS: MOV A,LICZBAMłODSZY BAJT CLR C SUBB A,#10H MOV LICZBAMłOSZYBAJT,A MOV A,LICZBASTARSZYBAJT SUBB A,#27H MOV LICZBASATRSZYBAJT,A INC DZISIATKITYSIECY JNC DZIESTYS DEC DZIESIATKITYSIECY MOV A,LICZBAMłODSZYBAJT ADD A,#10H MOV LICZBAMłODZYBAJT,A MOV A, LICZBASTRASZYBAJT ADDC A,#27H MOV LICZBASTRSZYBAJT,A TYSIąCE: ... JAK WYZEJ TYLKO ODEJMOWAć LIICZBę...
Napisałeś to tak, jabyś pisał program, a nie tędy droga ! Pętle nie są syntezowalne, przynajmniej nie takie, jakiej użyłeś. W VHDLu pętle służą do generacji układów o powtarzającym się bloku, np. sumatora wielobitowego. Dzielenie można zrealizować poprzez przesuwanie bitowe liczby w prawo, ale będzie to dzielenie tylko przez potęgi 2. O ile dobrze pamiętam...
No bez przesady. Programuje się go akurat trudniej, przecież masz różne tryby 16 i 32 bitowe, złożone adresacje itd. A co mnie to obchodzi pisząc w C albo C++? Nic. Programuje się to prościej, m.in. dlatego że jak chce mieć stałą we flashu, to piszę "const" i już, a nie niekończące się zabawy z PROGMEM i wszystkie związane z tym problemy (różny sposób...
mam problem z przesunięciami bitowymi i nie wiem jak sobie z tym już poradzić. prosta funkcja, zamienia pierwsze cztery bity z ostatnimi czterema. edit: pomyłka
Ad 1. 1. Dzielisz prze 2, resztę z dzielenia zapisujesz jako kolejny bit od końca. 2. Powtarzasz dopóki liczba nie osiągnie wartości zerowej. Ad 2. 1. kod binarny 1111 1111 to w postaci dziesiętnej - 255 2. więc 5V dzielisz przez 255 wychodzi: 0,01960784313725490196078431372549 3. Każdą wartość którą trzeba skonwertować dzielisz przez ta liczbę i zaokrąglasz...
w zasadzie masz rację,z tym dzieleniem,tylko że zrobi sie liczba zmiennoprzecinkowa i ją tez trzeba jakoś obrobić. Ale jeszce cos mi zaświtało,a wcześniej nato nie wpadłem-jeżeli przełącze organizację w EEPROMIE z 8 na 16 bitową to będę mógł zapisać liczbę 4 lub 5-ciocyfrową bez problemu. To będzie najlepsze rozwiazanie chyba ,bo bez żadnych dodatkowych...
bynajmniej. uzycie jednej funkcji pociaga za soba lawinowe dolaczanie kolejnych, ktore sa (lub moga byc) wykorzystane. uzywanie liczb zmiennoprzecinkowych pociaga za soba dolaczenie funkcji do rozbijania liczby zmiennoprzecinkowej na mantyse i wykladnik, operowania na mantysie i wykladniku a nastepnie do poskladania tego w calosc. skoro zas procesor...
Algorytm którego używam przesuwa bity, ale równie dobrze można dzielić tak jak piszesz, tylko jak używam dzielenia to program "rośnie" wiec chyba pozostanę przy sprawdzaniu najstarszego bitu i OR. Rośnie o kilkadziesiąt bajtów. Tyle ile ma procedura biblioteczna dzielenia liczb 16 bitowych ze znakiem. Ale pewnie dzielenia prędzej czy później będziesz...
O ile pamiętam (dziesiątki lat nie używam) to DIV (wersja 8 bitowa) dzieli AX przez to co wskażesz. Nie powinno to chyba być AL. Przed dzieleniem masz w AL liczbę (A+B), potem nadpisujesz to C? W AH masz wartość przypadkową. Proponuję po załadowaniu DS dać XOR AX,AX, żeby wyzerować AX. C załadować np. do BL i zrobić DIV BL. Jeżeli czegoć nie pokręciłem...
No to ja bym zaczął projekt od określenia, ile dokładnie (co do jednego) bitów mają mieć te liczby. Każdy bit wpływa bardzo silnie na szybkość obliczeń. I oczywiście obliczenia na liczbach binarnych z konwersją na ciąg cyfr dziesiętnych sprytnym algorytmem, tak, by uniknąć dzielnych dłuższych niż 16 bitów (to akurat jest dość proste). Wtedy konwersja...
A jak myślisz na czym oparta jest funkcja Random? Praktycznie wszystko softwarowe ma charakter pseudolosowy. Można kombinować z początkiem (ziarnem), ale wcześniej czy później skończy się na mnożeniu dodawaniu i operacji reszty z dzielenia. Spróbuj ze zbioru 4 miliardów liczb (32 bity) wybrać wszystkie w pseudolosowym porządku bez powtórzeń. Albo żeby...
Dokładnie chodzi o liczenie sredniej artytmetycznej 10 liczb typu char. Zdaje sobie sprawę, że '52 za bardzo nie ma ochoty na wykonywanie dzielenia i dlatego kombinuję średnią arytmetyczną jako przesunięcie bitowe sumy 10 liczb, ale cos mi nie działa ... int suma; suma << 1; a nastepnie SBUF = suma; Czy musze dokonać konwersji zmiennej typu int...
Chyba doczytałeś tylko do pierwszego algorytmu na w/w stronie... :] Oczywiście mnożenie dwóch zmiennych 32 bitowych da Ci 64 bity wyniku, więc i mnożenie i dzielenie modulo musisz wykonywać na takich argumentach. Pozdrawiam, Dr.Vee
Dzielenie przez liczbę inną niż wielokrotność 2 też jest łatwe - trzeba liczyć zarówno stany wysokie jak i niskie. No dzielenie to ogólnie w ogóle nie jest problemem. Nie, jeszcze 162 i 64 ma po dwa 16-bitowe Widocznie przeoczyłem. karlos79: Co do synchronizacji to chodziło mi o to czy musi być 100%-owa zgodność częstotliwości wejściowej i wyjściowej*mnożnik....
wlasnie z ty dzieleniem mam największy problem, 8051 jest 8-bitowym. Napisałem sobie kiedyś podprogram do dzielenia 16bit./8bit. liczbę, ale nie wykorzystam go do dzielenia przez 1000 i 10000. Musiałbym mieć dzielenie 16bit. przez 16bit. na mikro 8-bit. Czuje, że nie poradził bym sobie z takim dzieleniem. Nie ma jakiejś innej możliwości?
Dzielenie zmiennej int16 na dwie mniejsze możesz zrobić tak:[syntax=c]int 16_t zmienna, zmienna1; int8_t mala_zmienna, mala_zmienna1; mala_zmienna = zmienna >> 8; //przesuniecie bitowe skopiuje 8 bitów starszych mala_zmienna1 = zmienna; // skopiuje tylko 8 bitów najmłodszych zmienna1 = (mala_zmienna << 8) + mala_zmienna1; [/syntax]
nie bardzo rozumiem jaka idea przyświecała autorowi aby podstawić akurat taką liczbę Ideą która temu przyświeca jest to, że jest to 1/10 wartości (1 << 32) czyli 0x100000000. Wykorzystywana jest następująca zależność: a / x = b => (a / x) * p = b * p przy czym "a" to liczba którą chcesz podzielić, "x" to dzielnik (10), "b" to wynik dzielenia,...
PPS. Zachęcał bym do C++ choćby w formie "C z klasami". Które "studio" używasz? V.4 czy v.7 ? avr studio 7, gcc. Hm,. dużo ostatnio siedzę w C++, głownie aplikacje pod windowsa (builder, c#, czasem python). Tylko tam 1kb w prawo, w lewo to żaden problem. Xmegi to inny świat chociaż gramatyka podobna. Nie znam "myków" dla uP. Te "myki" to raczej braki...
Mógłby mi ktos wytłumaczyc jak podzielic liczbe 16 bitowa przez 8 bitowa i 16 na 16 w asemblerze Pic 12 lub 16? wiem, jak to zrobic na 8052, ale wogole nie wiem jak sie dobrac do tych PICow...
Szperałem forum, ale niestety nie znalazłem odpowiedzi na nurtujące mnie pytanie, O ile w necie można znaleźć gotowe rozwiązanie to ja bym chciał bardziej zrozumieć jak to działa bez tłumaczenia tego sobie z kodu na ludzki. Sprawa dotyczy 8051 i kodu w asemblerze. Potrzebuje wiedzieć jak przekonwertować 16 bitową liczbę na ciąg znaków ASCII. Chodzi...
Czy nie ma szybszych alglorytmów? Oczywiście, że są. Wykorzystaj algorytm mnożenia i dzielenia pisemnego. Dzięki temu znacznie ograniczysz ilość dodawań czy odejmowań. Na przykład 1234 * 5678 zrobione metodą powyższą to 1234 dodawania (zakładam, że program jest chytry i sprawdza na początek która liczba jest mniejsza i ją bierze jako licznik pętli)....
Wynik Twojego działania to: 64449, czyli mieści się w zakresie i nie powinno być problemu. I właśnie dlatego 63 jest ostatnią wartością którą widzisz. Powinieneś widzieć jeszcze 64, ale pewnie nie ma wystarczającej precyzji potencjometru i od razu przeskakujesz na (teoretyczne) 65. Poza tym muszę mieć przetwarzanie z 10-bitową precyzją. Ciekawe po...
hmm faktycznie..... czyli przy drógim dzieleniu trzeba mianownik podzelić prze 256, usunąc młodszy bajt i w jego miejsce wpisac starszy a msb trzeba by wyzerowąć. tylko że wtedy powstaną przekłamania:/ nieduże i tylko po przecinku ale tego juz chyba nie przeskoczymy, gdyż brakuje dokładności Dodano po 12 chociaż jest sposub na to drógie dzielenie, zeby...
>> _greis_ Była o tym wcześniej mowa. Jest to najbardziej standardowy pomiar f, ale ma tą wadę że dla niskich f trzeba stosować długie czasy pomiaru. >Przemekdz Niekoniecznie trzeba stosować real/float. Przy nowych założeniach f wzorcowa 10 khz f mierzona 1-100Hz Dla 1 Hz zliczymy 10000 impulsów, dla 50hz 2000 impulsów, dla 99.9hz 1001 impulsów....
ponieważ 51 nie ma sprzętowego dzielenia liczb 16 bitowych więc kolega musi poszukać sobie algorytmu do dzielenia takowych liczb i ten algorytm sobie zaimplementować prosta sprawa jeśli nie uda się znaleźć to ja udostępnie ale uprzedzam jest po angielsku jak zresztą cała współczesna elektronikia (no poza drobnymi wyjątkami) :D
Witam wszystkich! Mam taki problem, mam napisac projekt (pewnie prosty dla wiekszosci) w assemblerze badz w C, temat " Dzielenie liczb 16 bitowych ze znakiem w kodzie U2" i dlatego zwracam sie z prosba czy ktos ma moze napisany (przez przypadek) taki program, albo pomoze mi w jakikolwiek sposob go zrealizowac. Program ma dzialac na procesorze 8051,...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
Więc proponuję zakończyć bezsensowną dyskusję na temat szybkości MCU, a skupić sie na rzeczywistym problemie autora. A kto dyskutuje? Dałem sugestię aby starać się unikać dzielenia liczb 32-bitowych - co akurat w tym algorytmie zdecydowanie nie jest konieczne.
jak zadajesz takie pytanie, to zawsze podaj: -jaki procesor -ile ew. masz miejsca w pamieci (na tablice itd.) -raczej podawaj dokladnie problemy, bo to jest dosyc ogolne... -jaka ma byc dokladnosc tego jest cos takiego jak fixedpoint math - to taka matematyka na liczbach ulamkowych z uzyciem liczb calkowitych. Polega to na tym, ze zamiast...
Dim T1 As Single Dim T2 As Single A co to? "Przesunięcia bitowe" na liczbach zmiennoprzecinkowych? Zamień single na int i powinno śmigać. Procedury obliczeńna liczbach zmiennoprzecinkowych pożerają mnóstwo miejsca. Dzielenie liczb całkowitych w bascomie AVR robi się za pomocą \, a nie /, ot taka ciekawostka. Użycie / powoduje wykonanie tego dzielenia...
[syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include "hd44780.h" #define LED_DATA PORTD //port pod kt�ry pod��czony jest wy�wietlacz LED #define LED_DATA_DIR DDRD//kierynek...
To moja trzecia konstrukcja na FPGA ;) pierwszy był trywialny zegarek na kilku licznikach, a potem prosty kalkulatorek dodający dwie liczby. Tak więc proszę o konstruktywną krytykę i porady, co by tu można jeszcze ulepszyć. FPGA ciekawi mnie już od jakiegoś czasu, ze względu na to, że można na nim zrobić rzeczy, przy których procesory wymiękają. Prezentowany...
A czy procki na rdzeniu 8051 atmela (z ISP) są równoważne z oryginałem? Jeśli chodzi o szybkość wykonywania instrukcji i pamięć RAM to tak, wszystkie bazują na oryginalnym 8051/8052. Natomiast posiadają często dodatkową pamięć EEPROM (obsługiwaną rozkazem movx) oraz interfejs SPI. 8051 nie ma - a przynajmniej Ja nie znalazłem - takiego fajnego darmowego(!)...
Dzień dobry Po wielu dniach podchodzenia jak do jeża zabrałem się na serio do zapisu paru danych (siedmiu liczb uint32_t (słownie 7) ) do pamięci flash. Ponieważ bez Was by się to nie udało postanowiłem się podzielić moim "osiągnięciem". Muszę zapisać jasność ekranu i skalowanie ekranu dotykowego. Wyszło tak : [syntax=c]/* * 6 wspolczynnikow kalibracji...
Witam, Schemat układu jest niekompletny, brakuje kwarcu taktującego. Z programu wywnioskowałem, że jest to Xtal 12MHz. Długość trwania procedury obsługi przerwania od Timer0 wraz z preambułą nie musi być dokładnie równa 10 cyklom maszynowym (#3CBA). To wniesie pewien błąd pomiarowy odmierzania czasu, przeciętnie około 10 mikrosekund. I na koniec sprawa...
Każdy, kto rozważa przesiadkę z ośmiobitowego mikrokontrolera na coś mocniejszego i o większych możliwościach naraża się na pewien problem, który łatwo przegapić, bo przy ośmiu bitach pojawia się sporadycznie. Ale pomnóżmy liczbę bitów przez dwa, cztery, albo i osiem, i zaczynają się schody. Problem ten to błędy w krzemie. Kilka lat temu zaprojektowałem...
11 hex to oznacza 11 w układzie szesnastkowym czyli 17 w układzie dziesiętnym, tyle, że to jest liczba 5 bitowa a nie jak zwykle 4 bitowa ??? Zapis szestastkowy na dziesiętny przeliczasz tak: Ld= c16h*16+c1h Ld - liczba dziesiętna c16h - starsza cyfra liczby, może mieć wartości 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F gdzie liltery odpowiadają A=10, B=11,...
Dzisiaj fragment książki ----------------------------------------... Rozdział 13. Zaawansowane sztuczki z PWM Cyfrowy syntezator dźwięków Aby generować dźwięki nieco bardziej interesujące od fal prostokątnych, musimy wykorzystać technikę PWM, żeby szybko zmieniać wartość średnią napięcia, które będzie wyznaczało...
powiedz prowadzacemu zajecia, ze nauka ahdl to czysta strata czasu; a moze lepiej nic nie mow ... :) /.../wydaje mi się że dobrze/.../ troche bledow jest :) 1. variable A S powinno byc zadeklarowane jako 5 bitowe DFF, a obliczane tak samo jak powyzej: S[] = ( 0, S_ab[] ) + ( ... 4.wyj[]=S[] div B"0100"; ahdl nie pozwoli ci na dzielenie niczego poza...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Szum termiczny w pomiarach analogowych jest zazwyczaj wartością pasożytniczą, wpływającą negatywnie na pomiar. W związku z tym powinno się go unikać za wszelką cenę w naszych urządzeniach. Filtrowanie wejścia, odpowiednie projektowanie płytki drukowanej i schematu prowadzenia masy to krytyczne czynności które trzeba wykonać aby zaprojektować poprawny...
Chcę zrealizować szyfrowanie RSA 512bit, czyli zrealizować działanie: c = t^e mod n. c - zaszyfrowane dane t - dane do szyfrowania e - wykładnik potęgi liczba pierwsza n - moduł 512 bitowy W czym jest problem? Otóż mam rozwiązanie, które realizuje szybkie potęgowanie modularne i spokojnie daje sobie radę z działaniem np 57^65537mod71 i głowię się jak...
jak chcesz do 1 miejsca po przecinku, to mnożysz liczbę zmiennoprzecinkową przez 10 (jak do dwóch miejsc, to przez 100, itd.) zamieniasz ją na człkowitą i masz dwie (no w sumie to trzy) drogi. 1. zamieniasz liczbę całkowitą na tekst, wyświetlasz wszystko oprócz ostatniej cyfry (ostatnich dwóch, trzech...) wyświetlasz kropkę i dopiero ostatnią (ostatnie)...
Należy wybrać jedno! a) uniwersalny 8-bitowy sumator prefiksowy (PPA) dla kodu NB i U2 (dodawanie i odejmowanie) w strukturze Ladnera_Fischera lub Hana-Carsona, b) czterocyfrowy uniwersalny sumator dziesitny – cyfry dziesitne zakodowane w kodzie +3, c) sześciobitowy układ mnożący kodu U2 wg algorytmu Bootha-McSorleya, d) szeciobitowy układ dzielenia...
Poza tym pobieżnie przejżałem DS ATTiny i nie widzę instrukcji analogicznej do DIV w 8051?? Jak w nim dzielić liczby?? A czy znalazłeś MUL? ;) Do takich obliczeń niestety trzeba pisać własne funkcje. Można mnożyć i dzielić poprzez wielokrotne dodawanie lub odejmowanie danej liczby, ale to jest oczywiście dosyć mało optymalna metoda. Oczywiście mnożenie...
Osobiscie polecam ASM, sam w nim pisze. Dzieki ASM dokladnie wiesz co sie dzieje w uC i masz pelna kontrole, zwlaszcza jesli chodzi o czasy wykonywanych instrukcji. Oczywiscie pisanie w ASM jest bardziej czasochlonne niz w jezykach wysokiego poziomu typu C, ale po dojsciu do wprawy, zgromadzeniu procedur i napisaniu wlasnych makr, wydaje mi sie ze w...
No i właśnie o to mi chodziło gdy pisałem żebyś o to nie pytał ;) Bo tak czułem że nie będziesz umiał tego wyświetlić ;) Wynik niestety jest 24-bitowy więc nie może być w dwóch adresach. Ma być w trzech. To takie trochę tłumaczenie jak chłopu na miedzy, bo to niby jedna liczba i ma jeden adres, ale chodzi o to że ma 3B i już. Więc jako 16-to bitową...
AVE... Co to jest TDS3k? Masz na myśli serię Tektronix TDS3000 z 2008 roku? Dla Twojej wiadomości od tamtych czasów sporo się zmieniło. Obecnie każdy DSO emulujący zachowanie lampy oscyloskopowej bywa nazywany DPO. Siglent swoją wersję nazywa SPO - Super Phosphor, i tak to opisuje: SPO display technology provides fast refresh rates. The resulting intensity-graded...
Witam Jestem studentem I roku informatyki. Potrzebuję wykonać projekt na bramkach logicznych jednego z poniższych układów logicznych. Za wszelką pomoc BARDZO DZIĘKUJĘ! a) uniwersalny 8-bitowy sumator prefiksowy (PPA) dla kodu NB i U2 (dodawanie i odejmowanie) w strukturze Ladnera_Fischera lub Hana-Carsona, b) czterocyfrowy uniwersalny sumator dziesiętny...
Witam, moim zadaniem jest zbudowanie z bramek, przerzutników itp. schematu dzielnika, który dzieliłby liczby 4-bitowe przez 2-bitowe i wynikiem ma być liczba 2-bitowa (wynika z tego ze maksymalna dzielna może mieć wartość 1001). Na wyjściu oprócz wyniku ma pojawiać się informacja o błędzie (dzielenie przez 0) i o wystąpieniu reszty (niekoniecznie jej...
Typów 32-bitowych nie używa się zbyt często (chyba, że dla zmiennych lokalnych, bo tak jest szybciej). Za to całkiem często potrzebujemy danych 16-bitowych. Popatrz, ile instrukcji kosztuje na AVR dodawanie, mnożenie i dzielenie danych 16-bitowych. Na Cortex M3 każdą z tych operacji na danych 32-bitowych wykonuje się jedną instrukcją, na M0 dzielenie...
Nie mam w tej cwili czasu na dokładniejszą analizę, ale zauważ że w celu uzyskania bardziej znaczącego bajtu zmiennej typu uint16_t należy podzielić przez 256, a nie przez 255. Zwiększ też wartość zmiennej ac_adder na 256, bo przy 24 otrzymasz przebieg poniżej 5Hz. Błąd jest na pewno w algorytmie bo np. to działa bez problemu (sprawdziłem dla pewności):...