Na pewno na pierwszym miejscu jest zestaw instrukcji. Na przykład możliwość łatwego adresowania tablic obiektów o rozmiarze większym niż 1 bajt powiedzmy w ARM, czy w MC68020 i wyższych, lub na przykład wykonywanie operacji na 16 i więcej bitach za pomocą instrukcji operujących na danych ośmiobitowych (dodawanie, odejmowanie, porównanie itd. z propagacją...
Procedura zerowania RAM: [syntax=asm] MOVR0,#8 MOVR1,#247 ZEROWANIE: MOV(at)R0,#0 INCR0 DJNZR1,ZEROWANIE [/syntax] Zmień sobie wartość którą wypełniasz :-) Tylko uwaga na obszary. Zauważ że "oszczędzam" tylko pierwszy bank rejestrów bo tam są umieszczone R0 i R1, które używam do czyszczenia RAM. A instrukcja MOV A,(at)A+DPTR odczytuje do akumulatora...
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...
hmmm generalnie to dopiero zaczynam się bawić w uP, ale wg moich informacji wygląda to tak: aby port szregowy spełniał te kryteria należy odpowiedniu ustawić rejestr SCON, czyli potrzebujesz mode 1(Transmisja szeregowa asynchroniczna slów 8-bitowych, przy czym szybkosc ustalana jest programowo) oraz ustawić ren na 0 (wyłączenie nadawania), reszta bitów...
taki sposób deklaracji jest jak najbardziej poprawny, jest nawet pod pewnymi względami lepszy, bo nie deklarujesz adresu każdej zmienej z osobna, więc pomiędzy już zadeklarowane zmienne możesz "wcisnąć" następne bez potrzeby zmiany reszty. W pamięci rozkłada się to tak, że DSEG AT 01H ustawia Ci licznik adresu zmiennych (a właściwie to symboli, bo widzę,...
Witam wszystkich Dopiero zaczynam programować w języku asemblera (w szkole mam programowanie mikrokontrolerów 8051 w tym języku), wcześniej programowałem w Bascomie. Chcą trochę poćwiczyć asemblera przed zaliczeniem napisałem prosty program który wpisuje do pamięci o danym adresie i do jakiegoś rejestru jakąś liczbę. I mam takie dwa pytania przy zaadresowaniu...
Witam Mam problem z zaadresowaniem rejestrów TIMER3 w ATMega 162. Piszę obsługę przerwań w asemblerze i każda próba adresowania rejestrów o adresach powyżej 3F kończy się błędem zgłaszanym przez kompilator. jeśli użyję LDS kompilator wyrzuca komunikat "number must be less than 32" jeśli użyję IN kompilator z kolei "number must be less than 64" . Błędy...
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
Super, że napisałeś o jaki procesor chodzi... Sądząc z instrukcji o '51. mov to instrukcja przeniesieania wartości z/do pamięci wewnętrnej/rejestrów uC, movx to instrukcja dostępu do zewnętrznej pamięci danych (fizycznie inny układ scalony niż uC), DPTR to 16 bitowy rejestr używany generalnie przy adresowaniu komórek pamięci zewnętrznej, choć można...
88 TCON 89 TMOD zapisujesz w SFR są to rejestry adresowane bitowo i bajtowo, dlatego jest taka zależność podzielności przez 8, podzielne przez 8 możesz adresować bitowo Wydaje mi się, że rejestry SFR adresowane są tylko bezpośrednio, a przy adresowaniu pośrednim powinienem trafić w pamięć RAM
:arrow: Marek z tego co rozumiem to ten adres pośredni to "małkpa"?. Jeśli zdeklaruje sobie pierwszy bajt np: BAJT_1 EQU 20H to do rejestru R0 muszę wpisać MOV R0, #20H i wtedy po każdym odebranym bajcie zwiększyć R0 (aż do 28H)?--- ni?! to fajnie Chłopaki-dzieki
bsf STATUS,RP0 movlw b'01010101' (miałem 4 diody na porcie A) movwfTRISA ^ 0x080 ( coś się powinno zapalić ) bcf STATUS,RP0 movlwb'00110011' movwfPORTA A skąd znalazłeś ten kod? Bo to dość dziwny zapis, ale sprowadza się do tego ze wpisujesz W pod adres TRISA (czyli w przybliżeniu coś około 0xA0 ) z operacją xor która zamienia wartość adresu, negując...
Asembler 6502 jest bajecznie prosty i piękny, powinien służyć jako wzór do nauki kodu maszynowego. Cały procesor też jest pięknie zaprojektowany. Tylko 3 rejestry, każdy z trybów adresowania się przydaje do czego innego, podstawowe instrukcje bez dublowania w rodzaju, że jedno można zrobić na 5 sposobów. Prosty dekoder do 6502 można zrobić na jednym...
Akumulator to tylko nazwa rejestru. Potrafił akumulować wyniki z ALU i był docelowym rejestrem do której zapisywany był wynik operacji. Obecnie wyniki mogą być zapisane do dowolnego rejestru z pewnej grupy rejestrów, więc nadaje się im po prostu nazwy R0..R31. Jeżeli, któryś z nich dodatkowo spełnia jakąś funkcję to nadaje się mu ekstra nazwę. Nazwa...
Z przeszło 4 godzinej lektury dowiedziałem się że programy skompilowane Asm,C lub Bascom'em można 'przenosić' do Mikrokontrolera, ale nie potrafię sobie wyobrazić jak ?, w jaki sposób ? spróbuj sobie wyobrazić mikrokontroler jako stacje dysków..układ taki posiada wszystko co jest potrzebne do wykonywania programu: - oczywiście najważniejsze: niedziałają...
O kurcze, lata świetlne już nie miałem do czynienia z asemblerem dla 68K. :) I zdążyłem zapomnieć o "zakresach rejestrów"... 68K to jest procesor/rdzeń klasy CISC i niektóre instrukcje mają dość rozbudowaną funkcjonalność. Szukając dokumentacji asemblera, szukaj dla całej rodziny MC68K; tu masz przykłady: [url=https://www.google.com/url?sa=t&rct...
Nie bój sie assemblera. Procesory RISC maja niewiele prostych rozkazów. Platformy Kolega pomylił. W przypadku ARMa ani "niewiele" ani "prostych"; samo określenie ARM mianem RISC też dość dyskusyjne. Asembler ARM początkującego może jedynie wystraszyć. Z tą liczbą rozkazów, to temat faktycznie dyskusyjny. Z80 700 rozkazów i 6502 z 15 wypada gorzej....
To wszystko prawda, aczkolwiek wydaje mi się, że różnie to widzą różne kompilatory. Ofszem Acc jest nazwą rejestru SFR i można ją używać jak każdej innej zmiennej czyli w rozkazach z adresowaniem bezpośrednim (direct). Oczywiście jeśli to możliwe to lepiej jest korzystać z rozkazów wykonywanych na akumulatorze. Ale czy każdy kompilator zrozumie inc...
Pituś Bajtuś masz rację, po prostu myślałem, że nie trzeba pisać przed adresem "np.", a jednak. Jest to oczywiste, że 0x000 to adres przerwania resetu. Mój błąd. Co do twojego pytani adj_max84, to tak jak powiedział Pituś Bajtuś. Możesz do tego celu użyć etykiety, dawno pod asemblerem nie pisałe i jakoś takie rozwiązanie wyszło mi z głowy ;P. Odnośnie...
Jeszcze tylko jedna uwaga co do Przecież przeniesienie trzeba uwzględnić i wstawić do rejestru bo jak nie to przy następnej operacji dodawania bit carry się wyzeruje i stracimy informację... czy może się mylę? Masz rację. Przeniesienie trzeba pamiętać o ile gdzieś dalej (daleko dalej :-)) będziemy robić operacje na wyniku, ale rezerwowanie do tego celu...
Może, jesli kolejny raz pokaże sie Autorowi tematu i innym, że pisanie w ASM to wymaga duuużo większej uwagi i pilnowania kodu który normalnie kompilator C/C#/Basic itd. robią za programistę, to przestaną zadawać takie pytania. Pytanie jak to napisać w ASM jest zależne od tego na jaki to jest procesor i na który port bo nie każdy jest w przestrzeni...
Zobacz sobie to https://serwis.avt.pl/files/kurs_c/22_Ku... https://serwis.avt.pl/files/kurs_c/23_Ku... https://serwis.avt.pl/files/kurs_c/24_Ku... https://serwis.avt.pl/files/kurs_c/25_Ku... https://serwis.avt.pl/files/kurs_c/26_Ku... https://serwis.avt.pl/files/kurs_c/27_Ku... https://serwis.avt.pl/files/kurs_c/28_Ku...
wielkie dzięki za odpowiedź...PioTherm... bardzo mi pomogłeś! 1) Chyba pozostanę przy tym drugim rozwiązaniu i zastosuję pamięć sterowaną przez I2C, czyli mam rozumieć że masz na myśli pamięć EEPROM? Nie ukrywam, że jest to moja pierwsza przygoda z mikroprockami, więc Twoja uwaga odnośnie pamięci programu okazała się cenna. 2) Zanim napisałem tutaj...
w przypadku 8051 nie znalazlem informacji na temat adresowania indeksowego- zresztą wciąż pytam o możliwość mieszania w pamięci kodu , nie 'jak to zrobić prościej' :) Jestem świadom tego, że wg dokumentacji 'się nie da' Pamiętajmy - 8051 wykorzystuje architekturę harwardzką w kwestii pamięci. Oznacza to, że przestrzeń na kod i przestrzeń danych są...
ZAD. 1. Przygotować i uruchomić programy w języku asemblera 8051: a) kopiowania N-bajtowego obszaru TABL 1 z pamięci kodu do pamięci wewnętrznej DATA (obszar TABL2), b) kopiowania bit po bicie w pamięci DATA fragmentu danych z obszaru TABL2, a następnie bajt po bajcie i utworzenie obszaru TABL3 c) kopiowania obszaru TABL2 do zewnętrznej pamięci XDATA...
A po co na ISA są przewody SMEMR i SMEMW ? powiększona liczba przewodów adresowych służy do adresowania pamięci na karcie ISA a nie rejestrów IO. sprawdź czy piny SMEMR i SMEMW są podłączone, jak tak to sprawa jest oczywista - rzutowanie na pamięć RAM. [Hm.. 16 bitowych danych nieda sie odczytywać z ramu.. no to niewiem..]
A w czym dokładnie masz problem? Do zapisania danych pod adresami odpowiednimi uzyj adresowania pośredniego. Przykładowy algorytm moze wygladac tak: 1.Do jakiegos rejestru wrzuc pierwsza liczbę. 2. Potem odejmuj od niej każdą następną. Ze zbioru. 3. Po kazdym odjeciu sprawdz czy wynik jest ujemny (sprowadza sie do sprawdzenia jednego bitu ). Jesli jest...
Mając procesor 32-bitowy nie będziesz musiał myśleć o bankach i ich przełączaniu, a operacje na adresach będą wykonywane w jednej instrukcji, a nie w 3..8 jak w Xmega. nie rozumiem tego katowania się 8-bitowcami w aplikacjach, w których przestrzeń adresowa musi przekraczać 64 KiB. Weź dowolnego Cortexa - wyjdzie prościej, taniej i ze 20 razy szybciej...
Witam, Mam wielką prośbę, jakby ktoś uprzejmy i miły mógł odpowiedzieć jak w asemblerze na procku 16f57 "dostać" się do ramu w banku 1 (30h-3Fh). Chciałbym w tym banku zapisywać i odczytywać dane, lecz wszystkie próby kończą się zapisem lub odczytem rejestrów w banku 0. Próbowałem z adresowaniem pośrednim, ale coś mi słabo wychodzi. Proszę o wskazówki...
tablica danych w ROM ma sens wtedy gdy mozna pobierać z niej dane jakoś ją indeksując. Aby cokolwiek pobrac z ROM trzeba go jakoś zaadresować. We wszystkich PIC-ach adresować ROM można przez ProgramCounter, oraz w części PIC-ów istnieją dedykowane rejestry pozwalające zaadresować ROM i odczytac zawartość tak zadresowanej komórki. W tym dugim przypadku...
Przede wszystkim jeśli zastosujesz .extern to gdzieś ta zmienna musi zostać zdefiniowana. Możesz to zrobić w kodzie C, możesz w kodzie asemblerowym i potem w C dać extern typ zmienna. Dla asemblera będzie to tylko etykieta, więc sam musisz zadbać o jej poprawną interpretację. Możesz się do niej odwoływać poprzez rejestry indeksowe, lub korzystając z...
W programie głównym jest zapisywana wartość do DPTR określająca adres początku tablicy np: movc DPTR,#text1. Nastepnie program skacze do procedury odczytu tej tablicy i wszystko jest w porządku tzn. odczytuje kolejne znaki (do zwiększania adresu służy właśnie R1 'mov A,R1' i potem movc A,(at)A+DPTR). Procedura odczytuje znaki i zapisuje je kolejno w...
Jak dla mnie Twoje pytanie jest mało szczegółowe. Do czego ma być użyty ten DPTR? Poza tym można go traktować jak 2 rejestry DPH i DPL, ale jest już używany więc użycie go do przechowywania wartości w0 - w4 mija się z celem bo jest używany do adresowania pośredniego czyli należało by go zapamiętać. Jedynie można go jeszcze użyć w pętli opóźniającej,...
Już zdążyłem zauważyć, poprawiłem, co trzeba - był błąd w adresowaniu rejestru DDRB, którego adres jest o 1 mniejszy od PORTB, a nie większy, jak było w kodzie - układ działał na samych podciągnięciach, a nie na push-pull, stad obcinanie dolnych fragmentów sinusoidy. Z tego wszystkiego postanowiłem zbudować ten układ dla siebie, przyda się przy naprawie...
Masz na mysli pamiec SRAM? W assemblerze nic nie deklarujesz, a wydajny dostep do fragmentu pamieci w ktorym chcesz umiescic tablice realizujesz przy pomocy adresowania posredniego jednym z rejestrow X, Y, lub Z (zapis z inkrementacja lub dekrementacja). Sam musisz dopilnowac zeby program nie nadpisal tej tablicy jakimis innymi danymi (jak mu nie kazesz...
Spoko, temat byl o poczatkujacych asemblerowcach, a taki raczej nie napisze sobie prodecurek,bo sie glowi nad adresowaniem rejestrowym i zwykla petla w asm.
Zadanie bardzo podobne do tego poniżej, z tym, że bez mnożenia i koniecznością zapisu kolejnych n komórek (brak trzeciego rejestru indeksowego – ix i iy są już wykorzystane – trzeba wymyślić sposób adresowania trzeciego wektora innym rejestrem np. hl) .z80 bdosequ5 aseg start:org100H ; iloczyn skalarny wektorow ; struktura wektory:...
Łomatko. Przecież MCS-51 ma zupełnie inną architekturę niż AVR. Nie tylko chodzi o rejestry, ale także o same rozkazy. MCS-51 dopuszcza pewne operacje bezpośrednio w pamięci, AVR ma architekturę typu load-store. Poczytaj trochę o tym, a nie czekasz na gotowe. Polecam dokumentację pierwszej, lepszej ATmegi (na końcu masz listę rozkazów), koniecznie też...
Witam Tak prostych makr nie można wymyślić inaczej, całe szczęście że w Polsce nie można czegoś takiego opatentować. Myślę nad napisaniem makr do obsługi górnych rejestrów w większych AVRach. Nie podoba mi się adresowanie tych rejestrów tak samo jak RAMu, trzeba napisać makra na wzór tych co już mamy, a więc: (nie wiem czy literka H w tym miejscu jest...
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...
Asembler, dlatego warto umieszczac strony na granicy rownych adresow, np. 0x8000-0xFFFF, wtedy nadmiar i niedomiar latwo stwierdzic, oczywiscie i tak trzebaby wykonywac porownanie, ale tylko jedno i w dodatku proste (jedna instrukcja), co wydluzy transfer o ok. 25% lub mniej. Mozesz zastosowac XMega, ona ma duza przestrzen adresowa, ale rejestry RAMP...
DB to pseudoinstrukcja umożliwiająca wstawienie wartości podanej za nią w kod programu. DPTR to 16bitowy rejestr służący głównie do adresowania względnego.
A rozumiesz, jak działa [url=http://pl.wikipedia.org/wiki/Intel_... adresowanie pamięci? Tutaj masz wariant zwany adresowaniem [url=http://pl.wikipedia.org/wiki/Intel_...
Kamyczek: nie te asemblery, nie te kompilatory. Programowanie nowych architektur w asemblerze jest mało sensowne, bo kod generowany przez kompilator jest na ogół lepszy niż kod asemblerowy średniego programisty. Zdziwiłbyś się, jak krótki i sprytny kod generuje kompilator dla wielu instrukcji i konstrukcji języka wysokiego poziomu. Sztuka programowania...
w avr kom u rka pami en ci to 2 bajty czyli 16 bitóu - podczas pisania programu deklaruj nazwe kom u rki stala: .dw 0X00ff ;deklaracja stalej dwu bajtowej możesz użyć przecinkow i b en dzie tablicz aby m u c czytać kom u rki musisz wyko ż ystać adresowanie indeksowe tylko indeks z ldi zh,high(stala*2+1) ;mnożysz przez dwa i dodaj 1 gdy chodzi owartość...
Adres efektywny jest wyliczany z adresu segmentu i offsetu. adres segmentu określa położenie segmentu w pamięci, a offset jest to przesunięcie względem początku segmentu. W przypadku adresowania rzeczywistego, adresy segmentów są przechowywane w rejestrach segmentowych (CS, DS, itd.), a offsety w pozostałych segmentach (CX, DX, ...). W trybie adresowania...
Witam. Post mniej więcej jest o tym o czym temat więc bez zbędnego tłumaczenia przejdę do rzeczy: Sprzęt: AT89S52 (8kB Flash) Wyświetlacz LCS 2*16 Czujnik temperatury 18B20 Kwarc 12MHz Program pisany w asemblerze Robię projekt którego celem jest realizacja zegara z termometrem (czego to już człowiek nie wymyśli : - ) ). Postanowiłem że pomiar temperatury...
Ile najdłużej cykli procesor 6502 może nie zmieniać stanu nogi adresowej A0 i dla jakiej instrukcji taka sekwencja nastąpi? Wstępna ocena dostępnych informacji Analizując pytanie, użytkownik chce wiedzieć, ile maksymalnie cykli zegarowych procesor 6502 może utrzymać niezmieniony stan linii adresowej A0 , oraz przy jakiej instrukcji taka sytuacja występuje....
... Kolego zumek - z całym szacunkiem ale po pierwsze: - czy wg ciebie komórka pamięci programu w prockach AVR składa się z jednego bajta czy słowa dwubajtowego? po drugie: - czy adresowałeś kiedyś cokolwiek (w asemblerze) w pamięci programu przy użyciu rejestru Z ???? .... coś mi się wydaje, że mocno się mylisz, więc nie bądź taki pewien siebie proszę...
Panel dotykowy z 6 diodami sterowany po i2c na ATTINY44 Poniższy materiał przedstawia próbę ugryzienia tematu krytycznych zależności czasowych w asemblerze. Zadaniem było stworzenie stabilnie działającej aplikacji która obsłuży: komunikację z procesorem nadrzędnym w trybie slave i2c sterowanie multipleksowanymi diodami z 8bitowa regulacja jasności...
1. Języka C warto się nauczyć, żeby nie gubić się ciągle w rejestrach, trybach adresowania, budowaniu algorytmów w asemblerze. Jest wygodny. 2. Procek zaczyna być potrzebny, gdy zadanie zaczyna być bardziej skomplikowane niż mruganie diodami. (komunikacja szeregowa, pomiar wartości analogowych, dokładne odmierzanie czasu... mogę tu wymieniać długo)
:arrow: Tdv Zgadzam sie ze to powinno inaczej wygladac ale nie zgadzam sie ze jest potrzebny rejestr do zatrzasniecia mlodszej czesci adresu.Jesli wszystko jest dekodowane ze starszej czesci to nie jest to potrzebne natomiast jest potrzebne przemyslenie kiedy i w jakich warunkach urzadzenia zewnetrzne zatrzasna prawidlowo magistrale danych (analiza...
zasadniczą różnicą jest to, że przez rejestry jest możliwe adresowanie pośrednie, czyli wartość w rejestrze wskazuje adres danej, są to rozkazy z (at)
Ja bym polecił jednak AVRy: +Asembler jest łatwiejszy niz na 51, nie wiem, czemu twierdzisz, ze na 51 jest prostrzy, napewno w AVRach niektore rzeczy mozna robic szybciej niz na 51 (np przez to ze nie muszisz uzywac akumulatora, mozna operacje wykonywac bezposrednio na rejestrach, wiec odpada przepisywanie rejestr->akumulator, i potem wynik z akumulatora->rejestr,...
Jeśli to pierwsze makro to miało być _SFR_ IO _ADDR to wyjaśnienie jest następujące : w plikach nagłówkowych avr-lib wszystkie rejestry specjalne zdefiniowane są adresami w przestrzeni adresowej pamięci. Jak ktoś używa asemblera, to do instrukcji typu in, out, cbi, sbi, ... potrzebne są mu adresy w przestrzeni wejścia-wyjścia i to makro zamienia jedne...
Moim zdaniem najlepiej wykonywać operacje na zmiennych pośrednio przez któryś z rejestrów-to z powodu możliwości dostępu do każdej komórki RAM-u, także tych ≥128÷256 (niektóre typy 51' posiadają taki właśnie obszar RAM-u, dostępny jedynie przez adresowanie pośrednie) Fajfer2
Szukam od kilku tygodni jakiejś ciekawej książki o programowaniu mikroprocesorów AVR w języku C w okolicznych bibliotekach i księgarniach oraz w internecie. Jednak znajduję wszystko albo na assemblera albo na bascoma. Assembler jest dla mnie zbyt żmudny natomiast bascom niesatysfakcjonujący dlatego wybór padł na C. Niestety niewiele istnieje polskich...
komentarze ;) .EQU DATA = 5 ; zdefiniowanie pinu w uC na którym będzie sygnał DATA .EQU CLOCK = 6 ; -------------- || ---------------------------------- CLOCK .EQU CHIP_ENABLE = 7 ; ------------------|| ------------ CHIP_ENABLE ;parametry wejściowe ; ; 3 bajty danych do wysłania umieszczone w SRAM ; pod adresem dane: send: ldi XL, Low(dane) ; ładujemy...
ZROBIŁEM :D :D :D :D Okazało się, że myślałem dobrze tylko ścieżka była przerwana :/ Uruchomiłem na TWI więc dużo roboty nie było. A jak by ktoś pytał jak czytać temp z ds1621 to inforumuję(tzn u mnie działa a na razie inaczej nie próbowałem): -używać rezystorów podciągających ( u mnie 4,7k) -adres 1001000 DS1621 uzyskałem przez zwarcie nóżek adresowych...
- brak możliwości bezpośredniego dodania stałej do rejestru A nieprawda. Można odjąć stałą. Można odjąć wartość ujemną... Dodatkowo, organizacja pamięci programu w słowa... bllee, komplikuje to trochę odczyt danych z pamięci programu... w 51 jest 16 bitowy DPTR i jest pięknie, a tu... A tu masz aż trzy rejestry których możesz użyć jako szesnastobitowych...
Z kontekstu wynika, że to nie o rejestry procesora chodziło, lecz o rejestry specjalne (czy rejestry I/O, jak kto woli). Poza tym SFR'y konkretnie są w '51. W AVR'ach są rejestry I/O i również są zmapowane w pamięci (zresztą jak w większości procesorów). Więc pewne podobieństwo jest. Aczkolwiek w AVR'ach dostęp do rejestrów I/O jest możliwy na dwa...
0. Proponuję przeczytać opis instrukcji rdzenia z rodziny C51. Widać, że tego nie zrobiłeś. 1. Adresowanie indeksowe może być zrealizowane tylko w oparciu o rejestry R0, R1, DPTR i PC. Poprawne są zapisy: [syntax=x86asm]MOV A,(at)R0 DEC (at)R1 MOVX (at)DPTR,A MOVX A,(at)R0 MOVC A,(at)A+PC Nie jest prawidłowe: MOV A,(at)R3 ADD A,(at)R7 [/syntax] 2. Instrukcja...
Po kolei, z czego ma wynikać alokacja programu :) czy przypadkiem nie z budowy zestawu i wykorzystania niższej pamięci programu dla procedur systemowych:) Do alokacji kodu programu na sztywno służy opcja linkera --code-loc <Value> Domyślnie Wartość = 0. Uwaga kiedy ta opcja jest użyta Tablica Vectorów podąża za wskazanym adresem :) Przykładowo:...
Z tego co piszesz wynika, ze kazdy uC bedzie dla Ciebie dobry na poczatek - nie wiesz praktycznie nic o mikrokontrolerach wiec duzej roznicy nie bedzie. Zacznij od tego co masz pod reka. Poznaj standard 8051 - klasyke dziesiecioleci, caly czas zreszta zywy i aktualny, potem pobaw sie AVRem czy PICem. Sam zauwazysz ogromne roznice i bedziesz je sam czul....
No tak typu 'register' używa się kiedy liczy się czas. A poza tym rejestry są zintegrowane z wewnętrznym RAMem (czyli ma on pojemność 1kB+32b na rejestry przy czym 1kB jest na stos i dla użytkownika) ? Jeśli tak to używając adresowania bezpośredniego z poziomu asemblera 0x0020 (32 bajty najpierw) będzie pierwszym adresem pamięci RAM przeznaczonej dla...
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 C64 i amigach: $ oznacza zapis szesnastkowy, nie oznacza natomiast wcale adresu! np. w C64 (procesor 6501) LDA $400 to dokładnie to samo, co: LDA 1024 czyli załadowanie do akumulatora wartości z komókri pamięci o adresie $400 Poza tym do oznaczenia zapisu szesnastkowego stosuje się jeszcze 0x liczba (w jęzuku C np.) i 0 liczba h (w różnych asemblerach,...
Ś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...
Ja zdecydowanie polecam w pierwszej kolejności naukę ANSI C. Parę luźnych uwag w odniesieniu do asemblera : 1. Najważniejsze - dobrze napisany kod będzie w większości przenośny między różnymi procesorami i nie trzeba od 0 pisać wszystkiego (jak w asm ...) gdy chcemy przejść np. z '51 na PIC. 2. Przy pisaniu kodu można skupić się na algorytmie a nie...
Do autora - to naprawdę duży problem z kodu maszynowego jednego MCU przerobić na inny. Staniesz na braku jakiegoś rejestru, inne adresowanie lub na innym problemie łatwym do zrealizowania na pic a cięzkim na innych. Dlatego warto pomyśleć nad napisaniem na nowo posiłkując się kawałkami kodu co uda ci się zdeasemblować. Druga sprawa że pisać musisz w...
Jeżeli to jest np. atmega328 to zamiast definiować strukturę z jednym polem Flagi użyj rejestr GPIOR0. [syntax=c]#define FLAGI GPIOR0 #define FLAGA_CZAS GPIOR00 #define FLAGA_TEST GPIOR01 // itd. FLAGI &= ~(1 << FLAGA_CZAS); // zerowanie bitu FLAGI |= (1 << FLAGA_CZAS); // ustawianie bitu[/syntax] Ten rejestr znajduje się w pierwszych...
http://obrazki.elektroda.net/42_12648689... Na temat projektu avr-cdc z [url=http://www.recursion.jp/avrcdc/]htt... napisano już wiele i jeszcze więcej - nie będę się rozpisywał o samej idei - można zajrzeć chociażby do wątku [url=http://www.elektroda.pl/rtvforum/to... prosta niezawodna przejściówka...
(at)ElektrodaBot Jak konwertować kod 64-bit na 32-bit? /** (at)file Copyright (c) 2025, Gelip Copyright (c) 2024, Andri Kurniawan Copyright (c) 2020, Seungjoo Kim Copyright (c) 2016, Dawid... Bezpośrednia odpowiedź „Konwersja” istniejącego binarnego modułu UEFI X64 na IA32 nie jest możliwa - trzeba ponownie skompilować kod źródłowy z ustawieniem architektury...
51 to 51 i koniec :) Asembler jest taki sam (tzn. instrukcje dla procesora) Trzeba tylko uważać na to żeby wykorzystywać tylko te rejestry i adresowalny obszar pamięci jaki jest dostępny w danym typie uP. W AT89C2051 jest 2KB pamięci programu więc 16-bitowe rozkazy skoków tracą sens :), 128bajtów RAM powoduje że zapis lub odczyt z pamięci IDATA (np:mov...
Trochę już odbiegliśmy od głównego wątku, ale nikt nie narzeka, więc ok. Na szybko: Dokument Atmela, który podałeś nie dotyczy gcc, to stary dokument. tak tak, wiedziałem o tym, że był pisany pod kątem IAR. W każdym razie sporo zasad jest tam uniwersalnych. Chociażby kwestia optymalizacji globalnych flag - bo to dotyczy już przestrzeni adresowej AVRek...
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.
Witam omen_s, jak pamiętam zajmowałeś się jakimś programem do alarmu w asemblerze - zmieniłeś platformę ?? Robiłem kilka projektów na '51 w C, jednak nie Raisonance tylko SDCC, tak że niektóre szczegóły nazewnictwa i składni, dotyczące sterowania peryferiami pewnie w tych dwóch implementacjach będą inne. Twoje pytania dotyczą jednak bardziej samego...
MIKROKOMPUTER COBRA 1 Za namową kolegów Marek2006 i Coberr postanowiłem również zaprezentować swój projekt - mikrokomputer Cobra 1. Inną wersję komputera Cobra 1 zbudowaną od podstaw przez kolegę Coberr można podziwiać w wątku: http://www.elektroda.pl/rtvforum/topic25... Na wstępie chciałbym jednak podziękować wyżej wymienionym osobom, bez których...
Nie bardzo rozumiem o co chodzi większość asemblerów dopuszcza komendę inc ("coś.obj") - czyli włączenie skompilowanego pliku asm , c, pas. Więc jeśli chcesz, to co robisz zrobić dobrze to pomyśl o działaniu z bibliotekami lib. Ważne jest to żeby stosować adresowanie ideksowane i zapewnić przenośność kodu w pamięci, nie stosować sztywnych przypisań...
Co do programu to jest zaczerpnięty z książki Tomasza Jabłońskiego "Mikrokontrolery PIC16F8X", i tak jak pisałem przy kompilacji 0 błędów, i na symulatorze wszystko działa prawidłowo Najpierw przeprowadzam inicjalizację wyświetlacza INICJALIZACJA_LCD MOVLW.50 ;WPISANIE CZASU OPOZNIENIA 50MS CALL OPOZNIENIE BCF RS ;WYBOR REJESTRU IR W WYSWIETLACZU, W...
grko napisał: IMO nieprawda a czy Xmegi przypadkiem nie mapuja przypadkiem eepromu do data memory ? Tak, w tym przypadku można włączyć mapowanie EEPROM do SRAM, co ma też tą zaletę, że można programować EEPROM stronami (co bywa nawet 32x szybsze niż programowanie komórka, po komórce). Wiem, że w niektórych uC występuje interfejs XMEM, który obsługuje...
Cześć. Bawię się ostatnio STM32F103, zacząłem od poradnika ( https://obrazki.elektroda.pl/5819782800_... Jak rozumiem jest tutaj za pomocą rozkazu ldr ładowana do rejestru r3 wartość z pod adresu 0x80001d8, i tutaj jest mój problem. W poradniku pod tym adresem (oczywiście adres jest inny, chodzi mi o to że dotyczy tego samego rozkazu)...
Witam! W muzealnym procku INTEL 80386 jest sześć rejestrów segmentowych: CS - rejestr segmentowy rozkazów stowarzyszony z licznikiem rozkazów SS - rejestr segmentowy stosu, stowarzyszony ze wskaźnikiem stosu DS - rejestr segmentowy danych, stowarzyszony z adresem danych ES - rejestr segmentowy dodatkowy 1 stowarzyszony z adresem danych FS - rejestr...
Podaję definicję klasy z tymi polami bitowymi: [syntax=c] //PMC Master Clock Register. //This register can only be written if the WPEN bit is cleared in “PMC Write //Protection Mode Register” . class CMCKR { public: //Master Clock Source Selection: enum ECSS { CSS_SLOW_CLK,// Slow Clock is selected CSS_MAIN_CLK,// Main Clock is selected...
Dyskusja o przewadze jednych języków nad innymi jest sama w sobie bezsensowna, gdyż każdy z języków powstał z myślą o innych potrzebach. Prekursorem i „oczywistym” wyborem w pierwszych latach istnienia kontrolerów „swobodnie-programowalnych” znanych obecnie jako PLC (a w Niemczech SPS – oni muszą mieć swoje 3 grosze) jest...
Trochę nie na temat, ale nie uważasz, że nowe Megi to pudrowanie trupa? Chodzi o stosunek ceny do możliwości. Nie dziwię się, że Mega nie ma DMA, bo i niby po co? Gdzie stworzyć bufory dla DMA, np w przypadku LCD? Jak sensownie wykorzystać RTOS? Na te zadania potrzeba RAM. Jedyny sensowy Mega to 1284 z 16kB RAM. Tam DMA coś by dało a tak mamy przerwania...
Witam! Najpierw tytułem wstępu: Kompilator - program tłumaczący kod zrozumiały (język wyższego poziomu np C, Delphi itd) dla człowieka na kod zrozumiały dla maszyny, czyli binarny lub na język niższego poziomu np asembler. - asembler jest programem tłumaczącym kod napisany w języku niższego poziomu na język wewnątrzny maszyny czyli jw - binarny, zrozumiały...
Ja aktualnie uzyskuję podobny efekt za pomocą makr Uważam, że makra mają swoje wady, które prowadzą do kodu, który w najgorszym przypadku może robić coś całkowicie innego niż nam się wydaje. A jak zamierzasz sobie poradzić z olbrzymią ilością procesorów, rodzin Dodając definicję danego mikrokontrolera. Język nie będzie się cechował ukierunkowaniem...
Serio. Uważasz, że chce mi się szukać i domyślać rzeczy, które powinieneś po prostu podać? Nie jestem złośliwy. Jestem po prostu zaskoczony. Karta CF wydaje mi się być czymś tak oczywistym jak tranzystor, bramka NAND albo przerzutnik typu D i zwyczajnie jestem zaskoczony, że takie pytanie padło. :) Poza tym - w poprzednim wpisie dałem link do konkretnego...
https://obrazki.elektroda.pl/3928983600_... Opiszę naprawę dość rzadkiej konsoli, polegającą na odtworzeniu schematu pierwowzoru, zaprojektowaniu i wykonaniu płyty głównej i dalszych krokach niezbędnych do przywrócenia jej życia i funkcjonalności, w których zastosowałem swoją nowatorską metodę. Będzie więc coś dla miłośników retro,...
Wykorzystałem poniższe instrukcje do ustawiania i zerowania linii portu [syntax=c] GPIOB->BSRR = GPIO_Pin_12; GPIOB->BRR = GPIO_Pin_12;[/syntax] Natomiast do odczytu stanu portu [syntax=c]GPIOB->IDR & GPIO_Pin_14[/syntax] Poprawiło to znacznie szybkośc działania. Wynik deasemblacji to 3 instrukcje asemblerowe dla ustawienia bitu [syntax=c]STR R2,[R1]...
Przeszukałem jeszcze to, co miałem na Amidze. Znalazłem generator tabeli pierwiastków tylko instrukcje przeniesienia, dodawania i skoki warunkowe. Skrócony kurs asemblera procesorów rodziny 680x0: :D instrukcja * ****************************************... * * **** Tiny square-root-table generator ****** (c) gREY in 1997...
Witam Potrzebuje waszej pomocy, musze napisac stoper w asm. Już sie męcze z tym troche i nie chce działac tak jak powinno, więc prosze was o naproawdzenie/poprawienie błedów w kodzie ponizej. I chcialbym rowniez wiedziec, czy moja interpretacja polecen w tym kodzie jest poprawna. Sam Timer działa poprawnie. Chcialbym aby sterowanie stoperem odbywalo...
Co około 10uS będziesz otrzymywał bajt danych z którym musisz coś zrobić, w dodatku nie jest to jedyna rzecz, jaką musisz robić. Trzeba z tych danych coś policzyć, jakoś przerobić. Jeszcze musisz obsługiwać swoją pamięć i inne rzeczy. Jak Ci się wydaje, czy jakikolwiek 8bit avr czy pic da radę ? Nie przesadzajmy, 10us to wieczność, nawet dla 16 MHz...
Przecież nigdzie nie ustawiasz przerwań. ;konfiguracja przerwań zewnętrznych .EQU ISC0 = 2 ;ISC00 i ISC01 aktywne zbocza opadające dla INT0 i INT1 .EQU ISC1 = 2 ;ISC10 i ISC11 .EQU MCUCR_ = 4*ISC1 + ISC0 .EQU PIN_INT0 = 1 ;zezwolenia na INT0 i INT1 .EQU PIN_INT1 = 0 .EQU GICR_ = 128*PIN_INT1 + 64*PIN_INT0 To definiuje tylko wartości zmiennych To nie...
... 1. mov A,(at)R2 a)wykona się na 8051 b)nie wykona się na 8052 bo jedyne rejestry do pośredniej adresacji to 0 i R1 c)wykona się na 8051 i 8052. Zawsze się wykona. 2.najstarszy bit R0 w instrukcji mov (at)R0,A ma następujący wpływ na jej działanie: a)przenosi zawartość aku to dolnych lub górnych 128bajtów(w zal. od najstarszego bitu R0) b)nie zadziała...
http://obrazki.elektroda.pl/3234430100_1... W Podatność na wstrzykiwanie komend Jedną z częstszych i łatwych do odnalezienia dziur jest podatność na wstrzykiwanie komend poprzez np. interfejs użytkownika. Sama idea tego ataku jest prosta – załóżmy, że podajemy gdzieś tekst, który następnie wykorzystywany jest do skonstruowania...
Witam. Mam problem z komunikacją z RTC DS12887 (DS1287). Układ wykorzystuje cały port do adresowania oraz wymiany danych oraz kilku dodatkowych do sterowania. Używałem tego układu do pracy dyplomowej (11 lat temu) i pisałem wówczas w asemblerze. Natomiast obecnie programuje w Bascom-ie i tu zaczyna się problem gdyż mogę skonfigurować port jako wyjście...
adresowa rejestr asembler rejestr eeprom adresowa
pasek rozrząd citroen mapowanie portu drukarki dobre przewód pomiarowy
Przerywanie radia internetowego - przyczyny i rozwiązania Luzy zaworowe w Stiga President 15.5 HP - Briggs & Stratton