Po pierwsze, to musiałbyś zrobić wczytywanie liczb, a nie cyfr. Czyli pętla odczytująca cyfry i wynik zapisująca do rejestru/zmiennej. Potem wyświetlanie też najlepiej oprzeć na pętli, bo powtarzanie kodu jest po prostu bez sensu. Wygodnym tutaj może być użycie funkcji ROL w celu przerzucenia 4 najstarszych bitów na najmłodsze pozycje i wymnożenie przez...
ecx jest rejestrem, nie zmienna lokalna. Jesli wolana funkcja korzysta z tego rejestru (a moge sie zalozyc, ze tak jest), to Twoja petla sie rozsypie.
Daj mi kod dla komputera Commodore C64 na cykliczną zmianę koloru ramki obrazu, osobno w języku basic i osobno w assemblerze Oczywiście! Oto prosty kod w języku BASIC i assemblerze dla komputera Commodore C64, który cyklicznie zmienia kolor ramki obrazu. **BASIC:** ``` 10 FOR I = 0 TO 15 20 POKE 53280, I 30 FOR J = 1 TO 1000 : NEXT J 40 NEXT I 50 GOTO...
https://obrazki.elektroda.pl/3029878300_... Witajcie moi drodzy Oto trzecia część mojego praktycznego tutoriala dla ośmiobitowego mikrokontrolera PIC18F2550 od Microchipa i programatora SDCC . W tym temacie najpierw krótko omówię różne konfiguracje oscylatora PIC18F2550 - oscylator wewnętrzny (internal oscillator), zewnętrzny (zegarowy...
Możesz zbudować zewnętrzny zegar 4MHZ na bramce cmos i podać go do Attiny13 lub zamienić pętle opóźniające , jeśli się da oczywiście . Przy zegarze 4.8 będziesz miał do zliczenia o "kilka impulsów" więcej aby uzyskać ten sam czas. Przykładowo w programie autora jest : ldilicz1,0x32; początkowa wartość p1:ldilicz2,0x3B; odliczenie 2.25 msek p2:declicz2...
Jedyny problem - to długość dzielnika. z tego powodu praktycznie nie możesz użyć dzielenia stałopozycyjnego i musisz zrobić je na piechotę, czyli przez przesuwanie i odejmowanie - pętla iterowana max. 53 razy. Przed dzieleniem do manytsy musisz dopisać bit części całkowitej. Na końcu czeka Cię jeszcze korekcja wykładnika.
Trochę metodą prób i błądów udało mi się zrobić działający kod. [syntax=c] // Sotware SPI assmbler 1 ver 2 well working void Spi_8_bittransfer(unsigned char data) { asm volatile( \ "ldi r24, 8 \n\t"\ "LOOP%=: \n\t"\ "cbi 0x18, 2\n\t"\ "cbi 0x18, 1\n\t"\ "rol %0 \n\t"\ "brcc ZERO%=\n\t"\ "sbi 0x18, 1\n\t"\ "ZERO%=: \n\t"\ "sbi 0x18, 2\n\t"\ "dec r24...
Zobacz co na to assembler wygenerowany z tego kompilatora.Nigdy nie spotkalem sie z takim przypadkiem.Byc moze jest to bug kompilatora (kilka w SDCC juz sam zglaszalem).Sprobuj tez innej petli np while i zobacz co sie stanie.
Jak wyliczyć (Wykonać) dokładnie opóźnienie np. 500ms Nie chcę tego robić na timerze ! Chodzi mi o to jak wyznaczyć taką liczbę cykli procesora które zajmie pętla for tak aby wykonała się dokładnie w 500ms Do dokładnego odmierzania czasu służą timery. Jeżeli nie chcesz, to masz złe podejście. Nie chodzi mi o czysty assembler tylko o wykonywanie pętli...
Nie od parady był ten uśmieszek. Dlaczego? Cóż kolega stworzył bardzo mądry programik :D No to wręcz przeciwnie. Gorszy. Dlatego napisałem że nawet on się nie zawiesza. Chodzi mi o to że klasyczny algorytm dzielenia to zwykła pętla przesuwająca bity. Nawet jak dzielna będzie równa 0 to pętla powinna się wykonać tyle samo razy co zawsze, w przypadku...
(at) JacekCz Jak tak się mądrzysz i peszysz to wstaw lepszą wersję CPP i Assembler ;] Ja się nie peszę (bo tak słowa użyłeś). Kryształowa kula i Pierwotny Pytający milczy, jaki assembler jest oczekiwany w szkole Pytającego. Cros kompilacja z C/CPP -> ASM jest totalnie bez sensu ze wszystkich względów (dydaktycznych, technicznych itd). Ostatni prawdziwy...
Wiem że temat już nieświeży i że odejdę od ostatniego wątku, ale jak zobaczyłem to: dla bankow nie dosc ze pisze sie w C++ to jeszcze w kompilatorze M$ to po salwie śmiechu i wiążącej się z tym upadkiem z krzesła, naszła mnie pewna konsternacja i głęboka nadzieja że autorka postu tylko żartowała. Dziękuję za uwagę. EDIT: Jako że trochę późno zauważyłem...
Właśnie jeszcze nie ogarniam przerwań - domyślam się o co chodzi ale jak się za to zabrać? Bo jak próbowałem zrobić "warunkami" to zdarzało się tak, że gdy raz nacisnąłem jeden klawisz np. "1" to na wszystkich segmentach pojawiało mi się 1 - domyślałem się, że pętla tak szybko za działa, że to moje jedno klikniecie odebrała jako 4 kliknięcia - wtedy...
Teraz już sprawy idą w lepszym kierunku. Problematyczny jest jeszcze sposób deklaracji zmiennych w programie. Proponuję pobrać z internetu dowolny assembler na 8051 (np. ASEM-51), wtedy wszystkie błędy składniowe można na bieżąco sprawdzać. Struktura programu (dowolnego) może wyglądać np. tak: - deklaracja zmiennych i stałych, - instrukcja skoku do...
Musze napisać program (opisać go komentarzami, napisać schemat blokowy a także pokazać co robi ten program) Prosze o pomoc! Z góry dziekuję! Treść projektu: Napisać program zliczający zapalone bity na portach A i B i wyprowadzający liczbę zapalonych bitów zakodowaną w formacie BCD na port C kolega z grupy wysłał mi ten program co robiliśmy na zajęciach...
Z wykorzystaniem języka assembler można zredukować niezbędną liczbę cykli zegara do 7, co spowoduje zwiększenie liczby próbek do 15 przy 150 kHz. Nie jest to zbyt wiele, ale różnica w wyglądzie przebiegu jest wyraźna. W jednym z projektów generowałem przebieg sinusoidalny z wykorzystaniem drabinki R-2R i ATTiny 2313. Udało mi się zejść do generowania...
Eee i w czym ten język jest lepszy od C++ że go tyle się wałkuje... I java i c# i assembler a c++ to jakiś niepotrzebny czy co? I powiedzcie mi jeszcze, że nie da się używać bibliotek z C++, tzn. chodzi o coś takiego potrzebuje w C# użyć funkcji fillrectattr() z newconio: void fillrectattr(WORD attr, int xb, int yb, int xe, int ye) { CONSOLE_SCREEN_BUFFER_INFO...
Zaczynam przygodę z STM32 i na początku już schody z którymi nie mogę sobie poradzić. Mam zainstalowane Eclipse jak i Sourcery 4.7.3, ściągnąłem przykładowy projekt z strony Freddiego do mrugania diodą i tu kompiluje się bez problemu. Lecz nie bardzo leży mi ten przykład (bez obrazy). Lubię mieć wszystko poukładane a w tym przykładzie wszystko jakoś...
Napisałem funkcję obliczającą filtr FIR - 16 współczynników - w moim playerze mp3 na kontrolerze Atmel at91sam7s256. Wszystko działa super, ale po przepisaniu funkcji z C na assembler (kod w C oraz w asm poniżej) niestety nie działa poprawnie. pętla liczenia filtru dla kolejnych sampli smp_loop jest wykonywana bez przerwy, a nawet jeśli nie to i tak...
Napisałem funkcję obliczającą filtr FIR - 16 współczynników - w moim playerze mp3 na kontrolerze Atmel at91sam7s256. Wszystko działa super, ale po przepisaniu funkcji z C na assembler (kod w C oraz w asm poniżej) niestety nie działa poprawnie. pętla liczenia filtru dla kolejnych sampli smp_loop jest wykonywana bez przerwy, a nawet jeśli nie to i tak...
Witam Mam pewien problem, potrzebuje napisać sterownik do 6 serw. Sterowanie serwami rozwiązałem (jeśli ktoś ma lepszy pomysł to chętnie wysłucham), problem tkwi w komunikacji z komputerem, sama komunikacja działa, dane wysyłane są raczej poprawnie. Jeżeli obsługuje RS'a w przerwaniach to serwa zmieniają położenie tak jak należy, ale strasznie przy...
Witam, Mam problem z początkiem nauki programowania mikrokontrolerów. Zakupiłem na Allegro programator USBasp oraz podstawkę do programowania. Taki jak w linku: <ciach> Na USBasp ustawiłem przycisk na 1-ON, 2-ON, 3-OFF. Sterowniki zainstalowałem libusb_0.1.12.1. Dodatkowo zainstalowałem WinAVR do pierwszego programowania. Następnie utworzyłem...
Cieszę się, że osiągnąłeś zamierzony cel, a że "po swojemu" to tylko plus bo znaczy, że sam kombinujesz, a to najważniejsze. Niestety muszę Cię zmartwić, ale robisz bardzo podstawowy błąd, polegający na zapętleniu się w przerwaniu w pętli: while(bit_is_set(ADCSRA,ADSC)); Rozważ hipotetyczny (aczkolwiek możliwy) przypadek, że pętla ta nigdy nie zostanie...
witam ! potrzebuje pomocy z tematem ktory mam do opracowania ale nie mam najbledszego pojecia jak sobie z tym poradzic. pomyslalem ze tutaj znajde napewno kogos kto znalby odpowiedzi na ponizsze pytnia. oto one: 1) Napisz w asemblerze pętlę, w której będzie zmieniany bit 0 portu P1 (P1.0) na przeciwny dokładnie co 4 cykle zegarowe. Ten fragment programu...
Witam. W A'51 (to zależy od wersji assemblera) oznacza adres pod jakim znajduje sie dany rozkaz !! W rozkazach skoku oznacz on skok do "samego siebie". przyklad podany przez ciebie to poprostu pętla opóźniająca (zatrzymuje program na jakis czas) ale możesz spotkać się z tym przy innych rozkazach skoku!! np. sjmp $ - służy do zatrymania programu "bez...
Witam, czy znacie może jakieś ciekawe materiały które w sposób wyczerpujący omawiają pętle w Assemblerze dla mikrokontrolera 8051. Napisałem już kilka prostych programów realizujących poszczególne rodzaje pętli,ale na pewno jest coś czego nie potrafiłbym zrobić. Z góry dziękuję za pomoc
Nie wiem jak to działa gdy kasujesz TI w przerwaniu. To już poziom assemblera czy wcześniej sprawdzasz warunek pętli while(TI==0) {}; czy też w obsłudze przerwania jest kasowana flaga TI. Włącz debugger w keilu ustaw breakpoint w przerwaniu i zobacz jak program działa. Sądze że skasowanie linii "if (TI) { TI=0; }" rozwiąże problem :) Korzystanie z funkcji...
Bez wątpienia na wyjściu uzyskasz stan wysoki. Jeśli chcesz ustawić pin jako wejście z podciąganiem, to kasujesz odpowiedni bit DDRB (cbi) ale w PORTB ustawiasz odpowiedni bit (sbi). ps. brakuje pętli nieskończonej na końcu.
a) A=1 movA,#1b Do akumulatora A wpisujesz wartość 1 (wartość binarna 00000001b), pozostałe instrukcje nie wpływają na wartość akumulatora. b) A=0 movA,P2 Do akumulatora A wpisujesz wartość z portu P2 (port P2 do masy – co daje wartość 00000000b) c) A=2 movA, #2h Ostatnią wartością wpisaną do akumulatora A jest 2 (wartość szesnastkowa 02h) d)...
Napisałem że mój kod jest napisany w x86 żeby pokazać ideę jak ma wyglądać pętla, co za problem wziąć list instruction do 8051 i poszukać odpowiedników do x86?
v5 wygląda na wskaźnik na tablicę bajtowych elementów, które są indeksami dla tablicy dword_40F458 po wykonaniu operacji xor z bajtową zmienną i. Po każdym obrocie pętli wskaźnik ten jest przesuwany na następny element tablicy (v5++).
Witam potrzebuje pomocy z zadanie. Program ma dzielić 2 liczby z a i b. Nie mam pomysłu jak to zrocić by nie podawać wartości c [syntax=assembler] POB a pętla: SOM koniec POB c ŁAD b ODE c POB a DOD Jeden ŁAD a SOZ pętla koniec: POB c STP a: RST 12 b: RST 24 c: RST 2 Jeden: RST 1[/syntax][/code]
A co kolega ma na myśli ? Mniej optymalny kod obsługi przerwań, niż jest możliwy, źle dobrany rejestr zerowy, brak możliwości globalnego zagarnięcia kilku rejestrów na specjalne zmienne szybkiego dostępu. http://www.elektroda.pl/rtvforum/topic20...
Ad4.Wykorzystałbym to że można w pętli przekręcać akumulator na siebie i kopiować jego wartość na port P3.Wcześniej ustawić P3 w stan wysoki i wpisać odpowiednią wartość do A.
Czy jest to w ogóle możliwe gdy napisze się ją w assemblerze? Aktualnie zajmuje ona ok. 15ms. O ile może się skrócić? Jeśli dobrze operujesz assmeblerem, to pewnie się trochę skróci. Generalnie sprawa wygląda wg mnie tak, że można napisać jeden z 4 kodów: - kiepski kod w C, - kiepski kod w assemblerze, - dobry kod w C, - dobry kod w assemblerze. Porównując...
z tego co ostatnio liczyłem to taka pętla: Dodano po 1 A no i bez nop'a kompilator przy pewnych ustawieniach wytnie Tobie całą pętlę.
Witam Kiedyś podczas poszukiwania materiałów i gotowych przykładów na PICe znalazłem stronę na której jest skrypt generujący takie właśnie pętle. Wpisujesz kilka podstawowych parametrów i otrzymujesz gotowy kod do wklejenia. http://www.piclist.com/techref/piclist/c...
Taki program mógłby wyglądać tak: Mnożna: rejestr E Mnożnik: rejestr A Wynik: rejestr HL LD HL,0000 ;inicjacja wyniku LD B,08 ;licznik pętli LD D,00 ;zerowanie bardziej znaczącego bajtu DE NXBIT ADD HL,HL ;przesunięcie wyniku w lewo RLA ;sprawdzenie cyfry monożnika JR NC, FIN ;opuszczenie zera ADD HL,DE ;dodanie mnoznej FIN DJNZ NXBIT ;powrót do początku...
ok sorry może się trochę rozszalałem ale denerwują mnie strasznie kolesie szukający tu zaliczeń. Tak więc w asemblerze dobrze jeste przede wszystkim porządnie przygotować sobie strukturę programu: początek: .cseg ; .org 0 ; rjmp RESET ; .org INT0addr ; reti ; .org INT1addr ; reti .org OVF2addr reti .org OVF1addr reti .org OVF0addr ; reti .org URXCaddr...
Na razie po staremu chciałbym zaprezentować uproszczoną grę TETRIS napisaną całkowicie pod assemblerem. Zawiera 16 losowo wybieranych kształtów klocków, które można obracać co 90 stopni w prawo lub lewo przez czas 20 sekund i przesuwać w prawo lub lewo przez kolejne 20 sekund. Podczas spadania nie ma luż możliwości korekcji upadku klocka. Jest to więc...
Wielkie dzięki, A w MIDE-51 można pisać program w C i skompilować na hex zeby działał na tym atmelu? Bardzo ułatwiłaby mi napisanie programu pętla 'if' której nie ma w assemblerze i ciężko mi bez niej.
:oops: przyznaje sie bez bicia - pic'ow nie programowalem 6502, 68k, x86, '51, od biedy z80 i avr no i pierwsza prawda programisty niskiego poziomu - assembler przenoszalny nie jest :) ale.. to tylko pomysl ze starych dobrych czasow
Co dokładnie sekundę? Mniej więcej co sekundę? Tą pierwszą opcję trudno bez przerwań zrealizować. Drugą to robisz sobie pętlę która realizuje się w mniej więcej sekundę. Przecież w tytule wyraźnie jest napisane z timerami , po co więc pętla "mniej więcej". Trzeba w głównej pętli sprawdzać stan znacznika timera i podejmować odpowiednie działanie. Szczegóły...
WDT w programie jest włączony i działa bardzo dobrze, ale do znalezienia usterki trzeba było go wyłączyć. Program jest napisany w Bascomie. Pętla, o której mowa, jest w bibliotece obsługującej wyświetlacz. Nie ja pisałem tę bibliotekę, ja nie znam assemblera. Mi wystarczy dołożenie licznika obrotów tej pętli i wyjście po jego przekroczeniu. Transmisja...
Wg mnie przydałaby się jakaś pętla opóźniająca bo efektów pracy tego programu na procesorze chyba nie zauważysz. Chyba że analizator stanów logicznych podłączysz.
Standardowa pętla zlliczająca X razy w assemblerze AVR to: ldi R16, X !Loop: nop nop nop nop dec R16 brne Loop Tylko że w Twoim przypadku trzeba zliczać o jeden raz więcej.
http://www.avrbeginners.net/ a dalej: AVR Assembler --> Conditional Branches / Loops
oj po co tyle kodu ???;) Jak odświerzanie wyświetlaczy ma być na pętli nieskończonej to nie potrzeba tyle kodu . Opisz jak sprzętowo podpięte są te wyświetlacze a dopiero po pokazaniu schematu można wogóle zacząć analizować kod. Pojrzyj na www.kloszi.prv.pl dział "Moje projekty->Symulator Softwarowy MCS-51" i tam jest właśnie zrobione sterowanie wyświetlaczami...
No właśnie może Wam się to wydać głupie, ale kumam assemblera nawet trochę ale pętle to moja zgroza :( Nie mówie że jestem specem ale swoje wiem. A w jaki sposób można wydłużać i skracać ten czas? I czemu zeruję rejestr np. R2?
A^{0.2} = A^{\frac {2} { 10}} = \sqrt Potęgowanie to wielokrotne mnożenie (mul, muls, fmul, fmuls) tej samej liczby przez siebie w pętli, przy czym ilość iteracji pętli jest równa potędze minus 1 (dla potęgi równej 1 nic nie robimy... ;) ). Co do pierwiastkowania to przydatna jest reguła pierwiastkowania iteracyjnego Newtona dla \sqrt \rightarrow y_{i+1}...
assembler darmowy assembler assembler tablicy assembler przerwania
fornir kolumny instrukcja radio philips renault zapisywanie arkusza
olimpiada euroelektra chinskie radio
Stihl MS 211 nie odpala, jest iskra i paliwo Jak zmienić język na polski w CapCut?