Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Asembler AVR. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:addr1,r0 ;dodanie.

Podobne prezentacje


Prezentacja na temat: "Asembler AVR. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:addr1,r0 ;dodanie."— Zapis prezentacji:

1 Asembler AVR

2 Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:addr1,r0 ;dodanie do r1 liczby z R0 movr6,r1 ;odeslanie sumy do R6

3 gdzie: - 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 - obszar przeznaczony na wpisanie symbolicznej nazwy rozkazu; w polu tym wpisuje się także niektóre dyrektywy asemblera (patrz dalej);

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

5 gdzie-c.d.: - 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

6 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

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

8 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łaznaczenie reprezentacja binarna Apojedynczy znak ASCII41h "tekst"ciąg znaków ASCII74h,65h,6Bh,73h,74h 787liczba dziesiętna0313h 0b100,0B100liczba binarna04h 0x2AFliczba szesnastkowa02AFh 0X2A0liczba szesnastkowa02A0h $F00liczba szesnastkowa0F00h 0457liczba ósemkowa012Fh identyfikatoro przypisanej wartościzgodna z wartością

9 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

10 Dostępne operatory wyrażeń

11 Dostępne funkcje

12 Podstawowe dyrektywy asemblera

13

14

15

16 Pozostałe dyrektywy asemblera - segmenty programu

17 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.equtablica = 0x80;tablica od adresu 80h.dq0;wyzerowane bajty od 60h do 67h zmienna1:.byte2;2-bajtowa zmienna1 od 68h zmienna2:.byte2;2-bajtowa zmienna2 od 6Ah.org0x70 zmienna4:.byte4;4-bajtowa zmienna4 od 70h.equzmienna3 = zmienna2+2

18 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;

19 Pozostałe dyrektywy asemblera - makroasemblacja

20 Makroasemblacja - przykład.macropulse_clk ; generuje jeden impuls taktujacy nadawanie - PORTx - numer bitu w wybranym sbiportd,outpin;ustawienie sygn. wyj. pulse_clkportd,clkpin ;wyslanie ciagu bitow: cbiportd,outpin; 1000 pulse_clkportd,clkpin

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

22 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 ldirtmp,0b ;wlacz.SPI w master outspcr,rtmp ldirtmp,0b ;SCKfreq=fosc/2 outspsr,rtmp.endif /* inne mozliwe sprawdzenie:.ifspcr & spsr tzn. czy obu rejestrom przypisano adresy rozne od zera */

23 Pozostałe dyrektywy asemblera - asemblacja warunkowa ;realizacja nadawania:.ifspcr & spsr outspdr,r18;wyslanie bajtu wyjsciowego wait1:sbisspsr,spif;sprzetowym SPI rjmpwait1.else ldir17,8;licznik bitow nxtbit:cbiportb,sdipin;SDO:=0 sbrcr18,0;skok gdy r18.bit0=0 sbiportb,sdipin;SDO:=1 sbiportb,sckpin;impuls zegara cbiportb,sckpin lsrr18;nastepny bit decr17 brnenxtbit.endif

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


Pobierz ppt "Asembler AVR. Budowa programu w asemblerze W ogólnym przypadku linia programu w asemblerze ma następującą budowę: na przykład: tuskocz:addr1,r0 ;dodanie."

Podobne prezentacje


Reklamy Google