https://obrazki.elektroda.pl/4689387300_... Jak niedawno zapowiadałem, prace nad projektem efektora do miksera Behringer DJX700 praktycznie zostały zakończone. Na chwilę obecną mam działający układ wraz z devboardem i ukończone programy efektów. Ale po kolei. O samym procesorze FV-1 możecie poczytać w innych moich tematach; konkretnie...
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...
1. assembler 2. timer 0x41 0x56 0x45!!
sprubuj zamiast skoku do procedury co podałem wstawić tylko: DJNZ r7,$ też powinno zadziałać a jest to opóźnienie ok.260razy krótsze. pozdrawiam
Dawid nie wydaje mi się, napisałem kiedyś właśnie prosty zegar gdzie w funkcji przerwania od wewnętrznego licznika wykonuje się minimum 100 cykli + opóźnienie 150ms i nic się złego nie dzieje. Fakt że miejsce w pamięci na wektor przerwania jest niewielkie, ale C to nie assembler i kompilator jakoś to sobie ułoży.
To nie tak. Jak chcesz używać AVR Studio to musisz używać ich funkcji do zapisu / odczytu EEPROM-u. Funkcje kompilatora są napisane jako inline assembler i zapewniają, że opóźnienie między wystawieniem bitu Write Enable i zapisem (lub odczytem) będzie mniejsze niż 4 cykle. Jeżeli sam robisz taki zapis w C, to kompilator generuje ci więcej kodu i warunek...
Uruchomiłem (z diodami :]) ale problem podstawowy to drgania styków po prostu jak wcisne raz np. 5 to mam cały wyświetlacz w piątkach. Czytałem że można zrobić opóźnienie i jeszcze raz sprawdzić. Faktycznie asembler obługuje rozkaz CALL i mogę go używać w RIDE-7 tam zanalazłem że jest MA51 assembler chociaż M to może oznacza że to makroasembler. ale...
Dodałem przed tym warunkiem funkcję, która wprowadza opóźnienie i w zależności jakie to opóźnienie jest program sie wykrzacza lub nie. Czyli w zależności od częstości sprawdzania warunku program działa lub nie. Całość w C: [syntax=c] /***************************************... /* I N C L U D...
(at)szelus "Mógłbyś podsłuchiwać własną transmisję... " Mogę, tyle że oscyloskopem bez pamięci, który w dodatku śmieci na linii... :-( Jak dla mnie nadawał się tylko do testowania ogólnego stanu linii (przydźwięk i czy coś leci, jak to wygląda - stabilnie czy nie, i tylko przy ciągłym wysyłaniu tego samego znaku przez ATMEGĘ, np. 0xFF, 0xAA, 0x55 i...
super szybka odpowiedź !!! Dzięki, ale teraz rodzi się moje kolejne pytanie: co znaczy w assemblerze znak dolara ??
LED-MASK EQU 10000000B LJMP START ORG 100H START: LOOP: ; początek pętli LOOP XRL P1 ,#LED-MASK ; funkcja exor na porcie P1 MOV A ,#10 ; tu przepisanie do A liczby 10 nic nie wnosi w pętli LCALL OPOZ LJMP LOOP ; koniec pętli LOOP OPOZ: ;poczatek petli opoznienia MOV R0 ,#0 MOV R1 ,#0 MOV R2 ,#0 X: DJNZ R0 ,X ; odejmuje od R0 liczbę 1 i sprawdza czy...
Albo tak też można: Czas: MOV R0,#00H Opoznienie: MOV R1,#06H DJNZ R1,Opoznienie DJNZ R0,Czas Pozniej po prostu lecie dalej:) Jeśli chcesz żeby to był podprogram to wstaw etykiete przed etykietą czas, a na końcu dodaj RET. Powodzenia
Sa to po prostu dwie petle. Najpierw 255 razy wykonywana jest petla DLOOP2 az do BRNE DLOOP2 (BRanch if Not Equal). Skok bedzie wykonywany dopoki nie wyzeruje sie rejestr R18. Potem o 1 zmniejszamy R17 i tak w kółko aż R17=0. A czas bedzie cos koło (2_cykle *255_obejsc petli_DL2)*255_obejsc_petli_DL1 + ~3_cykle * 255_obejsc_petli_DL1 czyli cos kolo...
d3zerter>> wstawiłem po odczycie stanów portów procedurę nop (czekaj) czy to weliminuje drgania? Z tego co pamiętam "nop" trwa jeden takt procesora (około 1us), styki drgają przez parę milisekund, trzeba wstawić jakąś procedurę która by opóźniła trochę bardziej.
Tu masz błędy #define LED_ON sbi(DDRB,PB1);sbi(PORTB,PB1) #define LED_OFF sbi(DDRB,PB1);cbi(PORTB,PB1) o czym zresztą jest napisane w okienku Build nad tym komunikatem co podałeś: E:\LED.c:35: undefined reference to `sbi' to sbi o ile się nie mylę odwołuje się do assemblera. Opóźnienie masz już gotowe - dołączasz #include <util/delay.h> i możesz...
Nie podałeś w jakim środowisku będzie uruchamiany kod ale AD1: Diody zapalą się jeżeli w układzie docelowym stan '1' zapala diodę. Po instrukcji jmp nie dajemy przecinka, przecinek występuje tylko jeżeli rozdzielamy parametry rozkazu. Chyba że jest to specyfika używanego assemblera. AD2: Dobrze byłoby nazwać jakoś to makro, słowo 'nazwa' może być mylące....
dodam jeszcze, że kod ten nie musi wymierzać dokładnie sekundy, niech pozwoli poprostu generować opóźnienie dające się zauważyć na diodzie LED(chodzi o migotanie).
Zacznijmy od tego, ze za pomoca for w C nie da sie uzyskac dokladnego odliczania czasu! Przeciez w zaleznosci od optymalizacji (-O) i wersji kompilatora roznice beda siegaly tysiecy procent. Raz bedziesz mial 10Hz, a innym razem 0,01 Hz. Jesli chcesz w miare dokladnie odmierzac czas to albo korzystasz z funkcji z delay.h, albo piszesz wstawke w assemblerze...
Robisz mniej więcej coś takiego: mov ACC,#00h Petla: call /Opoznienie/ add ACC,#01h mov P1,ACC ljmp Petla I to tyle. Przy czym w miejscu /Opoznienie/ wstawiasz nazwę funkcji generującej opóźnienie. Można też robić to tak, że timer odmierza dokładnie 1s.
Za mało informacji. Ale zapewne chodzi ci o częstotliwość odświeżania. Ludzkie oko nie zauważa migania o częstotliwości większej niż 25Hz. Dla lepszego efektu śmiało można przyjąć 50Hz. A jeśli chodzi ci o to ile trwa opóźnienie w tym przykładzie przeanalizuj kod. ! listing zawiera funkcje opóźniania, przeczytaj komentarz a sam dojdziesz co i jak.
I teraz pytanie z tym związane. Ilość nopów dobrałem "doświadczalnie". W jaki sposób powinno się wykonać takie opóźnienie żeby było elegancko? Jak długo czekać? Gdzie przeczytać ile może trwać takie "stabilizowanie się portu"? Przy okazji natykam się na coraz to nowsze zagadki... Np. dlaczego poniższy kod nie zapala żadnej diody? Jeśli piszesz w językach...
W xmega nie przełacza się zegarów za pomocą fusebit. Przełącza się źródło sygnału w programie. Przykład jest umieszczony na stronie Atmela pliki AVR1003.pdf i AVR1003.zip [url=http://www.atmel.com/dyn/products/a... Przykład jest w C ale to nie problem w asemblerze ustawić odpowiednio te same rejestry (w tej...
Dziękuje bardzo za naprowadzenie i punkty, programik już działa. Do tej pory bawiłem się assemblerem i '51 a widzę, że C to inna bajka ale z przyjemnością przy niej zostanę.
Nigdzie nie ustawiasz portu jako wyjścia. W funkcji opóźnienie zmieniasz rejestry R16-R18 po czym jak wyjdziesz z funkcji wystawiasz wartości te na porty.
Jeśli program musi używać delay w tej postaci, to jest źle zaprojektowany. Skoro chodzi o zwykłe miganie diodą, to o wiele lepszy pomysł jest taki : http://msys-mv.blogspot.com/2010/11/conf... Przy zastosowaniu timer'a mikrokontroler: - jest w stanie zapewnić o wiele dokładniejsze odmierzanie czasu. - może wykonywać...
lepiej: [syntax=asm] START: setb p1.7 mov r7,#X djzn r7,$ clr p1.7 mov r7,#X djnz r7,$ sjmp START [/syntax] Opóźnienie 1+1+2*x Swoją drogę C jest bardzo dobrym językiem ale nie na 51 niestety. Architektura nie jest zoptymalizowana pod kątem programowania w C.[/code]
W tym konkretnym przypadku szybsze wykonywanie się programu nie zależy od użytego narzędzia programowania (assembler lub język C) ale od jakości algorytmu/kodu (czyli umiejętności programisty). Generalnie ten sam algorytm zapisany symbolicznie trzeba by było zapisać w C i zapisać w assemblerze (wykorzystując zmienne rejestrowe, bezpośrednie odwołania...
Z tym opóźnieniem to kolega ma rację. Przy moim zegarze nie da się dać większego opóźnienia jak ~262 ms. Wracając do tematu to w miejscach gdzie jest opóźnienie 1 us zrobiłem wstawki z assemblera, zmieniłem wszystkie sporne opóźnienia i nadal jest to samo. Nie ma jednego bajtu z wartością temperatury:(. Normalnie to jest masakra z tym moim czujnikiem....
Popełniłeś jeden błąd logiczny, a mianowicie wejścia portu D podciągasz do plusa, no więc musisz je zwierać do masy aby był jakiś efekt, a co za tym idzie musisz sprawdzać czy pin jest zgaszony a nie ustawiony, np. zamiast: cpi r18,0x40 ; czy jest przyciśniety SW4 ;0b01000000 breq Przycisk_4 ; tak - to skocz do Przycisk_4 powinno być: cpi r18,0x23 ;...
Witam! Dostałem za zadanie wrzucenia na cztery multipleksowane wyświetlacze siedmiosegmentowe napisu "8051". Niestety prowadzący cały czas nie chce zaliczyć laborki z powodu tego, że według niego wyświetlacze powinny się palić mocniej (po odpaleniu mojego programu wyświetlacze nie palą się tak mocno, jak reszta diod, co jest chyba logiczne z uwagi na...
Tak, kupiłem sobie mądra książkę w której są opisane m.in. układy dekodujące RC5 (czy dobrze mi się obiło o uszy że układy te sa juz nieprodukowane - dokładniej chodzi mi o SAA3049). Ale uznałem że wolę to wszytko oprzeć o procesor. Tym bardziej że program, bez problemu (mam nadzieje, bo o ile w assemblerze 80x86 programowałem, o tyle asseblera AVR-ów...
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?
Testy można przeprowadzić w niektórych symulatorach np. [url=http://www.edsim51.com/]edsim51. Przykładowy kod poniżej. [syntax=asm] sekundy EQU 07Eh ;zmienna sekund jedna_dwudziestaEQU 07Fh ;licznik jednej dwudziestej sekundy resetowanie EQU 19456 ;ustawienie zliczania co 0,05sek setkiEQU 07Bh dziesiatkiEQU 07Ch jednostkiEQU 07Dh flagiEQU 020h org 0000h...
Witam, mam problem, gdyż muszę napisać program który zamieszczam w tym obrazku: http://img91.imageshack.us/img91/9649/ds... dodatkowymi informacjami są: port wyjścia to P1, realizowany jest on na 8 diodach. Wejściem są 2 przyciski, INT0 i INT1 czyli przerwania zewnętrzne. Opóźnienie ma być zrealizowane na Delayu takim jak na zamieszczonym...
Wiem, że to Wam się nie spodoba, ale nie chciało mi się przedzierać przez te wszystkie rejestry, w dodatku dość nieintuicyjne ułożone. Kod jest w oparciu o SPL, opóźnienie jest. [syntax=c] void lcd_fmc_init(void) { FMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure; // enable FMC clock RCC...
Podstawowy kod do generacji krótkich przerw: ;------------------------------------- ; opoznienie 15µs - zegar 4MHz movlw0x04; 1 DEL03 * 3 + 3 = 15us movwfDEL03; 1 WAIT_TFB decfszDEL03,F; 1(2) gotoWAIT_TFB; 2 ;-------------------------------------- Do długich odcinków czasu lepiej użyć timerów, ale w assemblerze to nie jedna czy dwie komendy....
Witam Poniżej adresów urządzeń masz jeszcze jedną tabelkę, która powinna Ci pomóc w pierwszym pytaniu, oraz strona 25, za opóźnienie odpowiada ten fragment. [syntax=asm]MOV A,#10 ;czekaj czas 10*100ms=1s LCALL DELAY_100MS[/syntax] Jeśli chodzi o rejestry [url=http://pl.wikipedia.org/wiki/Intel_... Pozdrawiam
Nigdy nie korzystałem i nie śledzę rozwoju AI, więc mam pytanie. Czy i ewentualnie jak dobrze, modele językowe radzą sobie z pisaniem programów w asemblerze, Zapytałem Claude o wygenerowanie szkieletu programu dla koprocesora ULP w ESP32. Nie informowałem AI, że musi być w asemblerze, ale sobie poradził całkiem dobrze: Może jednak C++ ? Niestety, Claude...
Tak się składa że piszę trochę w Assemblerze (tylko że używam do tego Bascoma) i mam nadzieję że rzeczywiście zajmie to jeden takt. Oby tylko wyłączenie i ponowne włączenie UARTa nie resetowało liczników odpowiadających za baudrate UARTa. Jeżeli je resetuje to opóźnienie będzie dużo większe. Co do nieelegancji tego rozwiązania które zastosowałem to...
Skonsultowałem z kolegami z grupy kilka rzeczy i dowiedziałem się że mogę tą sygnalizacje oprzeć na dowolnym układzie i dowolnym języku ( tylko na kartce w sprawozdaniu ma to być napisane w assemblerze. Tak więc odpaliłem bascoma i zacząłem pisać. Ale bardzo bym był wdzięczny gdyby mi ktoś powiedział jak zrobić opóźnienie takie żeby np po zmianie z...
:arrow: dscreator Przede wszystkim koniecznie skomentuj każdą linię i wklejaj za pomocą znaczników Code , ponieważ (jak widzisz) Twój program jest zupełnie nieczytelny (forum usuwa spacje na początku linii). Program powinien zaczynać się zaraz za obszarem wektorów przerwań. Jeśli jakiegoś przerwania nie wykorzystujesz to zamiast mnemonika rjmp wstawiasz...
Co znaczy nie działa? Tego typu trywialne kody należy symulować z intensywnym wykorzystaniem okna podglądu assemblera - kompilator tak optymalizuje kod, że z oryginalnego niewiele zostaje i podgląd w C może być mylący. Często objawia się to tym, że pozornie nic się nie dzieje. Pamiętaj, że symulator nie działa tak szybko jak prawdziwy CPU - opóźnienie...
Witam, Mam za zadanie wykonać dwuprzyciskowy stoper, w którym 1 przycisk na porcie P5.1 odpowiada za start i stop/pauza, natomiast 2 przycisk na porcie P5.0 za reset. Problem tyczy się pierwszego przycisku, mianowicie przy wystartowaniu stopera i chęci zastopowania wciśnięty przycisk nie zawsze reaguje (tzn czasami reaguje za 1, za 3 lub innym razem)....
Zakładam, że jest "popyt" ( (at)nolens_volens , (at)korteksik , (at)dondu , (at)excray ), więc zakładam wątek. W tym temacie można zadać dowolne pytanie związane mniej lub bardziej z użyciem RTOSów na mikrokontrolerach i kwestiami takimi jak wielowątkowość, synchronizacja i tym podobne. Ogólne lub szczególne. O konkretnym problemie lub o ogólnej idei....
Witam, właśnie pragnę podłączyć dwa czujniki do szyny 1-wire, problem w tym, że przy sekwencji odczytu 64bitowego romu, nie zgadza mi się CRC (jeden czujnik podłączony) i po zaadresowaniu go na szynie, nic się nie dzieje, odbieram same jedynki. przy odbiorze scratchpada crc oczywiście poprawne i wszystko biega... menu: in R16, SREG push R16 rcall...
dlaczego nazwa rejestrów do których ją wpisuje to OCR1AL a nie OCIE1AL? i OCR1AL zamiast OCIE1AH? Myślę, że powinieneś poczytać i drugie za co odpowiada ta wartość w rejestrze OCIE1A? to jest ustawianie tego preskalera? Nie. Ustawienie preskalera to bity CS2:CS1:CS0 w rejestrze TCCR1B. Ich wartość należy ustawić w zależności od potrzeb zgodnie z tabelką...
LED EQU P1.7 - przypisanie do zmiennej LED do P1.7 LJMP START - skocz do początku programu (etykiety) ORG 100H - rozpocznij kompilacje od adresu 100 START: - początek programu (etykieta) LOOP: - początek pętli (etykieta) CPL LED - P1.7 zmiana stanu na przeciwny MOV A,#10 -przesuń do rejestru A liczbę 10 (potrzebne do procedury opóźnienia) LCALL DELAY_100MS...
Dlaczego albo jedno albo drugie? I jedno i drugie, zarówno sonda reaguje z opóźnieniem na zmianę składu mieszanki przez ECU jak i ECU z opóźnieniem reaguje na zmianę stanu sondy (choć opóźnienie reakcji ECU na zmianę stanu sondy jest pomijanie małe w stosunku to opóźnienia reakcji sondy na zmianę składu mieszanki), stąd duża bezwładność całego układu...
A po co w ogóle komu mikrokontroler w tosterze albo mikserze, choćby z firmware napisanym w assemblerze? Po co w tych urządzeniach jakakolwiek elektronika cyfrowa? Rozumiem, że to pytanie retoryczne w czasach, gdy nie gdzie indziej jak na tym forum niemal każde rozwiązanie wymagające użycia więcej niż jednego układu sprowadzane jest do rady "użyj uC"....
Opóźnienia najlepiej realizować w postaci wstawek assemblerowych, bo wtedy możesz doliczyć się ile dana pętla pożera cykli. W C tego dokładnie nie zrobisz. Możesz sobie napisać funkcję, która będzie wykonywać pętlę for albo while wykonywała określoną ilość razy, ale jedynie metodą prób i błędów można dojść jakie faktycznie opóźnienie wykonuje. Możesz...
assembler darmowy assembler assembler przerwa kalkulator assembler
kontrast jasność stary egzamin zawodowy elektronik zabezpieczenie ponownym uruchomieniem
makita migają diody cyfral cosmo
Czyszczenie głowicy drukarki Canon MAXIFY MB5450 Dodge Caliber 1.8 benzyna - dźwięki po uruchomieniu