Testy można przeprowadzić w niektórych symulatorach np. [url=http://www.edsim51.com/]edsim51. Przykładowy kod poniżej. [syntax=asm] sekundy EQU 07Eh ;zmienna sekund jedna_dwudziestaEQU 07Fh ;licznik jednej dwudziestej sekundy resetowanie EQU 19456 ;ustawienie zliczania co 0,05sek setkiEQU 07Bh dziesiatkiEQU 07Ch jednostkiEQU 07Dh flagiEQU 020h org 0000h...
Kriti:zależy co robisz... jak np jakąś obróbke grafiki (obsługa kamerki albo wyświetlacza) czy dużej ilości danych to jak najbardziej się opłaca. Kilka linijek assemblera (a ARM ma strasznie prosty assembler) i możesz wyciągnąć 100% większa prędkość działania funkcji. Poza tym w niektórych miejscach (np uproszczone algorytmy dzielenia) wstawki w assemblerze...
Prawidłowo - po wpisaniu '7' w AL (czyli dwóch ostatnich rejestru AX) znajdzie się 37h. Do BL przenosisz wiec po odjęciu 7. Tyle, że cały kod jest przygotowany do pracy z większymi wartościami, niż jedna cyfra, więc przesuniecie BL w prawo sprawi, że będzie tam 0. To pierwsza część. Dopiero kawałek dalej jeszcze raz przenosisz do BL z AL i tym razem...
dodawanie do ZH:ZL można zrobić w dość prosty sposób: add ZL, r16 adc ZH, jakis_rejestr_o_wartosci_0 Jeśli tablica "cyfry" jest "Dim Cyfry(4) as Byte", to bardziej prawdopodobne jest, że znajduje się w pamięci RAM a nie programu, stąd szacunkowo kod powinien wyglądać jakoś tak (jakoś, ponieważ nie znam bascoma): $asm ' laduje do pary rejestrów Z adres...
Po pierwsze to nie ma czegoś takiego jak kompilator asemblera, jest po prostu assembler, to nie jest język kompilowany, a Tobie raczej chodzi o środowisko programistyczne - IDE. Poza tym każdy uP/uC ma swój charakterystyczny assembler (oczywiście wspólny dla całej rodziny mikrokontrolerów), bo inną listę poleceń ma PIC a inną AVR. Polecam lekturę: http://www.edw.com.pl/ea/asm_avr.html...
Nie bardzo rozumiem twój problem. Nie możesz po prostu użyć rozkazu: BST Albo zamaskować nieużywane bity za pomocą np. ORI , ANDI
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"...
A czytałeś ten link, co Ci podałem? Masz tam: możesz korzystać swobodnie z r0, r18 - r27, r30, r31. Pozostałe musisz przechować (z wyj. r1, który musisz wyzerować). Tak się zastanawiam, czy czasem w tym opisie nie ma błędu, tzn. że argumenty pakowane są aż do r18, a nie do r8. Lepiej to sprawdź, patrząc jak jest kompilowana przykładowa funkcja (i wywołanie)...
Błąd powstaje gdy iloraz przekroczy dopuszczalną ilość bitów. W dzieleniu N-bitowym, iloraz musi się zmieścić w N-bitach (pamiętając, że dzielimy liczbę 2N-bitową przez N-bitową). Przykładowo dzielenie 16-bitowe (dx:ax) [syntax=asm]mov dx,0xFFFF ; dzielimy 0xFFFFFFFF mov ax,dx mov cx,1 ; przez 1 div cx;First chance exception: Address 0x0040190C Integer...
Witam :) Zwarcie pinów RA1 i RA0 spowoduje zapalenie się diody przyłączonej do RB2, kiedy RA1 i RA0 przestaną być zwierane, wówczas dioda zgaśnie, trochę głupawy programik :) , ale działa. Wersja w assemblerze: #include P16F84A.inc CLRF STATUS CLRF INTCON BSF STATUS, 5; bank 1 CLRF OPTION_REG BCF TRISA, 0; ustawienie RA0 jako wyjscia BSF TRISA, 1; ustawienie...
Skoro dopiero się zaczynasz uczyć, to ciężkiego kalibru używasz (mam na myśli assemblera) a ja uważam, że to najlepszy pomysł - zaczynać od poznania asemblera. Pomimo, że początki są trudne to poznanie podstaw przynajmniej asemblera daje już dużą wiedzę co i jak można robić z prockami. A do większych później projektów czy nawet małych można spokojnie...
, książki , kursy itp ... [url=http://margines.pl/index.php?ukey=p... Definitive Guide to the ARM Cortex-M3 No i podstawa to dokumentacja oraz FAQ ze strony ARM.com
PTR to nie jest rzutowanie, jakie występuje w językach wysokiego poziomu, tylko traktowanie. Po prostu jest spod adresu wskazanego zmienną pobierane WORD danych. Jako, że sama zmienna jest tylko typu bajt, to w rzeczywistości zostaną pobrane wartości ze zmiennej Byte1 i Byte2 w kolejności.
c) chodzi dokładnie o to co napisałeć, plus dodatkowo - skoro napisali w treści, że to call jest pod adresem 0x100 to zapewne autor oczekuje jeszcze, aby napisać jaka wartość znajdzie się na stosie. Tu mały problem w AVR - przestrzeń FLASH adresowana jest w słowach, więc adresy bajtowe trzeba pomnożyć razy 2. c) i d) można się jeszcze zastanowić o ile...
Jesli chodzi o programowanie z DSM-51 to powinno to byc tak: LJMP START ORG 100H START: LCALL LCD_CLR ;czysci ekran MOV A,#5AH LCALL WRITE_DATA ;wyswietla 'Z' MOV A,#57H LCALL WRITE_DATA ;wyswietla 'W' MOV A,#4FH LCALL WRITE_DATA ;wyswietla 'O' MOV A,#4CH LCALL WRITE_DATA ;wyswietla 'L' MOV A,#4EH LCALL WRITE_DATA ;wyswietla 'N' MOV A,#49H LCALL WRITE_DATA...
obstawiam, że to będą piny PC2-5 (domyślnie załączony jtag w fusebitach). Jeśli masz więcej takich problemów, to pisz do mnie na gadu - z miejsca postaram się pomóc... i nie zwalaj odrazu winy na AVR Studio - przy takich prostych rzeczach niema się co wysypać - mi się nigdy nic nie działo.
Może nie najładniej to rozrysowałem - [url=http://forum.dzyszla.aplus.pl/topic... dzielenia liczb wielobajtowych z wykorzystaniem odejmowania
ecx jest rejestrem, nie zmienna lokalna. Jesli wolana funkcja korzysta z tego rejestru (a moge sie zalozyc, ze tak jest), to Twoja petla sie rozsypie.
Ok ,a czy nie da sie odrazu zapisac sprawdzania przycisku pomijajac zaladowanie stanu portu do akumulatora ?? np : sprawdz: // petla sprawdania przyciskow P0-P7 jnb P2.0,wys0 // jesli P2.0 jest 0 skok do wysw0 jnb P2.1,wys1 jnb P2.2,wys2 . . . itd (...) Można sprawdzać stan linii portu 2 w ten sposób, nie trzeba wykorzystywać akumulatora. mov acc,...
Witam!! Najlepiej to wziąść sie za jakiegoś Atmega np. uniwersalnego ATmega 128. Można w fajnej podstawce kupić w firmie www.propox.com za parę złotych. Ale zależy co ma wykonywać projektowany układ. Do prostych gdzie nie wymagane są obliczenia tylko operacje proste na portach to pasuje '51, a jeśli o szybkość obliczeń, moze wyświetlacze graficzne LCD...
Poczytaj, przyda Ci się: http://pl.wikipedia.org/wiki/Tryb_rzeczy...
Bo, moim zdaniem, powinieneś adresować bufor pośrednio. Np. tworzysz sobie bufor od danego adresu. Adres zapisujesz do R0 i potem adresujesz np. mov A,SBUF mov (at)R0,A inc R0 Wówczas R0 jest Twoim wskaźnikiem do danej komórki bufora. Można zdefiniować jeszcze stałe np. BUFFER_START i BUFFER_END, które będą adresami początkowym i końcowym bufora, co...
Taki program mógłby wyglądać tak: Mnożna: rejestr E Mnożnik: rejestr A Wynik: rejestr HL LD HL,0000 ;inicjacja wyniku LD B,08 ;licznik pętli LD D,00 ;zerowanie bardziej znaczącego bajtu DE NXBIT ADD HL,HL ;przesunięcie wyniku w lewo RLA ;sprawdzenie cyfry monożnika JR NC, FIN ;opuszczenie zera ADD HL,DE ;dodanie mnoznej FIN DJNZ NXBIT ;powrót do początku...
to czym się różnią eax od ebx??? Kolejnością wykonania z tago co mi wytłumaczyli więc wnioskuje że są dalsze litery alfabetu między e i x ale chyba jestem w błędzie :| Więc jak zrobić aby ten program był w 2 przerwaniach i żeby działał? Intel 80x86 Family Architecture General Purpose Registers Segment Registers AH/AL AX (EAX) Accumulator CS...
bez watpienia odpowiedz na to pytanie padla tutaj dokladnie 3 razy, a przedewszystkim znajduje sie ona w datasheecie. 4\/3!!
Czasu szkoda na analizę. Spodziewałem się, że ktoś z tym "walczył". Assembler jest dla mnie w miarę prosty.
Wartość dla 1 sekundy: OCR1A=((częstotliwość procesora)/preskaler)-1 Wartość dla 4 sekund OCR1A=((częstotliwość procesora)/preskaler)-4 Jedynka w podanym przeze mnie wzorze nie oznacza 1 sekundy. Jeden trzeba odjąć z innych względów. Po prostu licznik nie zaczyna liczyć od 1 tylko od 0, więc odliczanie np. do 5 oznacza (0 1 2 3 4 5), czyli 6 impulsów....
89S8253 ma dopuszczalny prąd obciążenia pinu rzędu 10mA i całego portu 15mA - jeśli wysterowujesz przekaźnik bezpośrednio z procka to wcale się nie dziwię, że tak się dzieje. Albo użyj tranzystorów jeśli przekaźników masz ledwie kilka, albo układów typu ULN2xxx (darlington array) jeśli masz ich w okolicach 8. Zatem prosimy o schemat połączeń oraz ten...
Wydaje mi się że tak: [syntax=asm] ;Wyświetlasz sumę (ORL) rejestrów A i B ;Pomocniczy rejestr C,D ;Rejestry A,B,C i D (dowolne rejestry R0-R7) nie mogą ulec zniszczeniu w operacjach dodawania, i wyświetlania danych na porcie ;CARRY - oczywiście flaga C ;klamry {} są tylko po to aby lepiej było widać poszczególne pętle ;=======program========= start:...
[syntax=avrasm] ; PODPROGRAM MNOZENIA LICZB DWUBAJTOWYCH ; PISAL I TESTOWAL: MIROSLAW LACH, AVT ; WEJSCIE: ; R0 - ADRES NAJMLODSZEGO BAJTU MNOZNEJ ; R1 - ADRES NAJMLODSZEGO BAJTU MNOZNIKA ; WYJSCIE: ; ILOCZYN JEST UMIESZCZANY W MIEJSCE CZYNNIKOW ILOCZYNU, GDZIE ; ZLOZENIE BAJTOW (R0-1):(R0):(R1-1):(R1) DAJE WYNIK ; (R0-1) - BAJT NAJSTARSZY, ZAS R0 I...
Niektóre kompilatory umożliwiają zastosowanie acc, ale już mniejsza o to. Program jest bardzo prosty i nie bardzo jest tu co wyjaśniać. To jest jak mnożenie dziesiętne: 23 * 5: 3 * 5 = 15 2 * 5 = 10 Zapisujesz o tak: _15 10_ Dodajesz zera: 015 100 I dodajesz: 115 Tak samo działa ten program, tylko że binarnie.
IDE... one :D jeśli chcesz coś przenośnego i nie wymagającego instalacji, to na stronie: https://ideone.com/ można zdalnie pisać i odpalić kod assemblera ;)
1. Jak mogę poznać podstawy assemblera? (Assembler czy asembler?) Ja zaczynałem od PC, dużo programów, przykładów i dokumentacji. Musisz zdobyć nawyki i przyzwyczaić się do projektowania algorytmów na bardzo niskim poziomie. 2. Jaka obecnie dostępna literatura pozwoli mi na opanowanie postaw, wyjaśni mi czym dokładnie są stosy, rejestry i jak na nich...
zumek podał wersję dla 8051. Dla avr należy skorzystać z instrukcji LPM
A co do środowisk to polecam MIDE-51 :) http://www.opcube.com/home.html
Gotowe procedury udostępnia ATMEL na swojej stronie :] http://www.atmel.com/dyn/products/app_no... pod nazwą AVR200...
1. Piny P1.0 i P1.1 są wejściem komparatora, aby działały jak zwykły pin I/O musisz je podciągnąć do Vcc przez restystor. 2. Piszę z głowy, nie testowałem [syntax=asm] DIODA equ P1.7 org 0h start: cpl DIODA mov R6, #255 opoznienie1: mov R7, #255 opoznienie2: djnz R7, opoznienie2 djnz R6, opoznienie1 sjmp start END [/syntax]
sbi _SFR_IO_ADDR(TIFR), OCF1A Instrukcji sbi nie można używać w odniesieniu do rejestrów o adresie większym niż 32, zamiast tego należałoby w tym przypadku użyć: push r18 ; opcjonalnie ldi r18, (1<<OCF1A) sts _SFR_MEM_ADDR(TIFR), r18 pop r18 ; opcjonalnie Odkładanie na stos nie powinno być konieczne, gdyż rejestr r18 zgodnie...
Używając etykiet w .eseg nie zastanawiasz się nad fizycznymi adresami, robi to za ciebie kompilator. Tym niemniej aby operować na tych danych należy oczywiście użyć "okienka podawczo - odbiorczego" w EEDR, zgodnie z notą katalogową ( http://www.atmel.com/dyn/resources/prod_... ). Wszystko z .eseg ląduje w pliku .eep, którym możesz za...
Witam, Pierwszy błąd, który wychwyciłem to brak zachowania i odtworzenia rejestru stanu procesora SREG we wszystkich obsługach przerwań. Należy również zadbać o zachowanie używanych rejestrów (R0-R31). Zobacz ci się stanie np. w takim przypadku: CPI R16,10 ; tutaj przychodi przerwanie które zmienia stan SREG (znaczniki Z,C ...) BRNE xxx LDI...
zdrowie dotyczące Picoblaze. Myślę, że wina leży w tym, że dajesz instrukcje za pomocą LOAD zamiast rejesteru port. Należy zdefiniować "Przycisk" jako constant lub używać rejestru (s1, s2, itd.). Przycisk EQU "wartość" Port wejścia: LOAD s0, przyciski OUT s0, leds czytaj portu: IN s0, leds W Twoim miejscu, nie będę używać pblaz ide. To jest przestarzałe...
Może chodzi to różne tryby pracy procesora jak tryb uprzywilejowany oraz tryb użytkownika. Gdzie zmienia się zestaw rejestrów przy zmianie trybów dzięki czemu aplikacja nie ma dostępu do rejestrów których używa system.
[syntax=asm]00E51353 sub esp,0F0h [/syntax] Tutaj masz ustawiany rozmiar stosu na zmienne lokalne, dzieje się tak w każdej funkcji. Jest także ustawiana ramka stosu. Odnoszenie się do zmiennych odbywa się poprzez obliczanie ich pozycji względem wartości rejestru ebp. W linii (z włączonym "Show symbol names"): [syntax=asm]00E5136E mov dword ptr [i],2...
http://www.atmel.com/dyn/resources/prod_... http://www.atmel.com/dyn/products/tools_...
Problem jest w tym że tablice są umieszczone od 0x40 (org 0x40) w pliku WaveSmpl.asm a przy starcie masz skok do procedury RESET i RX_COMPLETE_INT .org 0 rjmpRESET .org URXCaddr rjmpRX_COMPLETE_INT więc skok musi być wykonany przez tablice a jak dodajesz jeszcze jakieś tablice to ten skok jest za długi. usuń .org 0x40 ; Flash word address w pliku WaveSmpl.asm...
Mam kilka innych archaicznych procesorów, gdybyś był zainteresowany ;-) 1. Spokojnie wystarczy, ale gdybyś chciał to nawet 2708 lub MM1702 gdzieś wygrzebię. 2. Assembler to : http://sourceforge.net/projects/crasm/. Zgodne są z Motorolą 3. Z powodu 2 chyba nieaktualne. Albert
Jest sposób aby wykonać ta procedurkę w asemblerze , ale nie wiem ile ona potrwa- a tobie zależy na szybkim wykonaniu obliczenia. Poniżej opisałem jak według mnie mogłoby to działać: Np. A=256 ; B=64 Deklarujemy tablice w której będą procentowe podzialy liczby (25%,50%,75%,100% itd) 1) porównanie liczb A=B, A>b, A<B 2) A>B (inkrementujemy odpowiednio...
myślę że to powinno Ci odpowiadać http://www.fortech.lo.pl/
Edw od numeru 4/97. Bardzo dobry kurs. Pozdro Dexter
W asm nie oznaczasz tego w żaden specjalny sposób, stawiasz zwykłą etykietę i już :P Taką samą jak do jumpów. Na końcu podprogramu musi być instrukcja ret. ... call podprogram ... podprogram: ... ret
Tak, wersja instalacyjna dostępna obecnie na w/w stronie zawiera asembler ASEM-51 V1.3 oraz kompilator C - SDCC 2.6.1.
Standardowy algorytm dzielenia binarnego - jeden z dwóch do wyboru - restytucyjny albo nierestytucyjny. Opis znajdziesz w każdej książce z okolic arytmetyki komputerów.
v5 wygląda na wskaźnik na tablicę bajtowych elementów, które są indeksami dla tablicy dword_40F458 po wykonaniu operacji xor z bajtową zmienną i. Po każdym obrocie pętli wskaźnik ten jest przesuwany na następny element tablicy (v5++).
Jeśli dla ciebie "kom ę dy" ( komendy ) czyli rozkazy procesora wyglądają jednakowo, to nie rozumiesz asemblera. Moga wyglądać podobnie, ale odpowiednie ich zestawienie ze sobą i odpowiednia kolejność dopiero powodują, że procesor robi dokładnie to co powinien. Jeśli tak naprawdę chcesz poznać asembler, to powinieneś się przyzwyczaić, ze tu nie bedzie...
a) A=1 movA,#1b Do akumulatora A wpisujesz wartość 1 (wartość binarna 00000001b), pozostałe instrukcje nie wpływają na wartość akumulatora. b) A=0 movA,P2 Do akumulatora A wpisujesz wartość z portu P2 (port P2 do masy – co daje wartość 00000000b) c) A=2 movA, #2h Ostatnią wartością wpisaną do akumulatora A jest 2 (wartość szesnastkowa 02h) d)...
Przyglądnij się tej linii: sum cl, b W niej masz, błąd.
Ten algorytm przedstawia prosta metode mozenia ktora czesto byla stosowana w procesorach nie posiadajacych instrukcji mnozenia. wykozystuje sie w nich rotacje bitow i dodawanie. Algorytm jest bardzo prosty w realizacji.
Autorka tematu mogła podać pod jakim to emulatorem to ma działać bo jsr $ff80 to jakiś skok do procedury tego emulatora (pewnie wyświetlanie wyniku). (at)szlus masz rację z tym sta ($80),y a ja od siebie dodam, że na początku zamiast ldy #0 powinno być chyba ldy #1
Zacznij od przerwania timera.
Bo jak ma działać? Widać kolega nie do końca rozumie mechanizm przerwań, skoro czeka na przerwanie INT0, a włącza przerwanie przepełnienia Timera0. Adresem przerwania przepełnienia Timera0 jest OVF0addr, a nie INT0addr. Przerwanie od INT0 wyzwalane jest ZEWNĘTRZNIE zboczem lub stanem na fizycznym wejściu INT0 mikrokontrolera, a nie Timerem. Skąd ten...
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...
Ale w takim razie e) też jest z błędem? f) NIE -> zapiszesz liczbę 121 do portu P0 (pierwszy adres SFR) g) zapiszesz zawartość portu P3 (E0H) do R1 a następnie do tego samego rejestru liczbę 121 -> coś mi się zdaje, że znów zabrakło małpy :-), albo coś jest nie tak. h) zapis stałej liczby 37 do R0 a do akumulatora B liczby (stałej) 121 To jest zadanie...
Na końcu przed słowem 'end' daj jeszcze skok 'ljmp petla'.
Więcej źle jak dobrze. Zobacz na mój kod (pisane na szybko).
no przecież jest assemblerowa instrukcja ROR - w czym problem? 4\/3!!
Jeśli przykłady znalezione w sieci i przykłady z avr-gcc Ci nie wystarczają to może książka "Mikrokontrolery AVR w praktyce: Jarosław Doliński. Z tym, że wszystkie przykłady są na procesorek, którego już nie robią, ale to już mniej istotne. Tu możesz popatrzeć: http://hubbard.engr.scu.edu/avr/avrlib/ tutaj: http://www.captain.at/electronic-index.p...
Mozesz zuzyc jeden rejestr na przechowywanie 5 zmiennych bitowych. np r25. .DEF rBity=r25 .EQU bBit0=0 .EQU bBit1=1 itd. az do 7 No i teraz robisz sobie tak: sbr rBity,(1<<bBit0) ; ustawia bit 0 cbr rBity,(1<<bBit0) ;zeruje bit 0 sbr rBity,(1<<bBit0)|(1<... ; ustawianie wielu bitow na raz.....
:oops: Poprawiłem mój fatalny błąd (brak zwiększania zawartości r0)! Zmiana polega na tym, ze tylko raz ładujesz wartość do R0, i uniknąłem rozkazu SJMP ENDTI - chodzi o czytelniejszy zapis programu. Trochę piszesz niezrozumiale. Nadal niewiem, czy pisząc o diodach masz na myśli sąsiedni wyświetlacz? I co znaczy, że można (diody?) podłączyć do P1, które...
Jesli rozumiem chodzi o przerwanie INT aktywowane oadajacym zboczem a nie poziomem. W INT0 ustawiasz bit IT0 w rejestrze TCON na 1 jesli ma byc od zbocza a 0 jesli od niskiego poziomu. w INT1 bit IT1
Jedna aktualnie jest zdjęta i nie wiem jak długo to potrwa: http://www.elektronika.qs.pl/asm_avr_jez... Ta strona jest przenoszona pod adres http://www.edw.com.pl/ea/ Ze starego serwera stronę skasowano bez uprzedzenia admina i pod nowym adresem jeszcze nie wszystko działa.
Mały szantażyk psychologiczny, no no assemblera się nie chciało nauczyć ale granie na ludzkich uczuciach mamy już opanowane Nie bede ukrywal ze mam to na zaliczenie, takze pomagajac ratujesz mnie przed powtorka semestru!!! Poniżej podaję ci szkic rozwiązania, poszczególne linie trzeba dopracować do konkretnego sprzętu (niedokładnie go opisałeś) sekwencja...
Pisałem z pamięci i popełniłem błąd. Powinno być: moj_adres equ [ebx].Pracownik potem odwołujesz się tak: lea ebx, KOWALSKI mov al, moj_adres.staz lub możesz jeszcze tak: lea ebx, KOWALSKI mov al,(Pracownik ptr [ebx]).staz
... ; tu kod zatrzymujący licznik mov DPTR,#TABLICA ; iicjujemy wskażnik do tablicy mov A,#0 ;A ma teraz wartosc zero movc A,(at)A+DPTR ; pobieramy starszy bajt, teraz jest w A mov B,A ; zachowujemy go, np. w rejestrze B inc DPTR ; przesuwamy wskażnik do tablicy na nastepny bajt mov A,#0 ; tu trzeba wyzerować A movc A,(at)A+DPTR ; pobieramy nastepny...
Bo ten avr nie ma w asemblerze komendy dzielenia. Musisz sobie sam napisać taką procedurę albo poszukać gotowej w necie. Ja kiedyś napisałem taką prostą działającą na zasadzie odejmowania. Wydajne to to nie jest ale nie wiem jak zrobić to lepiej.
Pomnóż przez 405 i podziel przez 1000. Jak 0.405 jest stałą to pomnóż przez 0.405x1024=415 i podziel przez 1024 co jest łatwe do zrealizowania (tylko przesunięcia bajtów). Inne opcje: http://www.avr-asm-tutorial.net/avr_en/c... Pzdr. N.
Kiedys napisałem takie proceudy pod asm i działały bez problemu bit stopu clrscl clrsda setbscl setbsda bit startu setbsda setbscl clr sda clr scl ; ****************************************... ; * Procedura wysłania bajtu na magistrale I2C * ; ****************************************... wysl_e: mov r1,#8 ;do R1(rejest roboczy)...
Adresy masz takie jakie portów - patrz mapa pamięci mikrokontrolera. Za porty odpowiadają wartości w rejestrach. Zatrzask tak średnio "rozszerza" I/O; w typowym zastosowaniu z '51 służy głównie podłączeniu zewn. pamięci adresowanej 16bit gdzie część adresów jest mieszana z 8 bitowymi danymi. Ogółem jeśli chodzi o LED to starałbym się zrobić to w formie...
Kompilowane pod asemblerem AVRasm2 od najnowszyego AVRStudio. Przeznaczenie pliku eep jest do wewnętrznego EEPROM mikrokontrolera, bez jego zaprogramowania robocik ma prawo wariować, z tego co wyczytałem w pliku źródłowym. To nie jest pod WinAVR, ewentualnie avrdude, ale trzeba czytać dokumentację jak się programuje EEPROM. Polecam : http://www.amwaw.edu.pl/~adybkows/elka/i...
Chyba faktycznie zacznę od przyswojenia C w stopniu dużo lepszym niż naciągany średni, myślisz że kernel GNU/Linuxa byłby dobrym miejscem do tego celu? Nie nie da się nauczyć programować bez programowania. Ucz się i pisz programy. Tylko samodzielne pisanie daje wyniki. Poprzez oglądanie kernela niczego się nie nauczysz.
No i ok, o to mi chodziło, że tutaj jest adres do funkcji. Źle się po prostu wyraziłem.
Lulubella proszę, oto przykład kopiowania z flash do sram pisany na mikrusa XMega. Dodano po 23 − liczby dla których bit B3=0, − liczby dla których bit B3=1 i B1=0, − liczby dla których bit B3=1 lub B1=0, W tych przypadkach w zupełności wystarczy SBRC i SBRS Można i tak: [syntax=vbnet]ldi R18, &b11111111 andi R18, &b00100000 breq...
Jak można Ci pomóc, skoro ignorujesz rady?
Mam dobry dzień :D 751141
OK, już jest lepiej :) Kod assemblera (ładowanie danych i odejmowanie) nie stanowi problemu. Niemniej nie rozumiem skąd mam mieć instrukcje sterujące LCD? Jeśli masz jakieś dodatkowe dane to napisz. Przy okazji: [url=http://www.keil.com/support/man/doc... instrukcji 8051 [url=http://turbo51.com/documentation/80...
To jeszcze w forach pozmieniaj i++ na ++i ;)
Poszukaj w sieci algorytmu Bresenham'a. (bresenham algorithm).
skoro masz dostep do internetu to polecam uzyc google. (znajac model procesora)... i zapoznac sie z lista rozkazow. Tak po prostu. -- Maciek
Od pewnego czasu tylko piszę w C i to zupełnie na inne mikrokontrolery, lecz naskrobałem takie "cóś": [syntax=asm] liczba equ 72h ; przechowywana liczba podana przez uzytkownika czy_kod_poprawny equ 73h ; zmienna "flaga", jesli wartosc 0 to kod poprawny org 0h; start: mov R0, #3 ; ilosc cyfr mov R1, #0 ; offset w tablicy mov DPTR, #haslo mov czy_kod_poprawny,...
100 x 80 x 80 x 2 x 542 = 693 760 000 Jaką masz częstotliwość kwarcu pracującego z tym mikroprocesorem? Czy nie jest to przypadkiem 7,68MHz albo 15,36MHz?
To jest błąd spowodowany brakiem instalacji 16-bitowego trybu chronionego. W katalogi TAsm-a powinien znajdować się plik DMPInst.EXE lub jakoś podobnie. Po jego uruchomieniu, zostanie utworzony plik, którego potrzebujesz.
Fuso, poniżej załączam plik z instruktarzem jak stworzyć projekt w Keil'u.
1. GNU ARM to najzwyklejsza paczka taka jak CodeSourcery, WinARM czy Yagarto, więc po co tego używać i po co to w ogóle roztrząsać? 2. CodeSourcery Lite jest darmowe. Jeśli nie jest wystarczająco darmowe, to wystarczy ściągnąć sobie źródła GCC i skompilować samemu [; Jest to możliwe, skrypty z Codesourcery to znacząco ułatwiają. 3. Niczym 4. Bo kompilujesz...
DS x rezerwuje x bajtów w pamięci. Stąd DANA1 jest pod adresem 20h, DANA2 pod 21h, DANA3 pod 23h. Ale po co Ci to wiedzieć? Przecież i tak będziesz adresował ram używając etykiet: MOV DANA1, 123 Pozdrawiam, Dr.Vee
Proponuje zacząć od zrobienia czegoś najprostszego, np układu migającego diodami, znajdź gotowca i uruchom go, zobacz jak działa, potem (z listą rozk. w ręku) zmieniaj coś w programie i obserwuj jaki to wpływa na działanie układu. Tego typu obserwacje i badanie są uciążliwe do przeprowadzania na "żywo" dlatego najwygodniej posługiwać się symulatorem,...
jeśli chodzi o '51 to z Mikoma P.P. Gałka "Podsatwy programowania mikrokontrolera 8051" Zdecydowanie NIE. Bez DSM-51 za ok 2000zł nic nie zrobi.
Zobacz na http://www.avrbeginners.net AVR Assembler->Math->Multiple byte maths. Są tam co prawda krótkie, ale dobrze opisane przykłady operacji na liczbach 2 i nawet 4 bajtowych: dodawanie, odejmowanie, porównania itp. Pozdrawiam
Najlepiej zrób coś takiego samemu, wyniesie cię to najtaniej i będziesz miał to czego szukasz. Jak na początek widzę że nie masz wielkich wymagań, dzięki temu twój zestaw powinien zamknąć się w 100 zł. Jako mikrokontroler na początek polecam ATmega8 na jego temat znajdziesz w sieci mnóstwo informacji, łatwo go programować ( programator to wtyczka do...
poszukaj tutoriala do bascoma a nie marudz Będzie to coś pokroju (kod w C) if P1_1==0 then costam else costam; w bascomie to będzie If Porta.1=1 Then costam jak jest "1" Else costam innego jak jest "0" End if Tylko sprawdz wyjście z TSOP'a, jakie ma napięcia
Ustaw wskaźnik stosu i napisz resztę jak należy. Bez tego różne rzeczy potrafią się dziać. Przykład szkieletu programu masz tutaj: http://www.elektroda.pl/rtvforum/topic78...
Program miga wszystkim, co ma:) #include p16f84a.inc __config H'3F72' reg_loop_1 equ 0x0C reg_loop_2 equ 0x0D reg_loop_3 equ 0x0E ORG 0 goto myprog ORG 10 myprog: banksel TRISA movlw d'0' movwf TRISA;ustaw jako wyjscia movwf TRISB ; banksel PORTA movwf PORTA movwf PORTB loop: comf PORTB, 1 comf PORTC, 1 call delay goto loop delay: movlw...
prosty kalkulator assembler assembler darmowy assembler assembler tablicy
podsłuch telefon analogowy ekspres delonghi alarmy metody wytrawiania płytek
zgrzewarka transformatorowa pralka electrolux ewt1262tdw
Schemat kostek ISO Renault Trafic 2 - złącza i piny Podłączenie anteny nawigacji VW CC do CarPlay