Asembler AVR.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Tryby adresowania Prawie każda operacja wykonywana przez mikroprocesor wykonywana jest na pewnych argumentach (lub argumencie). Sposoby wskazywania argumentów.
Język C/C++ Funkcje.
Programowanie obiektowe
Język ANSI C Funkcje Wykład: Programowanie komputerów
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
Lista rozkazów Działanie mikroprocesora jest kontrolowane poprzez rozkazy (instrukcje). Dla każdego typu mikroprocesora istnieje specyficzny zbiór rozkazów,
Procesor DSP Sharc ADSP21161 firmy Analog Devices
Mapa pamięci mikrokontrolera
Podstawowe składniki funkcjonalne procesora i ich rola.
Podstawy informatyki Rekurencja i rekurencja Grupa: 1A
Tablice.
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Temat nr 10: System przerwań
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Procesory RISC.
Dr Anna Kwiatkowska Instytut Informatyki
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN - wprowadzenie Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
PROJEKTOWANIE TABEL W PROGRAMIE: ACCESS
Podstawy programowania
przykładowy 8-bitowy mikroprocesor uniwersalny CISC
Podstawy układów logicznych
Podstawy programowania
Podstawy programowania
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
ETO w Inżynierii Chemicznej
TABLICE C++.
Wyrażenia w Turbo Pascalu.
Linux - polecenia.
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Moduł sprawdzianów.
ANNA BANIEWSKA SYLWIA FILUŚ
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Podstawy programowania w języku C i C++
Programowanie strukturalne i obiektowe
Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie do akumulatora.
Technologie informacyjne EXCEL I
Technologie informacyjne EXCEL I
Andrzej Repak Nr albumu
Przerwanie ang. interrupt.
Tablice w Turbo Pascalu.
Podstawy informatyki 2013/2014
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Podstawy języka Instrukcje - wprowadzenie
Asembler MCS51. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:adda,r0 ;dodanie.
MOiPP Matlab Przykłady metod obliczeniowych Obliczenia symboliczne
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
PWSW Mechatronika Wykład 7 Matlab cd.
Instrukcje wyboru.
Opracowanie mgr Karol Adamczyk
Temat 5: Instrukcje: print(), echo()
Iga Lewandowska I EMII MU
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Język C/C++ Instrukcje
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
„Filtry i funkcje bazodanowe w EXCELU”
Do czego służy arkusz kalkulacyjny, jego budowa
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
ETO w Inżynierii Chemicznej
Wskaźniki Elżbieta Labocha.
Haskell Składnia funkcji.
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Asembler AVR

Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: <pole etykiety> <pole mnemonika> <pole argumentów> <pole komentarza> na przykład: tuskocz: add r1,r0 ;dodanie do r1 liczby z R0 mov r6,r1 ;odeslanie sumy do R6

gdzie: <pole etykiety> - obszar o szerokości min. 1 znaku, przeznaczony na wpisywanie identyfikatorów tzw. etykiet po etykiecie musi występować dwukropek, oddziela on wtedy etykietę od pozostałej zawartości linii i zwiększa czytelność programu; w polu tym wpisuje się także większość dyrektyw asemblera <pole mnemonika> - obszar przeznaczony na wpisanie symbolicznej nazwy rozkazu; w polu tym wpisuje się także niektóre dyrektywy asemblera (patrz dalej);

gdzie-c.d.: <pole argumentów> - obszar, którego wypełnienie jest opcjonalne - zależne od wymagań wpisanego w <polu mnemonika> rozkazu, pole to jest przeznaczone na listę argumentów rozkazu;

gdzie-c.d.: <pole komentarza> - opcjonalny obszar, którego początek jest identyfikowany przez znak średnika (‘;’) lub parę ‘//’; jest on przeznaczony do wpisywania dowolnego tekstu objaśniającego działania realizowane przy pomocy użytych rozkazów mikroprocesora; w szczególnym przypadku komentarz może zaczynać w dowolnym miejscu linii programu, także od pierwszej kolumny (z pominięciem pozostałych pól). AVRStudio dopuszcza ujęcie komentarza w nawiasy: /* ...... */ komentarz taki może rozciągać się na wiele linii

Przeznaczenie etykiet: 1. Identyfikatory adresów w przestrzeni adresowej procesora - wskazują: adresy skoków, np: tutaj: in r7,portb adresy początkowe wywoływanych procedur, np: call dod3B ;dodaj liczby 3-bajtowe adresy początkowe struktur danych, np: tablica1: .db 12,234,0,11 //tablica liczb 1-bajtowych

Przeznaczenie etykiet: 2. Identyfikatory stałych programowych, - ułatwia to ich użycie w tekście programie - zwiększenie czytelności programu, np: .equ CR =13 ;definicja znaku ASCII 3. Identyfikowanie zmiennych programowych, poprzez przypisanie im np. dyrektywą EQU adresu początkowego, np: .equ data =0x70 ;zmienna przechowujaca dzien mies. .... ldi r28,low(data) ;Y:=adres zmiennej ‘data’ ldi r29,high(data)

Stałe: są to wartości liczbowe lub znakowe zdefiniowane na etapie asemblacji programu lub pobierane z innych programów w procesie łączenia (linkowania). Przykłady: stała znaczenie reprezentacja binarna ‘A’ pojedynczy znak ASCII 41h "tekst" ciąg znaków ASCII 74h,65h,6Bh,73h,74h 787 liczba dziesiętna 0313h 0b100,0B100 liczba binarna 04h 0x2AF liczba szesnastkowa 02AFh 0X2A0 liczba szesnastkowa 02A0h $F00 liczba szesnastkowa 0F00h 0457 liczba ósemkowa 012Fh identyfikator o przypisanej wartości zgodna z wartością

Wykorzystanie wyrażeń. Przykładowo, zamiast sekwencji deklaracji: .equ zmienna1= 0x68 .equ zmienna2= 0x6A .equ zmienna3= 0x6C .equ zmienna4= 0x70 możemy zapisać: .equ zmienna1= 0x68h .equ zmienna2= zmienna1+2 .equ zmienna3= zmienna2+2 .equ zmienna4= zmienna3+4 Wynik asemblacji - taki sam, ale przy drugim zapisie łatwiejsze poprawki

Dostępne operatory wyrażeń

Dostępne funkcje

Podstawowe dyrektywy asemblera

Podstawowe dyrektywy asemblera

Podstawowe dyrektywy asemblera

Podstawowe dyrektywy asemblera

Pozostałe dyrektywy asemblera - segmenty programu

Pozostałe dyrektywy asemblera - segmenty programu Segment danych (.DSEG) może zawierać dyrektywy: .ORG, .DB, .DW, .DD, .DQ, .BYTE, .EQU; nie może zawierać instrukcji procesora; służy zadeklarowaniu struktur danych w obszarze pamięci danych; licznik bajtów danych startuje automatycznie od 60h; dyrektywy .DB, .DW, .DD, .DQ, jedynie rezerwują odpowiednie fragmenty tej pamięci danych – bez jej inicjacji na podane wartości. Przykład: .dseg .equ tablica = 0x80 ;tablica od adresu 80h .dq 0 ;wyzerowane bajty od 60h do 67h zmienna1: .byte 2 ;2-bajtowa zmienna1 od 68h zmienna2: .byte 2 ;2-bajtowa zmienna2 od 6Ah .org 0x70 zmienna4: .byte 4 ;4-bajtowa zmienna4 od 70h .equ zmienna3 = zmienna2+2

Pozostałe dyrektywy asemblera - segmenty programu Segment pamięci EEPROM (.ESEG) może zawierać dyrektywy: .ORG, .DB, .DW, .DD, .DQ, .BYTE, .EQU; nie może zawierać instrukcji procesora; służy zadeklarowaniu struktur danych w obszarze pamięci EEPROM; licznik bajtów EEPROM startuje automatycznie od 00h; dyrektywy .DB, .DW, .DD, .DQ rezerwują odpowiednie fragmenty tej pamięci danych wraz z ich inicjacją na podane wartości;

Pozostałe dyrektywy asemblera - makroasemblacja

Makroasemblacja - przykład .macro pulse_clk ; generuje jeden impuls taktujacy nadawanie ; @0 - PORTx ; @1 - numer bitu w wybranym porcie @0 sbi @0,@1 cbi @0,@1 .endm . . . sbi portd,outpin ;ustawienie sygn. wyj. pulse_clk portd,clkpin ;wyslanie ciagu bitow: cbi portd,outpin ; 1000 pulse_clk portd,clkpin

Pozostałe dyrektywy asemblera - asemblacja warunkowa możliwych jest 5 poziomów (zagnieżdżeń) asemblacji warunkowej

Pozostałe dyrektywy asemblera - asemblacja warunkowa Przykładowo, pewne fragmenty można asemblować gdy są do zrealizowania na danym mikrokontrolerze: .ifdef spcr /* powyzszy warunek jest spelniony gdy w zadeklarowanym dyrektywa .include pliku “*inc.asm” wskazujacym na docelowy uC jest przypisany adres I/O nazwie “spcr” charakterystycznej dla uniwersalnego rejestru szeregowego realizujacego standard SPI */ ; przygotowanie sprzetowego SPI do pracy ldi rtmp,0b00010000 ;wlacz.SPI w master out spcr,rtmp ldi rtmp,0b00000001 ;SCKfreq=fosc/2 out spsr,rtmp .endif /* inne mozliwe sprawdzenie: “.if spcr & spsr” tzn. czy obu rejestrom przypisano adresy rozne od zera */

Pozostałe dyrektywy asemblera - asemblacja warunkowa ;realizacja nadawania: .if spcr & spsr out spdr,r18 ;wyslanie bajtu wyjsciowego wait1: sbis spsr,spif ;sprzetowym SPI rjmp wait1 .else ldi r17,8 ;licznik bitow nxtbit:cbi portb,sdipin ;SDO:=0 sbrc r18,0 ;skok gdy r18.bit0=0 sbi portb,sdipin ;SDO:=1 sbi portb,sckpin ;impuls zegara cbi portb,sckpin lsr r18 ;nastepny bit dec r17 brne nxtbit .endif

Pozostałe dyrektywy asemblera - generacja komunikatów można wygenerować dodatkowy komunikat gdy zachodzi jakiś warunek: .if c1 > c2 ;jezeli stale programowe spelniaja ; podany warunek to sa nieprawidlowo ; zadeklarowane co trzeba zasygnalizowac .error “c1 nie moze byc wieksza od c2” .endif