Makroinstrukcja jest 'wklejana' a podprocedura wykonywana poprzez skok. Makro jest szybsze (mnie instrukcji, nie trzeba nic zapisywać na stosie) ale kod wynikowy jest dłuższy (bo za każdym razem jest umieszczany).
Nie do końca rozumiem co masz na myśli. Cała magia RISC-V to skalowalność. Najpierw musisz kogoś nauczyć co to jest procesor i co to jest komputer. Potem trzeba pokazać jak działa procesor, w jaki sposób są budowane instrukcje i jak przebiega proces ich wykonywania. Dalej - jak to wszystko tworzy język maszynowy, na bazie którego powstał asembler,...
Mała próbka możliwości AVRStudio :D
... Sorry za moją ignorancję może to jest aż tak proste, że niepotrzebnie pytam ale ... może znajdzie się ktoś chętny mi pomóc Czy poniższe makro jest bardziej czytelne , jeśli przypomnę że obliczenia dotyczą milisekund , których w sekundzie jest 1000 , a znamy ilość cykli oscylatora na sekundę :?: .MACRO Laduj_Licznik ****************************************...
ogolnie do przerwan to interrupt z numerem na koncu funkcji ( 0 - adres 0x03, 1 - 0x0b itd) jest w pdf o kompilatorze. do nopa jest jakies makro chyba _nop() ale nie pamietam dokladnie tylko trzeba biblioteke dolaczyc. void przerw0(void) interrupt 0 { ; } mozna jeszcze dodac using i potem numer banku rejestrow ktore beda dla tego przerwania...
"zmienna" musi być typu unsigned char (8bit) a "adres" - unsigned short (16bit). Możliwe, że trzeba zmienne poprzedzić jakimś prefiksem, zajrzyj do manuala... ;) Spróbuj też pisać tylko jeden rozkaz asemblera na makro __asm__ . Z reguły w asemblerze x86 wejście jest z prawej strony... Przykład w masm32 : OutPort proc lpOutByte:DWORD, PortAddr:WORD...
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...
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....
fp_flashconst: LPMRdZpp(rB3) LPMRdZpp(rB2) LPMRdZpp(rB1) LPMRdZpp(rB0) RET LPMRdZpp to jest makro zdefiniowane tak: #define LPMRdZpp(Rd) \ LPM \ MOV Rd,R0 \ ADIW ZL,1 czyli linijka LPMRdZpp(rB3) daje kod: LPM MOV rB3,R0 ADIW ZL,1 Takie są moje domysły bo co ten kod ma robić to nie mam pojęcia. Bawiąc sie w detektywa: LPMRdZpp = LPM - load program...
Koniecznie? to dosć kłopotliwe, chyba, że przyjmiesz pewne założenia... Po pierwsze musisz otworzyć plik. Następnie znak po znaku skanować i w przypadku napotkania cyfry - dodać ją do liczby, a w przypadku działania - zapamiętać je. Następnie odczytujesz drugą liczbę w analogiczny sposób. Na koniec wykonujesz działanie. Co to za GetInt i PutStr? Makra?
Etykietami są: kod dane start petla koniec - możesz te nazwy pozmieniać, byleby nie trafić w jakąś zastrzeżoną. Dane (które są puste) można wywalić (z assume, i linie segment i ends). Można by (o ile assembler uznaje makra - MASM i TASM uznają, parę innych też) zdefiniować makro:[syntax=x86asm]dos macro func mov ah,func int 21h endm[/syntax]i wszędzie...
Szanowny kolego Andrzej_17 (te 17 to pewnie wiek ??) Widac ze jestes jeszcze mlody i brakuje Ci doswiadczenia (to bez zadnych zlosliwosci) zapewne Twoje projekty nie sa zbyt zaawansowane skor nigdy nie musiales siegnac po asembler. Asembler musi znac kazdy doswiadczony programista. Sprobuj napisac program czasu rzeczywistego z kilkoma zrodlami przerwan,...
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ść...
Witam Przy okazji tworzenia makr do asemblera, została odkryta metoda kolorowania słów w AVR Studio. Adres do tematu: http://www.elektroda.pl/rtvforum/topic66... PS. Dzięki za zauważenie mojego avatarka.
Problem 1, jak powiedziec debugerowi, ze do procesora mam przylaczony kwarc np. 8MHz. Uruchamiasz symulację, nastepnie Debug/AVR Simulator Options (Alt+O) Problem 2, Nadal debuger nie lubi sie z dyrektywa .ecode Może to dlatego, że AVRasm nie posiada takowej dyrektywy ? Na otarcie łez jest .eseg ;) Przykład : #define DEV_MODE_MIN1 #define DEV_MODE_MAX2...
BoskiDialer i Freddie Chopin -> fakt - z tym mnożeniem rozumiem 1<<KHZ2MS(27) zgadnij co z tego wyjdzie? <: oj ciężko mi zgadnąć - nie mam zielonego pojęcia co to zrobi - jakieś przesunięcie bitowe? - nie , narazie to dla mnie czarna magia takie zagadki a tak na marginesie powiem tylko, że chodzi mi żeby tą wartość obliczył kompilator oczywiście...
Pytanie jak zrobić przeszukiwanie kolejnego indeksu po stwierdzeniu, że pierwszy jest nie poprawny? Bez modyfikacji funkcji Lookdown w bibliotece mcs.lib , raczej nie ma możliwości. Jeżeli znasz asembler możesz zmodyfikować funkcje _LOOKDOWNBYTE i _LOOKDOWNINT . Można też wykorzystać instrukcje RESTORE i READ do przeszukania tablicy: [syntax=basic4gl]$regfile...
No dobrze - o matko (sorki) moja kurza ślepota ale zwrócę uwagę na coś innego mocno niepokojącego w twoim kodzie. On się cały czas resetuje po przerwaniu. Po pierwsz po co ci cli() i sei() w przerwaniu (przecież wyłączenie innych przerwań po wejściu w każde przerwanie dzieje się z automatu) ale już wplecenie rozkazu: reti(); to wyciągnięcie dywanika...
Zakładam, że asembler x86... FAILED i D3DADAPTER_DEFAULT to zapewne makro i jakaś stała (jaka?) Po kolei: 1. g_pD3D to wskaźnik (adres) na strukturę/obiekt (jaką?) 2. do tego wskaźnika dodaj offset pola GetAdapterDisplayModel w w/w strukturze/obiekcie. 3. otrzymasz adres funkcji przyjmującej 2 parametry - drugi parametr to adres obiektu/struktury d3ddm....
Wygląda to tak,mam licznik od 0 do 255 na jednym z rejestrów. Wysyłam sobie to do PGA2311 i ustawiam głośność. Problem polega na tym że chciałbym wyświetlić wartość wzmocnienia na LCD. Obsługę LCD mam zrobioną. Mogę wysłać tekst lub pojedynczy znak. Wzór na wzmocnienie jest taki: Wz = 31,5-((255-n)/2). gdzie n to wartość licznika. Pierwszy problem jak...
albertb --> nikt nie pojeździł a przynajmniej ja nie miałem takiego zamiaru, tylko chciałem zwrócić uwagę na oczywiste różnice. Podyskutować chyba zawsze można? A ten przykład , który kolega podał jest bardzo nieszczęśliwy i wręcz wg mnie kolega sam przeczy sobie i strzelił trochę jak kulą w płot niestety. Nie chodzi przecież o jakieś czasem nawet specyficzne...
No więc tłumacząc kod na AVRStudio, nie zastanawiałem się nad takim szczegółem, że adres ładowany do ZL:ZH powinien być 2 razy wiekszy od adresu etykiety, ponieważ podstawowy rozmiar słowa rozkazowego w AVR wynosi 16bit. Ja sprawdzałem tylko, czy kompilator nie ma problemów z kodem, przyjmując, że autor projektu ten kod przetestował. Możliwe, że asembler...
Witam Dlatego nie piszę w C tylko w asemblerze. Korzystając z makr pisze się dość szybko i przyjemnie, jedyną wadą asemblera to duże trudności przy późniejszych zmianach w kodzie.
Powinno dać się to zrobić za pomocą definicji i makr, ale już dawno nie korzystałem z asemblera w pełnym wymiarze. Obecnie w momentach krytycznych stosuje tylko wstawki asemblerowe w postaci kilku poleceń lub procedur napisanych w ASM, resztę pisze w C. Jednak [url=http://www.atmel.com/dyn/resources/... dokument powinien Ci...
Witam Program napisałem w asemblerze używając makr. Kod źródłowy jest tu: http://forum.mikrokontrolery.net/viewtop...
Amatorzy i/lub poczatkujący + asembler? Po co?! Do prostych projektów bez uczenia się podstaw znacznie lepsze od BASCOMu są "obrazkowe" (schematic-based software design) systemy programowania typu ST-REALIZER. Amatorzy i/lub poczatkujący + BASCOM ? Po co?! Natomiast jeśli ktoś mi pisze, że nad projektem asemblerowym powyżej xxxx linii nie da się zapanować...
Typ bool masz też zdefiniowany w stdbool.h. Zdefiniowanie zmiennej jako bool czy _Bool nie spowoduje, że dostęp do niej będzie w jednej instrukcji. AVR nie ma po prostu takich instrukcji. Chyba, że to nowy rdzeń XMEGA, ale nawet wtedy odpowiednie operacje trzeba by zrealizować jako makra/funkcje w asemblerze.
Prawda, niemniej zaawansowane makroasemblery też coś optymalizują wstępnie (jak tmf zauważył skoki, albo nawet kolejność rozkazów jeśli w danym fragmencie nie jest krytyczna, a lepiej wykorzysta potok). Inna sprawa, że z tego co kojarzę assembler AVR takich możliwości nie posiada (bo i potok prawie żaden więc nie ma zbyt wielkiego pola do popisu). I...
Do TCNT0 ładuje 0. Na początku programu mam: .MACRO TTEST in r22,TCNT0 ; get timer value cpi r22,(CLK/64 * (at)0 / 1000000); test timer value depend on CLK and ; parameter value in microseconds .ENDMACRO Co owe makro robi?
Napisz dokładnie jak to ma wyglądać i czy to ma być w trybie tekstowym czy graficznym. Ja osobiście polecam pisanie programów asemblera w notatniku, bo korzystanie z tego co wygeneruje kompilator C mija się z celem. Bo jak już wybieramy asemblera to chcemy napisać program jaknajbardziej optymalny. Najprostszy program w asemblerze typu "Hello World"...
banksel nie jest mnemonikiem asemblera a makrem. Aby go uzyc w Twoim przypadku musisz zapisac go w nowej linii (enter pomiedzy MAIN a codem). MAIN banksel TRISIO BF
Można to zrobić jako macro lub podprogram choć wygodniej jako makro i wywołać je z odpowiednim parametrami masz wtedy uniwersalną procedurę która możesz wykorzystać do dodawania dowolnych zmiennych
:arrow: elektryk ekhm, bardzo dogłębnie wnikasz w kod... czyli mam rozumieć, że cbr jest swojego rodzaju "makrem" instrukcji andi ? Ja bym to nazwa że to jest instrukcja asemblera a nie procesora. W sumie to określenie makro też pasuje, ale to by było makro "wbudowane", bo jest traktowane jako instrukcja.
Te makra działają w asemblerze od AVR Studio, używam go, odpowiednio oskryptowanego, w wine pod Linuksem... Co masz na myśli poprzez "czysty asembler" ? Przecież nie do tego temat się sprowadza, żeby klepać cyferka po cyferce, tylko mieć maksimum możliwości przy jak najlepszej przejrzystości kodu i małym koszcie czasowym. Spróbuj może z nawiasami, tak...
Wiadomo ze program napisany w C lub innym programie jest zamieniany na instrukcje asm, które są odpowiednikami cyfr. Jakich znowu cyfr!?! Kod ASM i kod maszynowy to nie są pojęcia tożsame! Owszem mnemoniki ASM odpowiadają kodom maszynowym (choć są też makroasemblery w przypadku których nie jest to prawdą). Swoją drogą nie liczyłbym, że wiele osób w...
Z asemblerem sobie poradzę , zawsze mogę dodakowe instrukcje dodać jako makra w ASEM-51 , ale przydałby się jakiś emulator.
Ponieważ kompilator też potrafi liczyć, mój pomysł jest taki (sprawdzony pod asm, być może w C potrzebne jeszcze poprawki) - potrzebujemy konkretny odstęp czasu, więc zadajemy go kompilatorowi, łącznie z wybranym preskalerem, po co się zastanawiać po jakim czasie nastapi przepełnienie, kiedy można to kontrolować (oczywiście w granicach zadanych przez...
Politechnika Śląska: Elektronika i Telekomunikacja Na poczatek mata i fiza to podstawa. Później króluje eta, eta i jeszcze raz eta. Oto przedmioty które już miałem: semestr 1: Algebra, analiza matematyczna, fizyka, podstawy informatyki, technika a środowisko,energia elektryczna i bezpieczeństwo użytkowania semestr2:analiza matematyczna,fizyka, podstawy...
Na etapie optymalizacji kompilator zamienia instrukcje RMW na atomowe SBI/CBI, w porcie gcc dla AVR jest specjalna sekcja optymalizacji tego dotycząca. Co do rejestrów umożliwiających realizację operacji logicznych na sprzęcie to tak właśnie jest w przypadku GPIOR, problem raczej tkwi w samym języku c, który jak wiesz nie ma tego typu konstrukcji i...
Czytaj ze zrozumieniem. Opuściłeś sekcję rejestrów wyjściowych, która tutaj powinna być pusta: asm volatile("sbi %0, 0x07" : : "I" (_SFR_IO_ADDR(PORTB))... Zresztą po co komu taka wstawka? Przy optymalizacji -Os lub -O2 avr-gcc generuje dokładnie taką samą instrukcję dla kodu PORTB |= 0x07; Pozdrawiam,...
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...
Co do ciekawostki to powiem że hbbrbasic jest napisany w c i nie jest tzw os'em tylko makro kompilatorem - to znaczy że podstawia za wpisane komendy określone procedurki pisane w asm. I co z tego? Porownaj jakosc kodu generowanego przez takiego Basica i jakikolwiek kompilator C. Zamiana kodu jezyka wysokiego poziomu na asembler to nie wszystko Oprócz...
zamiast: if (bit_is_clear(PINC,PINC1)){} możesz napisać: if(!(PINC && PINC1)){} PINC1 musi być liczbą typu 0b00001000 gdzie pozycja jedynki oznacza numer pinu. Ale myślę, że pierwsze rozwiązanie wygeneruje krótszy kod, bo to makro ze wstawką asemblerową (1 rozkaz). Jeśli mimo to chcesz krócej - napisz sobie makro typu: #define BCLRC(x) if (bit_is_clear(PINC,x))...
Ja osobiście nie mam problemów z przenaszalnością kodu w firmowym asemblerze Atmela, nawet pomiędzy różnymi wersjami rdzenia, gdyż są w nim wbudowane definicje pozwalającej na asemblację warunkową. Przykład - instrukcja lpm , zamiast której używam następujące makro: .macro LpmPlus #if ((__CORE_VERSION__==V2E)|...
Asembler- jesteś dogmatykiem języka wysokiego poziomu jakim jest asembler. Ostatecznie jeszcze występują w przyrodzie czytniki taśm perforowanych ośmiobitowych. No i w czymś takim wyperforuj kod. A C- to jest makroasembler. A Bascom i inne Basic-e to są języki wysokopoziomowe. Podobnie jak Pascal i inne. Ze wszystkimi zaletami i wadami takich języków....
Cześć. Mam program i nie mogę zrozumieć dlaczego skacze mi do: 291: return pgm_read_byte(&(local_lcdspec (at)00000165: lcd_PrepareSpec 309: memset(lcd_spec, 0xff, sizeof(lcd_spec)); +00000165: ED81 LDI R24,0xD1 Load immediate +00000166: E091 LDI R25,0x01 Load immediate +00000167: EF6F SER R22 Set Register +00000168:...
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...
Można spojrzeć do kodu asemblerowego dla pewności, ale to chyba powinno zostać najpierw przetworzone przez preprocesor żeby rozwinąć makro, a potem zoptymalizowane do właśnie takiej jednej instrukcji maszynowej przez kompilator.
spróbuj zamienić poniższe makro (dla AvrStudio) na wstawke asemblera: .macro mIDelay ; macro Instructions-Delay .if (at)0<25 .error "minimum 25 cykli oczekiwania" .endif push r16 push r17 push r18 push r19 ldi r16,(((at)0-19)/6) & $FF ldi r17,(((at)0-19)/6) >> 8 & $FF ldi r18,(((at)0-19)/6)...
Perler: w twoim kodzie jest dużo niedociągnięć.. funkcje Delay powinieneś wywołać przez 'rcall', tu zaś przychodzi brak stosu i brak 'ret' na końcu. w samym Delay widze odkładanie 4 rejestrów (gdzie?) ale niewidze ich zdejmowania ani pętli do opóźnienia.. po wystawieniu wartości 0x00 na porta odrazu dokonujesz skoku do początku pętli i odrazu zmieniasz...
Dzień dobry, To mój pierwszy post tutaj, więc jeśli pomyliłem działy lub coś wykonałem niepoprawnie to proszę od razu mnie poinformować - usunę lub przeniosę swój temat. Tak czy inaczej... Asemblerem zajmuję się od niedawna i właśnie próbuję napisać program, który będzie pobierał liczbę dodatnią z klawiatury, zapisywał ją do zmiennej, a następnie dodawał...
Witam kolegów. Czy istnieje łatwy sposób zapisu liczb 24 i 36 bitów do rejestrów podobny do tego: ldi R16,LOW (65000) ldi R17,HIGH (65000) Pozdrawiam Marek Poczytaj o makrach
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...
Może cofnijcie się w czasie i powiedzcie jak wy to zaczynaliście. Ja zaczynałem od asemblera(ten od Atmela dla AVRów obsługuje makra i definicje stałych, posiada całkiem spory podręcznik pomocy z opisem funkcjonalności) i not katalogowych.
Jako że asembler jest z reguły samodzielnym niezależnym, i nie związanym z IDE programem wszelkie etykiety i makra są jego wyłaczną domeną. Generalnie etykiety i marka to jest inna droga przy kompilacji ale te rozważania wkraczają w naukę o kompilatorach/translatorach. Jeżeli assembler jest makto-assemblerem (dziś trudno o inny) to wszelkie maka są...
Ja mam taki pomysł : title str.asm ;(at)(at)(at)(at)(at)(at)(at)(at)(at)(at... Makro EndProcess MACRO ExitCode mov ah, 4ch mov al, byte ptr ExitCode int 21h ENDM InitRegs MACRO mov ax, dane mov es, ax mov ds, ax mov ax,_stack mov ss, ax ENDM ;(at)(at)(at)(at)(at)(at)(at)(at)(at)(at...
Witam, mam takie makro: #define putfslx(val, id, flags) asm volatile (stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val)) stworzyłem sobie funkcję w której używam tego makra: #define FSL_CONTROL c void ANNA_InitWeights(u8 FslId){ int i; putfslx(0x00000002, FslId,...
mirekk36: "o kompilowaniu ASM i może co? jeszcze jego optymalizacji?" Jak jesteś na 100% pewny że "Chłopów" napisał Słowacki- to sprawdź. "Program stosowany do przetwarzania z zapisu źródłowego na postać binarną jest kompilatorem..." Jeśli używasz mnemoników w ASM-to potem ten plik tekstowy kompilujesz do postaci 0-1. Nie twierdzę że taki program musi...
Witam... Próbuje przystosować gotowy projekt pod AT90USB1287... W orginale był na ATmega128... Z większością błędów już sobie poradziłem pozostały dwa, chociaż w obu przypadkach rozbija się o to samo... Kompiluje projekt w AVR-Studio SP4 i GCC 20060421... SPI_SEND: -> SPCR,SPE ;enable SPI SPCR out SPDR,r24 ;load byte in SPI data register SPI_SEND_0:...
http://obrazki.elektroda.net/76_12822275... Atmega (z dołożoną pamięcią zawnętrzną) jak najbardziej nadaje się do obsługi matryc stn i tft. Mówiąc dokładniej obsłuży każdą matrycę stn - także kolorową natomiast co do tft to maksymalna rozdzielczość matrycy to 640x480 - przynajmniej tyle udało mi się uzyskać na dzisiaj. Większość rzeczy można...
Bascom to świetne narzędzie do nauki bo szybko widać efekty i łatwo zobaczyć Hello World ;) niestety moim zdaniem nie nadaje się on do pisania złożonych programów bo jego funkcjonalność jest mocno ograniczona i użycie sprowadza się do wstawienia wstawek asemblerowych lub wycieczki do rejestrów . Pomijając to wszystko można jeszcze trafić na jedną dolegliwość...
Jeśli mogę coś doradzić, to na początek nie staraj się porównywać asm do C, porównując krótkie fragmenty kodu możesz poczuć się sfrustrowany. Zacznij pisać w C, a optymalizacje zostaw na później, wtedy kiedy będą naprawdę potrzebne. Jak rozwiązać problem przy pomocy makr możesz podglądnąć w Atmel Studio klikając prawym przyciskiem myszy na GPIOR i patrząc...
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...
Oj panowie prosta sprawa a wy tak kombinujecie... I dodatkowo nie wiem po co podajecie rozwiązania dla asemblera kiedy kolega pisze w C i jest początkujący... loop_until_bit_is_clear to makro z pętlą dlatego program się zatrzymuje... Trzeba to zamienić na normalny warunek... if(bit_is_clear(PINC,1)) { sbi(PORTB,0); lcd_puts("zgaszona\ndioda...
(at)fachman1964 czyli co? Naprawiło się? Może zrób ponownie zrzut z EEPROM, ciekawe czy coś tam nowego zostało zapisane. Poprzednio były same jedynki pod adresami 6,7,8 i 9. Dodano po 1 Na moje oko początkującego w jezyku C i znajomości w asemblerze jedynie sei, cli i pop sytuacja z zakłóceniami na INT w tym projekcie jest mało prawdopodobna. Nawet...
janbernat to był strzał w dziesiątkę!!tu był błąd wpisałem tak jak mówisz i wszystko działa poprawnie jak w C. Niestety mój angielski jest za słaby a tyle razy przeglądałem instrukcję i nie zauważyłem tego zdania :) dobrze, że jest elektroda :) Mam pytanie do Nawigator'a , czemu służy zapamiętywanie SREG na stosie?bo bez tego działa, domyślam się,...
Fajnie, że podzieliłeś się projektem. Czy próbowałeś zbliżyć się do maksymalnej możliwej szybkości komunikacji z wyświetlaczem OLED, czyli 400 kHz? Jakiego asemblera używasz? Czy tam nie da się definiować makr? Dzięki nim możnaby poprawić czytelność, eliminując wstawki kodu maszynowego (mam na myśli .dw $C000,0 zamiast rjmp + nop) i powtarzające się...
Jeśli chodzi o AVR: Zapis stałoprzecinkowy robiony jest wg. dwóch formatów: 2^7, 2^6, 2^5, 2^4, 2^3, 2^2, 2^1, 2^0 w zapisie -1, 2^{-1}, 2^{-2}, 2^{-3}, 2^{-4}, 2^{-5}, 2^{-6}, 2^{-7} zapis 2^{-8}...2^{-15} teraz, aby załadować liczbę tego typu (czyli z przedziału (-1..1)) do rejestru najlepiej posłużyć się wbudowaną funkcją asemblera (w wersji v2):...
"A kolega mirek zapomniał jak to jest być "zielonym" i zadawać oczywiste pytania." szymtro -> z całym szacunkiem, ale chyba coś ci się pomyliło. Właśnie bardzo dobrze rozumiem początkujących i dlatego starałem się tak w miarę dokładnie wytłumaczyć gdzie leżą przyczyny błędnego działania programu kolegi autora wraz podpowiadaniem jak to można naprawić...
Dawno temu programista ,to był człowiek z wiedzą ,który znał asembler i potrafił myśleć binarnie . Ale że człowiek sobie upraszcza to dziś mamy arma w czajniku który przyspiesza mało optymalny bo uniwersalny kod. Rzeczywiście działa szybciej na 100MHz zegarze w stosunku do starej 0C51 która miała cykl rozkazowy 12 taktów zegara czyli przy zawrotnych...
Hmmmm... Myśle ze kolega mowiac "czysty asm" mial na mysli same assemblerowe mnemoniki, więc się nie czepiaj. A co do programu to pisałem i powiem, że jeżeli program ma być duży to moim zdaniem nie opłaca się pisać do w asm. Chyba, że wolisz siedzieć przed komputerem zamiast iść się spotkać z przyjaciółmi lub na :sm21: sobie pójść. No i OK, przyjaciele...
Pracuję właśnie nad przeportowanem kodu TinyBasica pod moją konstrukcję. Do tworzenia kodu maszynowego (plik .hex) używam asemblera ze strony asm80.com. Niestety nie chce on rozpoznać makra znajdujacego się na początku kodu: Unrecognized instruction DWA Line: 58 Myślałem, że to wina konwencji nazywania etykiet (brak dwukropka), jednak po wprowadzeniu...
Jakieś 2 albo 3 lata temu była nota od Atmela, w której potwierdzali brak obsługi tych rozkazów w AVR Studio. Nie wiem jak obecnie wygląda sytuacja, ponieważ porzuciłem asembler i piszę a C. Jednym ze sposobów było napisanie makra z wykorzystaniem .db albo .dw, które jawnie wprowadzały kod rozkazu do programu w miejsce wpisanego LAT/LAC/LAS czy innego...
Nie jest to trywialne, musisz znaleźć uchwyt do okna aplikacji (chyba najprościej enumerując okna i szukać po nazwie), następnie znaleźć określone obiekty pochodne okna (te które są w ramach tego okna) i wysłać kilka komunikatów do nich. Jak już znajdziesz uchwyt do pola edycyjnego to jeśli jest standardowe (kontrolka windows), to wystarczy użyć makro...
Witam Na początek poczytaj http://www.micromade.pl/pdfy/dsm_as.pdf Makropolocenia mają pomagać w pisaniu programu. Stosuj się je kiedy masz takie same bloki programu różniące się na przykład wyprowadzeniem procesora. Makropolecenie deklarujesz na początku programu. W samym kodzie podajesz tylko nazwę macropolecenia z ewentualnym parametrem. Asembler...
jvoytech, Dodanie "stdbool.h" nie, dopiero zamiana zmiennej 'czy_wentylator_wlaczony' z int8_t (lub char) na bool. Aha, trzeba by się przyjrzeć jaki kod asemblera generuje zmiana typów. Mam jeszcze jedną sprawę. Podłączyłem LED do wyjścia wentylatora. Gdy nie korzystam z UART to zapala się na stałe gdy powinna i gaśnie gdy powinna. Ale z UART zapala...
...szczególnie po tym jak ostatnio widziałem że sporo firm w niemczech sięga po to narzędzie i aż mi szczęka opadła jak widziałem jakieś radyjko bardzo fajne samochodowe z programem sterującym napisanym w bascomie ;) Bo Ci co to zrobili , znali dobrze Bascom'a i architekturę AVR-ów :D postanowiłem to zbadać i się zabrać - a jak dotknąłem Bascoma to...
Witam. Chcialem zrobic urzadzenie podobne do inteligentnego domu czy alarmu. Wiele wejsc i wyjsc (np. 256). Wszystko pisze w ASM dla PIC16 lub PIC18. Pomijajac kwestie skomplikowania i ogarniecia wzrokiem (czytelnosc) wszystkiego dla asemblera zastanawiam sie jak to robia znawcy ;) Czuje podskornie, ze musi byc jakas wielka tablica, ktora ma zdefiniowane...
off topic, ale po prostu musiałem... break - to jest bardzo niewygodna wada kompilatorów języka C. Mnie to bardzo kole w oczy. Na 99% to jest macro, które powoduje skok poza zasięg rozkazu masowego porównywania select lub swith break to nie makro, tylko normalna instrukcja Wada?! Zaleta! Pozwala programiście kontrolować przebieg programu. Tylko kwestia...
AVR to procesor RISC, czyli o zredukowanej liście rozkazów, za to ma 32 rejestry operacyjne. Rejestry od r0-r15 nie mogą służyć w trybie natychmiastowym. Generalnie to nikt tutaj nie ma ochoty powielać wszystkiego, co już zostało napisane setki razy, w tym w dokumentacji na http://www.atmel.com/dyn/products/datash... Lista rozkazów...
-makra(?) cbi() i sbi() To są polecenia asemblera, często mówi się "wstawki assemblerowe" jeśli mam rację to które najlepiej wybrać(najszybciej działa), czy nie ma różnicy? bo jeśli nie to chyba po odpowiednim zdefiniowaniu najlepiej użyć makra register_bit. Skoro uczysz się języka C, to warto uczyć się go dogłębnie, więc sugeruje używanie operacji...
Schematu nie dałem, bo go nie ma. Jak znajdę czas to narysuję :wink: Jeśli chodzi o instrukcje nop to są tam wstawione ze względu na specyfikacje 1-wire. Najpierw trzeba wystawić stan niski i odczekać czas trochę dłuższy niż 1us (dając dwa razy nop czekam 2us bo działa na zegarze 1MHZ, przy większym zegarze pasuje dać już fukcje opóźniające) i potem...
Witam Forumowiczów http://obrazki.elektroda.pl/7848697300_1... Chciałbym przedstawić kolejny swój układ, który kiedyś został zrealizowany dla uczelni w ramach projektu. Jest to 4-cyfrowy wyświetlacz 7-segmentowy LED pracujący na magistrali I2C jako urządzenie Slave . Mimo, że jest to układ dedykowany dla płytki ewaluacyjnej mikrokontrolera...
Składniowo w dużej mierze jest on zgodny z C++, można także używać składni i poleceń w C. Składniowo to on jest zgodny w 100% z C++, ponieważ Arduino HAL jest napisane w C++, za wyjątkiem niewielkiej części, która używa wstawek asemblerowych (w zależności od platformy sprzętowej). Wiadomo również nie od dzisiaj, że programując w C++ można używać składni...
Otóż muszę zaprogramować uP tak żeby na wyświetlaczu pojawiał się dowolny napis, po prostu walczę nad jego obsługą. Dostałem układ w którym jest takie połączenie P10-P17 dane wyświetlacza P30-E P31 R/W P32-RS. Więc najwygodniej chyba będzie sterować nim 8-bitowo jak sądzę. Nie mam dostępu do makr, podprogramów etc z DSM-51 jak by coś. Mógłby ktoś pomóc?
nie da sie w C prosto uzyskac dostepu do rejestrow. pozatym zmiana PC niekoniecznie odpowiada czasowi wykonania instrukcji, chyba ze twoj kompilator jest bardzo glupi, albo twoj kod bardzo kiepski. mozesz uzyc czegos takiego: #define __tic() T0PR=0; T0CTCR=TxCTCR_MODE_TIMER; T0MCR=0; T0TCR=TxTCR_CounterReset; T0TCR=TxTCR_CounterEnable #define...
http://obrazki.elektroda.pl/5358144400_1... Temat nagrywania "dyskietek" do Pegasusa wraca co jakiś czas na forum jak bumerang i cieszy się ogromnym zainteresowaniem. Postanowiłem znów przybliżyć forumowiczom kolejny mój projekt z tej serii, a jest to już drugie podejście do tego tematu. Poprzednie, zaprezentowane w poniższym wątku:...
; **** zapisz/odczytaj rejestr **** ; Funkcje zapisz i odczytaj rejestru CC1000. Adres rejestru powinien przed ; wywołaniem znaleźć się w rejestrze adres, oraz dane powinny się znaleźć lub ; znajdą się w rejestrze dane. ; UWAGA ; ; funkcja nie zabezpiecza sreg ; adres jest w 7 dolnych bitach rejestru adres ; zakłada także, że pale jest Hi przed wywołaniem...
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...
2. mirku, fajnie jest tak jak piszesz ale w dowolnym projekcie nie wiesz z góry, które bity będą jedynkami a tu zauważ jest wszystko po kolei :), po Twojemu się tak nie da. Nie, no zaraz - jak to nie wiem z góry, które będą jedynkami. To chyba podstawa np gdy chce się ustawić jakiś tryb timera np ten CTC, to patrzę do noty i sprawdzam które bity WGM...
Ze względu np. na to (przepraszam za brak kolorowania składni): Ja aktualnie uzyskuję podobny efekt za pomocą makr - definiowanych np. dla różnych rodzin procesorów, ale funkcjonalnie będących swoimi odpowiednikami. O ile rzecz jasna jest to możliwe (bo w jednej rodzinie procesorów jest obecne peryferium X, a w drugiej nie ma). Można to nazwać Makro...
Dzięki Marek! Faktycznie plik jest na stronie Atmela. Z tym wyważaniem otwartych drzwi to masz rację. Tyle tylko że ja nie chcę korzystać tylko i wyłącznie z cudzych opracowań. Chciałbym przejrzeć kogoś. Pomyśleć czy jest to o co mi chodziło a jeżeli nie to na podstawie tego napisać podobną procedurkę. Czasami odnajduję w projektach ciekawe makra które...
Zakupię procedury, funkcje, makra na mikroprocesor typu AVR. Preferowany język to asembler . Przykładem mogą być funkcje realizujące np. komunikację USB (nie tylko HID), obsługę wyświetlaczy lub pamięci np. karty SD. Zapytania jak i oferty proszę składać na adres: marek.mail.box[małpa]gmail.com.
Cała ta wojna wokół języków (narzedzi) programistycznych trwa od lat. Wrogowie Basica zarzucali mu niestrukturalność i tę niefortunną instrukcję GOTO. Ale Panowie te czasy (spektruś, commodore, atari) już dawno minęły. Basic również ewoluował i jest teraz strukturalnym kompilatorem aż do bólu. Jest powszechnie wykorzystywany przez wielu programistów....
Jak zwykle każda taka dyskusja musi dojść do etapu wyższości świąt bożego narodzenia nad świętami wielkanocnymi, gdy prawda jest taka, ze wszystkie święta są podobne. Z pewnością C ma większe pole rażenia , stąd przewaga (liczbowa) jego zwolenników. Ja osobiście preferuję PASCALa (obiektowego), ale jak muszę to programuję w C albo asemblerze (w porywach...
no z poczatku wygladalo mi to jak jakis mix asemblera z pascalem po czym zapalila mi sie lampka ze to VHDL :-) niewiele mialem z tym do czynienia ale napewno przydaloby sie przeniesc temat do podforum o ukladach programowalnych skoru juz takie sie pojawilo. Platforma w prostszych aplikacjach jak te podane niema znaczenia bo ilosc makrokomorek bedzie...
Jejku... to 99,999 nie odnosi się do perfekcyjności programu, tylko możliwości znalezienia błędu. Jak mówi prawo Murphiego "w programie zawsze jest jeszcze jeden błąd". Ale ten szacunek jest wyssany z palca. Załóżmy, że robisz wektory testowe dla funkcji. Jak pisał kol. (at)Freddie Chopin masz jako wejście dwa floaty. Czyli liczba kombinacji 2^64,...
zerpo --> dlatego dodałem, że to nie przesada - bo każde rozwiązanie , które działa poprawnie jest ok ;) i wcale się nie kłócę które lepsze. Pewnie, że to , które podałeś spokojnie zadziała z tym wentylem. Jednak polemizowałbym ostro co do tego, że rozwiązanie podane przez ciebie zmniejsza obciążenie procesora. Być może zapominasz o tym, że każde przerwanie...
Dziękuję wszystkim za zainteresowanie. Dopiero zaczynam, nie mam pojecia jeszcze o asemblerze a wiec trudno mi jest sprawdzic samemu co wychodzi po kompilacji. Widzę, że moje podejrzenia są właściwe. Wiec będę się starał pisać programy używając swoich makr, funkcji itp. Te biblioteki kojarzą mi sie teraz z Bascomem, łatwe, przejrzyste i niekoniecznie...
btw co to programowanie niskopoziomowe? bo nasz kolo z informatyki nie umie nam wyjasnic dokladnie programowania jako takiego bo niby sa zmienne etc ale jak mozna budowac program ktory robi 10 operacji w roznym czasie w roznych warunkach przy roznych danych ?? tu chyba wlasnie jest wymagane dziedziczenie ( ale to chyba objektowka? ) i tego sie usiluje...
asembler sortowanie diody asembler asembler kwadrat
sterownik regulator zaworu lampa elektronowa nieużywana rozruchu nierówno pracuje
częstotliwość pilot brama wlm20440pl rezystor
Onkyo SC 600 vs Altus 140 - Porównanie kolumn głośnikowych Jak odblokować keylock telewizora Manta bez pilota