w3_asembler.pdf

(88 KB) Pobierz
Programowanie mikrokontrolerów - Asembler AVR, cz¦±¢ 1
Programowanie mikrokontrolerów
Asembler AVR, cz¦±¢ 1
Marcin Engel Marcin Peczarski
InstytutInformatykiUniwersytetuWarszawskiego
23 wrze±nia 2010
404779179.002.png
Struktura programu w Asemblerze
I Program zaczyna si¦ dyrektyw¡ .INCLUDE , która wł¡cza
definicje niezb¦dne dla konkretnego modelu mikrokontrolera.
I Dla ATmega16 b¦dzie to
.INCLUDE"m16def.inc"
I lub
.INCLUDE"C:\VMLAB\include\m16def.inc"
I lub
.INCLUDE"C:\PROGRA~1\vmlab\include\m16def.inc"
I Wł¡czany plik zawiera dyrektyw¦:
.DEVICEATmega16
I Dyrektywy .INCLUDE mo»emy równie» u»y¢ w dowolnym
miejscu programu do wł¡czenia kodu umieszczonego w innym
pliku.
404779179.003.png
Struktura programu w Asemblerze, cd.
I Program składa si¦ z trzech segmentów odpowiadaj¡cych
poszczególnym przestrzeniom adresowym mikrokontrolera:
.DSEG ;segmentdanych,SRAM
.ESEG ;segmentdanychnieulotnych,EEPROM
.CSEG ;segmentkodu,FLASH
I Segmenty mo»na dowolnie przeplata¢.
404779179.004.png
Definiowanie stałych symbolicznych
I Stałe mo»emy definiowa¢ nast¦puj¡co
.EQUstała=wyra»enie
.SETstała=wyra»enie
I Dyrektywa .EQU działa jednorazowo.
I Dyrektywa .SET pozwala na wielokrotne przedefiniowywanie
stałej.
I Przykłady:
.EQUSYS_FREQ=16
.EQUBLINKER_HALF_PERIOD=3*SYS_FREQ
404779179.005.png
Alternatywne nazwy rejestrów
I Aby poprawi¢ czytelno±¢ kodu, rejestrom mo»na przypisywa¢
nazwy dyrektyw¡ .DEF .
I W ten sposób zdefiniowano rejestry XL , XH , YL , YH , ZL i ZH .
I Przykład:
.DEFAKUMULATOR=R16
LDIAKUMULATOR,7 ;wykonasi¦LDIR16,7
404779179.001.png
Zgłoś jeśli naruszono regulamin