W poprzedniej wypowiedzi dokonałem poprawek w przykładowym kodzie. Tak, to już jest kiedy Elektrodę traktuje się jako przerywnik przy pracy. Kwestią otwartą jest nadal testowanie wybranego bitu, lub bitów. 1. Jak to wykonywać poprawnie testowanie jednego bitu ? Zależy to od danej sytuacji. W trakcie testowania pojedynczego bitu w PINx z pominięciem...
push/pop stosuje się, żeby zachować wartość początkową rejestrów, jeśli w innym miejscu programu są wykorzystywane. ldz - nie ma takiego menmonika w asemblerze AVR. Zapewne to jakieś makro. brcc - wykonuje skok jeśli wskaźnik carry (przeniesienia) jest wyzerowany, co ten wskaźnik oznacza to sobie doszukasz. lpm r16, z - ładuje do rejestru r16 wartość...
16-bitowy assembler jest bardzo ograniczony, nie każdy rejestr może być wskaźnikiem danych. Zmień dx na di/si/bp/sp, albo [syntax=asm]mov di,dx mov bx, [di][/syntax]
a) OK -> SFR dokładniej pod adresem E0H (ACC dla 8051) b) NIE -> stała liczba dziesiętna 121 pod adres 00h (czyli do rejestru R0) c) rozumiem, że są tu dwie instrukcje? Pierwsza ładuje liczbę do rejestru a druga zapisuje pod adres wskazywany przez R0 stałą 121. Czyli 121 zapisane pod adresem RAM 0AH (czyli 10 w systemie dziesiętnym) d) to samo co w...
1. Jak działają rozkazy to chyba rozumiesz, dobrze zmniejszasz literę przez dodanie 32. 2. Zamiast "li $s6, 91" użyłbym "li $t5, 91", albo jakiś inny wolny rejestr $t. 3. Nie wiem czy w ten sposób w jaki próbujesz zrobić zmniejszanie liter będzie działało, ja to zrobiłem inaczej (w "funkcji" porównującej, czyli naszym "searchstr"). Jednak problem na...
Mozesz zuzyc jeden rejestr na przechowywanie 5 zmiennych bitowych. np r25. .DEF rBity=r25 .EQU bBit0=0 .EQU bBit1=1 itd. az do 7 No i teraz robisz sobie tak: sbr rBity,(1<<bBit0) ; ustawia bit 0 cbr rBity,(1<<bBit0) ;zeruje bit 0 sbr rBity,(1<<bBit0)|(1<... ; ustawianie wielu bitow na raz.....
http://obrazki.elektroda.pl/4029783300_1... Układu SID (6581 stary i 8580 nowy), będącym muzyczną orkiestrą komputera Commodore 64 nie trzeba nikomu przedstawiać – między innymi dzięki jego brzmieniu owa maszyna osiągnęła tak dużą popularność. Warto tylko przypomnieć, że SID ma jedynie trzy kanały, ale umiejętności programistów...
W temacie układu AY3-8912 chciałem jeszcze napisać, że testowałem dwa rozwiązania sterowania rejestrami tego układu. Na pierwszy ogień poszło rozwiązanie opisane w Radioelektroniku nr 9/85. http://obrazki.elektroda.pl/4904875500_1... Ponieważ Cobra1 z poziomu Basic sterowanie portami wejścia wyjścia ma poprzez 1 bajt, opis sterowania...
Za pomocą jakich instrukcji w assemblerze mogę zapisywać coś do rejestrów R0-R15 ? Masz na myśli zastąpienie załadowania bezpośrednich wartości np. ldi / cbr / sbr r0, 0xD5 (nie istnieją !) ? Jest tego trochę ;) (na przykładzie r0 , r16 i wartości 0xD5 ): ldi r16, 0xD5 mov r0, r16 ldi r16, 0xD5 push r16 pop r0 Można także zatrudnić w/g własnej pomysłowości...
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...
Poniżej zamieszczam kod. W tym przypadku przypisałem dla rejestru R0 wartość 5, która wypełnia rejestr po naciśnięciu przycisku C i wartość 10, która zostaje przypisana rejestrowi R1 po naciśnięciu przycisku D. Chciałbym, aby tylko powiedzmy kod CDDC mógł przejść, a po 3 błędnych próbach wywalało, iż kod jest niepoprany lub poprawny. Z góry dziękuję...
witam mam następujący problem umieszczam w programie liczby: MOV43H,#55H MOV44H,4H MOV45H,45H MOV46H,78H MOV47H,11H MOV48H,#201 MOV49H,#148 MOV4AH,#219 MOV4BH,78H MOV4CH,20H MOV4DH,99H MOV4EH,#120 wyswietlam zawartosc komorki 43h: MOVA,43H LCALLWRITE_HEX ustawiam sobie rejestr R4 jako taki wskaźnik i wpisuje do niego wartość 43H; MOVR4,#43H ;R4 będzie...
Między innymi tak
No tak, ale chyba ten timer0 tego trybu nie posiada... Do czego służy rejestr TCNT0??
to czym się różnią eax od ebx??? Kolejnością wykonania z tago co mi wytłumaczyli więc wnioskuje że są dalsze litery alfabetu między e i x ale chyba jestem w błędzie No i są, ale rejestrów jest tylko 4 ;) Do tego EAX od EBX różnią się optymalnością rozkazów, niektóre rozkazy specjalnie traktują niektóre rejestry.
Wszystko pięknie, ładnie, ale żaden z programów nie działa... Program [b]excray[\b]'a, się kompiluje, ale: nie widzę nigdzie wyjścia OCR1A (PB1), na które jest podawany sygnał wyjściowy PWM'a. Na wyjście to podawany jest stan niski (ustawiony bit COM1A1). Dodam tylko, że chodzi o PWM w trybie Phase Correct. W moim programie wszystko jest ok, poza odczytem...
...umie ktos to zrobic ? bede wdzieczny za pomoc ... Ta może bez zbędnych ceregieli "podam na tacy" gotowca , a Ty spróbuj zrozumieć jak toto działa :D .include "8515def.inc" .def zero = r0 .def bcd = r16 .org 0x0000 rjmp start .org INT_VECTORS_SIZE start: ldi bcd,low(RAMEND) ldi r17,high(RAMEND) out SPL,bcd out SPH,r17...
Nie wydaje mi się. Wprawdzie minęło ze 30 lat od kiedy ostatnio coś programowałem na 6502, ale o ile skleroza mnie jeszcze nie dopadła :wink: to składnia "<label" oznacza wartość bezpośrednią młodszych bitów wartości etykiety i dodatkowe używanie znaku "#" nie jest potrzebne. Natomiast nie spotkałem się nigdy ze składnią "lsr (at)". Co to za dialekt/system?...
Chodzi o to ze po przyjeciu przerwania nie kasuje automatycznie flagi D wiec zaleca sie w procedurze przerwania ja skasowac Dotyczy to wszystkich flag (poza I). Są takie jakie były w chwili przyjęcia przerwania. I jest kasowane. Warto zaznaczyć, ze w 6502 wejście w przerwanie odkłada na stosom, poza adresem powrotu, także rejestr statusu. Rejestr ten...
---- Building project: zadanie_25.ncp ---- Building file... : C:\Documents and Settings\Piter\Pulpit\u_kontrolery\u_kon... C51ASM: advanced C51 macro assembler Version 1.0 (01 Sept. 2009) Copyright (C) 2009 Atmel Corp. Pass 1 completed with no warnings and no errors Pass 2 completed with no warnings and 2 errors Segment...
Radykalne czy nie, to fakt. Zestaw instrukcji ARM został stworzony w taki a nie inny sposób po to, aby jak najlepiej były go w stanie wykorzystać kompilatory C. Bardzo duża ortogonalność (porównaj z czymkolwiek innym) pod względem rejestrów (np AVR w którym niektóre instrukcje mogą korzystać tylko z konkretnych rejestrów), adresowania, dodatkowych...
Zadeklarowałem trzeci segment : segment data3 use16 z db 'kota' data3_size=$-z kiedy zmienię część kodu mov cx, data2_size mov ax, data2 mov ds, ax mov si, w na mov cx, data2_size mov ax, data2 mov ds, ax mov si, w mov cx, data2_size mov ax, data2 mov ds, ax mov si, w mov cx, data3_size mov ax, data3 mov ds, ax mov si, z To po prostu zamiast "Ala ma"...
Ściślej mowiąc, na 8051 nie da się zrobić operacji push R2 (na przykład). Na stos można odkładać (i zdejmować z niego) tylko akumulator i rejestr B. Trzeba wtedy zrobić tak: :) Witam no muszę powiedzieć że troche kolegę poniosło bo niestety intrukcja PUSH i POP pozwala zapisywać do całego obszaru adresowanego w 51 bezpośrednio - czyli 128 bajtów pamięci...
Poczytaj, przyda Ci się: http://pl.wikipedia.org/wiki/Tryb_rzeczy...
dobra... przyznam sie szczerze :sm7: ... nigdy mnie assembler i dokladne dzialanie procesorow nie bawily... ale z tego co kumam i wyczytalem, to becdzie cos takiego... opcja z walka z lpc2148, ktory posiadam... zapisuje rejestr portu do ktoregos rejestru ogolnego przeznaczenia - to mi zajmuje: 4 takty... nastepnie z tego rejestru zapisuje do pamieci...
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...
Mam do wykonania projekt napisać program który liczy od 0 do 9999 narazie wykonałem liczenie od 0-9 na jednym wyświetlaczu i dalej nie mam pojęcia co zrobić. Ten program nie liczy tylko pokazuje kolejne wartości na wyświetlaczu. Gdyby liczył, to jakiś rejestr czy komórka pamięci zwiększałaby swoją wartość i znalazł by się rozkaz ADD a nie kolejne mov...
Nie moge użyć instrukcji in w przypadku rejestru TWCR , ponieważ on znajduje się w obszarze rejestrow rozszerzonych i tam nie działają instrukcje in , out . The I/O memory space contains 64 addresses which can be accessed directly, or as the Data Space locations following those of the Register file, $20 - $5F. In addition, the ATmega128 has Extended...
Absolutnie nie mam pojęcia co chcesz zrobić. Program który wstawiłeś jest kiepski: 1) Nie baw się w takie skomplikowane ładowanie danych ldi r17, 1<<CS02 out TCCR0, r17 in r16, TIMSK //tryb normalny sbr r16, 1<<TOIE0 out TIMSK, r16 //przerwanie od przepełnienia Tylko zrób to na brutala, bo tutaj niczym to nie grozi: ldi r16, (1<<TOIE0)...
W Technicznej faktycznie nie ma ale w http://www.wysylkowo.pl/ to jednak coś znajdziesz. Najlepiej wpisz w google frazę "Arkadiusz Krysiak" i przeleć się po wszystkich znalezionych księgarniach wysyłkowych. Możesz też od zaraz rozpocząć naukę assemblera czytając kurs na stronie http://mikrokontrolery.of.pl/. Są bardzo proste przykłady z komentarzem...
Nie wiem jak działa to w Bascomie. Tak działają rejestry w assemblerze. Staram się nie mieszać, ale wydaje mi się że jak zrozumiesz dokładnie do czego jest który rejestr to łatwiej Ci będzie to rozgryźć. Lepiej wiedzieć co do czego i po co.
Wydaje mi się, że to jest tak: Poprawcie mnie jeżeli się mylę ale w powyższy sposób można chyba odwołać się do adresu max FFFFh (64kb) , jak zatem czytać tablicę np od 82kb ? Innymi słowy czy można stworzyć wskaźnik składający się z trzech rejestrów ? ? Mikrokontrolery o pamięci powyżej 64kB mają dodatkowy rejestr RAMPZ do wyboru stron pamięci. Instrukcja...
;* ;***************************************... ;*PROCEDURA WYLICZANIA SUMY KONTROLNEJ Z NUMERU SERYJNEGO UKŁADU 1-Wire ;***************************************... ;* ;* ;*******************************OPIS****... ;*Kolejne bajty numeru seryjnego...
Masz napisać procedury mnożenia liczb: 1 bajtowej przez 1 bajtową (8x8) wynik będzie 16 bitowy (2 bajty) 2 bajtowej przez 1 bajtową (16x8) wynik będzie 24 bitowy 3 bajty 2 bajtowej przez 2 bajtową (16x16) wynik będzie 32 bitowy (4 bajty) Procedura przebiega tak w kodzie naturalnym binarnym: 1. Przygotowujesz rejestr wyniku o długości równej sumie ilości...
IloscRamu dd 0 . . . mov IloscRamu, eax Tak zapiszesz do zmiennej. Co do pytania o sprawdzenie ilości ramu chyba był specjalny rozkaz do odczytywania konfiguracji sprzętowej. ALe głowy nie dam. Chyba, żeby się dało jakoś odwołać do biosu. [EDIT] http://www.osdev.org/osfaq2/index.php/Ho... Tutaj jest cały...
LJMP START START mov R3, #8 mov R4, #2 mov R5, #4; dotąd jest dobrze mov A, R3 ;add R3 -źle, dodawanie wymaga dwóch operandów add A, R4 ;add R4- jak wyżej add A, R5 ;add R5- jak wyżej mov R7,A ;mov A, R3-nie wiem co miałeś na myśli pisząc ten kawałek kodu(5 lini) ;mov A, R4 ;mov A, R5 ;mov A, R7 ;mov A, P1 mov B,#5 mul A, B mov B,#2 div A,...
Bo, moim zdaniem, powinieneś adresować bufor pośrednio. Np. tworzysz sobie bufor od danego adresu. Adres zapisujesz do R0 i potem adresujesz np. mov A,SBUF mov (at)R0,A inc R0 Wówczas R0 jest Twoim wskaźnikiem do danej komórki bufora. Można zdefiniować jeszcze stałe np. BUFFER_START i BUFFER_END, które będą adresami początkowym i końcowym bufora, co...
zle rozumiesz, bo nie wiedziec czemu czyszcisz PORTB zamiast go ustawic. pomijajac juz fakt, ze nie ma rejestru, ktory zwalby sie PORTB1. 4\/3!!
Użyj tego: BFI Rd, Rn, #<lsb>, #<width> , robi coś takiego Rd , ale adnotacja mówi że wspierany jest od ARMv6 wzwyż.
Tamte akurat miały architekturę von Neumann-a, więc wszystkie adresy były jednego rodzaju. Składnia DANE<<1 (albo chyba DANE*2 też mogło by być) wynika z (nieco) idiotycznej konwencji, że dla przestrzeni kodu asembler numeruje (adresuje) słowa (pamięć FLASH jest 16-bitowa), natomiast przy dostępie przez LPM trzeba zaadresować pojedynczy bajt.
Po ustawieniu portu w rejestrze PORTx musisz odczekać przynajmniej jeden takt zegara przed sprawdzaniem rejestru PINx. Możesz dodać intrukcję assemblera NOP.
Nie pokazuje z powrotem na bajt 1, bierze przypadkowy następny bajt o wartości 1
sbi _SFR_IO_ADDR(TIFR), OCF1A Instrukcji sbi nie można używać w odniesieniu do rejestrów o adresie większym niż 32, zamiast tego należałoby w tym przypadku użyć: push r18 ; opcjonalnie ldi r18, (1<<OCF1A) sts _SFR_MEM_ADDR(TIFR), r18 pop r18 ; opcjonalnie Odkładanie na stos nie powinno być konieczne, gdyż rejestr r18 zgodnie...
W dokumentacji jest lista rozkazów i rejestrów z której można korzystać. Ten dokument raczej cały czas ci będzie potrzebny.
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.
...Mam pytanie jak przeniesc komende lookup (z bascoma) na assembler? To zależy z ilu elementów maksymalnie może składać się tablica i jaki jest rozmiar jednego elementu. Np. dla tablicy o wielkości max 256 elementów umieszczonej w pamięci programu i rozmiar elementu to 1 bajt: mov a,numer_elementu mov dptr,adres_pierwszego_elementu ; (początek...
Tak się składa, że wiem, że R0 jest wolny a każdy inny zajęty. Dziś jest wolny, jutro jest zajęty - obyś się nie przejechał. No i coś takiego nie działa, bo zmienna StackPointer Działa - potem R4 będzie przepisane do R0 żeby prawidłowo zwrócić wynik. jest ładowana do R4, który to ma być zrzucony instrukcją STMDB Wstawki assemblerowe są dużo bardziej...
Kodu brak i może jakiś konkretny przykład byś podał? Czyli ciąg i wartości rejestrów.
At90S2313 to procesor 8-bitowy wiec wszystkie rejestry (oprócz licznika rozkazów i jeszcze jakiegos ktorego niepamietam) są 8 bitowe, równiez organizacja pamieci danych jest 8-bitowa więc jesli chcesz posługiwac się słowem 16-bitowym to musisz go sobie podzielić na dwie częsci i przechowywać w oddzielnych rejestrach ( lub komorkach pamięci Sram) .
http://rejestr.republika.pl/dokumenty/51... Przeczytaj SEGMENT, BSEG i BIT
assembler darmowy assembler assembler tablicy assembler przerwania
schemat ideowy wzmacniacz audio iskry junkersie astra kodowanie
elektryczne wspomaganie kierownicy samsung ue50au8002k
Upalenie wtyczki zasilającej Webasto w VW Touran - przyczyny i rozwiązania Jak rozebrać żelazko Tefal FV3970 - instrukcja krok po kroku