Hmm a nie dało by się to zrobić równolegle po 8 wyjść na raz? Masz zakres 0-127, więc można by zrobić tablicę o długości 768 B uint8_t tab[128*48/8] = {}; uint8_t *p; while(1) { p = tab; //ustawienie wskaźnika for (uint8_t i = 0; i <= 127; ++i) { PORTA = *p; ++p; PORTB = *p; ++p; PORTC = *p; ++p; PORTD...
Jest to procesorek CISC, co upraszcza programowanie w asemblerze. No, niektóre z elementów asemblera AVR przydałaby się w zasobach 8051. Na przykład jasne i czytelne skoki: BRGE, BREQ, BRLT. W 8051 trzeba pamiętać, że odpowiednia kombinacja flag Z i CY to większe, mniejsze, równe. 8051 ma też nieco niezbyt zgrabnie zrobione porównania, a jedynym przedstawicielem...
jednak nowy Basic jest używany przez kilku angielskich klientów VB.NET jest bardzo przyjemnym językiem dla początkującego. Zresztą dla bardziej zaawansowanego też. Możliwości są takie same jak w C# jest wiele podobieństw. Zresztą są strony umożliwiające przeniesienie kodu z C# na VB.NET i odwrotnie. Nie zawsze to działa, ale często się to udaje, a...
Witam Muszę napisać program komparatora do atmelowskiego c51 w µVision (podobno asembler) porównujący wartość com1 z com2 i wysyłający odpowiedni wynik na com3. Napisałem program odejmujący wartości między portami com1 i com2, udało się rozróżnić czy wartości są równe czy też nie. Problem w tym że nie mam pojęcia co zrobić żeby rozróżniało która...
Tylko, że porównywanie w procesorach się wykonuje przez odejmowanie (patrz dokładny opis tej instrukcji), a to w przypadku porównywania z zerem jak napisałem nic nie zmieni. Pożyczka, czyli ustawienie przeniesienia C=1 występuje gdy wartość odejmowana będzie większa niż zawartość rejestru. Takie podstawy to kolega powinien znać. A BRLO właśnie sprawdza...
Zdecydowanie prościej będzie sprawdzać po jednej cyfrze. Najpierw zbierasz wszystkie cyfry z terminala do pamięci. Potem dla każdej cyfry sprawdzasz, czy pętla się skończyła, jeśli tak, skaczesz do "sukces", jeśli nie, bierzesz cyfrę z pamięci, porównujesz z cyfrą z kodu, skaczesz do "nierawidłowy" jeśli różne, kontynuujesz jeśli równe. To w przybliżeniu,...
Po krótce - w ASM musisz wiedzieć pod jakim adresem jest dany rejestr peryferium i do niego sie odnieść. A to ciekawe, co piszesz, bo asembler stworzono właśnie po to, aby nie trzeba było tych adresów pamiętać i zamiast tego używać właśnie ich nazw ;) Post nieprawidłowo łączy dwa tematy. Adresy symboliczne w JEZYKU assemblera Znajomość architektury...
ja robiłem disasemblację ale nie znam na tyle asemblera, żeby dopatrzyć się przyczyny. porównywałem kod dla różnych wartości $crystal ale do żadnych wniosków nie doszedłem. PC
Zawsze możesz porównać efektywność np takiego fft napisanego w różnych językach: https://rosettacode.org/wiki/Fast Fourier transform No i jakie wnioski wyciągasz? Zrobiłeś benchmarki> czy tak sobie uznałeś że będzie gorzej. Zresztą algorytm użyty nie nadaje się dla uC. Przykład zły. FFT dla uC pisze się ciutkę inaczej. Inna sprawa że w C++ można pisać...
Jest sposób aby wykonać ta procedurkę w asemblerze , ale nie wiem ile ona potrwa- a tobie zależy na szybkim wykonaniu obliczenia. Poniżej opisałem jak według mnie mogłoby to działać: Np. A=256 ; B=64 Deklarujemy tablice w której będą procentowe podzialy liczby (25%,50%,75%,100% itd) 1) porównanie liczb A=B, A>b, A<B 2) A>B (inkrementujemy odpowiednio...
Jeśli mogę coś doradzić, to na początek nie staraj się porównywać asm do C, porównując krótkie fragmenty kodu możesz poczuć się sfrustrowany. Zacznij pisać w C, a optymalizacje zostaw na później, wtedy kiedy będą naprawdę potrzebne. Jak rozwiązać problem przy pomocy makr możesz podglądnąć w Atmel Studio klikając prawym przyciskiem myszy na GPIOR i patrząc...
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...
czekasz na wypełnienie bufora, porównujesz znak, skaczesz do odpowiedniego miejsca w programie.
Myślę, że nie jest to niemożliwe, ale trudne. Bez specjalnych trików się nie obędzie. Preskaler timera na 64 i porównywanie wartości dodatkowego licznika programowego z tabelą wartości. Najoptymalniejsze tu będą wstawki w asemblerze.
1. Co za pomysł, żeby zamiast zadeklarować dane z nazwami, ręcznie pilnować adesów pamięci? Od tego jest asembler. 2. Jest taka instrukcja CJNE - przyjrzyj się jej wariantom, któryś powinien pasować. Ew. użyj XRL. SUBB to odejmowanie z pożyczką - tu Ci nie pomoże.
Nie widzę żadnego logicznego związku pomiędzy porównywaniem turystyki, a tworzeniem aplikacji na µC... To nawet trochę dziwne porównanie, ryzykowanie życia na trudnym szlaku turystycznym, a trudność nauczenia się programowania w asemblerze... Gdzie sens i logika ? Mikrokontrolery są dość ograniczone swoimi parametrami (wielkość pamięci) i nawet...
Co to jest w ogóle ten BASCOM ?? Jak pisałem, ja robiłem wszystko w asemblerku i na prawdę podobało mi się to bardzo! No i bardzo dobrze - precz z BASCOMem :P Opisy do wszystkich procków AVR, listy rozkazów i różne noty aplikacyjne znajdziesz na stronie Atmela - www.atmel.com (po angielsku). Z kolei na elektrodzie są opisy programatorów. Znam jeszcze...
Co chcesz kolego kamyczek porównywać. Mój czajnik bedzie podłaczony do chmury, czy zakładasz że Twój też?
Jakiego procesora jest to asembler? A, B, C to, jak się domyślam, są rejestry. One są 8-bitowe? Jeśli nie dysponujesz 16-bitowymi, to będziesz musiał napisać kod, który będzie porównywał najpierw starsze bajty liczb, a później młodsze w razie potrzeby i dopiero wtedy będzie decydował, która liczba większa.
1. .cseg - CODE SEGMENT - użycie pamięci programu (flash) org - wymuś kompilację od danego adresu 2. Stos należy najpierw ustawić na koniec pamięci RAM (bo jest używany przy skokach do podprocedur, przerwań, powrotach z nich(, wynika to z tego, że z reguły na jej początku przechowywane są dane, a rdzeń procesora, czy ATmega128, czy ATtiny2313 jest podobnie...
Łańcuch z diod LED. Może podpowiecie, jak napisać taką wstawkę w asemblerze do przerwania od Timera. Zmienna globalna pwm jest porównywana ze zmienną licznik (zwiększana w przerwaniu). Jeżeli większa, to LATX HI else LATX LO. Zmienna globalna będzie normalnie widziana w stawce asemblerowej?
Napisz na szybko to w jakimś języku nieco wyższym niż ASM np C/C++. Uruchom tam algorytm a później gdy będzie działał, debuguj porównując częściowe wyniki tak znajdziesz błąd.
Insza inszość, że opłacalność projektów na ARM do AVR rośnie i albo Atmel coś z tym zrobi, albo to forum ;) Widzę, że i kolega dołącza do grupy czarno-widzów przyszłości procków AVR ;) Ja chyba kiedyś będę notował w oddzielnym pliku takie ciekawe wypowiedzi z tego forum, wróżące wręcz, że już za rok AVR'a nikt nie użyje i wszyscy zapomną, albo jak...
Można podłączyć zwykły układ termometru lm35, czy jakoś tak, i porównywać napięcie z tej kostki z napięciem generowanym np. przez pwm mikroprocka :-)
Uproszczenie, nie mity. :) Prawda jest taka, że dziś nie ma potrzeby pisania kodu w języku niskiego poziomu - napisanie dobrego kodu zajmie mnóstwo czasu zwłaszcza przy ogromnej liczbie rozkazów procesora. Kompilator i tak będzie musiał nasz program przetłumaczyć na język niskiego poziomu, a potem na kod maszynowy. Jakkolwiek kompilatory robią to bardzo...
Mindstorms uczy podstaw programowania i podstaw automatyki. Że programowanie może czemuś realnemu służyć. Nie uczy elektroniki. Żadne programowanie nie ma nic wspólnego z elektroniką. Także jednoukładowców, nawet w asemblerze. Dlatego napisałem, że w wymiarze elektroniki niczego nie wnosi. Nie wiem więc skąd porównywanie tego zestawu, z tym o którym...
Ustawienie tych bitów jest łatwiejsze i bardziej czytelne niż w AVR. czytelność ustawiania bitów zależy raczej od samego programu - są nakładki graficzne, pola wyboru konkretnej konfiguracji, a są też pola tekstowe na wpisanie wartości. Ja osobiśie ustawiam fusebity za pomocą avrdude bezpośrednio z konsoli, wartości pobieram bezpośrednio z dokumentacji,...
chyba jaśniej się już nie da. :( max=max(a1,a2...an)=max(a1,max(a2,max(..... czyli ideologia jest taka, że porównujesz wartość wprowadzoną z dotychczasową maksymalną (minimalną) i jeśli to konieczne - poprawiasz.
Właściwie to lepiej się nauczyć C++ i asma, bo potem 'przesiadka' na C to kwestia oduczenia się paru nawyków z C++ i zaprzyjaźnienia z jego bibliotekami. Edit: Trochę rozwinę swoją wypowiedź. C++ jest obecnie chyba najpopularniejszym językiem w związku z czym jest do niego najwięcej kursów, książek, artykułów i tutoriali. Asembler to praktycznie jedyna...
Witam! Na początku pragnę wszystkich pozdrowić. Chcę napisać aplikację, która będzie porównywała czasy sortowań kilku znanych algorytmów sortowania danych, np. QuickSort, proste wstawianie, prosty wybór, scalanie. Dane powinny być wczytywane z pliku, gdzie te dane będą podzielone, czyli w jednym pliku liczby będą uporządkowane, w innym nie. I tak dla...
1.Wykrywam zbocze sygnału A 2.Porównuje sygnał B '1' lewo '0' prawo I tu jest pies pogrzebany. Wyobraźmy sobie, że styk kanału A ma drgania (bo musi drgać). Wtedy program zmieni mi licznik o tyle ile zarejestrował zboczy. Druga opcja to taka, że wychylę impulsator troszeczkę, tak aby nastąpiło zbocze kanału A. Licznik zwiększy mi się o jeden(a może...
Teraz mam problem z kodem widocznym wyzej, cos namotalem i nie chce dzialac. Siedze nad nim pare godzin niestety bez skutku :/ Nie rozumiem, dlaczego kod piszesz w asemblerze? Nie lepiej w C? W dobie obecnej optymalizacji kodu pisanie w asemblerze ma sens jedynie w przypadku "newralgicznych części kodu". Ja wiem - że fajnie jest powiedzieć "napisałem...
Idziemy za ciosem. ; D ecrement J ump if Z ero ; DJZ licznik,etykieta wyjścia .MACRO DJZ DEC (at)0 BREQ (at)1 .ENDM I jeszcze jeden, choć nie jest już tak kompatybilny z 51. ; C ompare, J ump if N o E qual ; CJNE reg1,reg2,etykieta .MACRO CJNE CP (at)0,(at)1 BREQ (at)2 .ENDEM Porównuje tylko dwa rejestry, a w oryginale można porównywać prawie wszystko.
Ja to sobie nieco inaczej wyobrażam: najpierw kurs architektury i małe wprowadzenie do asemblera, a następnie przesiadka na język wyższego poziomu. Brzmi to bardzo patetycznie, tym niemniej nie ma co się na asm obrażać, kompilacja niektórych wyrażeń standardowych (pętle, warunki itp) mnie osobiście zachęca do zrobienia wstawki w asm, która załatwi...
Ale asemblera też nie porzucaj, bo on pozwala na pełne panowanie nad danym procesorem, na pisanie bardzo zwartych fragmentów kodu a także fragmentów wymagających wyciśnięcia maksymalnej prędkości z procesora. Same zasady pisania programu w asemblerze są podobne jak i w językach wyższego poziomu tyle, że kolejne kroki rozpisuje się na podstawowe rozkazy...
Witam. Moze ktoś wyjaśni mi co w tym chodzi. Chciałem zmodyfikować bios dodając obsługę dodatkowej karty PCI. Żeby zminimalizować starty testowałem to na starej płycie, z pełnym sukcesem. Teraz chciałem powtórzyć operacje na docelowej płycie i okazuje ze w jej przypadku nie będzie to takie proste. Zawartość bios-u zmieniam przy użyciu cbrom-a (bios...
Fredy --> proponuję ci daj sobie spokój z takim porównywaniem bo to lekka albo nawet duża niedorzeczność, żeby na bazie takiego pseudo kodu w ogóle porównywać wielkość wsadu po kompilacji. Jak chcesz już coś porównywać, to postaw sobie jakiś cel np napisanie jakiegoś większego programu na ten sam procek. Wtedy spróbuj ten sam cel zrealizować za pomocą...
Witam! Jak dokładnie działa funkcja TEST w asemblerze 8086? Mam taki króciutki fragment kodu: test ax,000Ch jnz ram_64 test ax,0008h jnz ram_32 w ax siedzi obecnie 16 bitowa wartosc, informujaca o obecnosci badz braku komponentów komputera (np. koprocesora, liczby pamieci ram itd.) Na bitach 1010001011011100 mieści się informacja dot. pamięci RAM. 00...
Witam, Mam do napisania program obliczający miejsca zerowe funkcji liniowej. Nie rozumiem tego fragmentu kodu cmp word ptr ds:[inta],0h jne jestm0 cmp word ptr ds:[inta+2h],0h je koniec W pierwszej linijce porównuję ze zmienna inta jesli jest różna od zera to jest miejsce zerowe. Dlaczego w trzeciej linijce jest przesunięcie o 2 i porównanie? Nie rozumiem...
Zadanie proste wystarczy porównywac długosc boków Jezeli 3 równe to równoboczny jezeli dwa równe to rownoramienny I.T.D nie zapomnij o sytuacji gdy z danych 3 odcinkow nie uda sie zrobic trojkąta
Dobrze kombinujesz. Porównanie można zrobić przez CMP, ale chyba jednak wygodniej będzie przez CJNE, bo po CMP trzeba dołożyć odpowiednią instrukcję skoku. CJNE może jako argument przyjmować wartości bezpośrednie, czyli porównywać rejestr z wartością np.: CJNE A,#0Bh,skok_jesli_rozne jesli_rowne_OBh: cośtam dalej . . . skok_jesli_rozne: Tym co napisał...
Witam Wymysłem mojego promotora jest ten zestaw Labolatoryjny. Sluzy on tylko i wylacznie do tego "zeby byc" Jego zadaniem jest interpretacja kodu w języku asemblera który to otrzymuję po skompilowaniu Mojego kodu w C w programie CodeWarrior for ST7.Ten program kompiluje kod w C na asemblera. Tak skompilowany kod (aseblerowski) ładuję dzieki programowi...
Może się mylę, ale do prosto osiągnąć coś takiego w asemblerze : Zakładam że bajty są MSB -> LSB 1. Tworzysz tablicę dopełnień - 1111 1111 - 0111 1111 - 0011 1111 itd. 2. porównujesz bajt wejściowy z elementem tablicy (może być odejmowanie i test zera) 3. jeżeli będzie równy lub mniejszy to wynikiem będzie funkcja OR bajty startowego i elementu tablicy....
(...) matować liczby z zerami wiodącymi (najlepiej bez sprintf zajmującego dużo FLASH), zwłaszcza w wypadkach jaki podałeś przy DS18B20 int16_t fraction = (temperature & 0xF) * 625; // Część ułamkowa, 625 = 0.0625 * 10000, przecież gdybyśmy wyświetlili samą liczbę po przecinku mielibyśmy 0.625 zamiast 0.0625 ? ### 1) Weryfikacja w asemblerze na uC...
1. Normalizować w tym przypadku nie trzeba bo mozna zapisać bajt.2 2. Porównywanie instrukcji Cortexów mija się z celem - bo są one bardziej rozbudowane (np to mnożenie mogę zrobić od razu z dodawaniem i odejmowaniem wartości), dużo bogatszych trybów adresowania itp. Tak samo jak pipeliny powodują że niekoniecznie czas wykonania operacji następujacych...
Po przeczytaniu wszystkich postów w tym temacie początkowo zamierzałem nie brać w tej "ideologicznej kłótni" udziału jednak widząc "fanatyzm programistyczny" i brak obiektywizmu w wypowiedziach niektórych forumowiczów, którzy przedstawili swoja opinie postanowił coś napisać od siebie. Na początku nie rzucając nikami, zapytam ..... ilu tych zagorzałych...
Kompilatory C potrafią zaskoczyć sprytną konstrukcją w asemblerze, ale trzeba to umieć odczytać. Często trywialne błędy w źródle zauważa się dopiero w przekładzie, dlatego trochę na przekór wszystkim zaproponuję, żebyś zaczął od niewielkiego programu w asemblerze i zrobił go od początku do końca. Potem już tylko C. :) To prawda, że znajomość przekładu...
jeżeli ma być jedna osoba, to wystarczy transformata Fouriera, potem normalizacja, tak, aby np. średnia wartość próbek (po transformacie) wynosiła 0.5, albo maksymalna 1, nie wiem co będzie lepsze. i potem policzyć korelację ze wzorcami sporządzonymi w ten sam sposób, ale powtórzonych 3 razy i uśrednionych. Po próbkowaniu, a przed transformatą warto...
Taaaa, Pierwsze koty za płoty :-). Na samym początku walki z lf2401 udało mi się skutecznie zablokować procesor hasłem :-) jednak wspomagany radą i doświadczeniem coberr -a i walce do późnych godzin wieczornych udało sie odblokowac procesor. Następny dzień nie był jednak lepszy co zaowocowało wertowaniem not katalogowyxh i kolejnych próbach uwieńczonych...
Witam. Jakimi rozkazami w asm.'51 jest najprościej wykryć w bajcie na którym miejscu jest zmiana (np. porównując starą wartość z nową wartością bajta, jak zmiana to 1 na tym miejscu) N_DANA=10101010b S_DANA=10101000b Czyli po porównaniu powinienem otrzymać 00000010b. Przeniesiono z Programowanie Ogólne. - arnoldziq
porównywanie komórek porównywanie zmiennych porównywanie napięć
konfiguracja unifi gateway jaśniejszy ekran samsung silvercrest robot
brumienie laptop wzmacniacz tda2003
Czarny panel fotowoltaiczny na mrozie - diagnostyka i przyczyny Znaczenie izolatorów w antenach dipolowych