avras2

Transkript

avras2
Quick Guide
Programování
mikrokontrolerů
Atmel AVRAS2
#include <m128def.inc>
furt:
RJMP furt
; furt dokola
2
Preprocessor
z
Preprocessor directives
#define #undef
#error #warning #message
#if #else #elif #endif
#ifdef #ifndef
#include
#pragma
# (empty directive)
Preprocesor
z
z
z
z
víceméně podle C (s nutnými výjimkami)
direktivy začínají #
operátory # a ##
předdefinovaná makra _ _NĚCO_ _
# (stringification)
## (concatenation)
3
4
#pragma - general
#pragma – AVR part related
#pragma warning range byte option
#pragma AVRPART ADMIN PART_NAME string
V0 / V0E / V1 / V2 / V2E
#pragma AVRPART CORE CORE_VERSION version_string
#pragma AVRPART CORE INSTRUCTIONS_NOT_SUPPORTED
mnemonic[ operand[,operand] ][: …]
#pragma AVRPART CORE NEW_INSTRUCTIONS
mnemonic[ operand[,operand] ][: …]
#pragma AVRPART MEMORY PROG_FLASH size
#pragma AVRPART MEMORY EEPROM size
#pragma AVRPART MEMORY INT_SRAM size
#pragma AVRPART MEMORY INT_SRAM START_ADDR address
0x60 / 0x100
#pragma partinclude num
0/1
integer / overflow / none
#pragma overlap option
ignore / warning / error / default
#pragma error instruction
#pragma warning instruction
5
6
1
AVRAS2 assembler
z
z
Operands
preprocessor
keywords
z
z
z
z
z
z
z
label
operators
directives
expressions
functions
variable
z
z
value of the location counter at that place
SET directive
constant
z
z
user defined using EQU directive
integer
decimal binary (0b…)
hexadecimal (0x… $...)
z
octal (0…)
floating-point
7
8
Operator Precedence
Assembler directives
1.
z
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
z
? : (conditional expression)
|| (logical OR)
&& (logical AND)
| (bitwise OR)
^ (bitwise XOR)
& (bitwise AND)
== (equal) != (not equal)
< (less than) <= (less or equal) > (greater than) >= (greater or equal)
<< (shift left) >> (shift right)
! (unary logical NOT) ~ (unary bitwise NOT) + (addition) - (substraction)
* (multiplication) / (division) % (modulo)
- (unary minus)
z
z
z
z
umístění v paměti
makra
inicializace paměti
podmíněný překlad
proměnné a konstanty
výstup
z
z
všechny direktivy začínají .
case-insensitive (lze přepnout, pak jsou klíčová slova lowercase)
9
Directives
z
z
z
z
z
z
z
z
z
z
z
z
z
z
10
Pre-defined macros
BYTE
CSEG, DSEG, ESEG
CSEGSIZE
DB, DW, DD, DQ
DEF, UNDEF, EQU, SET
DEVICE
EXIT
ERROR, WARNING, MESSAGE
IF, IFDEF, IFNDEF, ELSE, ELIF, ENDIF
INCLUDE
LIST, NOLIST, LISTMAC
MACRO, ENDM, ENDMACRO
ORG
OVERLAP, NOOVERLAP
_ _ARVASM_VERSION_ _
_ _CORE_VERSION_ _
_ _DATE_ _ _ _TIME_ _
_ _CENTURY_ _
_ _YEAR_ _ _ _MONTH_ _ _ _DATE_ _
_ _HOUR_ _ _ _MINUTE_ _ _ _SECOND_ _
_ _FILE_ _ _ _LINE_ _
_ _PART_NAME_ _ _ _partname_ _
_ _CORE_coreversion_ _
11
12
2
Expressions
z
Functions
konstantní výrazy
z
z
interně 64bit
operandy
z
z
z
z
z
z
návěští, proměnné, konstanty; PC, int, float
z
operátory
funkce
z
z
z
z
z
z
LOW, HIGH
BYTE2, BYTE3, BYTE4
LWRD, HWRD
PAGE
EXP2, LOG2
INT, FRAC
Q7, Q15
ABS
DEFINED
STRLEN
13
14
Typický design
Typický design
.include "m128def.inc"
.def TEMP = R19
.include "m128def.inc"
.def TEMP = R19
.CSEG
.ORG 0
.CSEG
.ORG 0
RJMP RESET
; Reset Handler
; ... other interrupt handlers
RJMP RESET
; Reset Handle
.ORG 34
RETI
.ORG 35
RESET:
.ORG 0x23
RESET:
LDI TEMP,LOW(RAMEND)
; Initial Stack Pointer
OUT SPL,TEMP
LDI TEMP,HIGH(RAMEND)
OUT SPH,TEMP
; ... whatever else needs to be initialized
MAIN:
; ... here the main code starts
RJMP MAIN
LDI TEMP,LOW(RAMEND)
; Initial Stack Pointer
OUT SPL,TEMP
LDI TEMP,HIGH(RAMEND)
OUT SPH,TEMP
; ... whatever else needs to be initialized
MAIN:
; ... here the main code starts
RJMP MAIN
15
16
3

Podobné dokumenty

TGA-24-9/20

TGA-24-9/20 Nastavení rychlosti komunikace sériové linky: 9600 b/s, 19200 b/s, 38400 b/s, 57600 b/s. Změna rychlosti komunikace je akceptována až po uložení do EEPROM a resetu servozesilovače. Nastavení rychlo...

Více

typ EMAX Návod k instalaci - ELGO

typ EMAX Návod k instalaci - ELGO Vhodná teplota leží v rozmezí +21° ÷ +38°C. Nedoporučuje se lepení při kterých lepené plochy jsou chladnější než +10°C. V tomto případě je lepidlo příliš tuhé na to, aby bylo dosaženo dobré kvality...

Více

Příklad č. 1

Příklad č. 1 Příklad č. 1   Vytvořte v paměti RAM pole, umístěte jen v paměti SRAM od začátku, jeho velikost bude dána konstantou N. Pole naplňte, přičemž hodnota prvního prvku bude dána konstantou PRVNI, a dal...

Více

AVR – Instrukční soubor

AVR – Instrukční soubor Nutno ho na začátku programu nastavit např. na konec SRAM: ldi R16,HIGH(RAMEND) out SPH,R16 ldi R16,LOW(RAMEND) out SPL,R16 ;Konstanta RAMEND určuje poslední adresu ve SRAM, je ;definovaná v hlavič...

Více

Programování mikrokontrolérů ATmega32

Programování mikrokontrolérů ATmega32 RAMEND (poslední adresa v datové paměti - $085FH) FLASHEND (poslední adresa v programové paměti - $3FFFH) E2END (poslední adresa v paměti EEPROM - $03FFH) LOW (vrátí nižší bajt výrazu) HIGH (vrátí ...

Více

Cvičení 2

Cvičení 2 Při provádění „Rebuild all“ se totiž kompilují všechny soubory v projektu, včetně konfiguračních. A zprávy o průběhu těchto převodů najdeme právě v okně „Output“. V případě, že jsou v kódu chyby, b...

Více