Kto szuka http://www.piclist.com/techref/microchip...
Witam. Skoro tak to zastosuj układ CD40194. Pozdrawiam.
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...
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
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...
>> _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....
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ść...
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...
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)
Przesuwanie liczby oznacza mnożenie lub dzielenia (w zależności od kierunku przesuwania) przez 2. Poniewaź liczba 10 nie ma rozwinięcia binarnego, przesuwanie nie może być zastosowane. W każdym przypadku (dzielenia przez liczbę 16-bitową czy kilka dzieleń przez liczbę 8-bitową) wystąpi dzielenie. Procesor AVR nie ma istrukcji dzielenia więc należy wykonać...
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
Autor przeciez napisał, że chce dzielić przez liczbę 12 bitową więc pomysł z LUT nie jest taki głupi.
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...
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
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.
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
34 podziel przez 10 a zostanie Ci 3. Reszta z dzielenia chyba funkcja Mod da Ci 4.
Czy ktos wie jak zrealizowac podstawowe funkcje arytmetyczne ( dodawanie ,odejmowanie, dzielenie mnożenie) na liczbach 16- bitowych w procsorze 99c51.
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ą...
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...
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
Tak ale niestety niewiem jak takie operacje robic. Np dzielenia liczby 24 bitowej przez 16 bitową
To zacznij od napisania procedury dzielenia liczby 10-bitowej przez 10, która da Ci równocześnie iloraz i resztę.
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,...
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;...
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...
Z 16-to bitową robisz dokładnie tak samo tylko do dzielenia trzeba użyć procedury dzielenia liczby 16-to bitowej przez 8-mio bitową.
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...
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...
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.
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ę...
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
Jedyne czego nie rozumiem to iloczyn bitowy z 16383. Co to daje? Jakie jest jego zadanie? Jest to obliczenie reszty z dzielenia w szczególnym przypadku kiedy dzielnikiem jest liczba o postaci 2^n - 1.
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ć.
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)...
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...
Dzielenie - wielokrotne odejmowanie aż do skutku... ;)
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,...
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...
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...
Shift+Ctrl+Esc PS. Delphi 7 niestety twierdzi, że wykonanie operacji dzielenia 64-bitowej liczby w ALU (div) jest niemożliwe :( Może wina 32-procka albo samego Delphi... To akurat trzeba by sprawdzić.
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):...
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)...
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_...
Nie wiem co to ma wspólnego z przestrajanym generatorem częstotliwości. Ten mój mnożnik częstotliwości będzie miał Jitter na poziomie kilku % co całkowicie go dyskwalifikuje jak "generator częstotliwości". Generalnie to trzeba zacząć od przetestowania tego co już mamy. Potem się pomyśli nad zwiększeniem zakresu częstotliwości pracy. Jako że nie masz...
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ć)
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
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...
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 :...
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ć.
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?
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...
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...
witka zapomnialem dodac ze lepiej by bylo aby nie trzeba bylo przeprowadzac operacji mnozenia dzielenia na liczbach 24 i 32 bitowych
Przede wszystim, jesli oczekujesz pomocy, musisz podac na jaki procek ten assembler. Po komendach widze ze nie jest to x86, czyli PCet. Byc moze chodzi o jakis mikrokontroler. Nie wiem czy wiesz, ale assembler nie ejst przenoscym jezykiem i nie ma jakies jego standardu - w przeciwienstwie do Ansi C czy pascala. Dalej nie wiem czy wiesz, ze nawet jesli...
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...
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...
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...
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?
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...
Witam. Gdzie znajdę gotowe procedury w asemblerze dla pic 16f84 np. mnożenie,dzielenie liczb 32-bitowych itp.
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]
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.
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...
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!!
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...
Mylisz się nic nie trzeba będzie robić żadnego dzielenia ani mnożenia. Wartość liczby będzie 12 bitowa czyli maksymalnie 4095 (liczba int) więc aby wyrazić ją w voltach wystarczy między liczbą reprezentującą tysiące a setki wstawić po prostu znak przecinka i będziesz miał "ludzką" postać swojego napięcia.
TMf co znaczy % ? Jest to procent z liczby przy dzieleniu na trzy bajty ? Wiem, że można zapisywać do rejestrów liczbę 16 bitową rozbijając ją na starsze i młodsze bajty. high z liczby LONG ?
Instrukcje, nie "komendy", to po pierwsze. Co to znaczy "podstawowe"? Dzielenie nie jest zwykle uznawane za "podstawową" instrukcję. Coś kręcisz, a rady ignorujesz.
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...
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...
W uproszczeniu bo szum będzie pseudolosowy więc jakąś okresowość jednak będzie miał (a więc i częstotliwość dolną). Nakładając (przez exclusive-OR) sygnały cyfrowe z kilku generatorów o różnych okresach (takich z dzieleniem przez wielomian bitowy, np. przesuwamy liczbę w prawo, tracąc najniższy bit, i jeśli ten bit był '1', to wykonujemy exclusive-OR...
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ć...
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) ?
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...
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
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...
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...
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,...
[syntax=c] uint32_t bin2BCD(uint32_t val) { uint32_t retval; uint8_t count, i, *ptr = &retval; retval = 0; for (count = 0; count < BCD_DIGITS * 4; count++) { for(i = 0; i < 4; i++) { ptr[i] += 0x33; if((ptr[i] & 0x08) == 0) ptr[i] -= 0x03; if((ptr[i] & 0x80) == 0) ptr[i] -= 0x30; } retval <<= 1; if(val & (0x08L << ((BCD_DIGITS...
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...
Witam Nie wiem,czy powinienem zabierać głos w tej dyskusji bo stoję tylko z jednej strony barykady i jeszcze nigdy nie byłem po drugiej stronie: piszę tylko w ASM i tylko na PIC'e i bardzo mi się to podoba. Dzięki architekturze RISC wiem dokładnie ile cykli zegarowych zajmuje każda z komend (i jest to najczęściej 1 cykl) stąd też nie miałem problemów...
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 Na czwartek muszę przygotować listingi programów napisanych w asemblerze które wykonają poniższe działania: 1. Dane są liczby: A=0F1h, B=00011111b. Obliczyć binarnie A+B, A-B, B-A. Podać wynik w postaci binarnej i szesnastkowej. 2. Napisać program mnożenia x4 liczby umieszczonej w rejestrze R7 bez użycia instrukcji mul ab. 3. Napisać program...
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...
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...
Po pierwsze nie wiem jak to zrobic jak mam ja zapisana w 2 rejestrach, a po drugie to chyba w B(reszcie z dzielenia) bede mial na poczatku jednosci,a potem dziesiatki itd.
przy każdym programie siedzę z kilkoma kartkami gęsto zapisanego papieru-fakt jest niepodważalny, że to najlepsza metoda, dopiero potem komputer. W asemblerze mnożyć x2 czy dzielić /2 i ich wielokrotności nawet jakby to były liczby 16 czy 32 bitowe - to da się zrobić ale jak mam liczbę 2,8 i to jeszcze na 6-tym miejscu po przecinku to się zaczynają...
Można się bawić w STMy i kombinowanie z grafiką, można kupić np. FT80x lub FT81x i mieć za parenaście złotych gotowy akcelerator graficzny, który realizuje wysokopoziomowe polecenia graficzne, w efekcie nawet 8-bitowy MCU będzie generował grafikę lepszą niż STM32Fxx... Oczywiście OpenGL jest poza zasięgiem nie tylko 8-bitowców, ale nawet wspomnianych...
Sumę liczb pierwszych mniejszych od 2^64 można (abstrahując od faktu, że wyznaczenie ich wszystkich przekracza możliwości łatwo dostępnych komputerów) wyliczyć dysponując zmiennymi uint64_t: [syntax=c]uint64_t s0=0, s1=0, p; ... if ((s0+=p) < p) s1++; ...[/syntax] i s1,s0 w sumie utworzą 128-bitową liczbę będącą sumą wszystkich p. Gorzej z wykonaniem...
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ą...
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...
Wielkie dzięki za pomoc. Używam zmiennej typu Single ponieważ w dalszej części występuje dzielenie i pojawiają się liczby zmiennoprzecinkowe a z tego co sie orientuje to Word ani Integer takiej możliwości nie mają (chyba, że mają?) :)
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)....
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...
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.
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...
dzielenie liczba sumator liczba bitowy dodawać liczba bitowy
zapalać check mercedes evohome honeywell philips ustawić godzina
Mercedes W126 SEL 4.2 - Problemy z odpaleniem na zimnym silniku Pionowa linia podczas skanowania HP DeskJet 3785 - jak usunąć?