Atmel avr szerelő

A fordító olyan forrásfájlokkal dolgozik, amelyek utasításokat, címkéket és irányelveket tartalmaznak. Az utasítások és irányelvek általában egy vagy több operandust tartalmaznak.

A kódvonal legfeljebb 120 karakter lehet.

Minden karakterlánc egy címkével kezdődhet, amely egy kettősponton végződő karakterkészlet. A címkéket arra használják, hogy jelöljék meg azt a helyet, amelyre az átviteli folyamatokat átruházzák, és megadja a változók nevét is.

A beviteli karakterláncnak négy formája lehet:

A szögletes zárójelben lévő pozíciók opcionálisak. A fordító figyelmen kívül hagyja a pontosvesszőt (;) és a vonal végéig. A címkéket, utasításokat és irányelveket az alábbiakban részletesen ismertetjük.

címke: .EQU var1 = 100; A var1 értékének 100-ra állítása (Ez egy irányelv)
.EQU var2 = 200; A var2-t 200-ig állítja be

Az AVR processzorokra vonatkozó utasítások

Az alábbiakban AVR processzorok parancskészlete található, ezek részletesebb leírása megtalálható az AVR adatkönyvében.

Számtani és logikai utasítások


A szerelő nem különbözteti meg a karakterek esetét.

Operandusok lehetnek a következő típusok:

Összeszerelési irányelvek

A fordító számos irányelvet támogat. Az irányelvek nem fordítanak közvetlenül a kódra. Ehelyett a programmemória helyzetét, a makrók definícióját, a memória inicializálását stb. Jelzik. Az irányelvek listáját a következő táblázat tartalmazza.

Minden irányelvet egy időtartam előzi meg.

BYTE - Tartalék bájtok RAM-ban

A BYTE direktíva bájtokat tárol a RAM-ban. Ha egy adott memóriaterületre kíván hivatkozni, akkor a BYTE direktíva előtte egy címke. Az irányelv egy kötelező paramétert tartalmaz, amely jelzi az elosztott bájtok számát. Ez az irányelv csak az adatszegmensben használható (lásd a CSEG és DSEG irányelveket). Az elosztott bájtok nem inicializálva vannak.

szintaxis:
MARK. BYTE kifejezés

például:
.DSEG
var1: .BYTE egy szám; 1 bájt a var1-re
táblázat: .BYTE tab_size; tartalékok tab_size bytes

.CSEG
Ldi r30, alacsony (var1); Betölti a Z regiszter alacsony byte-ját
Ldi r31, magas (var1); Betölti a Z-rekord nagybájtját
Ld r1, Z; Betölti a VAR1-et az 1. regiszterbe

CSEG - Szoftver szegmens

A CSEG irányelv meghatározza a szoftver szegmens kezdetét. A forrásfájl több programszegmensből állhat, amelyek össze vannak állítva egy programszegmensben, amikor összeállítják azokat. A szoftver szegmens az alapértelmezett szegmens. A szoftver szegmenseknek saját pozíciószámlálóik vannak, amelyek nem tekinthetők byte-by-byte, de mintha. Az ORG direktíva segítségével kódot és állandókat helyezhet el a szegmens kívánt helyére. A CSEG-irányelvnek nincsenek paraméterei.

például:
.DSEG══════════════════════; Az adatszegmens kezdete
vartab. BYTE 4; Fenntartva 4 bájt RAM-ban

.CSEG══════════════════════; A kódszegmens kezdete
const: .DW ═ ═ 2 2; Helyezze a 0x0002 állandó értéket a program memóriájába
Mov r1, r.e. Művelet végrehajtása

DB - A bájtok flash vagy EEPROM meghatározása

A DB utasítás fenntartja a szükséges számú bájtot a program memóriájában vagy az EEPROM-ban. Ha képesnek kell lennie hivatkozni egy kiválasztott memóriaterületre, a DB direktívat egy címke előtt kell lennie. A DB irányelvnek legalább egy paraméterrel kell rendelkeznie. Ezt az irányelvet csak a program szegmensben (CSEG) vagy az EEPROM szegmensben (ESEG) lehet elhelyezni.

Az irányelvnek átadott paraméterek vesszővel elválasztott kifejezések sorozatát tartalmazzák. Mindegyik expressziós kell lennie a tartományban vagy szám (-128..255), vagy a számítás eredménye kell adni eredményeként ebben az ugyanabban a tartományban, különben a bájtok számát, hogy csonkolt, NO riasztására szolgál.

Ha az irányelv kap több paramétert, és a jelenlegi program szegmens a paramétereket pakoljuk szó (első lehetőség - a legkisebb helyi értékű bájt), és ha a szám páratlan paramétereket, az utolsó kifejezést lesz csonka a byte, és van írva, mint egy szó a felső byte értéke nulla, akkor is, ha a akkor van még egy DB irányelv.

szintaxis:
LABEL: A .DB kifejezések listája

például:
.CSEG
consts. DB 0, 255, 0b01010101, -128, 0xaa

DEF - Szimbolikus nevet rendelhet a regiszterhez

A DEF irányelv lehetővé teszi, hogy a regiszteren keresztül jelöljön valamilyen szimbolikus nevet. A hozzárendelt név a program következő részében használható a regiszter eléréséhez. A regiszter több különböző nevet tartalmazhat. A szimbolikus név később a programban átrendezhető.

szintaxis:
.DEF Symbolic_name = Regisztrálás

.CSEG
Hőmérséklet, 0xf0; Töltsön be 0xf0-ot a temp regiszterbe (R16)
Íin ior, 0x3f; Olvassa el a SREG-t az ior regiszterben (R0)
A temp, ior; A temp és ior regisztereket a kizárólagos vagy

KÉSZÜLÉK - Adja meg azt a készüléket, amelyhez a program össze van állítva

A DEVICE direktíva lehetővé teszi, hogy meg lehessen határozni, hogy a program mikor készül. Ennek az irányelvnek a használata során a fordító figyelmeztetést ad ki, ha olyan utasítás található, amelyet a mikrokontroller nem támogat. Figyelmeztetés kerül kiadásra, ha a szoftver szegmens vagy az EEPROM szegmens meghaladja a készülék által megengedett méretet. Ha az irányelv nem kerül felhasználásra, akkor minden utasítás elfogadhatónak tekinthető, és nincsenek korlátozások a szegmensek méretére vonatkozóan.

szintaxis:
.AT90S1200 KÉSZÜLÉK | AT90S2313 | AT90S2323 | AT90S2333 | AT90S2343 | AT90S4414 | AT90S4433 | AT90S4434 | AT90S8515 | AT90S8534 | AT90S8535 | ATtiny11 | ATtiny12 | ATtiny22 | ATmega603 | ATmega103

például:
.AT90S1200 KÉSZÜLÉK; Használt AT90S1200

.CSEG
═══════ tolja r30══; Ez az utasítás figyelmeztetést indít
Az állam; mert az AT90S1200 nem rendelkezik vele

DSEG - adatszegmens

A DSEG irányelv meghatározza az adatszegmens kezdetét. A forrásfájl több adatszegmensből állhat, amelyek összeállításra kerülnek egy szegmensbe. Az adatszegmens általában csak BYTE irányelvekből és címkékből áll. Az adatszegmenseknek saját bájtszámlálóik vannak. Az ORG direktíva arra használható, hogy a változókat a kívánt RAM helyre helyezze. Az irányelvnek nincsenek paraméterei.

például:
.DSEG═══════════════════════; Az adatszegmens kezdete
var1: ═ .BYTE ═ ═ 1 1 1; tartalék 1 bájt var1-re
táblázat: .BYTE tab_size; tartalék tab_size bytes.

.CSEG
Ldi r30, alacsony (var1); Töltsön be a Z regiszter alacsony byte-ját
Ldi r31, magas (var1); Töltse le a Z-regiszter felső bájtját
Ld r1, a Z; Töltse le a var1-et az r1 regisztrációhoz

DW - Szavak definiálása Flash vagy EEPROM formátumban

A DW irányelv fenntartja a szükséges számú szót a program memóriájában vagy az EEPROM-ban. Ha egy adott memóriaterületre kíván hivatkozni, akkor a DW direktíva előtte egy címke. A DW irányelvnek legalább egy paraméterrel kell rendelkeznie. Ezt az irányelvet csak a program szegmensben (CSEG) vagy az EEPROM szegmensben (ESEG) lehet elhelyezni.

Az irányelvnek átadott paraméterek vesszővel elválasztott kifejezések sorozatát tartalmazzák. Minden kifejezés legyen a tartományban, számát (-32768..65535), vagy annak eredményeként a számítási eredmények is ugyanebben a tartományban, különben a szám levágva a szó, minden figyelmeztetés nélkül.

szintaxis:
MARK. DW kifejezéslista

például:
.CSEG
varlist: .DW 0, 0xffff, 0b1001110001010101, -32768, 65535

ENDMACRO - A makró vége

Az irányelv meghatározza a makró definíció végét, és nem veszi figyelembe a paramétereket. A makrók definiálásával kapcsolatban lásd a MACRO direktíva.

például:
.MACRO SUBI; A makró definíció kezdete
Subi r16, alacsony (@ 0); Vonja le az első paraméter alacsony byte-jét
Sbci r17, magas (@ 0); Vonjuk le az első paraméter nagybájtját
.ENDMACRO

EQU - Állítsa be az állandó kifejezést

Az EQU irányelv értéket rendel a címkéhez. Ez a címke később használható kifejezésekben. Az irányelv címkéjének címkéjét nem lehet áthelyezni, és annak értéke nem módosítható.

szintaxis:
.EQU címke = kifejezés

például:
.EQU io_offset = 0x23
.EQU port = io_offset + 2

.CSEG════════════════; Az adatszegmens kezdete
Clrr2; Törölje regisztrációs r2-t
Out port, r2; Írja be az A porthoz

ESEG - EEPROM szegmens

Az ESEG irányelv meghatározza az EEPROM szegmens kezdetét. A forrásfájl több EEPROM szegmensből állhat, amelyek összeállításra kerülnek egy szegmensbe. Az EEPROM szegmens általában csak DB direktívákból áll. DW és címkék. Az EEPROM szegmenseknek saját byte-count pozíciószámlálói vannak. Az ORG direktíva arra használható, hogy a változókat az EEPROM kívánt helyére tegye. Az irányelvnek nincsenek paraméterei.

például:
.DSEG═══════════════════; Az adatszegmens kezdete
var1: .BYTE van; tartalék 1 bájt var1-re
táblázat: .BYTE tab_size; tartalék tab_size bytes.

.ESEG
eevar1. DW 0xffff; inicializálni 1 szót az EEPROM-ban

EXIT - Kilépés a fájlból

Az EXIT irányelv teljesítésével a fordító leállítja a fájl összeállítását. Ha az opció használható a mellékelt fájlt (lásd. Include direktíva), az összeállítás folytatódik a következő sorban, miután az include direktíva. Ha a fájl nincs beágyazva, a kompilació leáll.

például:
.EXIT═; Lépjen ki a fájlból

BELEÉRTVE - Csatlakoztasson egy másik fájlt

Az INCLUDE direktíva teljesítésével a fordító megnyitja a benne lévő fájlt, összeszedi, amíg a fájl befejeződik vagy az EXIT direktíva meg nem jelenik. majd az INCLUDE direktíva után folytatja az eredeti fájl tömörítését a vonalról. A mellékelt fájl tartalmazza az INCLUDE direktívákat is.

szintaxis:
.INCLUDE "fájlnév"

például:
; iodefs.asm fájl:
.EQU sreg = 0x3f; Állapotregiszter
.EQU sphigh = 0x3; A kötegmutató nagy bájtja
.EQU splow = 0x3d; A veremmutató alacsony byte-ja

; incdemo.asm fájl
.INCLUDE iodefs.asm; A portok meghatározásának ösztönzése
R0, sregionie; Olvassa el az állapotregisztert

LISTA - A jegyzék létrehozásának engedélyezése

például:
.NOLIST═══════════════; Letiltja a hirdetés létrehozását
.INCLUDE "macro.inc"; A csatolt fájlok nem lesznek
.INCLUDE "const.def"; megjelenik a listában
.LIST═════════════════; Engedélyezze az adatgyűjtést

LISTMAC - Engedélyezze a makró bővítését a listában

A LISTMAC irányelv után a fordító megmutatja a makró tartalmát a listában. Alapértelmezés szerint csak a makró és az elavult paraméterek hívása látható a listában.

.LISTMAC═══════════; Engedélyezze a makró telepítését
MACX r2, r1; A makró hívása (a makró teste megjelenik a listában)

MACRO - A makró kezdete

A MACRO direktíva megkezdi a makró definíciót. Paraméterként a makró nevét átadják az irányelvnek. Ha a program szövegében később találkozik egy makró, a fordító ezt a nevet a makró testével helyettesíti. A makrók legfeljebb 10 paraméterrel rendelkezhetnek, amelyek testében a @ 0- @ 9-en keresztül érhetők el. Amikor felhívja a paramétereket, vesszővel sorol fel. A makró definíció az ENDMACRO irányelvvel végződik.

Alapértelmezés szerint csak a makróhívás szerepel a listán, a makrót a LISTMAC direktíva használatával kell használni. A listában szereplő makrót egy + jel mutatja.

szintaxis:
.MACRO makróneve

például:
.MACRO SUBI; A makrók kezdete
Subi @ 1, alacsony (@ 0); Vonja le a 0 paraméter alacsony bájtját az 1. paraméterről
Sbci @ 2, magas (@ 0); Vonja le a 0 paraméter magas bájtját a 2. paraméterről
.ENDMACRO══════════════════════; Makrók vége

.CSEG══════════════════════════; A program szegmensének kezdete
SUBI16 0x1234, r16, r17; Vonjuk le 0x1234-et r17: r16-ból

NOLIST - Kapcsolja ki a lista generációját

például:
.NOLIST═══════════════; Letiltja a hirdetés létrehozását
.INCLUDE "macro.inc"; A csatolt fájlok nem lesznek
.INCLUDE "const.def"; megjelenik a listában
.LIST═════════════════; Engedélyezze az adatgyűjtést

ORG - Állítsa be a pozíciót a szegmensben

SET - Állítsa be a kifejezés változó szimbolikus egyenértékét

A SET-irányelv hozzárendel egy nevet egy értékhez. Ez a név később használható kifejezésekben. Az EQU-irányelvvel ellentétben a név értékét egy másik SET-irányelv módosíthatja.

szintaxis:
.SET név = kifejezés

például:
.SET io_offset = 0x23
.SET port = io_offset + 2

.CSEG════════════════; A kódszegmens kezdete
Clrr2; 2. tiszta eset
Out port, r2; Írja be az A porthoz

A fordító lehetővé teszi a programban lévő kifejezések használatát, amelyek operandusok lehetnek. a műveletek és funkciók jelei. Minden kifejezés 32 bites.

A következő operandusok használhatók:

  • A felhasználó által meghatározott címkék (a pozíciójuk jelentése).
  • A SET-irányelv által meghatározott változók
  • Az EQU irányelv által meghatározott konstansok
  • A megadott formátumok száma:
    • Tizedes (alapértelmezés szerint elfogadva): 10, 255
    • Hexadecimális (két opció az íráshoz): 0x0a, $ 0a, 0xff, $ ff
    • Bináris: 0b00001010, 0b11111111
    • Octális (kezdődik a semmiből): 010, 077
  • PC - a programszámláló aktuális értéke (Program Counter)

A fordító számos műveletet támogat, amelyek szerepelnek a táblázatban (minél magasabb a pozíció a táblában, annál nagyobb a művelet prioritása). A kifejezések zárójelbe zárhatók, ezek a kifejezések a zárójelek nélküli kifejezések előtt kerülnek kiértékelésre.

Az alábbi funkciók vannak definiálva:

  • A LOW (kifejezés) a kifejezés alacsony bájtját adja vissza
  • A HIGH (kifejezés) a kifejezés második bájtját adja vissza
  • A BYTE2 (kifejezés) ugyanaz, mint a HIGH
  • BYTE3 (kifejezés) a kifejezés harmadik bájtját adja vissza
  • BYTE4 (kifejezés) a kifejezés negyedik bájtját adja vissza
  • Az LWRD (kifejezés) a kifejezés 0-15-ös bitjét adja vissza
  • A HWRD (kifejezés) a kifejezés 16-31 bitjét adja vissza
  • A PAGE (kifejezés) a kifejezés 16-21 bitjét adja vissza
  • EXP2 (kifejezés) 2 értéket ad vissza a teljesítményhez (kifejezés)
  • A LOG2 (kifejezés) a log2 (kifejezés) egész számát adja vissza,

A program használata

Fájlok megnyitása

Hibaüzenetek

A program összeállítása után megjelenik egy üzenetmező. A fordító által észlelt hibák megjelennek ebben az ablakban. Ha hibaüzenettel jelölt vonalat választ, akkor a forrásfájl sorát, amelyben a hiba megtalálható, pirosan jelenik meg. Ha a hiba a csatolt fájlban van, akkor ez a kiemelés nem fog megtörténni.

Ha kétszer rákattint egy sorra az üzenetablakban, akkor a megadott hibaüzenetet tartalmazó fájlablak aktív lesz, és a kurzor a hibát tartalmazó sor elején helyezkedik el. Ha a hibás fájl nem nyílik meg (például ez egy csatolt fájl), akkor automatikusan megnyílik.

Vegye figyelembe, hogy ha módosította a forrásokat (hozzáadott vagy törölt sorok), akkor az üzenetek mezőjében lévő sorszámok nem megfelelőek.

A program bizonyos beállításai az "Opciók" menüponton keresztül módosíthatók.

A beviteli mezőben, a "List-fájl kiterjesztés" alatt a listázott fájlhoz használt kiterjesztés be van írva, és a "Kimeneti fájl kiterjesztése" mezőben kiterjesztés található a fájlok összeállításához. A "Kimeneti fájlformátum" téglalapban kiválaszthatja a kimeneti fájlformátumot (általában az Intel kimeneti formátumát használja). Ez azonban nem érinti az objektumfájlt (amelyet az AVR Studio használ), amely mindig ugyanaz a formátum, és az OBJ kiterjesztés. Ha van egy EEPROM szegmens a forrásfájlban, akkor az EEP kiterjesztésű fájl is létrehozásra kerül. Az ebben az ablakban megadott beállítások állandóan tárolódnak, és a program következő indításakor nem kell őket újratelepíteni.

A "Mentés összeszerelés előtt" opció azt mondja a programnak, hogy automatikusan elmenti az aktív ablakot (és csak azt) a fordítás előtt.

Ha bezárja az összes nyitott ablakot a program bezárásakor, jelölje be a "Zárjon be minden ablakot a kilépés előtt" jelölőnégyzetet.

Az Atmel, az AVR az Atmel Corporation bejegyzett védjegye

Fordította: Ruslan Shimkevich, [email protected]