czym sie roznia etykiety z kropka przed i te bez kropki? Etykiety z kropką są publiczne a te bez kropek nie są (ale można je uczynić publicznymi dyrektywą PUBLIC).
Witam Brakuje dyrektyw "equ" :D . Pozdrawiam
Może zaczniemy od tego jaki procesor i jakie firmy asembler.
Mam bardzo mgliste pojęcie jeśli chodzi o mikroprocesory. Takie pojęcia jak asembler,dyrektywy,operaty są mi obce. Proszę o podpowiedż od czego mogę zacząć naukę.Czy są jakieś strony które od podstaw wyjaśniają ten temat?
O tym nie pomyślałem, ale myślę, że będzie to to samo. Będzie to samo pod warunkiem, że gra nie nadpisze w RAM komórek z danymi używanymi przez monitor. Ciekawe czy monitor trzyma coś w RAM prócz oczywiście stosu... Właśnie zastanawiam się jak skompilować projekt, w którym jeden program zostanie podzielony na bloki i umieszczony we wskazanych bankach....
Uzywam kompiltora PICC HITECHa, uC PIC16F876A, Jakiej (i jak) dyrektywy asemblera uzyc by w wygenerowanym pliku hex pierwszym rozkazem (pod adresem 0) bylo: clr PCLATH a nastepnie goto main Potrzebuje takiej sekwencji by moc korzystac z bootloadera. Probowalem tak: PSECT absdata,abs,ovrld ORG 0h ale cos niestety nie dziala:( BF
Nie w 8051 nie ma takowych. Sa to dodatki kompilatora jezyka w ktorym piszesz. Pewnie jest to asembler, wiec podaj nazwe kompilatora asemblera to pogoglamy.
Podejrzewam, że używasz Keila, chociaż to nie ma większego znaczenia. Sprawdź, czy masz ustawiony stos dla FIQ. Domyślnie ma on rozmiar 0, co sprawia, że FIQ "zjada" stos IRQ. Właściwie FIQ można obsłużyć bez stosu, ale trzeba to zrobić pod asemblerem. Zauważ, że korzystasz z tej samej dyrektywy __irq. Oznacza to, że FIQ jest obsługiwane tak samo jak...
(at)Xamrex - kompilator przetłumaczy ljmp start jako skok pod adres etykiety start (którego jeszcze nie zna). W kolejnej linii ustawi odpowiednio pamięć, następnie od tego miejsca przypisze etykiecie start adres... jak przeleci cały program pierwszy raz to w drugim przejściu uzupełni adresy. Nie ma to związku z aktualnym WYKONYWANIEM kodu na mikrokontrolerze...
To co napisałeś w 1 poście przypomina dyrektywy asemblera '51. Być może przetworzenie tego asemblerem dla tego procesora (np. asem-51) pozwoli Ci wygenerować plik HEX do wgrania do pamięci. Żeby to działało musisz na nieużywane wejścia adresowe podać stan 0. Więcej dowiesz się w dziale Mikrokontrolery '51. Jeszcze prościej byłoby utworzyć plik BIN z...
Witam Myślę, że to rozwieje wątpliwości: Dyrektywa $ASM używana jest razem z dyrektywą $END ASM, podczas tworzenia bloków kodu w języku asembler, umieszczanych jako wstawki w programach języka BASCOM BASIC. Zamiast używać tych dyrektyw, można także przed każdą linią zawierającą mnemonik postawić znak !. Większość mnemoników asemblera nie potrzebuje...
1. dyrektywa asemblera .cseg .org "mówi" kompilatorowi od jakiego adresu umieścić kod wynikowy programu po skompilowaniu 2. stosu mógłbyś nie używać tylko wtedy gdybyś nie używał instrukcji typu rcall lub innych skoków do podprocedur, które muszą odłożyć na stosie punkt do którego ma wrócić program po zakończeniu tejże podprocedury - po rozkazie ret,...
Np. #define jed_bit PORTA,0 #define jest dyrektywą asemblera, w helpie mplaba znajdziesz.
Adres definiujesz właśnie tak jak pokazałeś - dyrektywą org. Symbol INT0addr to tylko symbol, któremu przypisana jest jakaś wartość. W asemblerze nie ma typów, więc wszystko zależy od programisty. Zdefiniujesz, że INT0addr ma np. 64, to .org INT0addr spowoduje, że następna instrukcja trafi pod adres 64. Co do języka - rozumiem, narzut to dobry powód...
sadło: znowu się z Tobą nie zgodzę, w każdym razie częściowo, bo to są deklaracje stałych (co zresztą napisałeś). Zmenne deklaruje się w inny sposób. Tak jak napisaleś to jest adres komórki, a nie nazwa zmiennej. FAQ do którego odnośnik jest wyżej zostało uzupełnione o deklaracje zmiennych, ale jeżeli nie chce sie komuś szukać to dołącze kawałek tutaj:...
Dyrektywa $ASM jest używana razem z dyrektywą $END ASM, podczas tworzenia bloków kodu w języku asembler, umieszczanych jako wstawki w programach języka BASCOM BASIC. Zamiast używać tych dyrektyw, można także przed każdą linią zawierającą mnemonik postawić znak !. Większość mnemoników asemblera nie potrzebuje przedrostka !, gdyż są one rozpoznawane...
Format zapisu jest bez znaczenia, procesor i tak rozumie tylko jeden - binarny. To czy to sobie zapiszesz jako hex, dec czy oct, to tylko dla twojej wygody jest. Jeśli chcesz rozbić liczbę 24-bitową na poszczególne bajty, to najmłodszy masz liczba%256, starszy (liczba/256)%256, a najstarszy (liczba/65536)%256. W asemblerze masz też gotowce, typu high,...
<label to tylko dyrektywa asemblera, której wynikiem jest młodszy bajt etykiety label. Czyli jeśli label jest pod adresem $abcd, to lda <label jest równoznaczne z lda $cd czyli wczytanie do akumulatora komórki pamięci spod adresu $cd. Niech potwierdzeniem moich słów będzie poniższy zrzut z symulatora: http://obrazki.elektroda.pl/6727883800_1...
ZADEN kompilator idealny nie jest. Dzis ze zdumieniem stwierdzilem ze asembler atmelowski nie pozwala na nieparzysta liczbe zadeklarowanych bajtow w dyrektywie .db ;( Pozdro Dexter
Dodam jeszcze, że w obecnych wersjach AVRStudio domyślnym asemblerem jest avrasm-2 nowa wersja wzbogacona m.in. o obsługę nowych dyrektyw preprocesora.
Witam wszystkich :) Przyjąłem już strategię działania. Otóż, wersja MikroLuk v2.0 zostanie wypuszczona z moim własnym asemblerem, obsługą dwóch, może trzech programatorów, symulatorem i następującymi możliwościami integracyjnymi: 1. Będzie można zdefiniować obsługę programatora poprzez wywoływanie zewnętrznego oprogramowania, będą również dodane standardowe...
A tak poważnie. Czy jest jakiś wykaz asemblera rozkazów i komend co za co odpowiada. ATmega8 ma na stronie 289 taki wykaz poleceń do zawarcia w programie a funkcje assemblera? Chwalisz się, że posiadasz zainstalowane AVR Studio. A czy przyszło Ci do głowy by zajrzeć do jego helpa? Tam opisane są wszystkie mnemoniki, dyrektywy i funkcje specjalne jakie...
Na poczatku przed kodem umiescić dyrektywę .cseg i .org 0x0E to powinno zmusić kompilator do umieszczenia kodu w tej sekcji . Kiedy łączysz asembler z C to wygląda trochę inaczej - musisz się dostosować do konwencji jaką rozumie linker.
Nie wiem co jest błędnego w mojej składni. Dyrektywa #define ze znakiem równości lub bez, a kompilator wali błędami. Czy jest coś zamiast low () i high () bo tego też się czepia. #define ma być bez znaku = :!: Co w tym jest źle? #define mc32u1 r17; multiplicand byte 1 #define m32u5 r25; result byte 5 adc m32u5,mc32u1 ; Chyba nie bardzo wiesz , jak...
Przecież masz to w asm. Zmienne to nic innego jak etykiety. Tyle, że w przeciwieństwie do języków wyższego poziomu to ty decydujesz jak potraktować taką etykietę i jaki typ przechowuje. Oczywiście nie możesz zrobić if costam dla takiej zmiennej, ale możesz to samo osiągnąć instrukcjami CP, CPI. Jeśli ci brakuje tego if'a to sobie stwórz makro. Jak porządnie...
Program był pisany w środowisku Mikroluk v1.0 prerelease (czego nie podałem wcześniej). W tym programie nie ma możliwości zdefiniowania portów, ani rejestrów. W kiepskim srodowisku sie obracasz . Asembler, ktory nie zna elementarnych dyrektyw, jak EQU, ORG, #Include ... jest o kant (...) potluc! Asembler i debugger byc moze znajdziesz do sciagniecia...
Asembler, asembler moja pomylka. W wersji 2 Atmel zaimplementowal "C style preprocessor" i w helpie sa wyszczegolnione takie dyrektywy ale nie moge tego opanowac co chwila jakis blad. Jedyne co mi zadzialalo to #ifndef i #message. Zaczynam sie podejrzewac o debilizm wtorny ;) Pozdro Dexter
A czy w BASCOMie komenda 'wait 1' przy dyrektywie $crystal=<fosc> nie załatwi wszystkiego ?? A jeśli chodzi o precyzyjne odmierzanie czasu to polecam asembler i obsługe timera w przerwaniu. To jest chyba najdokładniejszy sposób. Pozdrawiam.
Tak, ale pkt. 1 nadal obowiązuje. Poczytaj opis do dyrektywy $Tiny. Zobacz na ograniczenia, głębokość stosu (3) - to ledwo starcza na asembler !. Zobacz, co sie stanie jeśli tylko rozbudujesz choćby "ciupińkę" program z samples. Jeśli przeglądałeś posty nt. BASCOMa to wiadomo, że to strasznie zasobożerny kompilator.
Pierwszą rzeczą którą musisz zmienić to: LJMP START - ten skok jest niepotrzebny bo nie obslugujesz przerwań a dyrektywa ORG ustawia poczatek programu (od tego adresu zacznie sie wykonywanie programu) ORG 100H START: jesli chcesz to napisz: ORG 100h i pożniej pisz program - domyślam się że ten przykład jest z ksiązki nawet wiem jakiej. W swoim Programie...
Zainstalowalem najnowsza wersje AVRStudio oraz SP1. Problemy opisane powyzej znikly. Jednak bylo by zbyt fajnie aby bylo wszystko cacy. Z semblacja jest wszystko OK. Debuger ma jednak swoje odchyly. Problem 1, jak powiedziec debugerowi, ze do procesora mam przylaczony kwarc np. 8MHz. Problem 2, Nadal debuger nie lubi sie z dyrektywa .ecode . Tzn. jak...
Chyba już nikt nie używa asemblera :) Jest to błąd AS i raczej nie ma co liczyć na jego naprawienie, bo nikt nie jest zainteresowany asemblerem (a przynajmniej zainteresowanie jest marginalne). Jest kilka obejść problemu: - przejście na asembler z gcc, który wygeneruje plik elf i AS sobie z tym poradzi i EEPROM będzie widoczny. Dodatkowy zysk jest taki,...
No i dobrze ci wychodzi error bo niby skąd? po pierwsze Bascom ma wiedzieć co znaczy RAMEND a po drugie LOW to polecenie czysto Bascomowe a ty mieszasz to z asemblerem we wstawce Podejrzewam, że znalazłeś gdzieś jakiś kawałek kodu w asemblerze, który coś tam robi ale nawet nie jest dla ciebie do końca zrozumiały i zachciałeś go ot tak wstawić do Bascoma...
(...) bić, żeby poinformować kompilator, że ma optymalizować kod w C, ale nie pomijać tej wstawki asm(...)? Próbowałem asm volatile (...), nie pomaga. (at)ElektrodaBot jaka dyrektywa działająca tylko na wstawkę asm() w programie w C kompilowanym przy użyciu GCC ochroni ją przed wyrzuceniem przez optymalizację? Bezpośrednia odpowiedź na pytanie Aby...
W tym programie jest jedna ciekawa rzecz na którą zwróć uwagę: __CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT ;Internal osc. jest to wskazówka jak ustawić "Configuration Bits" , a od ich ustawienia zależy poprawna praca programu. To nie jest "wskazówka" ale dyrektywa dla asemblera jak ma zakodować bity konfiguracyjne w pliku HEX. Więc...
Witam! Jak w AVR-GCC zapisać tablice z danymi pod konkretnym adresem w pamięci flash procesora? Będę wymieniał te tablice za pomocą bootloadera w zależności od wersji urządzenia dlatego muszę mieć je zapisane pod odpowiednim adresem. Jest coś takiego jak dyrektywa "ORG" w asemblerze? Pozdrawiam
Zazwyczaj przed podaniem dyrektywy w asemblerze .db podajesz jeszcze .org 0x0000, która do umieszcza dane pod tym adresem (0x0000). Innymi słowy, wszystkie dane, które zostały zamieszczone po .org 0x0000, są dostępne od adresu 0x0000. Zauważ, że jeśli korzystasz z pamięci flash w uC np. Atmega8 masz tam organizację pamięci 2 bajtową (WORD), a wszystko...
Jak w tym kompilatorze można umieścić w określonym miejscu pamięci programu, kawałek kodu, jedną czy kilka funkcji. W asemblerze wystarczy dyrektywa .org a czy jest coś podobnego w AVR-GCC ?
Witaj! Nie musisz pisać deklaracji .DW. Możesz pisać deklaracje .DB. musisz pamiętać że Flash kontrolera to 2 bajty poj jednym adresem. Zapraszam do lektury http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/resources/prod_... Nie ważne jakiego kompilatora uzywasz gdyż jest dla danej rodziny kontrolerów...
Poprobowalem z asemblerem ASM51 Metalink, ktory bodajze jest w dziale download. Kilka kosmetycznych poprawek i kod sie asembluje. Jest jednak jeden problem. Jak przenisolem czesc kodu do drugiego pliku i dolaczalem ten plik dyrektywa &INCLUDE(plik) to komplilowalo sie co prawda bez bledu, ale w chwili proby wykonania kodu ktory byl w czesci dolaczanej...
Jedyne, co ja mogę poradzić - to odesłać na stronę "Elektroniki dla Wszystkich": [url=http://elportal.pl/index.php?module... - znajduje się tam cykl programowania '51. Co prawda opisywany jest zestaw startowy, ale i bez niego można ten kurs wykorzystać - opisy instrukcji asemblera są...
Kazdy procesor operuje na liczbach. Dla niego nie jest zrozumiale P1, zrozumiale jest dla Ciebie, czlowieka. Ow tajemniczy plik z definicjami to wlasnie nic innego jak tlumacz. Zawarte w nim sa "tlumaczenia" z jezyka ludzkiego na liczby tak zeby kompilator wiedzial ze piszac P1 masz na mysli liczbe 90 hex. Takie pliki sa potrzebne zawsze jesli chcesz...
A możesz trochę bardziej szczegółowo? Kod asm można wstawić na dwa główne sposoby - dla prostego kodu dyrektywą asm, dla bardziej skomplikowanego można stworzyć osobny plik z rozszerzeniem .S (koniecznie wielkie S) i dołączyć go do projektu. Są pewne odmienności pomiędzy asemblerem gcc a tym z atmela, ale jeśli kod nie ma być za bardzo przenośny to...
ad.1 dyrektywa dla kompilatora avr-as-gcc, że następne linie dotyczą pamięci programu. ad.2 Cyfry po komentarzach to jest ilość cykli procesora, przypadających na wykonanie danego rozkazu. lpm - load program memory - za pomocą rejestru Z (ZL-r30:ZH-r31), służącego do adresowania, pobierana jest wartość z pamięci programu do rejestru r0 , w tym przypadku...
Zamieszczając w głównym programie CALL etykieta takiego podprogramu assembler nie sygnalizuje błędu Include we wszystkich językach programowania jakie znam, jest prostym wstawieniem Y a jakimś puncie Y. ale nie wykonuje podprogramu. Podejrzewam, że musisz zmienić diagnozę, albo ten kod pokazać. W asemblerze można zrobić dziesiatki błędów, ze kod jest...
Czy do bascoma da się władować wstawki w ASM ?? bo jak tak to bym się wreszcie wziął za asembler i napisał wstawki do obrobienia ram-u Jak najbardziej. Wstawkę asemblerową w BASCOMie rozpoczynasz dyrektywą $ASM i kończysz $END ASM np: Dim c as Byte $ASM Mov r0,#{C} ;address of c Mov a,#1 Mov (at)r0,a ;store 1 into var c $END ASM Print c End
Po prostu przychodzi moment kiedy zapanowanie nad kodem assemblera staje się uciazliwe i tu powinno wkroczyc C. Przyznam się szczerze, że nie ma dla mnie takiego momentu (może dlatego, że w kwesiach programowania jestem samoukiem i nie miałem tu szczególnych osób jako autorytetów które by mnie naginały w jakimś kierunku... ;)). W asemblerze też można...
DB Nie jest rozkazem procesora tylko dyrektywą kompilatora. A DPTR jest to 16 bitowy rejestr w 8051. Więcej szczegułów znajdziesz w dokumentacji 8051
:arrow: bolek Jeśli dasz kropkę, to asembler szuka po niej numeru bitu w bajcie, wszystko się zgadza, ale nie wszystkie asemblery "trawią" taki zapis. Jest to kwestia gustu, ale ja wolę nadawać bitom kolejne numery 0,1,2,3...17,18,19.... itd. i nie interesuję się w których "leżą" bajtach, dlatego używam dyrektywy BIT. Przy okazji pozdrawiam "sąsiada"...
1. Kontrola nad kodem w przypadku C jest niemal taka sama jak w asm. 2. C to jest w zasadzie "strukturalny asembler" :wink: i do mikrokontrolerów wcale nie trzeba go naciągać. Różne rodzaje pamięci w AVR narzucają konieczność kontroli - w asm także. I to jest poza standardowym C. 3. Dyrektywa "include" w C działa tak samo, jak w asemblerze, jeżeli ten...
Kolego, nie pisz, ze system edukacji jest zly. Nie jestes uczniem podstawowki tylko studentem a studiowanie to nie nauka tablczki mnozenia tylko nauka myslenia i umiejetnosc szukania... Na dobry poczatek (wszystko do znalezienia na elektrodzie): 1. Kawalek kodu obslugujacego wyswietlacz LCD (standardu HD44780), tryb 4-bitowy, napisany w C. Zeby go uzyc...
Wszystko jest ok, tylko pojawiają mi się takie błędy - mogę i z nimi dokończyć kompilację, ale wolę się upewnić, co oznaczają. Błędy: http://obrazki.elektroda.pl/2934146500_1... Dodano po 12 błąd ten oznacza "błędny znak", tylko ja tego znaku nigdzie nie widzę ani pomyłki Linia błędu jest zawsze ostania, cokolwiek tam bym umieścił Dodano...
dyrektywa $crystal nie wplywa na instrukcje LCD ... musialby to byc chyba jakas wstawka w asemblerze albo musialbym obslugiwac 8bitowe wejscie danych w LCD, ale nie za bardzo z instrukcji moge dojsc do tego jak to zrobic
Czy ktos uzywal wstawek asemblerowych w keilu? Uzylem dyrektyw #pragma ASM i #pragma ENDASM. Kompiluje sie le pokazuje warninga. Ktos wie jak go zlikwidowac? #include <sfr51.h> void main (void) { #pragma asm CLR P3.0 #pragma endasm P3_3=0; } warning: assembling .\testasm.src... linking... *** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_STARTUP...
Funkcja flush_cache moim zdaniem powinna unieważnić to, co jest w cache i tym samym doprowadzić do jego ponownego załadowania z DRAM. Zatem moje zmiany niby powinny być uwzględnione. Też tak myślę, ale to jest jedyne miejsce, gdzie cache mógłby być nadpisywany zgodnie z obserwacją, stąd moja sugestia. Poza tym do cache'u można pisać i o ile nie jest...
No dobra ale co jest z tym programem? Asm obrabiam w ramach utrudniania sobie życia i też nauki ;). To proponuję inną drogę: najpierw naucz się obsługiwać sprzęt w C/C++, a potniej jak już nie będzie on miał przed tobą tajemnic napisz te funkcje w asm w celach edukacyjnych. A tak ani nie znasz sprętu ani asemblera (w sensie dyrektyw, jak to się linkuje...
Dlaczego za tępy? Różnica tkwi tylko w dyrektywie - zamiast asm daj __asm i po krzyku.
BASCOM oczekiwanie załatwia sam i robi to korzystając z dyrektywy $crystal. Pisałem obsługę LCD w BASCOMie i żadnych dodatkowych opóźnień nie musiałem dawać. A tak w ogóle to nejlepiej napisać całą obsługę samemu w asemblerze =] Poza tym zauważ, że w drugiej linii użyłeś polskiego znaku, a LCD nie mają takowych, chyba, że sam zdefiniujesz, stąd mogą...
Mógłby ktoś potwierdzić że używane rozkazy in out mov nie modyfikują SREG ?? Panie kolego, bierzesz pierwszą lepszą z brzegu listę rozkazów asemblera do AVR i masz w ostatniej kolumnie jasno opisane która operacja jakie znaczniki zmienia w SREG o ile w ogóle zmienia ;)
Napisałem prosty program w C który rzekomo ma migać całym portem diod. Pisałem coś takiego w asemblerze wykorzystując przerwanie od timera. Nie ogarniam całkowicie keila dla języka C...Mam nadzieję, że pomożecie bo nie wiem co robię źle. http://obrazki.elektroda.pl/5176845800_1... Dlaczego kompilator nie widzi makra LPC_? jest tam też...
Witam Wszystko zależy ile masz zmiennych w programie. Jeżeli wystarczy Ci rejestrów to nie musisz rezerwować sobie dodatkowych komurek pamięci. Musisz też rozróżnić dyrektywy kompilatora od instrukcji asemblera. Mimo że wyglądają podobnie to nie działają tak samo. W Twoim przykładzie jeżeli bit 0 w r16 bedzie ustawiony to program ominie następną instrukcję...
Na podstawie zgromadzonych przeze mnie informacji, ściągnąłem z sieci program AVR Studio 4, znalazłem fajną stronkę z nauką typu zapal LED itp. uczę się ale nic mi nie wychodzi bo AVR Studio nie pozwala mi na uruchomienie wpisanych instrukcji assembler'owych i sprawdzenie jak działa, w tym wyświetla mi komunikat, że nie znalazł pliku hex - mimo, że...
asm("LDI R26,0xAA" "\n\t" "STS 0x2000,R26" ); asm("LDS R26,0x2000"); Dostępy na moje oko prawidłowe. Jeśli nie chcesz pisać reszty w asemblerze, musisz zawartość komórki RAM przeładować z/do zmiennej i dalej już operować nią w C Innym sposobem jest alokowanie sekcji danych w obszarze external SRAM (dyrektywami linkera), ale w tym Ci już nie pomogę,...
Czy procedurę o etykiecie "timer0" masz daleko od początku programu? A może jej w ogóle nie masz? W zasadzie dla procesorów o tak dużym Flash'u powinno się używać rozkazu "jmp", a nie "rjmp" (dlateg adresy w tablicy przerwań są co 2 bajty), ale tak jak napisałeś może też być, pod warunkiem, że nie zostanie przekroczony zasięg rozkazu "rjmp". Wówczas...
W ten sposób chyba nie można łączyć kodów z C i asemblera. Zazwyczaj kompilator języka C dopuszcza stosowanie dyrektyw preprocesora #asm #endasm pomiędzy które można wstawiać polecenia asemblera. Np. w C dla PIC firmy CCS przykładowy kod mógłby wyglądać następująco (z poziomu komend asemblera jest dostęp do zmiennych symbolicznych zadeklarowanych w...
Najprawdopodobniej plik źródłowy jest przeznaczony dla innego asemblera (najprawdopodobniej Keil), niż ten którym kompilujesz program (Metalink) i nie rozumie on tych dyrektyw (ERROR #23: Illegal or missing directive). Zajrzyj do manuala i zobac, jak powinny wyglądać właściwe dyrektywy i wpisz te poprawne.
Tzn ? Jak musze pokazac to kompilatorowi ? Wydawalo mi sie ze wystarczy odpowiednio ustawic SRL2..0, XMEM,SRW, itd... a co jeszcze zrobic z kompilatorem ? Uzywam (a raczej bede AVR Studio + chyba winavr do C) w asemblerze nic nie trzeba robic oprucz tych bitów. w językach wyższego poziomu należy natomiast zdafiniowac ilość ramu. w bascomie należy zaznaczyć...
ale skąd w ogóle kopiowanie tego jednego bajtu znajdującego się przed funkcją? o wskaźnik na funkcję musi być nieparzysty- ostatni bit zawiera informację o typie instrukcji asemblera. Spotkałem się z następującymi metodami umieszczania fukcji w pamięci RAM: przez dyrektywę preprocesora kopiowanie i tak następuje zapewne w startupie
Niestety laborki te mamy w asemblerze...przynajmniej ich początek. W języku C będziemy pisać niebawem na co ze zniecierpliwieniem czekam. Co do Twojej podpowiedzi, rozumiem, że cała operacja odbywała by się tak jak powiedziałem, czyli dwa przyciski wielokrotne klikanie jednego np zwiększa prędkość ? A w łopatologiczny sposób na delayach, jak wykonać...
Tak teraz czytam o tych rejestrach i pisze mi co innego o np R0, a co innego o AR0. Jako tako w przerwaniu kożystam z np R0, ale na stosł mogę posadzić AR0. Może tu jest coś nie tak? AR0...AR7 to nie rejestry mikrokontrolera, a specjalne symbole asemblera, oznaczające adresy rejestrów R0...R7. O tym z którego banku będą to rejestry decyduje dyrektywa...
Kolega z Łodzi to coś słyszał ale nie do końca pamięta. Nie zaśmiecam sobie pamięci tego typu szrotem. Algorytm na poczekaniu wyczytałem z sufitu. Ponieważ jest "bardzo szybki" może być użyteczny przy wszelkiego rodzaju konwersjach liczba/łańcuch zwłaszcza w układach wyświetlania wielkości fizycznych, gdzie w procesie kalibracji możemy wyliczyć i wpisać...
OK napisałem program w asemblerze. Skompilowałem go w symulatorze KEIL. Ale nie jestem pewien czy program jest dobrze napisany i czy będzie odpowiadał za to za co powienien. Jeśli jest ktoś, kto potrafiłby odpowiedzieć na to pytanie i wrazie jakiś usterek mogłby je poprawić byłbym wdzięczny. Pozdrawiam. KOD ORG 0000H ; Dyrektywa: adres instrukcji AJMP...
Witam wszystkich forumowiczów, Czy ma ktoś pojęcie w jak i sposób skorzystać z całych funkcji napisanych w asemblerze w języku C? Czy mógłby ktoś mi wytłumaczyć to w prosty sposób? Chodzi mi o to, czy muszę robić coś poza samym AVRStudio (jakaś może kompilacja plików asemblera)? Jak na razie to wiem tylko, że kod asemblera powinien być w pliku z rozszerzeniem...
To taki nawyk z C i asemblera :D . A poza tym to łatwiej manipulować rozmiarem stosu mając te informacje w programie, zamiast cały czas wchodzić w to okienko, gdzie to się zmienia. Jak podasz te informacje w programie to mają one priorytet nad tymi z okienka i tyle. Wgrywałeś ten program z moimi poprawkami do uC :?: Czy coś jest generowane na porcie...
Ja nauczyłem się dla AVR'ów asemblera. Znam dobrze C/C++ z programowania na PC i dlatego chyba nawet nie sięgne po C w wersji dla AVR'ów bo : widze, że nie da się zastosowac tej samej filozofi bo ze względu na mały rozmiar problemów był by to przerost formy nad treścią (skrajny przypadek : stosowanie klas), do procedur obsługi przerwań i tak trzeba...
Doczytałem się w książce Pana Góreckiego, że jakiś wpływ może mieć szybkość transmisji, ale ja z tego nic nie kapuję. Nie wiem jak to można zmienić w programie. Pisze w niej ".. maksymalna prędkość magistrali 1wire to nieco ponad 16 kilobitów na sekundę.." jak to się ma do kwarcu 16Mhz .? znowu doszukujesz się problemu nie tam gdzie trzeba - odpowiedź...
Projekt mam napisany w języku "C". W asemblerze mam kilka funkcji, które nie są mojego autorstwa. Funkcje asemblerowe mam zapisane w pliku z rozszerzeniem .s,który jest dołączony do projektu. Tablice w asemblerze STable i SiTable mógłbym skopiować do dowolnego pliku z rozszerzeniem .c i użyć dyrektywy __attribute__((space(prog), address(0x200))) lecz...
Mam pytanie czy komuś udało się odczytać stan wyjsca pisząc program pod Attiny11/12 w Bascomie. Z tego co znalazłem na zagranicznym forum to sam twórca Bascoma napisał że attinki najlepiej nadają się do programowania w asm. Ja nieznam asemblera i chciałbym uzyskać pomoc z forum. Czy ktoś potrafił by napisać wstawkę asemblerową odczytującą stan portu...
Nie ma coś takiego jak podstawy C dla avr. C jest C. I najpierw warto zapoznać sie z tym jezykiem. Tu jest jakis link jak kumasz cos po angielsku: http://lib.daemon.am/Books/C/ Jak nie kumasz to musisz szukać jakis innych kursów, albo ksążek Jak juz bedziesz wiedział o co chodzi w C, choć przyznam że ja zaczynałem od asemblera, bo warto wiedzieć co...
Po pierwsze, z doświadczeń kolegi wiem, że 1 - wire w BASCOMie działa źle (lub wcale) z wewnętrznym oscylatorem. Pewnie wymagalepszej stabilności częstotliwości ze względu na wymagania czasowe 1 - wire. Po drugie, sprawdź czy ustawiłeś fusebity na odpowiednią częstotliwość oscylatora. Po trzecie, nie widzę żebyś wrzucił dyrektywę $fosc (a to ważne dla...
Jeden przykład: #define M 2+3 X= M*M; Jaka będzie wartość X po tej operacji? Ano nie będzie 25, jak ktoś by podejrzewał tylko: X=2+3*2+3 = 11 Zaskoczenie? Nie, po prostu preprocesor przy obliczaniu X zrobił tylko bezmyślne wstawienie za M tego co było w dyrektywie #define. Dlatego zastosowałem nawiasy... Dlatego można sobie wstawić do programu rozwinięcie,...
Zatem należałoby kolegów nieco uświadomić: - CLS TEXT | GRAPH jest dla wyświetlaczy graficznych posiadających wbudowany generator znaków i tym samym posiadający dwie strony pamięci: jedna na grafikę, drugą na tekst. - CLS jako, że jest komendą niezależną przywraca status sterownika tak, że korzysta on później z pamięci DATA RAM i wszystko co jest później...
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....
WITAM na wstepie chcialbym zaznzczyc ze jestem poczatkujacy mam program napisany w asm i potrzebuje "przetlumaczyc" go na język C++... jest to rozruch silnika... zwracam sie do ludzi znajacych oydwa jezyki Ja troszke znam C++ ale nie znam asemblera .... wiec proszę o pomoc... potrzebuje także dopisać do tego programu ŁAGODNY rozruch tzn. silnik sie...
Tdv: Program pisze w asemblerze i może dlatego łatwiej jest coś nadpisać. Moja "deklaracja" polegała na przypisaniu kokretnej komórki pamięci RAM (lub części obszaru) pod określoną nazwę (za pomocą dyrektyw EQU). Takie postępowanie doprowadziło do tego, że na bufor odbiorczy przeznaczyłem obszar o adresach od 20h do 2fh, który jest również obszarem...
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...
no tak zle napisalem.....20 bytes to jeden pomiar, ale w ciagu miesiaca wykonam ich kolo 50-200.(zalezy od ustawien uzytkownika) Stad pamiec 16 KB. Dlatego tez chce uzyc zewnetrzenej pamieci, bo w wewnetrznej nie pomieszcze tych danych. Wewnetrznej beda zawarte jedynie stringi ktore bedzie wyswietlal LCD i ustawienia programowe. Pamięć AT24C16 to jest...
po pierwsze po dyrektywie .cseg podaj .org 0 a program niestety leci ci w maliny bo troszeczkę namieszałeś. gdy już zaczyna się pętla główna programu main: to sprawdzasz poleceniem SBIS PINC, 0 czy przycisk jest naciśnięty i jesli tak czyli PINC0 zwarty jest do masy to robisz skok do etykiet zwieksz i do tąd w takich rozważaniach jest ok a delej to...
Tu raczej średnio na jeża pomogę, bo nie lubię wynalazków takich jak BASCOM. Piszę głównie w asemblerze i trochę w C. Jedyne co zrobiłem, to bardzo niedokładny zegar na AVRki (taki test LCD ;) - nudziło mi się kiedyś :] Oto kod: $crystal = 8000000 Dim Godziny As Byte Dim Minuty As Byte Dim Sekundy As Byte Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4...
Wrzuc tu ten plik hex ze zlym rozmieszczeniem... genetix: chyba cos ci sie pomylilo, plik hex to plik hex i dyrektywa .org nie ma nic do hex'a, bo jej tam w ogole nie ma (zostala juz wczesniej zinterpretowana przy kompilacji, a dokladniej to przy linkowaniu). Byc moze uzyta jako wstwka asemblerowa w BASCOMie jest pomijana, ale to dwie rozne sytuacje...
W baskomnie jest plik AT15def i to jest właśnie ATtiny15. uK ten nie posiada ramu! Dlatego musimy użyć dyrektywy „$TINY”. Jednak i tak nie wszystkie funkcje bascomowe będą działać. Z mojego doświadczenia wiem, że na pewno nie będą działać procedurki wait, gdyż używają one STOSU, którego ten uK nie posiada. Najlepszym rozwiązaniem jest przejść...
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
Witam, Mam problem związany z funkcjami napisanymi w Asemblerze, zawartymi w pliku .S. Kompilacja projektu w Atmel Studio 6.2 nie przebiega prawidłowo ze względu na błąd: Error1expected '=', ',', ';', 'asm' or '__attribute__' before ':' token A chodzi tu o linijkę w której jest pierwsza funkcja, załóżmy[syntax=avrasm]Funkcja1: nop ret[/syntax] Przy...
Nie wnikając specjalnie w twój kod. W asemblerze komendy IN OUT przekazują dane między rejestrami ogólnego przeznaczenia, a obszarem I/O. IN - sczytuje wartość z rejestru I/O do rejestru OUT- zapisz na port daną z rejestru roboczego np. ldi R16, 0x0F ;załaduj rejestr 0b00001111 out PORTB, R16 czyli tłumacząc na C PORTB = 0x0F; a po komunikacie można...
Witam. Również piszę sporo w assamblerze jednak jeszcze nigdy nie używałem makr i mam kilka pytań odnośnie ich używania 1) jak przeskakuje się do wykonania makra ?? 2) z tego co mi się wydaje to pliki inc które można znaleźć w tym temacie należy dodać d programu przy pomocy .include ?? Jeśli tak to czy wszystkie zawarte w tym pliku makra zostaną skompilowane...
6. Czyli zamiast EQU jak zwykłem to robić, mam pisać .equ ? 7. Jest jakaś lista rozkazów działająca z AVR Studio ? Bo co drugi rozkaz mam zaznaczony na niebiesko :? 6 . Klawisz F1 == Help w wykazie dyrektyw znajdziesz komplet informacji o ich składni + przykłady np. Syntax: .EQU label = expression 7. Informacje o liście rozkazów w helpie i w datasheetach...
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, jako że należę do starszej grupy elektroników i całe życie programowałem mikrokontrolery w Asemblerze, postanowiłem nauczyć się programować w języku C. Wybrałem mikrokontroler PIC jak w temacie gdyż dobrze go znam i wiele programów w asemblerze napisałem pod ten mikrokontroler. To są moje pierwsze kroki w C więc zaczynam od najprostszych rzeczy,...
Właśnie wrzuciłem do avr studio prostą, pustą pętlę for i rzeczywiście instrukcje które tam kompilator bascoma nawstawiał to przyprawiają o zawrót głowy. Nie ma co się dziwić, że później taki wielki kod powstaje. I rzeczywiście pętla się nie kończy, ani taka z dekrementacją ani taka z inkrementacją, czyli spokojnie można sobie odpuścić te iram'y. Bascom...
$NOXREF $NOSYMBOLS $NODEBUG $PL(65535) $PW(106) $TT(2051 obsluga przemiennika SR2W) $NOMOD51 $NOLIST $INCLUDE(REG535.ASM) $LIST i drugie zrodlo $NOXREF $NOSYMBOLS $NODEBUG $PL(65535) $PW(106) $TT(2051 obsluga przemiennika SR3XX) $NOMOD51 $NOLIST $INCLUDE(C:\ASM\51\REG2051.ASM) $LIST Darek Sa to dyrektywy, ktore podczas kompilacji wlaczaja lub wylaczaja...
maszyna dyrektywa dyrektywa maszynowa dyrektywa maszynowy
prowadnica piła stołowy tda2030 tranzystory wiena mostek
sprawdzić moduł skuter kymco drukarki xerox firmware
Lokalizacja zaworu PCV w Ford Transit Connect 1.8 DI 2003 Lokalizacja pliku klucza fingerprint w OpenATV