https://obrazki.elektroda.pl/4868547700_... Dzisiaj zrealizuję projekt na malutkim, ośmionóżkowym mikrokontrolerze PIC w obudowie DIP8 oferującym skromne 3.5kB pamięci Flash. Co więcej, do komunikacjami z peryferiami użyję tylko dwóch pinów - całość opierać się będzie o I2C. W oparciu o nie uruchomię kontroler wyświetlacza/klawiatury oraz...
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...
Kto szuka http://www.piclist.com/techref/microchip...
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...
Witam, wlacze dalej z 8051 jako licznikiem kilometrów. Ktos doradzil mi abym poszukal procedur ALU ktore wykonuja obliczenia na 16 bitowej liczbie w 2 rejestrach. Znalazlem dodawanie odejmowanie konwersje etc. Nie znalazlem nigdzie mnozenia dzielenia itd. Moze zaczne od problemu, napisalem program ktory w ciagu sekundy zlicza impulsy na T0(P3.4) w ciagu...
zapisze to matematycznie w postaci "bajtowej" gdzie jedna wielka litera to jeden bajt a 0 to jeden bajt tylko że równy zero X,Y / Z,A = 0W (wynik) + 0R (reszta) teraz reszta mnozona razy 256 czyli 0R * 256 = R0 R0 / Z,A = 0V i ostateczny wynik to W,V teraz lepiej to zapisałem ??? hehe
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...
Tu masz dzielenie liczb czterobajtowych przez dwu bajtowe (16 bit).Co prawda nie moje opracowanie, podaję w orginale. ;procedura dzielenia 4-BAJTOWYCH liczb przez 2-BAJTOWE ; wejscie: ;r0 - adres najstarszego bajtu dzielnej, ;r1 - adres najstarszego bajtu dzielnika, ; wyjscie: ;R0 - adres ilorazu ;R6:R5 - reszta ;W deklaracji zmiennych programu wykorzystujacego...
Nie moja funkcja - znaleziona gdzies kiedys w necie kiedy piców uzywałem. Ale działała Dodano po 1 Przypomniało mi sie gdzie ja znalazlem - na stronie piclist
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,...
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: http://obrazki.elektroda.net/56_11731924... w czerwonej liczbie 1011 liczba 110 mieści...
No to jak rozkminiacie różne programy to ja Wam dam procedurkę dzielenia przez 10 liczby 32 bitowej ponad 2 razy szybszą niż dzielenie [syntax=c]int32_t div10(int32_t number) { int64_t magic = 0x1999999A; return (int32_t) ((magic * number) >> 32); }[/syntax] Możesz sobie łatwo przerobić na dzielenie przez 100 1000 czy cokolwiek innego, lub inną długość...
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ą...
Da się robić różne cuda, ale po co? Autora nie chciałbym spotkać na drodze (pisze lewo, przesuwa w prawo ;-) ) Wedłu standardu C działanie takie o które pyta jest "implementation-defined" A że się tak zapytam czy przypadkiem nie chodzi o dzielenie przez 2^n? Jeśli tak, to czemu po prostu nie dzielisz przez 2 do odpowiedniej potęgi? Albert
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...
>> _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....
Poszukaj w sieci przykładów dzielenie 16 bitowego.
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
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.
Autor przeciez napisał, że chce dzielić przez liczbę 12 bitową więc pomysł z LUT nie jest taki głupi.
Nalezy po kolei dzielic przez 10. wartosc liczby. Za kazdym razem zapisujesz kolejne cyfry liczby. Wiec za pierwszym razem dostaniesz liczbe dziesiatek tysiecy, potem liczbe tysiecy, setek, dziesiatek i jednosci.
Otrzymane 2 bajty łączę w liczbę 16 bitową. Mnożę ją przez 10 i dzielę przez 16 (tj. przesuwam o 4 bity w prawo). Mam w wyniku temperaturę 10x większą niż w rzeczywistości. Ewentualne obliczenia i ustawienia wewnątrz programu robię na liczbach 10x większych. Dla procesora to żadna różnica. Wyświetlaniem zaś zajmuje się za każdym razem ten sam podprogram,...
Skoro poniższy kod, działa wg Twoich oczekiwań, to napisz może jeszcze proszę, co to znaczy, że "wynik jest dobry" i w jakim zakresie zmiennych adcresult32 oraz a .[syntax=c]int32_t adcresult32; uint32_t a; adcresult32 = (int64_t)((int64_t)adcresult32*a)>>16;[/... i dzielisz liczby 64-bitowe, a wynik przypisujesz do liczby 32-bitowej.
Używam do pisania w języku VHDL programu Xilinx ISE 9.1i ale bardzo mi on nie leży. Na zajęciach korzystamy z WebPacka, który jakoś bardziej według mnie jest przysfajanly jednak problem jest z legalnością tego więc jadę na wyżej wymienionej darmówce. Może mi ktoś powiedzieć czy idzie to jakoś zoptymalizować i wyłączyć zbędne funkcje żeby nie wciągało...
Czy ktos wie jak zrealizowac podstawowe funkcje arytmetyczne ( dodawanie ,odejmowanie, dzielenie mnożenie) na liczbach 16- bitowych w procsorze 99c51.
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...
Po pierwsze - z tymi miliardami to trochę przesadziłeś - w 32-bitowych mikrokontrolerach raczej jest kilkaset tysięcy tranzystorów, nie sądzę aby liczba ta zbliżała się do miliona. W desktopowych CPU liczba ta dopiero niedawno przekroczyła miliard i to tylko dla wielordzeniowych układów z najwyższych półek http://en.wikipedia.org/wiki/Transistor_...
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...
Ja Bascoma w zasadzie nie znam, ale cudów nie ma - dzielenie 32-bitowych liczb na 8-mio bitowym procesorku jest operacją kosztowną... Jak nie brakuje Ci pamięci to możesz ewentualnie stablicować dzielnik (zamiast go dzielić przez 10) - powinno być c.a. dwa razy szybciej. Jeżeli w Bascomie jest typ Word, to cztery ostanie dzielenia mógłbyś robić na zmiennej...
W tym wontku http://www.elektroda.pl/rtvforum/topic27... co podał Tdv jest też biblioteka w której możesz dzielić nawet liczby 64 bitowe
Bede wdzieczny za algorytm na ASM umozliwiajacy dzielenie liczby 16-to bitowej przez 16-to bitowa. Mysle i mysle i nic mi do glowy nie przychodzi. Szukam i tez nic (ale moze za slabo). Dzieki i pozdrawiam bede wdzieczny za wszelkie sugestie
char st1 to nie zadziala. tablice nalezy inicjowac rozmiarem znanym podczas kompilacji. masz wiec dwa wyjscia: 1. albo rozmiar na sztywno 2. albo szybki kurs uzycia funkcji malloc i obslugi dynamicznego przydzialu pamieci (obstawiam, ze jak procek nie ma pozadnej ilosci RAMu, to nawet nie ma co probowac) x = 53.7; <-------------------- tu muszę...
Witam Moja propozycja jest następująca: mając string z poszczególnymi bitami dzielisz go na kawałki 4-ro znakowe. I wtedy taki czteroznakowy string zamieniasz na odpowiadającą wartość HEX. Potem pobierasz kolejne cztery znaki i znów zamieniasz. Możesz sobie zrobić np. tablicę w której umieścisz np. 100 bitową liczbę. Kolejne dane będziesz pobierał z...
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....
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):...
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]
ADMUX=0b10000000; //kanał 7 ADC Zamiast 7 ustawiasz zerowy kanał ADC, a ten pin wykorzystujesz jako wyjście na wyświetlacz przecież... nic dziwnego, że bzdury wychodzą. O co chodzi z tym mnożeniem przez 100 (i dlaczego w przerwaniu, do tego jeszcze na zmiennej globalnej)? Jeśli już to powinno być przez 2 (wtedy wystarczą liczby 8-bitowe) albo (na 16-bitowych)...
Bardzo dziękuję za dzielenie się wiedzą i przydatne oprogramowanie - może wreszcie wyciągnę z szafy raspberry PI i przyda mi się właśnie do MPPT 10A :) Czy ja dobrze rozumiem, że liczby ujemne prądu kodowane są w U2 (inwersja bitowa + 1) ? Cieszę się, że może się to komuś przyda :-) Co do kodowania liczb - wartości są zakodowanie jako 16 bitowe integer...
nie pytajcie się mnie o jakieś szczegóły 0. Załatwione :) Ja nie będę pytał. 1. Nie liczenie wcale nie nastąpi. 2. Nie, O będzie miało stale wartość 0. 3. Daje to tyle, że wynik będzie z sufitu. A teraz kilka słów wyjaśnienia: Ad.1. W funkcji main, masz pętlę opartą o while(1). Ta pętla zostanie przerwana tylko brakiem zasilania. Program nigdy nie...
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;...
Jeżeli te operacje mają na celu np. monofonizację sygnału to robi to się wg następujacego wzoru: M=\frac{X+Y}{2} (****) Dodajemy w zmiennej 16 bitowej ze znakiem a wynik po podzieleniu przez 2 zapisujemy w 8 bitowej ze znakiem. Nie podzielenie wyniku przez dwa powoduje wyprowadzenie wyniku poza zakres 8 bitowy. Obcinanie typu if x>127 then x=127 nie...
1. Dzielisz liczbę BCD na grupy 4-bitowe zaczynając od LSB. 2. Każdą grupę zamieniasz na cyfrę DEC. 3. Tworzysz z tego liczbę DEC. 4. Zamieniasz liczbę DEC na BIN. Pozdrawiam wszystkich jjanek
W moim przypadku (ten EKG), ponieważ ten TMS miał tylko arytmetykę stałoprzecinkową, stosowana była taka arytmetyka mieszana - FFT było liczone stałoprzecinkowo (dokładnie to zaprzecinkowo - liczby traktowane jako (-1, 1)), natomiast w przypadku wystąpienia przepełnienia (tylko podczas dodawania) wywoływana była prosta funkcja dzielącą każdą liczbę...
Przy przesunięciu bitowym w lewo zgodzę się z Tobą. Jednak w wyniku przesunięcia bitowego w prawo (dzielenie) otrzymam liczbę całkowitą co zmniejsza dokładność czujnika.
Oto, co podaje ChatGPT: [syntax=armasm] ORG 1000H ; Punkt początkowy programu START: ; Wczytanie pierwszej liczby (dividend) z zakresu 0-65535 MVI D, 0 ; Wyczyść rejestr D MVI E, 0 ; Wyczyść rejestr E ; Zakładamy, że liczba jest podana bezpośrednio ; (możesz dodać instrukcje do wczytywania wartości, jeśli potrzebne) ; Przykład wartości (do testowania)...
Co do liczenia czasu, to musisz przeanalizować jak timer zlicza impulsy i jaka jest częstotliwość taktowania. Wtedy wiesz od jakiej liczby do jakiej liczby ma zliczyć impulsy żeby mieć określony odcinek czasu. Co do ilości linii adresowych system binarny się kłania, jedna linia to 2 adresy, 2 linie 4 adresy, 3 linie 8 adresów, itp. Witam. Ja uważam...
Stary i lubiany operand w C (!!) (i nie tylko :D ). Logiczne przesunięcie w prawo o 10 bitów, co daje że liczbę tlong dzielisz przez 2^(10) = 1024. Bity najmłodsze są wysuwane (tracone!), a na najstarszych pozycjach wsuwa się 0. Zakładam, że przetwornik jest 10-bitowy, co daje zakres od 0 do 1023. Prosta arytmetyka da nam zakres do <0; 1), wcześniej...
Dzielenie - wielokrotne odejmowanie aż do skutku... ;)
Próbowałem przełączyć się na "oddzielny" kod dla bufora pierścieniowego - dzięki czemu możliwe byłoby użycie tego samego kodu dla różnych przypadków. Do tej pory int to 32-bitowa liczba całkowita - float jest "symulowany" jako liczba całkowita pomnożona przez 100 (więc może pomieścić 2 miejsca po przecinku i jest dzielony przez 100 podczas odczytu)....
Char to tylko typ zmiennej, a hex forma zapisu. Jeżeli funkcja przyjmuje wartości char(8bit) to nie jest ważne czy ty to podasz binarnie, dziesiętnie czy w hexach- ważne jest żeby liczba ta mieściła się w zakresie char. Jeżeli SPI działa w trybie 8bitowy, i funkcja wysyłająca znaki przyjmuje wartości char, a ty chcesz wysłać większą zmienną, to musisz...
MOVR1,#0XXH ;Upper byte MOVR0,#0XXH ;Lower byte MOVR2,#100 DZIEL: PUSH7 MOVR7,#9 MOVA,R1 DIV0:MOVR1,A MOVA,R0 RLCA MOVR0,A DJNZR7,DIV1 CPLA ;Wynik w A POP7 RET DIV1: MOVA,R1 RLCA CLRC SUBBA,R2 JNCDIV0 ADDA,R2 SJMPDIV0
To jest dość proste do rozwiązania. Załóż, że użyjesz EPROMu. Masz dwie zmienne 4-bitowe, wynik ma składać się z (zapewne) 3 lub 4 znaków. Podłącz do EPROMA: - nogi A0-A1 - wejście do multipleksowania wyświetlacza (do obsługi czterech cyfr) - nogi A2-A5 - wejście argumentu #1 - nogi A6-A9 - wejście argumentu #2 - nogi A10-A11 - wejście typu operacji...
Chodzi o pomnożenie próbki przez liczbę x z zakresu 0-255 i potem przesunięcie o 8 bitów w prawo, żeby uzyskać próbkę o współczynniku x/255, tak? Dokładnie. Mnożenie ma niewielki narzut (procesor ma instrukcję MUL), a dzielenie przez 256 to po prostu obcięcie najmniej znaczącego bajtu. Stałą? Przecież volume_coefficient to zmienna. Owszem, ale nie...
Przede wszystskim trzeba wiedzieć co to za procesor. Domyślam się że 8-bit - więc nie ma instrukcji do dzielenia 16-bit (pomijam jakieś 'super-wynalazki' z układem arytmetyki zmiennoprzecinkowej itp.) Trzeba napisać lub poznać podprogram który dzieli liczby 16 bitowe i według tego się kierować.
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ć.
Tak, zgadza sie. Troche sie ostatnio spieszylem i zapomnialem ta linijke dopisac. Zorientowalem sie i mialem to zrobic w pozniejszym czasie. Widze ze czujnie sledzisz. Dzieki. Teraz to samo zrobie dla liczby 16 bitowej. Mam algorytm na dzielenie wielobajtowe, ale musze poszukac czegos takiego: 16bitow podzielone przez 4 bity. Ewentualnie zmodyfikuje...
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 ?
Problem w tym że nie mam zielonego pojecia o Bascomie i BASICU :/ Program pisze w ASM'ie. Jak na razie zrobiłem to na skróty i działa ale to nie to....(po prostu zamiast dzielić przez 120 dziele przez 128)
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,...
Działanie suma = suma << 1 to mnożenie przez 2. Dzielenie realizuje się przesuwając w prawo a nie w lewo. Dodatkowo można w ten sposób dzielić tylko przez kolejne potęgi liczby 2, a ponieważ 10 nie jest potęgą 2, więc nie da się dzielić przez 10 poprzez przesunięcie bitowe. Porponuję zrobić dzielenie przez 8 lub przez 16 (przesunięcie o 3 lub...
Sensu to nie ma żadnego. Dla każdego 8-bitowca jest to zabójstwo, bo każda operacja na danych czy to BCD, czy binarnych 64-bitowych zajmie wieki (zwłaszcza mnożenie i dzielenie). Są algorytmy resztowe umożliwiające unikanie dzielenia przy konwersji bin->BCD i całkiem zgrabnie to wychodzi (nawet na głupiutkim 51), ale wciąż nie widzę w tym sensu, jeśli...
DIV AB “DIV AB” a) ang. „divide” – podziel b) 8−bitowa liczba bez znaku, znajdująca się w akumulatorze jest dzielona przez 8−bito− wą liczbę z rejestru B. Cześć całkowita ilora− zu wpisywana jest do akumulatora, a reszta z dzielenia do rejestru B. W przypadku gdy dzielnik jest równy 0 (B=0) to po...
Coś czuje że częściej będzie to pisanie kodu "magicznego", czyli np. "jaka totalnie niezrozumiała operacja może zastąpić dzielenie" albo "jak użyć 8-bitowej liczby choć potrzebujemy 32-bitowej". Nie widzę w tym problemu, jeżeli zamkniemy tę magiczną operację w bibliotece/ funkcji/makro. Widziałem też magiczne kody w drugą stronę. Typu : jak w bajtowym...
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...
z mojej rozmowy z nim (na gg) wynika że jest to atmega8535.. div nieumiem znaleźć w helpah ani nigdzie.. więc trzeba to zrobić programowo... sukcesywne odejmowanie (w/w) albo odejmowanie z przesuwaniem bitowym (szybsza metoda)
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...
Chodzi o to by ilość próbek podlegających uśrednianiu była potęgą liczby 2. Dzięki czemu dzielenie przez N można zrealizować przesunięciami bitowymi. AVR nie ma instrukcji dzielenia.
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?
A jaka duża ta liczba ? bo jak maks 10bit, to w prościutki sposób można to zrobić na jakiejs 51, bo wtedy pierw dzielimy przez 4 przesunieciem bitowym, a pozniej operacja DIV przez 15. Jesli to ma być podzielenie jakiegoś sygnały przez 60 (częstotliwość) to się znajdzie jakiś układ HC. Licznik z komparatorem. Pozdrawiam Boogie
Wygenerowałem przykład w Harmony i mam następujące spostrzeżenia: Są cztery rejestry kalibracyjne DEVEE0-DEVEE3 ale są one 32-bitowe, odczytane wartości są dzielone na 16-bitowe liczby i dopiero te są zapisywane do EEPROMu: Poniżej fragment kodu przygotowującego dane kalibracyjne: [syntax=c] data = PLIB_NVM_EEPROMReadCalibrationData(dObj-...
Witam, mam do zaprojektowania układ, który będzie dzielił mi dwie liczby cztero bitowe A i B. Do tej pory stworzyłem taki układ, jednak nie działa poprawnie. Np gdy liczba A=15, a B=3, to w raporcie symulacji mam liczbę 14, reszta 1. Co robię źle ? http://obrazki.elektroda.pl/8337291500_1... Dodam że wzorowałem się na tym schemacie :...
No właśnie miałem napisać. W AVR takt trwa tyle co okres generatora. Zegar nie jest dzielony przez 12 ani przez żadną inna liczbę. No chyba że włączysz preskaler.
Nie widzę tu jakichś prawidłowości. Ja widzę, pierwsza - regularnie występują bajty synchronizacyjne 7f, 7f a po nich wartości binarne. Jedno jest pomieszane - część bajtów jest HEX a część jako ASCII a to strasznie miesza - trzeba te ASCII zamieniać na HEX i potem dekodować liczby. Problem jest jak pojawi się spacja bo słabo ja widać a też ma swój...
Bez urazy, po prostu mnie to zaciekawiło. Po pierwsze dlatego, że spodobał mi się pomysł respektowania opcji DHCP - ale szczerze mówiąc, nie wiedziałem, czy "nasz" kod naprawdę używa dhcp, czy też wszystko jest obsługiwane przez zamknięte libs wifi. Np. dla OpenLN882H jest: https://github.com/openshwprojects/OpenL...
Witam, na przyszły tydzień mam przygotować kilka projektów z układów iteracyjnych. Całkiem przyjemne rzeczy...gdyby nie dwa podpunkty; mam zaprojektować układy: mnożący i dzielący 8 bitową liczbę binarną (zapewne w systemie dwójkowym) przez 5. Układ ma składać się z 8 bloków, o 1 wejściu, 1 wyjściu i max 3 przeniesieniach każdy. W każdym bloku mam do...
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...
A po co dzielić od razu: http://www.eng.utah.edu/~nmcdonal/Tutori...
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!!
Instrukcje, nie "komendy", to po pierwsze. Co to znaczy "podstawowe"? Dzielenie nie jest zwykle uznawane za "podstawową" instrukcję. Coś kręcisz, a rady ignorujesz.
mam pytanie do tego algorytmu, bo nie moge jednej rzeczy dla niego wymyśleć... co zobić, żeby prawidłowo robił bin2bcd ale liczby 16 bitowej dla której 4 lub 8 ostatnich bitów jest traktowane jako liczby po przecinku... przecież nie bede tego robić tak jak jest a potem dzielić tej liczby bcd przez 16 albo 256, bo wtedy traci to sens, żeby nie dzielić...
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...
Już Ci kiedyś podawałem ten adres: http://www.8052.com/codelib/math8051.asm Są tam procedury DIV32 i UDIV32 - dzielenie 32-bitowych przez 16-bitowe. Jak trochę zmodyfikujesz, to będziesz miał 24-bitowe przez 8-bitowe. Pozdrawiam.
najłatwiej tak jak kolega polecał, np. w ISE jest CORE generator, szukasz gotowego IP, ustalasz tylko jego parametry i masz :) Nic prostszego. A jeśli sam chcesz się pobawić, to z tego co wiem(nigdy tego nie robiłem) nie jest to takie proste, no chyba że chcesz dzielić tylko przez potęgi 2
W rodzinie '51 standardowo stos ma początek w rejestrze o adresie 07H (i zajmuje kolejne o wyższym adresie) można to sobie zmienić przez wpisanie nowego adresu do SP przykład: MOV SP,#30H ;przenosi początek stosu od adresu 30H Co do dzielenia to mała podpowiedź Ponieważ liczba ma być dzielona przez 16 to najlepszym sposobem jest przesuwanie bitowe w...
Witam, Nie twierdzę że mój sposób sprawdzi się w Bascomie, dużo lepiej sprawdzi się asemblerze. Napisałem w Bascomie tak dla przykładu, myślę że tak jest przejrzyście, a chodzi po prostu o zasadę - sposób. AVR - serii Atmega to 8bitowce, więc tutaj w grę wchodziłoby tylko 8bit/8bit. Natomiast co ciekawe, AVR32 też nie ma dzielenia sprzętowego. Całkiem...
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...
Tu są procedury matematyczne dla '51: http://www.8052.com/codelib/math8051.asm Dzielenie 32 bitowych przez 16 bitowe bez znaku, to procedura UDIV32, a ze znakiem DIV32. Pozdrawiam.
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)....
Witam, mam napisac program (w asm) który mierzy czas pomiędzy wcisnieciami przycisku. Zaimplementowałem to w taki sposób ze podczas przepelnienia się timera 0 zwiekszany jest akumulator, gdy ktoś znowu wcisnie przycisk to timer jest stopowany i nastepuje wyjscie z petli do czesci programu odpowiedzialnej za obliczenie i wyswietlenie wyniku. Czas zapełenia...
I wszystko się zgadza. Wynik mnożenia (256*adc1) jest zapisywany jako liczba 16 bitowa, a więc już masz obcięcie i dalej muszą wyjść bzdury. Samo to mnożenie jest zresztą bez sensu, bo mnożysz tylko po to, żeby zaraz potem dzielić, więc to samo ale bez przekroczenia zakresu wartości mógłbyś policzyć jako 62500u / adc1.
Odpowiedź będzie zależna od zegara jaki dostaje AY3. W zależności od kompa te częstotliwości bywały różne. Dla COBRA1 trzeba będzie przyjąć jakiś standard. Ja mam 2048 kHz. Ogólnie to może być np. 1,625 MHz... czyli zegar 6,5 MHz / 4 ... chyba gdzieś znajdzie się takie miejsce gdzie jest taki takt. Wówczas nie trzeba tego generatorka na inwerterach...
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...
Problem jest banalny:) Dzielisz swoją liczbę przez 10 i masz cyfrę dziesiątek. Reszta z dzielenia przez 10 (czyli %), to cyfra jedności. Dziesiątki przesuwasz o 4 pozycje w prawo (operator <<) i dodajesz bitową sumą do jedności.
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
A co będzie jak będę chciał wysłać większą liczbę np H1E240 czyli 123456 ,muszę je sam dzielić na 4 bity i po kolei wysyłać?
Witam. A skad wiesz ze dotajesz daje w formacie HEX? Jak to niby sprawdzasz? Ja bym powiedzial ze ADC z mikrokontrolera daje dane w formacie bitowym (zreszta jak wszystkie inne liczby procesora). Jesli piszesz w C to nie ma znaczenia czy operacje wykonujesz na liczbach bitowych, dziesietnych, szesnastkowych itp. Liczba to liczba, po prostu zapisania...
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...
Problem swój rozwiązałem korzystając w kodzie U2 z Metody Robertsona która jest opisan w wyżej wymienionej książce B.Pochopnia, a ZM załatwiłem poprzez zapisywanie znaków w obszarze pamięci adresowanym bitowo xor je a na koncu wstawiałem.
AVE... Propeller to 8 32-bitowych procesorów RISC wykonujących równolegle 20 milionów operacji każdy, dzieląc przy tym 32kb pamięci flashrom i tyle samo RAM, a do tego jeszcze każdy rdzeń ma własną pamięć na 512 liczb 32-bitowych. Czy nie wydaje się wam, iż użycie takiego układu do tak prostego zadania ma sens? Właśnie do takiej aplikacji pasowałoby...
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 liczba sumator liczba bitowy mnożenie bitowy liczba
smart pilot samsung kondensator mniejszy zasilacz nieszczelność instalacji
galaxy tylnia wycieraczka potencjometr wyłącznik zamiennik
Saker Portable Welding Machine 110V 120A IGBT Review: Specs, Performance, Durability Wymiana dolnej poduszki silnika Citroen C4 Picasso 2007 1.8 125 KM