Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Asembler AVR.

Podobne prezentacje


Prezentacja na temat: "Asembler AVR."— Zapis prezentacji:

1 Asembler AVR

2 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,r ;dodanie do r1 liczby z R0 mov r6,r ;odeslanie sumy do R6

3 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);

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

5 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

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: .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)

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ł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ą

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 Podstawowe dyrektywy asemblera

14 Podstawowe dyrektywy asemblera

15 Podstawowe dyrektywy asemblera

16 Pozostałe dyrektywy asemblera - segmenty programu

17 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

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
.macro pulse_clk ; generuje jeden impuls taktujacy nadawanie - PORTx - numer bitu w wybranym sbi cbi .endm . . . sbi portd,outpin ;ustawienie sygn. wyj. pulse_clk portd,clkpin ;wyslanie ciagu bitow: cbi portd,outpin ; 1000 pulse_clk portd,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 ldi rtmp,0b ;wlacz.SPI w master out spcr,rtmp ldi rtmp,0b ;SCKfreq=fosc/2 out spsr,rtmp .endif /* inne mozliwe sprawdzenie: “.if spcr & spsr” tzn. czy obu rejestrom przypisano adresy rozne od zera */

23 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

24 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


Pobierz ppt "Asembler AVR."

Podobne prezentacje


Reklamy Google